判断运算符_shader:开关
制作开关时候会以以下方式产生节点。
第一种:
[Toggle]_Enable_MainTex("[允许主贴图]Enable_MainTex------------------------------>", Float) = 1
uniform float _Enable_MainTex;
finalColor = (( _Enable_MainTex )?( ( ( _MainTexTint * tex2D( _MainTex, uv_MainTex ) ) + _BaseTex_Gain ) ):( float4(1,1,1,1) ));//enable_mainTex
第2种:
[MaterialToggle] _WuAlpha ("黑白流光图无Alpha时勾选", Float ) = 0
uniform fixed _WuAlpha;
(lerp( _LiuGuang_var.a, _LiuGuang_var.r, _WuAlpha )//这个wualpha也是一种开关。
第3种:
还有种预处理方式。#pragma multi_compile
[MaterialToggle(_HEIGHT_LIGHT_ON)] _EnableHeightLight("Enable HeightLight", Float) = 0 //1
#pragma multi_compile _DUMMY _HEIGHT_LIGHT_ON
#if _HEIGHT_LIGHT_ON
i.normalWorld = normalize(i.normalWorld);
float4 rootPos = mul(unity_ObjectToWorld, float4(0, 0, 0, 1));
float3 node_A = i.posWorld.g- (rootPos.g - _Offset);
float3 node_B = i.normalWorld.g * 0.5;
float3 node_C = node_A + node_B;
color = saturate(color * lerp(_HeightColor.rgb, float3(1, 1, 1), clamp(node_C, 0, 1)) * _HeightLightCompensation);
#endif
特别强调的是,multi_compile及shader_feature都是定义keyword的功能,会产生超过256个的报错 |