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

2.2 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
BasePass修改 2026-05-03 00:00:00 强制 PrePass、阴影 Only 材质、X2Multiply 雾效等 BasePass 层面修改
ARC
Rendering
BasePass

BasePass 修改

返回 Rendering

概述

ARC 引擎在 BasePass 层面做了多项针对性修改,包括强制 Early-Z 预通道、阴影专用材质和自定义混合模式的雾效处理。

1. 阴影专用材质RED_MASKED_SHADOW_ONLY

让材质只产生阴影投射而不渲染可见像素:

#if RED_MASKED_SHADOW_ONLY
    clip(-1);  // 直接丢弃像素
#endif

用于格斗游戏中只需要地面阴影但不需要渲染实体的辅助网格。

2. 强制 Early-ZEARLY_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.0X2Multiply 中性色为 0.5。

4. PixelDepthOffset 修复

修复 PC 平台 PixelDepthOffset 的噪声问题:

// MaterialTemplate.ush
DeviceDepth = lerp(
    DeviceDepth,
    MaterialParameters.SvPosition.z,
    step(PixelDepthOffset, 0));  // PDO <= 0 时使用原始深度

关联文档

修改文件列表

文件 修改类型
Shaders/Private/BasePassPixelShader.usf 阴影 Only、X2Multiply 雾效
Source/Runtime/Renderer/Private/BasePassRendering.cpp 强制 PrePass、X2Multiply BlendState
Shaders/Private/MaterialTemplate.ush PDO 修复