본문 바로가기
Unity/Shader

[Material property drawer(2)] KeywordEnum 사용하기

by 호아나트 2022. 3. 26.
반응형

KeyWordEnum

이 drawer는 인스펙터에 팝업 형식의 메뉴 생성을 할 수 있다.

9가지의 다른 상태들을 구성할 수 있다.

Properties
    {
        [KeywordEnum(Off,Red,Blue)]
        _Options("Options",Float) =0
    }

Pass
        {
            CGPROGRAM
            #pragma multi_compile _OPTIONS_OFF _OPTIONS_RED _OPTIONS_BLUE

						...

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);

                #if _OPTIONS_OFF
                return col;
                #elif _OPTIONS_RED
                return col * float4(1,0,0,1);
                #elif _OPTIONS_BLUE
                return col * float4(0,0,1,1);
                #endif                
                
            }
            ENDCG
        }

위의 코드와 같이 CGPROGRAM 내부에 조건을 작성하고서, 해당 조건에 따라 텍스쳐의 색을 변경할 수 있다.

_OPTION_ON

_OPTION_RED

_OPTION_BLUE

Muti_compile

#pragma multi_compile

shader_feature와 달리, 셰이더 내에 있는 모든 배리언트를 내보낼 수 있다.

덕분에 프로그램 실행 시, 셰이더를 여러 상태로 변경이 가능하다.

반응형

댓글