type
status
date
slug
summary
tags
category
icon
password
📝 问题描述
最近在制作游戏特效时,遇到了一个需求:有一个粒子使用的是Mesh方式进行渲染,它是半透明的,并且我希望这个粒子能够双面渲染;
但现在当我使用基础Shader并开启双面渲染后,得到的效果并不符合预期:

( 正面单面渲染时是正常的 )

( 背面单面渲染时也是正常的 )

( 正面、背面同时出现在摄像机内就出错了 )
我们希望的正确效果应该是这样的:

🤗 解决步骤
这个问题的根本原因在于半透明物体的渲染顺序,关于这一部分的知识可以跳转至我的另一篇笔记:
半透明物体的渲染顺序问题在这里我们主要采用的是“透明混合”的方式实现透明渲染(另一种方式是透明测试)
关键步骤:

将上述这些关键参数暴露在材质面板中:

对于半透明物体的双面渲染,我们需要关闭深度写入、开启深度测试、关闭面剔除 (设置为Cull Off),Blend Alpha设置为“透明叠加” (即【SrcAlpha, OneMinusSrcAlpha】),其他几个关于Blend RGB的参数则可以自行调节直至得到预期结果即可。
最终结果:

( 从各个角度观察都能得到正确的透明效果 )

📎 参考文章
半透明物体的渲染顺序问题
- 作者:Damier
- 链接:https://notion-next-coral-eta.vercel.app/article/68c2c9c8-6aa3-47eb-9b0b-857ebbd0a78c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。