Unity ASE案例解析—Environment Gradient(环境渐变效果)

效果图:

Unity ASE案例解析—Environment Gradient(环境渐变效果)

 环境渐变效果主要是对贴图(Albedo)进行处理,改变它的纹理和色值。

 

目录

 

1、 获取世界坐标Y轴矢量遮罩(Mask)

2、利用 1、中的Y轴遮罩做物体 顶部 颜色渐变的插值计算

3、利用 1、中的Y轴遮罩做物体 底部 颜色渐变的插值计算

4、创建世界场景下渐变效果

5、根据世界梯度来做底部和顶部颜色的插值

6、自定义贴图(红色通道上的环境光遮挡,绿色通道上的边缘式曲率贴图)

7、利用制定好的渐变色和自定义贴图相乘

8、创建影响边缘高光(custom map g通道)的属性

9、做边框高亮(8、)与相乘后自定义贴图(7、)相加

10、把相加后的自定义贴图和边缘高亮做范围限制然后赋值给Albedo

最后,把法线贴图加上


 

1、 获取世界坐标Y轴矢量遮罩(Mask)

Unity ASE案例解析—Environment Gradient(环境渐变效果)

主要用于做线性插值计算。

2、利用 1、中的Y轴遮罩做物体 顶部 颜色渐变的插值计算

Unity ASE案例解析—Environment Gradient(环境渐变效果)

可以得到物体顶部颜色变化。

Unity ASE案例解析—Environment Gradient(环境渐变效果)

3、利用 1、中的Y轴遮罩做物体 底部 颜色渐变的插值计算

Unity ASE案例解析—Environment Gradient(环境渐变效果)

根据上述(1、)法线y向量使2种渐变底色变色。

4、创建世界场景下渐变效果

Unity ASE案例解析—Environment Gradient(环境渐变效果)

利用GradientHeight常量控制物体的整体渐变效果。 

Divide 除法节点

Divide 节点(快捷键:D键)进行算术除法,其中A除以BA / B。除以零将导致无穷大,这通常会转化为非预期结果。

多通道数据类型之间的划分是按通道完成的。如果A和B的频道数量不同,则进行强制转换以匹配具有最多频道数量的频道。

注意:除法不是可交换的,因此值的顺序重要。

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

 

Clamp

Clamp节点输出其输入值或[ MinMax ]范围之间Clamp的矢量的各个分量。

  • 最小值:如果输入值小于最小值,则返回此值
  • 输入:如果输入值介于最小和最大之间,则返回此值
  • 最大值:如果输入值大于最大值,则返回此值

注意:如果每个输入端口的通道数量不同,则进行强制转换以匹配通道数量最多的端口。

Unity ASE案例解析—Environment Gradient(环境渐变效果)

Input Port Description Type
Input 要限制在[最小,最大]范围之间的值。当Alpha = 0时完全输出。 Float [1]
Min clamp 操作的最小值(如果该值小于Min的最小值,则为返回值)。 Float [1]
Max clamp 操作的最大值(如果该值大于Max的最大值,则为返回值)。 Float [1]

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

5、根据世界梯度来做底部和顶部颜色的插值

Unity ASE案例解析—Environment Gradient(环境渐变效果)

6、自定义贴图(红色通道上的环境光遮挡,绿色通道上的边缘式曲率贴图)

Unity ASE案例解析—Environment Gradient(环境渐变效果)

7、利用制定好的渐变色和自定义贴图相乘

先给自定义贴图(6、)R通道做指数(Exp)控制。

Unity ASE案例解析—Environment Gradient(环境渐变效果)

然后合并Power(自定义贴图R通道 6、)和lerp(底部和顶部颜色的插值 5、)

Unity ASE案例解析—Environment Gradient(环境渐变效果)

8、创建影响边缘高光(custom map g通道)的属性

Unity ASE案例解析—Environment Gradient(环境渐变效果)

9、做边框高亮(8、)与相乘后自定义贴图(7、)相加

Unity ASE案例解析—Environment Gradient(环境渐变效果)

10、把相加后的自定义贴图和边缘高亮做范围限制然后赋值给Albedo

Unity ASE案例解析—Environment Gradient(环境渐变效果)

最后Clamp,如果要为HDR产生大于1的值,则可以禁用它或增加最大值。

 

最后,把法线贴图加上

Unity ASE案例解析—Environment Gradient(环境渐变效果)

得出最终效果。

 

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