我正在使用 Unity 2021.3 (URP)。我正在使用 ShaderGraph。
我正在为某些类别的每个 3D 照明对象开发灵活且个性化的自定义雾效果。我希望能够通过某种因素将基于光照着色器的对象的某些部分变为不光照状态 [0...1]。
我想要下一件事:当像素的雾因子为 0(最小)时,我们可以清楚地看到对象的一部分(渲染得像亮灯一样)。当因子为 1(最大值)时,像素预计将完全充满雾固定雾颜色(呈现为未点亮!)。简而言之,我想在单个着色器中实现光照和未光照渲染之间的一些过渡,这是我的主要问题。
在实现整个所需功能的背景下(不仅仅是点亮<->不点亮平滑过渡),我总共尝试了:
我知道,这种情况可能都是关于后处理/将原始光照对象的表面与一些未光照的物体重叠/使用 Unity URP 的渲染器功能,但我通常是处理图形的新手,所以这对我来说都很困难(我意味着我在高级渲染机制方面进展缓慢且艰难)。我已经花了几天时间研究这个功能,没有找到可以理解的解决方案,并且将继续尝试以不同的、更困难的方式实现所需的雾功能,但是......但现在我沉迷于过渡的视角“在单个着色器中“lit->unlit”,所以我在这里问这个问题:)
有趣。我有类似的要求,除了“雾”实际上会使后面的天空盒变得透明,但没有其他透明物体聚集在它后面并扭曲幻觉。
最后我发现这个教程帮助我编写了一个基本的光照着色器。然后我将其输入到一个未光照的着色器图中,并根据距离在它和天空盒纹理之间进行了调整。