vault backup: 2026-05-03 21:38:46
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Platform
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: ARC 引擎平台支持修改分类索引(PS4/PS5/Xbox One)
|
||||
excerpt: ARC 引擎平台支持修改(PS4 PSSL 兼容层/HDR Resolve/RT Write Mask、PS5 Feature Level/GBuffer 适配、Xbox One HLSL 兼容层/Wave Intrinsics)
|
||||
tags:
|
||||
- ARC
|
||||
- Platform
|
||||
@@ -18,8 +18,135 @@ ARC 引擎为主机平台(PS4、PS5、Xbox One)添加了 Shader 兼容层和
|
||||
|
||||
## 功能列表
|
||||
|
||||
| 功能 | 文档 | 说明 |
|
||||
|------|------|------|
|
||||
| PS4 支持 | [[PS4支持]] | PSSL 兼容层、HDR Resolve、RT Write Mask |
|
||||
| PS5 支持 | [[PS5支持]] | Feature Level 定义、GBuffer 格式适配 |
|
||||
| Xbox One 支持 | [[XboxOne支持]] | HLSL 兼容层、Wave Intrinsics |
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| 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 占位目录 |
|
||||
|
||||
Reference in New Issue
Block a user