首页 > 解决方案 > Unity Shader Graph 彩色面

问题描述

想象一下,我们有一个有 6 个面的立方体。现在,我可以在 Shader Graph 中以不同的颜色为所有面着色吗?

基本上我想要做的是用 Shader Graph 自己重现“极简主义 - Lowpoly Flat/Gradient Shader”。有小费吗?

标签: unity3dshader

解决方案


这取决于您希望能够显示什么样的几何图形。如果您只是使用基轴,则可以使用对象空间法线的拆分 X/Y/Z 分量,使它们饱和,并将它们与各自的颜色相乘,然后将它们加在一起。这涵盖了 6 个面中的 3 个。对于其他人,除了在饱和之前对所有轴执行 OneMinus 之外,执行相同的操作。

解决这个问题的最通用方法是使用点积。点积计算一个向量与另一个向量的平行程度,并返回 -1 到 1 范围内的结果,其中 1 是完全平行的,-1 是反平行的。对于轴 (1, 0, 0)、(0, 1, 0) 和 (0, 0, 1),做 Dot(normal, axis),饱和,乘以颜色,然后将颜色结果相加。使用与上述相同的方法并将点积通过管道输送到 OneMinus 节点中,然后再饱和以获得其他 3 个轴。这允许您在世界空间和对象空间中应用效果。


推荐阅读