unity urp 实现雨水在物体上流动的效果
Posted 暮志未晚Webgl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
以上是关于unity urp 实现雨水在物体上流动的效果的主要内容,如果未能解决你的问题,请参考以下文章