【UE】材质与半透明 - 01.将半透明作为后期材质

在先导篇中,我们简单梳理了半透明(Translucent)在整个渲染管线中的定位。最后总到:半透明被我视为一种"后期"。

作为正式开篇,本文将探讨如何利用半透明材质来制作类似后期处理(Post Process)的特效,以及在这一过程中需要注意的技术细节。

在半透明材质中复现后期逻辑

我们可以直接使用后期思路来使用半透明。但有些时候直接照搬 Post Process Material 的节点往往行不通,我们需要解决几个核心差异。

解决 SceneTexture 报错

在半透明材质中直接使用 SceneTexture:PostProcessInput0SceneTexture:SceneColor 等输入节点时

由于半透明与后期材质在节点上略有差异,通常会遇到如下报错:

复制代码
[SM6] SceneTexture expressions cannot use post process inputs or scene color in non post process domain materials

这个机制产生的原因,是因为渲染管线的执行顺序。

正如先导篇所述,UE 的半透明渲染发生在不透明(Opaque)物体之后,但在后期处理(Post Process)之前。

如果试图在半透明阶段读取 SceneColor,由于此时屏幕颜色尚未完全渲染完毕(因为自己正在渲染中),会产生循环依赖的问题。

引擎为了支持这种需求,会在透明 Pass 开始前,把当前的 SceneColor 复制一份到一个临时纹理中。

此时,你应当需按照如下节点来使用这个临时纹理:

在半透明中计算 场景世界位置 SceneWorldPosition

另一个显著差异在于 WorldPosition 节点的行为:

  • 在后期材质中WorldPosition 通常指代当前像素对应的场景世界位置。
  • 在半透明材质中Absolute World Position 输出的是当前半透明模型网格顶点/像素的世界位置,而非其背后的场景位置。

在半透明材质中的Absolute World Position

如果我们需要像后期材质那样获取"背景场景的世界位置"(例如做深度扫描、世界坐标映射贴图等),需要手动利用 场景深度(SceneDepth)相机位置 进行重建:

为什么要在半透明中制作后期效果

1. 性能优化:将计算局限在特定区域

全屏后期处理(Post Process)会对屏幕上的每一个像素进行计算,开销大。而使用半透明模型载体,可以将复杂的像素着色计算(Pixel Shader)限制在模型的体积范围内,大幅节省 GPU 开销。

2. 灵活控制:利用模型形态定义特效范围

由于是基于 Mesh 的,我们可以利用模型本身的形状、UV 动画或顶点色来精确控制特效的发生区域。例如制作局部的热扭曲、力场护盾或特定区域的风格化滤镜,这比用后期材质配合 CustomDepth Mask 要直观且灵活得多。

3. 渲染管线优势:享受后续的渲染特性

这是半透明材质独特的优势。因为它的渲染时机在 Post Process 之前,所以半透明特效渲染出的结果,依然可以参与后续的渲染流程。这意味着你的特效可以被 TAA(时间性抗锯齿)、Bloom(泛光)、甚至某些 GI(全局光照)和反射效果所处理,从而更好地融入环境。

相比之下,Post Process 材质通常处于管线极后方,很难再被其他效果修饰。

假自发光

文章的最后,作为抛砖引玉,这里演示制作一个假的点光源后处理,可以很好的代表半透明做后期效果的优势:






相关推荐
AI视觉网奇19 小时前
ue重定向学习笔记
笔记·ue5
军军君011 天前
Three.js基础功能学习二:场景图与材质
前端·javascript·学习·3d·材质·three·三维
AI视觉网奇1 天前
Audio2Face 实时推理
笔记·ue5
u9king1 天前
虚幻引擎UE5.6编译卡在rc2.exe长时间未响应的解决方法
visualstudio·ue5·虚幻·ue5.6·rc2.exe
GMATG_LIU3 天前
金属材质化学组成与标准分析技术
材质
海伯森技术3 天前
海伯森点光谱应用案例之——不透明材质镀膜厚度检测
材质
AI视觉网奇3 天前
ue 蓝图动画学习笔记
笔记·学习·ue5
陈友松3 天前
UE5 文件传输插件:支持任意类型,任意大小(超过2G)的文件上传和下载
ue5
AI视觉网奇4 天前
CBAudio2Face
ue5·audio2face