2.7 KiB
2.7 KiB
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating | |||
|---|---|---|---|---|---|---|---|
| RED场景视图类型 | 2026-05-03 00:00:00 | 角色/特效/背景/HUD 分层渲染系统 |
|
⭐ |
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 |
修改 | 自定义排序键处理 |