Files
BlueRoseNote/03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/Gameplay/RED场景视图类型.md

2.7 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
RED场景视图类型 2026-05-03 00:00:00 角色/特效/背景/HUD 分层渲染系统
ARC
Gameplay
Rendering

RED 场景视图类型

返回 Gameplay

概述

新增 EREDSceneViewType 枚举,将场景中的 Actor 按类型分层允许选择性渲染特定层级。格斗游戏中常用于角色和背景使用不同的后处理参数、特效层独立控制、HUD 层分离等。

视图类型

enum class EREDSceneViewType
{
    REDSceneView_Character,    // 角色层
    REDSceneView_Effect,       // 特效层
    REDSceneView_BG,           // 背景层(主)
    REDSceneView_BG_Layer1,    // 背景分层 1
    REDSceneView_BG_Layer2,    // 背景分层 2
    // ... Layer3 ~ Layer8
    REDSceneView_HUD           // HUD 层
};

使用方式

Actor 端

每个 Actor 拥有 REDSceneViewType 属性,在编辑器中设置所属层级。

渲染端

PlayerController::GetREDSceneViewTypeFlag() 返回当前需要渲染的层级位掩码Scene Visibility 阶段根据此掩码过滤 Actor。

排序键

自定义排序键影响渲染顺序,确保分层正确。

使用场景

  • 角色层独立使用 BGMultColor全局色调 而不影响背景
  • 背景多层分离实现视差效果
  • 特效层独立的 Bloom 和后处理参数
  • 对战 UI血条等使用 HUD 层,不受场景后处理影响

完整代码解析

// EngineTypes.h — 场景视图类型枚举
// ASW 新增:将场景 Actor 按类型分层
enum class EREDSceneViewType : uint8
{
    REDSceneView_Character,     // 角色层玩家、AI
    REDSceneView_Effect,        // 特效层(粒子、光柱等)
    REDSceneView_BG,            // 背景主层
    REDSceneView_BG_Layer1,     // 背景分层1近景装饰
    REDSceneView_BG_Layer2,     // 背景分层2
    // ... Layer3 ~ Layer8      // 更多背景分层
    REDSceneView_HUD            // HUD 层
};

// PlayerController 端
// 获取当前需要渲染的层级位掩码
uint32 GetREDSceneViewTypeFlag() const;
// 例如:只渲染角色和特效
// return (1 << REDSceneView_Character) | (1 << REDSceneView_Effect);

代码修改情况

文件路径 修改类型 修改内容
Source/Runtime/Engine/Public/EngineTypes.h 新增 EREDSceneViewType 枚举Character/Effect/BG/HUD 等)
Source/Runtime/Engine/Classes/GameFramework/PlayerController.h 新增 GetREDSceneViewTypeFlag() 层级位掩码
Source/Runtime/Renderer/Private/SceneVisibility.cpp 修改 按 REDSceneViewType 过滤可见性
Source/Runtime/Renderer/Private/SceneRendering.cpp 修改 自定义排序键处理