6.2 透明与 Alpha 混合:从设置到分层


6.2 透明与 Alpha 混合:从设置到分层

本节摘要:透明有两条技术路线:Alpha 混合让像素与背景按比例融色,观感细腻但排序复杂;Alpha 裁剪按阈值整像素丢弃,硬边但免费绕过排序。本节讲清两条路线的机制、设置步骤与选型标准,并给出多层透明叠加的正确姿势。

透明的本质问题

不透明的物体画到屏幕上就是"覆盖"——这个像素的颜色直接替换背景。透明的麻烦在于"覆盖几成":一个 Alpha 为零点五的红色像素,最终颜色是它与背景各占一半的混合结果,也就是说这个像素必须知道"背后已经画了什么"。这就是透明的两个根源性约束:透明物体必须在不透明物体之后绘制(否则背景还没画,混了个寂寞),透明物体之间要按某种顺序绘制(混合不满足交换律,先红后蓝与先蓝后红结果不同)。

第一条由渲染队列自动保证(Unity 把透明排在 Built-in 的透明队列);第二条是排序问题的来源,5.3 节坑一的成因。理解了这两条,透明相关的多数怪现象都能对号入座。

图:Alpha 混合与 Alpha 裁剪的处理流程对比

图:Alpha 混合与 Alpha 裁剪的处理流程对比

路线一实操:一杯渐隐的药水

新建 Unlit 图,图形设置里表面选项选 Transparent(渲染节点会自动带上 Alpha 相关设置)。节点链极简:Color 属性接 Base Color,Vector1 属性 Opacity(滑条零到一)接 Alpha。保存赋给一个立方体,拖动 Opacity 滑条——立方体从实心到全透连续变化。

这个最简链上做两个进阶实验。实验一:渐隐动画——Opacity 位置换成 Fraction(Time * 0.2) 与 Smoothstep 的组合再取反,物体每五秒完成一次"实体到消失"的呼吸循环,传送门冷却的视觉语言。实验二:边缘不透明——把 5.3 节的菲涅尔链输出加到 Opacity 上,物体中心近乎全透、轮廓保持可见:隐身斗篷的标准处理,让玩家看得出"这里有个东西"。

路线二实操:撕纸边缘

新建 Unlit 图,表面选项勾上 Alpha Clipping(片元块出现 Alpha Clip Threshold 端口)。节点链:一张噪声贴图采样接 Alpha,阈值端口接固定值 0.5。保存赋给一个平面——平面出现雪花状的破洞,拖动阈值属性,破洞范围连续变化。这就是溶解效果的全部机制基础,6.4 节只是在这条链上加时间与边缘色。

两条路线的填充开销差异值得算一遍:混合路线所有覆盖像素都要读背景色再写回;裁剪路线被丢弃的像素在深度测试阶段就出局,后续着色与填充全部省掉。大面积植被用裁剪而不用混合,就是这个账。

多层透明叠加的姿势

场景里多层透明(雾加玻璃加光效)堆叠时,观感与排序都要管。观感侧:多层半透明叠加会反复混合,颜色饱和度容易失控,每层 Alpha 值应整体压低(零点二到零点四区间起调)。排序侧:同一渲染队列内的透明物体按渲染器排序,个别错序的顽固分子用材质的渲染队列微调(数值大的后画);粒子系统与模型透明交叠是重灾区,能合并的美术资源尽量合并。5.3 节全息坑一的处理手段在这里同样适用。

混合模式的具体选项

透明设置展开后不止一个选项:混合模式(Blend Mode)通常有 Alpha(标准混合)、Premultiplied(预乘)、Additive(加法)、Multiply(乘法)几档。Additive 值得单独认识:输出颜色直接加到背景上,Alpha 越大加得越多,画面只会变亮不会变暗——火光、魔法光柱、全息的标准选择,因为它"没有暗部",视觉上天然是发光体。Multiply 则只减不增,做阴影投影类效果。选型一句话:要遮住背景选 Alpha,要点亮背景选 Additive,要压暗背景选 Multiply。

问题:为什么我的透明物体有时显示有时消失?

大概率是排序抖动:两个透明物体距离接近,渲染器按深度排序的次序在帧间翻转,混合结果随之跳变。缓解办法:物体间拉开距离(治本);给顽固的材质固定渲染队列(强制次序);把其中一个改成裁剪路线(退出排序博弈)。先确认现象是否符合"距离接近"的特征再动手,别把采样或贴图问题误判成排序。

半透明与半裁剪的混合方案

有一种折中方案值得认识:Alpha 裁剪加抖动透明(Dither)。做法是把一张规则图案(棋盘格噪声)与 Alpha 比较,低于阈值的像素按图案稀疏地丢弃——远看是半透明,机制上仍是裁剪。它保住了裁剪路线的全部优点(无排序、被丢像素零开销),代价是放大后能看到颗粒感。低端机的半透明大量使用这个方案,识别它的方法是把镜头拉近看像素级图案。本册不展开实现,知道方案谱系里还有这一档即可。

透明设置的检查顺序固化

透明类问题的排查顺序在本节固化成卡片:第一查图设置(图形设置里表面选项是 Transparent 还是 Opaque,裁剪有没有勾);第二查 Alpha 链(Alpha 端口的输入范围是否在零一区间,Saturate 兜底了吗);第三查混合模式(Alpha、Additive、Multiply 的语义选对了吗);第四查排序(物体间次序与渲染队列)。四步覆盖 6.2 节全部机制点,打印成便签贴在显示器边的价值真实存在——透明问题的排查频率在效果开发里稳居前三。

问题:裁剪路线的边缘锯齿能缓解吗?

能,常规手段是把阈值附近的硬切换成窄带 Smoothstep——但那会引入半透明过渡,等于往裁剪里掺混合,排序问题跟着回来。更聪明的做法是"边缘渐变贴图":用一张带灰度过渡的噪声图,让裁剪边缘本身带纹理——锯齿被图案感掩盖,机制仍是纯裁剪。两个思路的取舍:要平滑接受排序成本,要性能用图案掩盖。溶解案例(6.4)选的就是后者,当时你可能没意识到这个选择背后的权衡。

本节要点回顾

  • 透明的两个约束:后于不透明绘制、透明体之间需有序,怪现象都能溯源到这两条。
  • 混合细腻排序贵:全像素填充加排序管理,雾与光效的正确选择。
  • 裁剪硬边零排序:整像素丢弃省填充,植被与溶解的标配。
  • 多层叠加压 Alpha:每层低透明度起步,顽固错序用渲染队列微调。

透明机制就位,下一节补上最后一块零件:噪声——溶解效果的"碎裂图案"从哪来,随机性怎么用节点造出来。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U