2026-05-03 20:37:58 +08:00
|
|
|
|
---
|
|
|
|
|
|
title: Platform
|
|
|
|
|
|
date: 2026-05-03 00:00:00
|
2026-05-03 21:38:46 +08:00
|
|
|
|
excerpt: ARC 引擎平台支持修改(PS4 PSSL 兼容层/HDR Resolve/RT Write Mask、PS5 Feature Level/GBuffer 适配、Xbox One HLSL 兼容层/Wave Intrinsics)
|
2026-05-03 20:37:58 +08:00
|
|
|
|
tags:
|
|
|
|
|
|
- ARC
|
|
|
|
|
|
- Platform
|
|
|
|
|
|
rating: ⭐
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Platform — 平台支持
|
|
|
|
|
|
|
|
|
|
|
|
返回 [[ARC引擎修改总览]]
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
ARC 引擎为主机平台(PS4、PS5、Xbox One)添加了 Shader 兼容层和平台特化代码,确保卡通渲染管线在各平台上正确运行。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能列表
|
|
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
| 功能 | 说明 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| 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 占位目录 |
|