Unity URP 下的双面渲染(Cull Off)如何正确处理树叶、布料这类薄片物体

张开发
2026/6/8 22:57:06 15 分钟阅读
Unity URP 下的双面渲染(Cull Off)如何正确处理树叶、布料这类薄片物体
在 Universal Render Pipeline 里默认情况下背面会被剔除。对盒子、墙体这类封闭模型没问题 但对树叶、旗帜、纸片、卡片草这类“只有一层面”的薄片物体来说背面一旦被剔掉镜头转到另一侧就会直接穿帮。 这时就要考虑关闭背面剔除也就是Cull Off。它解决什么问题让单层几何体的正反两面都能被看到避免树叶翻面消失、布料背面透明、卡片草从背面直接“没了”。它的核心代价更多片元会被渲染填充率和像素着色成本上升。不是所有模型都该开尤其不该把它当成默认选项。一句话理解Cull Off 不再丢掉背面三角形。对薄片模型是补救对实体模型通常是浪费。1. 为什么薄片物体最容易出问题树叶和布料在游戏里常常不是一个有厚度的实体而是用一张或几张平面来模拟。这样建模便宜、贴图高效、批量摆放也方便。 但代价也很直接如果材质仍然保持默认的背面剔除摄像机看到背面时这一面就根本不会进入渲染流程。Unity 官方文档里对Render Face Both的解释很直接URP 不会剔除任一侧因此几何体的两侧都会参与可见性与光照贡献。2. 哪些对象适合开双面渲染判断标准很简单如果模型本身没有厚度但玩家又可能看到它的背面那就值得考虑。反过来真正有体积的实体模型通常仍然应该保持默认剔除。3. 在 URP 里怎么开启在 URP 中常见有两条路一条是 Shader Graph / 材质设置另一条是手写 Shader。前者适合大多数美术工作流后者适合你要精确控制渲染行为的时候。01Shader Graph / 材质面板新版 Unity / URP 里很多时候不再直接写 “Two Sided”而是把Render Face设为Both。本质上就是关闭背面剔除。打开 Shader Graph 或材质面板找到Render Face从Front / Back改成Both02手写 Shader如果你自己写 Pass关键行就是Cull Off。只要关闭剔除背面三角形也会被送进后续流程。在对应 Pass 内写Cull Off若是透明或裁剪材质留意排序和阴影若出现背面受光反转补做法线翻转处理Pass { Name ForwardLit Tags { LightMode UniversalForward } Cull Off HLSLPROGRAM #pragma vertex vert #pragma fragment frag ENDHLSL }这段代码的重点只有一处默认的 Cull Back 改成 Cull Off。从效果上说就是告诉 GPU别再默认丢掉背面了。4. 双面显示了不代表受光一定正确这是实际项目里最容易被忽略的一点。模型两面都画出来之后你看到的只是“可见性”问题被解决了 但背面的法线方向仍可能与正面相反导致高光、明暗、法线贴图方向看起来不对。half3 normalWS normalize(IN.normalWS); if (!IN.isFrontFace) { normalWS -normalWS; } half NdotL saturate(dot(normalWS, mainLight.direction)); return half4(albedo * NdotL, alpha);这不是一段“直接复制就能在所有工程编译通过”的完整模板而是把双面受光处理的核心逻辑拆出来给你看。 不同 URP 版本、不同模板 Shader对正反面语义例如SV_IsFrontFace/ 宏封装的写法会有差异。5. 什么时候不该开 Cull Off如果对象本身就是有厚度的实体双面渲染往往只是在浪费性能甚至可能让阴影和光照判断变复杂。实体模型别滥开箱子、墙、石头、金属零件本来就有体积正确做法是建模出厚度而不是依靠双面渲染“补洞”。透明材质要更谨慎透明 双面 会放大排序问题。看起来像“穿插”“层叠错误”很多时候不是 Cull Off 本身而是透明排序天生复杂。植被场景留意填充率大片树叶、草地、布帘都开双面时片元数量会明显增加。移动平台尤其要关注 overdraw 和 fillrate。6. 实战建议把它当“精准开关”不要当默认模板只有当模型是薄片、无厚度、且需要从背面可见时才开启双面渲染。在 URP / Shader Graph 中优先找Render Face Both手写 Shader 时则使用Cull Off。如果背面光照看起来发黑、反亮或法线方向不对再补上正反面法线翻转逻辑。对植被、布料等大面积资源测试移动端 fillrate不要只在 PC 编辑器里看效果。如果对象本来该有厚度优先改模型而不是靠关闭剔除来“假装正确”。记忆口诀看不见用 Cull Off看得见但不对再修法线本来有厚度就别偷懒。

更多文章