欢迎光临散文网 会员登陆 & 注册

URP | 简单水效果

2022-04-11 22:09 作者:那个人真狗  | 我要投稿


深度

  • 使用上面定义好的函数计算,

  • 不同深度使用不同颜色

顶点动画

  • 因为我们需要使用贴图制作顶点动画,在顶点阶段计算


注意: SAMPLE_TEXTURE2D_LOD  因为是顶点着色器阶段使用这个。

  • 输出到顶点坐标效果

  • 下一步增加深度控制。

    顶点着色器阶段,计算出世界空间顶点位置。

定义一个变量控制深度大小。

注意:注意这里使用了Get DepthFade函数,这个函数调用UV值了。

因为我们是在顶点着色器阶段,贴图使用 LOD的效果。

所以我们上面调用的UV函数需要改一下贴图方式。

  • 使用世界空间顶点和控制深度值,   控制大小值

  • 这个数值乘到 noise贴图上

这样就可以使用深度控制顶点在浅的地方产生动画

  • 效果

代码

扭曲

  • 引入函数库

  • 对模型的UV进行噪波扭曲,

    我们通过屏幕空间采样,得到物体背后的屏幕样式

  • UV函数控制纹理的移动

  • 顶点着色器阶段,采样贴图的UV

  • 通过采样我们的噪波贴图,对UV进行扭曲,以及提取出我们的深度,来根据深度大小来进行相对应的扭曲效果:

  • 效果

代码块

注意:这里使用的方法和热扭曲类似


边缘水花

  • 使用前面计算的边缘深度

  • 参数

  • 效果

计算向量

我们准备计算光照,反射效果,

前加light库

  • 需要在顶点着色器阶段计算出需要的向量。

  • 片元着色器阶段

使用法线贴图,把噪波贴图增加俩个属性转换成法线贴图。

获取顶点着色器阶段数据,和环境光。

增加场景反射探针

  • 场景中增加反射探针

  • 场景打开Window—Lighting

  • 采样环境反射探针得到反射颜色,输出

  • 效果

Dot 系列数值

  • PBR公式 DGF 分别求出来,这里unity里提供我们3个函数

    需要 DistributionGGX函数,  GeometrySmith函数   FresnelSchlick函数

    GeometrySchlickGGX 函数 是G 需要的小函数

  • 我们计算DGF需要F0,这里求出F0

  • 计算出DGF

直接光高光

  • 开始计算直接光高光部分

  • 效果

直接光漫反射

  • 漫反射

  • 效果

有环境的颜色,

合并水的基础效果

  • 合并水的颜色和水花的效果

定义新变量_FoamColor 水花的颜色

效果

输出

  • 输出

调整参数效果

全代码


URP | 简单水效果的评论 (共 条)

分享到微博请遵守国家法律