Unity ASE案例解析—LowPolyWater(聚合水波纹效果)

效果图

目录

一、Normal—法线处理

二、Emission—自发光处理

播放动画

Panner Node

Rotator Node

Depth Fade Node

三、Local Vertex Offset—本地顶点偏移

Vertex Normal Node

Vertex Position Node

四、Albedo和Opacity配置

1、Albedo—只配颜色

2、Opacity—透明度配置


聚合水波纹效果主要集中处理三个方面:法线。自发光和自身顶点偏移。

 

一、Normal—法线处理

法线处理主要是对物体顶点视角坐标的DDX与DDY做叉积,

然后,得出表面波光粼粼效果。

DDX Node和DDY节点

DDX节点相对于屏幕空间x坐标输出指定输入值的偏导数。

DDY节点输出相对于屏幕空间y坐标的指定输入值的偏导数。
注意:有关如何计算导数的更多信息,请检查以下链接

Cross Node

叉积节点(快捷方式:X键)计算两个向量AB之间的交叉/向量乘积。叉积是两个三维/ Float3向量之间的运算,可生成另一个向量。
如果AB向量彼此线性独立,则所得向量将垂直于两个向量,并将代表它们所产生平面的法线向量。

注意:顺序是非常重要的,AXB输出比不同的结果BXA(其结果类似于-AxB)。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Cross

Input Port Description Type
Lhs First, or left hand side, value of the cross product. Float3
Rhs Last, or right hand side, value of the cross product. Float3

二、Emission—自发光处理

自发光处理主要是影响波纹产生和变化。

前后对比图。

播放动画

Panner Node

Panner节点根据时间值将UV坐标或其他Vector 2位置移动指定的Speed。如果在“ 时间”输入端口上未设置任何输入,则使用Unity计时器提供连续的平移动画。在这种情况下,“时间”属性充当Unity计时器值的乘数。 另一方面,如果在“时间”输入端口上建立了连接,则它将假定该值为最终值,并且在内部不使用任何类型的计时器。

注意:要平移的纹理必须将其环绕模式设置为Repeat

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Panner

Input Port Description Type
UV 要移动的点. Vector 2
Speed 用于平移运动的速度矢量. Vector 2
Time 指定当前平移位置的计时器值. Float

Rotator Node

“Rotator ”节点从锚点将UV或其他Vector 2位置旋转一个Time角度值。如果在时间输入端口上未设置任何输入,则使用Unity计时器连续增加内部角度值并提供旋转动画。在这种情况下,“时间”属性充当Unity计时器值的乘数。 另一方面,如果在“时间”输入端口上建立了连接,则它将假定该值为最终值,并且在内部不使用任何类型的计时器。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Rotator

nput Port Description Type
UV 要旋转的点。 Vector 2
Anchor 旋转时使用的锚点 Vector 2
Time 要应用到指定点的弧度旋转角度. Float

Depth Fade Node

深度淡入淡出(Depth Fade)节点会输出线性渐变,该线性渐变表示对象的表面与其后的几何图形之间的距离。可以通过调整“ 距离”参数来设置渐变范围或渐变距离。
更具体地说,此参数的作用是在对象的表面与其后的几何图形之间的距离在指定的值内时,创建一个[0 1]范围内的值。
注意:着色器的“ 渲染队列”值必须设置为“ 透明”或更高(pe 混合模式设置为“ 透明”或“ 半透明”)),因此不会将对象写入深度缓冲区。这是必不可少的配置,因为节点在内部通过将“ 表面深度”减去“深度缓冲区”中提取的值来计算距离值。如果将对象写入深度缓冲区,则此操作将产生意外的结果。

Node Parameter Description Default Value
Vertex Position 不要使用此内部数据,因为它会在内部被忽略。仅在未连接相应的输入端口时可见. 0
Distance 世界空间坐标中应发生淡入的距离。仅在未连接Dist输入端口时可见. 1
Convert to Linear 从深度缓冲区读取的深度值从对数转换为线性刻度 True
Mirror 对最终值应用 Abs ,以确保最终值始终为正 True
Saturate 在最终值上应用Saturate ,以确保最终值在0到1的范围内。 False
Input Port Description Type
Dist 世界空间坐标中应发生淡入的距离. Float
Vertex Position 允许指定自定义顶点位置。如果未连接,则使用当前顶点位置。. Float3

三、Local Vertex Offset—本地顶点偏移

主要是通过顶点位置遮罩,形成条纹,再处理成波纹效果。

Wave Height:波纹的高度差,类似海浪波涛汹涌程度。

Vertex Normal Node

顶点法线节点在对象空间中输出顶点法线向量。此数据直接从网格中提取,并包含相对于对象原点的法线顶点,这意味着法线矢量值不会更改游戏对象具有的任何变换值。通常用于在“ 局部顶点法线”输出中使用或创建绑定到对象并保持完全相同的效果,即使您的游戏对象更改位置,旋转或大小也是如此。
根据使用此节点的位置(顶点或片段/表面函数),它将返回直接值(在顶点函数上)或在顶点之间插入值(在片段/表面函数上)。

注意:不要与“  World Normal 节点混淆。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Vertex_Normal

Output Port Description Type
XYZ 返回对象空间中的顶点法线向量 Float3(4)
X Returns only the X component of the vertex normal Float
Y Returns only the Y component of the vertex normal Float
Z Returns only the Z component of the vertex normal Float

Vertex Position Node

“顶点位置”节点输出对象空间中的顶点位置。此数据直接从网格中提取,并包含相对于对象原点的顶点位置,这意味着位置值不会更改游戏对象具有的任何变换值。通常用于在“ 局部顶点偏移”输出中使用或创建绑定到对象并保持完全相同的效果,即使您的游戏对象更改了位置,旋转或大小也是如此。
根据使用此节点的位置(顶点或片段/表面函数),它将返回直接值(在顶点函数上)或在顶点之间插入值(在片段/表面函数上)。

注意:不要与“  World Position节点混淆。

http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Vertex_Position

Output Port Description Type
XYZ(W) 返回对象空间中的顶点位置 Float3(4)
X Returns only the X component of the vertex position Float
Y Returns only the Y component of the vertex position Float
Z Returns only the Z component of the vertex position Float
W Returns only the W component of the vertex position (By default set to 1). Only visible if Size is set to XYZW. Float

四、Albedo和Opacity配置

1、Albedo—只配颜色

2、Opacity—透明度配置

https://img-blog.csdnimg.cn/20200111131846671.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTIwOTQ2,size_16,color_FFFFFF,t_70

猜你喜欢

转载自blog.csdn.net/qq_40120946/article/details/103934171