unity3d - Unity Shader Graph 彩色面
问题描述
想象一下,我们有一个有 6 个面的立方体。现在,我可以在 Shader Graph 中以不同的颜色为所有面着色吗?
基本上我想要做的是用 Shader Graph 自己重现“极简主义 - Lowpoly Flat/Gradient Shader”。有小费吗?
解决方案
这取决于您希望能够显示什么样的几何图形。如果您只是使用基轴,则可以使用对象空间法线的拆分 X/Y/Z 分量,使它们饱和,并将它们与各自的颜色相乘,然后将它们加在一起。这涵盖了 6 个面中的 3 个。对于其他人,除了在饱和之前对所有轴执行 OneMinus 之外,执行相同的操作。
解决这个问题的最通用方法是使用点积。点积计算一个向量与另一个向量的平行程度,并返回 -1 到 1 范围内的结果,其中 1 是完全平行的,-1 是反平行的。对于轴 (1, 0, 0)、(0, 1, 0) 和 (0, 0, 1),做 Dot(normal, axis),饱和,乘以颜色,然后将颜色结果相加。使用与上述相同的方法并将点积通过管道输送到 OneMinus 节点中,然后再饱和以获得其他 3 个轴。这允许您在世界空间和对象空间中应用效果。
推荐阅读
- python - 在 cx_freeze 中创建 dist 时出错
- sql-server - 无法在 Mac 上的 DBeaver 中下载驱动程序 - 原因:central.maven.org
- kdb - KDB:如何从表中删除其中一列具有空值的行
- react-bootstrap - 安装 React Bootstrap - 无法解决
- mysql - sequelize - 如何计算其他表中的总记录
- c# - 了解 npgsql 命令超时?
- javascript - 如何使用 jquery 在第一个 li 之后附加多个 li?
- ios - 使用一键式 React Native 实现捏缩放
- python - 使用python从完整物理地址中查找纬度和经度
- javascript - 如何在悬停到单个元素时选择多个元素