반응형
Material property drawer
Unity의 ShaderLab에는 "drawer"라는 속성들이 있다.
이를 통해 인스펙터에서 직접만든 프로퍼티들을 생성할 수 있고 셰이더에서의 조건문들을 처리할 수 있다.
Toggle 사용법에 대해 알아보자.
프로퍼티 작성 방법
Unity의 ShaderLab에서는 boolean 타입을 사용할 수가 없다.
대신 Toggle이 그 역할을 한다.
[Toggle] _Enable("Enable",Float) = 0
Toggle을 사용하기 위해서는
- 타입: Float
- 기본 값: 0 또는 1
로 해야한다.
기본 값은 왜 0 또는 1이 되어야할까.
- 0의 의미는 Off
- 1의 의미는 On
코드에서 실행하는 방법
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//pragma 선언.
#pragma shader_feature _ENABLE_ON
...
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
//조건문 작성
#if _ENABLE_ON
return col;
#else
return col*_Color;
#endif
}
ENDCG
}
왜 선언할 때 _ENABLE_ON이 되는 걸까.
- _ENABLE
- “shader_feature”에 추가되는 배리언트들은 상수이므로, 프로퍼티명을 대문자로 작성한다.
- _ON
- Toggle의 기본 상태를 의미한다.
_Enable이 1인 경우
|
_Enable이 0 인 경우
shader_feature 특징
shader_feature에서 미사용 배리언트는 최종빌드에서는 포함되지 않는다.
즉, 빌드 이후 실행할때는 상태를 변경하지 못한다는 것이다.
“multi_compile” 셰이더 배리언트를 사용하면, 이문제를 해결 할 수 있다.
반응형
'Unity > Shader' 카테고리의 다른 글
ShaderLab 알아보기 (0) | 2022.03.31 |
---|---|
[Material property drawer(4)] PowerSlider , IntRange 사용하기 (0) | 2022.03.30 |
[Material property drawer(3)] Enum 사용하기 (0) | 2022.03.27 |
[Material property drawer(2)] KeywordEnum 사용하기 (0) | 2022.03.26 |
1. 셰이더 기본 (0) | 2020.01.12 |
댓글