본문 바로가기
Shader

shader_feature와 multi_compile의 차이

by 대마왕J 2020. 11. 8.

shader_feature와 multi_compile의 차이

#pragma shader_feature는 #pragma multi_compile과 매우 유사하고 shader_feature 셰이더의 사용되지 않는 배리언트가 게임 빌드에 포함되지 않는다는 유일한 차이점이 있습니다. 따라서 shader_feature는 머티리얼에 설정되는 키워드에 가장 적합하고 multi_compile은 코드에서 전역으로 설정되는 키워드에 적합합니다.



https://docs.unity3d.com/kr/2018.4/Manual/SL-MultipleProgramVariants.html




자꾸 기억이 안나서 백업. 


셰이더 피쳐는 사용되지 않으면 게임 빌드에 코드가 포함되지 않는다는 말. 

즉 메터리얼단에서 노말맵을 쓸거냐 안쓸거냐, Emission 연산을 할거냐 안할거냐는 것 처럼 메터리얼 옵션등에 사용되고 



멀티 컴파일은 

라이트가 있냐 셰도우가 있냐 등등의 전체 설정일때 주로 적용한다. 


실제에도 아래처럼 적용하는 것을 볼 수 있다. 

아직 의문점이 좀 생기지만 일단 넘어간다. 



// Material Keywords

            #pragma shader_feature _ALPHATEST_ON

            #pragma shader_feature _ALPHAPREMULTIPLY_ON

            #pragma shader_feature _ _SPECGLOSSMAP _SPECULAR_COLOR

            #pragma shader_feature _GLOSSINESS_FROM_BASE_ALPHA

            #pragma shader_feature _NORMALMAP

            #pragma shader_feature _EMISSION

            #pragma shader_feature _RECEIVE_SHADOWS_OFF


            // -------------------------------------

            // Universal Pipeline keywords

            #pragma multi_compile _ _MAIN_LIGHT_SHADOWS

            #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE

            #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS

            #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS

            #pragma multi_compile _ _SHADOWS_SOFT

            #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE


반응형

댓글