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
'Shader ' 카테고리의 다른 글
외부 오브젝트의 값을 셰이더에 넘겨주기 (1) | 2021.01.27 |
---|---|
GetVertexPositionInputs (1) | 2020.12.14 |
Legacy Pipeline Depth Texture 레거시 파이프라인 깊이 텍스쳐 (0) | 2020.07.02 |
URP에서 Particle Vertex Stream으로 UV 조절하기 (1) | 2020.06.25 |
URP Shader로 뚫리는 이미지 만들기 (3) | 2020.05.09 |
댓글