후들후들

foodybug.egloos.com

포토로그



런타임 중의 Standard 셰이더 변경 Unity



Unity5부터 추가된 Standard 쉐이더에는 4가지 렌더모드가 존재합니다.

Opaque, Cutout, Fade, Transparent 입니다.

이 쉐이더 모드를 스크립트에서 전환할 수 있습니다.



mat.SetFloat("_Mode", 2);


그런데 모드를 전환해도 쉐이더 속성은 변하지 않습니다. 이유는 저도 잘 모르겠네요. 5.2.2f1 기준입니다.

그래서 각종 속성을 직접 바꿔줘야 합니다.



public static void SetupMaterialWithBlendMode(Material material, BlendMode blendMode)
{
switch (blendMode)
{
case BlendMode.Opaque:
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
material.SetInt("_ZWrite", 1);
material.DisableKeyword("_ALPHATEST_ON");
material.DisableKeyword("_ALPHABLEND_ON");
material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = -1;
break;

...
}


이런 방법을 거쳐야 합니다.

저 자세한 코드는 링크를 통해 확인하세요.



원문 링크






덧글

댓글 입력 영역