unity urp 实现雨水在物体上流动的效果

在这里插入图片描述
如何实现原理还是很简单的,还是使用简单的uv偏移实现即可。
首先,我们需要一张雨滴流向的贴图,和法向贴图。
在这里插入图片描述
配套的法向贴图,让雨水的效果更加明显
在这里插入图片描述
在这里,我还加上了对贴图的旋转,ase里面节点叫rotator,直接把节点的代码拷贝出来的。然后为了保证密度,还加上的tillingoffset

float cos23 = cos(_RainRotate * PI);
float sin23 = sin(_RainRotate * PI);
float2 rotator = mul(UV - _RainAnchor, float2x2(cos23, -sin23, sin23, cos23)) + _RainAnchor;
rotator = rotator * _RainMask_ST.xy + _RainMask_ST.zw;
half rain = SAMPLE_TEXTURE2D(_RainMask, sampler_RainMask, rotator).r;

获取雨的代码就是这样的。
得出来的结果就是:
在这里插入图片描述
然后我们可以把法线加上,增加渐变过渡,这个我在这里就不加了。

它的路线有了,那么我们怎么让雨水流动起来呢。
在这里插入图片描述
这是一张渐变图。我使用time让其偏移起来

half2 rainMaskUV = rotator + _TimeParameters.x * _RainDir * _RainSpeed * 0.1;
half rainMask = SAMPLE_TEXTURE2D(_RainMask, sampler_RainMask, rainMaskUV).g;
rainMask = saturate(pow(rainMask, 8));

然后增强一下对比度,效果是这样的
在这里插入图片描述
它们就动了起来,然后我们把它们一合并,这就完成了,动起来了。

rainMask = saturate(rain - rainMask);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30100043/article/details/127436555