Unity shader Fit函数重映射

顺便再加一个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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值