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 实现雨水在物体上流动的效果的主要内容,如果未能解决你的问题,请参考以下文章

WebGL 实现雨水特效实验

unity urp 实现遮挡显示角色轮廓

unity urp 实现遮挡显示角色轮廓

UE4 Material 101学习笔记——13-18 完整的雨水着色器

unity urp drawrende用法

Unity URP入门实战