--- title: Platform date: 2026-05-03 00:00:00 excerpt: ARC 引擎平台支持修改(PS4 PSSL 兼容层/HDR Resolve/RT Write Mask、PS5 Feature Level/GBuffer 适配、Xbox One HLSL 兼容层/Wave Intrinsics) tags: - ARC - Platform rating: ⭐ --- # 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 特化修改: ```hlsl #if !MOBILE_SHADING // PS4: ReadFullResAndDepth 函数签名调整 float4 ReadFullResAndDepth(float2 UV, float Depth) #endif ``` 以及 `RED_CHANGE` 深度 Gather 优化。 ### 完整代码解析 ```hlsl // 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: ```hlsl #elif PS5_PROFILE #define FEATURE_LEVEL FEATURE_LEVEL_SM5 ``` ### GBuffer 格式适配 Specular GBuffer 在 PS5 上保持标准格式,仅在非 PS5 平台降级为 `PF_A8`: ```cpp // 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 占位目录 |