Files
BlueRoseNote/03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/Rendering/BasePass修改.md

87 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: BasePass修改
date: 2026-05-03 00:00:00
excerpt: 强制 PrePass、阴影 Only 材质、X2Multiply 雾效等 BasePass 层面修改
tags:
- ARC
- Rendering
- BasePass
rating: ⭐
---
# BasePass 修改
返回 [[Rendering]]
## 概述
ARC 引擎在 BasePass 层面做了多项针对性修改,包括强制 Early-Z 预通道、阴影专用材质和自定义混合模式的雾效处理。
## 1. 阴影专用材质RED_MASKED_SHADOW_ONLY
让材质只产生阴影投射而不渲染可见像素:
```hlsl
#if RED_MASKED_SHADOW_ONLY
clip(-1); // 直接丢弃像素
#endif
```
用于格斗游戏中只需要地面阴影但不需要渲染实体的辅助网格。
## 2. 强制 Early-ZEARLY_Z_PASS_FORCED
由 [[自定义材质属性]] 中的 `bForcedPrepass` 控制,强制特定材质走 Early-Z PrePass
```cpp
// BasePassRendering.cpp
if (Material.bForcedPrepass)
{
// 强制深度 Pass提前剔除被遮挡像素
// 减少 OverDraw 对卡通渲染管线的性能影响
}
```
标记来源ASW / Wizcorp (2022)。
## 3. X2Multiply 雾效
`BLEND_X2Multiply` 混合模式提供正确的雾效混合:
```hlsl
#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.0X2Multiply 中性色为 0.5。
## 4. PixelDepthOffset 修复
修复 PC 平台 PixelDepthOffset 的噪声问题:
```hlsl
// 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 修复 |