顺便再加一个Toggle开关
shader feature 比 muti更省,muti一般用于代码动态开关
https://zhuanlan.zhihu.com/p/158039963 这里有推导过程
关键函数
half remap(half x, half t1, half t2, half s1, half s2)
{
return (x - t1) / (t2 - t1) * (s2 - s1) + s1;
}
使用方法
[Toggle(_IS_GRADIENT)] _IsGradient("IsGradient", Float) = 0
...
#pragma shader_feature _ _IS_GRADIENT
.....
// height gradient
float gradient = remap(IN.modelPos.y, _RemapMin, _RemapMax, 0, 1);
gradient = saturate(gradient);
half4 r = 1;
#if defined(_IS_GRADIENT)
r = r * _Scale + r * lerp(_DarkCol * 2, _LitCol * 2, gradient);
#endif
注意
记得要saturate一下,不然会有负值和颜色调整不正常的问题
// height gradient
float gradient = remap(IN.modelPos.y, _RemapMin, _RemapMax, 0, 1);
gradient = saturate(gradient);
half4 r = half4(tree,1);
#if defined(_IS_FLIPY)
gradient = 1 - gradient;
#endif
#if defined(_IS_GRADIENT)
r = r * _Scale + r * lerp(_DarkCol * 2, _LitCol * 2, gradient);
r = saturate(r);
#endif
return r;