2.2 KiB
2.2 KiB
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating | |||
|---|---|---|---|---|---|---|---|
| BasePass修改 | 2026-05-03 00:00:00 | 强制 PrePass、阴影 Only 材质、X2Multiply 雾效等 BasePass 层面修改 |
|
⭐ |
BasePass 修改
返回 Rendering
概述
ARC 引擎在 BasePass 层面做了多项针对性修改,包括强制 Early-Z 预通道、阴影专用材质和自定义混合模式的雾效处理。
1. 阴影专用材质(RED_MASKED_SHADOW_ONLY)
让材质只产生阴影投射而不渲染可见像素:
#if RED_MASKED_SHADOW_ONLY
clip(-1); // 直接丢弃像素
#endif
用于格斗游戏中只需要地面阴影但不需要渲染实体的辅助网格。
2. 强制 Early-Z(EARLY_Z_PASS_FORCED)
由 自定义材质属性 中的 bForcedPrepass 控制,强制特定材质走 Early-Z PrePass:
// BasePassRendering.cpp
if (Material.bForcedPrepass)
{
// 强制深度 Pass,提前剔除被遮挡像素
// 减少 OverDraw 对卡通渲染管线的性能影响
}
标记来源:ASW / Wizcorp (2022)。
3. X2Multiply 雾效
为 BLEND_X2Multiply 混合模式提供正确的雾效混合:
#elif MATERIALBLENDING_X2MULTIPLY
// X2Multiply 的中性色是 0.5(不是 0 或 1)
half3 FoggedColor = lerp(
float3(0.5, 0.5, 0.5),
Color,
Fogging.aaa * Fogging.aaa);
Out.MRT[0] = half4(FoggedColor, Opacity);
标准 Multiply 中性色为 1.0,X2Multiply 中性色为 0.5。
4. PixelDepthOffset 修复
修复 PC 平台 PixelDepthOffset 的噪声问题:
// MaterialTemplate.ush
DeviceDepth = lerp(
DeviceDepth,
MaterialParameters.SvPosition.z,
step(PixelDepthOffset, 0)); // PDO <= 0 时使用原始深度
关联文档
- 自定义材质属性 —
bForcedPrepass和BLEND_X2Multiply - RED自定义数据通道 — BasePass 中 CustomData 的写入
修改文件列表
| 文件 | 修改类型 |
|---|---|
Shaders/Private/BasePassPixelShader.usf |
阴影 Only、X2Multiply 雾效 |
Source/Runtime/Renderer/Private/BasePassRendering.cpp |
强制 PrePass、X2Multiply BlendState |
Shaders/Private/MaterialTemplate.ush |
PDO 修复 |