Version: 2022.1
언어: 한국어
셰이더 키워드와 C# 스크립트 함께 사용
셰이더 배리언트 스트리핑

셰이더 키워드와 머티리얼 인스펙터 함께 사용

Unity 에디터에서는 머티리얼 인스펙터에서 머티리얼을 확인할 때 머티리얼의 로컬 셰이더 키워드를 활성화하거나 비활성화할 수 있습니다. 이 기능은 다음 두 가지 이유에서 유용합니다.

  • 아티스트가 코드를 사용하지 않고도 다수의 키워드에 여러 키워드 값을 간편하게 설정할 수 있습니다.
  • [KeywordEnum] MaterialPropertyDrawer를 사용하여 키워드를 활성화하면, Unity가 세트의 다른 키워드를 자동으로 비활성화합니다. 이를 통해 언제든지 하나의 세트에서 정확히 하나의 키워드만 활성화되도록 보장할 수 있습니다.

여느 셰이더 설정 또는 데이터와 마찬가지로, 셰이더 키워드는 셰이더 소스 파일에서 머티리얼 프로퍼티로 선언된 경우에만 머티리얼 인스펙터에서 사용할 수 있습니다.

셰이더 그래프에서 만든 셰이더의 경우, 기본적으로 머티리얼 프로퍼티가 키워드입니다. 즉, 이러한 설정은 머티리얼 인스펙터에서 자동으로 사용할 수 있습니다. 이를 변경하려면 Blackboard를 열고 Exposed 프로퍼티를 변경하십시오.

For hand-coded shaders, you must ensure that your ShaderLab code defines a material property that represents the keyword set. The material property must have a type of Float, and must use the [Toggle], [ToggleOff], or [KeywordEnum] MaterialPropertyDrawer attribute to expose it correctly to the Inspector.

Shader "Custom/ApplyEffectIfKeywordIsOn"
{
    Properties
    {
        // Display a toggle in the Material's Inspector window
            [Toggle] _Keyword ("Keyword", Float) = 0.0
    }

    SubShader
    {
        Pass
        {
            #pragma shader_feature _Keyword

            fixed4 frag(v2f i) : SV_Target
            {
                    #if _Keyword
                        // If _Keyword is on at build time, Unity creates a shader variant that uses the following code
                        ApplyEffect();
                    #endif
            
            // rest of shader code...
            }
        }
    }
}

For more information and examples, see the documentation for the MaterialPropertyDrawer API.

셰이더 키워드와 C# 스크립트 함께 사용
셰이더 배리언트 스트리핑