Unity Shader Graph:如何将光照和未光照渲染组合在一个着色器中(是否可能)?自定义(每个对象单独)雾效果

问题描述 投票:0回答:1

我正在使用 Unity 2021.3 (URP)。我正在使用 ShaderGraph。

我正在为某些类别的每个 3D 照明对象开发灵活且个性化的自定义雾效果。我希望能够通过某种因素将基于光照着色器的对象的某些部分变为不光照状态 [0...1]。

我想要下一件事:当像素的雾因子为 0(最小)时,我们可以清楚地看到对象的一部分(渲染得像亮灯一样)。当因子为 1(最大值)时,像素预计将完全充满雾固定雾颜色(呈现为未点亮!)。简而言之,我想在单个着色器中实现光照和未光照渲染之间的一些过渡,这是我的主要问题。

在实现整个所需功能的背景下(不仅仅是点亮<->不点亮平滑过渡),我总共尝试了:

  1. 默认Unity雾(照明部分)。发现它对于我的情况来说太不灵活,因为我处理具有多个层(相机)和许多处于不同位置的对象的复杂场景,并且我希望我的对象具有单独定制的雾效果。 Unity默认的雾是整个场景的一种设置,即使正确的定位也会使对象的设置变得非常困难和不灵活。
  2. 寻找其他解决方案。毕竟,对亮/不亮渲染组合的主题感兴趣。现在我看到其他解决方案并不那么优雅。

我知道,这种情况可能都是关于后处理/将原始光照对象的表面与一些未光照的物体重叠/使用 Unity URP 的渲染器功能,但我通常是处理图形的新手,所以这对我来说都很困难(我意味着我在高级渲染机制方面进展缓慢且艰难)。我已经花了几天时间研究这个功能,没有找到可以理解的解决方案,并且将继续尝试以不同的、更困难的方式实现所需的雾功能,但是......但现在我沉迷于过渡的视角“在单个着色器中“lit->unlit”,所以我在这里问这个问题:)

unity-game-engine shader fragment-shader effects shader-graph
1个回答
0
投票

有趣。我有类似的要求,除了“雾”实际上会使后面的天空盒变得透明,但没有其他透明物体聚集在它后面并扭曲幻觉。

最后我发现这个教程帮助我编写了一个基本的光照着色器。然后我将其输入到一个未光照的着色器图中,并根据距离在它和天空盒纹理之间进行了调整。

© www.soinside.com 2019 - 2024. All rights reserved.