4.7 KiB
4.7 KiB
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating | ||
|---|---|---|---|---|---|---|
| Platform | 2026-05-03 00:00:00 | ARC 引擎平台支持修改(PS4 PSSL 兼容层/HDR Resolve/RT Write Mask、PS5 Feature Level/GBuffer 适配、Xbox One HLSL 兼容层/Wave Intrinsics) |
|
⭐ |
Platform — 平台支持
返回 ARC引擎修改总览
概述
ARC 引擎为主机平台(PS4、PS5、Xbox One)添加了 Shader 兼容层和平台特化代码,确保卡通渲染管线在各平台上正确运行。
功能列表
| 功能 | 说明 |
|---|---|
| PS4 支持 | PSSL 兼容层、HDR Resolve、RT Write Mask |
| PS5 支持 | Feature Level 定义、GBuffer 格式适配 |
| Xbox One 支持 | HLSL 兼容层、Wave Intrinsics |
PS4 支持
概述
为 PS4(Orbis)平台提供完整的 Shader 兼容层和平台特化着色器。
PSSL 兼容层
Public/Platform/PS4/PS4Common.ush 提供 HLSL → PSSL(PlayStation Shader Language)的映射:
- 数据类型映射(
float4→ PSSL 等效) - Sampler 设置(各向异性过滤、比较采样器)
- Wave Intrinsics 映射(
WaveActiveSum、WaveActiveBallot等) - 纹理采样函数兼容
平台特化着色器
Private/Platform/PS4/ 目录包含 6 个平台着色器:
| 文件 | 用途 |
|---|---|
| HDR Resolve | 高动态范围缓冲区解析 |
| RT Write Mask | Render Target 写入遮罩 |
| Wide Custom Resolve | 宽格式自定义解析 |
DOF 修复
PostProcessDOF.usf 中的 PS4 特化修改:
#if !MOBILE_SHADING
// PS4: ReadFullResAndDepth 函数签名调整
float4 ReadFullResAndDepth(float2 UV, float Depth)
#endif
以及 RED_CHANGE 深度 Gather 优化。
完整代码解析
// Public/Platform/PS4/PS4Common.ush — PSSL 兼容层示例
// HLSL → PSSL 数据类型和函数映射
// 例如 Wave Intrinsics:
// HLSL WaveActiveSum() → PSSL __v_add_co_u32() 等
// 以及 Sampler 设置、纹理采样兼容函数
代码修改情况
| 文件路径 | 行数 | 修改类型 | 修改内容 |
|---|---|---|---|
Shaders/Public/Platform/PS4/PS4Common.ush |
688行 | 新增文件 | PSSL 兼容层(数据类型映射/Sampler/Wave Intrinsics) |
Shaders/Private/Platform/PS4/HdrCustomResolveShaders.ush |
127行 | 新增文件 | HDR 自定义 Resolve 着色器 |
Shaders/Private/Platform/PS4/RTWriteMaskProcessing.usf |
118行 | 新增文件 | RenderTarget 写入遮罩处理 |
Shaders/Private/Platform/PS4/WideCustomResolveShaders.ush |
124行 | 新增文件 | 宽格式自定义 Resolve |
Shaders/Private/Platform/PS4/WideCustomResolve_Wide.ush |
111行 | 新增文件 | Wide 变体 |
Shaders/Private/Platform/PS4/WideCustomResolve_Wider.ush |
130行 | 新增文件 | Wider 变体 |
Shaders/Private/Platform/PS4/WideCustomResolve_Widest.ush |
139行 | 新增文件 | Widest 变体 |
Shaders/Private/PostProcessDOF.usf |
L66~L76 | 修改 | ReadFullResAndDepth 函数签名 PS4 适配 |
Shaders/Private/PostProcessDOF.usf |
L114~L121 | 新增 | RED_CHANGE 深度 Gather 优化 |
PS5 支持
概述
PS5 平台的修改相对较少,主要是 Feature Level 定义和 GBuffer 格式的平台差异处理。
Feature Level
在 Public/Platform.ush 中为 PS5 添加 SM5 Feature Level:
#elif PS5_PROFILE
#define FEATURE_LEVEL FEATURE_LEVEL_SM5
GBuffer 格式适配
Specular GBuffer 在 PS5 上保持标准格式,仅在非 PS5 平台降级为 PF_A8:
// SceneRenderTargets.cpp
#if !PS5_PLATFORM
SpecularGBufferFormat = PF_A8; // 降低精度节省带宽
#endif
参见 GBuffer修改。
代码修改情况
| 文件路径 | 行号 | 修改类型 | 修改内容 |
|---|---|---|---|
Shaders/Public/Platform.ush |
L211~L215 | 新增 | PS5_PROFILE → FEATURE_LEVEL_SM5 定义 |
Source/Runtime/Renderer/Private/SceneRenderTargets.cpp |
— | 修改 | PS5 平台保持标准 Specular GBuffer 格式 |
Xbox One 支持
概述
为 Xbox One 平台提供 Shader 兼容层。
HLSL 兼容层
Public/Platform/XboxOne/XboxOneCommon.ush 提供:
- Xbox One GPU 特有的 Wave Intrinsics 映射
- Sampler 和纹理采样兼容
- HLSL Shader Model 差异处理
D3D12RHI 平台代码
Source/Runtime/D3D12RHI/Private/XboxOne/ 目录(空占位),预留 Xbox One 平台的 D3D12 RHI 特化代码。
代码修改情况
| 文件路径 | 行数 | 修改类型 | 修改内容 |
|---|---|---|---|
Shaders/Public/Platform/XboxOne/XboxOneCommon.ush |
324行 | 新增文件 | Xbox One HLSL 兼容层 |
Source/Runtime/D3D12RHI/Private/XboxOne/ |
— | 新增目录 | Xbox One D3D12 RHI 占位目录 |