2026-05-03 20:37:58 +08:00
|
|
|
|
---
|
|
|
|
|
|
title: 光线追踪与PSO
|
|
|
|
|
|
date: 2026-05-03 00:00:00
|
|
|
|
|
|
excerpt: RT 反射小幅修改和 PSO 部分编译标记
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- ARC
|
|
|
|
|
|
- Rendering
|
|
|
|
|
|
- RayTracing
|
|
|
|
|
|
rating: ⭐
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 光线追踪与 PSO
|
|
|
|
|
|
|
|
|
|
|
|
返回 [[Rendering]]
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
ARC 引擎在光线追踪和 PSO(Pipeline State Object)方面的修改较少,主要是格式修复和编译优化标记。
|
|
|
|
|
|
|
|
|
|
|
|
## Ray Tracing
|
|
|
|
|
|
|
|
|
|
|
|
### RayTracingDeferredReflections.usf
|
|
|
|
|
|
|
|
|
|
|
|
仅缩进格式修复(去掉一级缩进),无功能性变更。
|
|
|
|
|
|
|
|
|
|
|
|
## PSO 改进
|
|
|
|
|
|
|
|
|
|
|
|
### 部分编译标记
|
|
|
|
|
|
|
|
|
|
|
|
在 RHI 层新增 `bPartial` 标记用于 Ray Tracing Pipeline 的异步编译:
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
// RHI module
|
|
|
|
|
|
struct FRayTracingPipelineStateInitializer
|
|
|
|
|
|
{
|
|
|
|
|
|
bool bPartial; // 允许部分编译(不等待所有 Shader 就绪)
|
|
|
|
|
|
FRayTracingPipelineState* BasePipeline; // 基础 PSO,用于派生
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### SetGraphicsPipelineState 扩展
|
|
|
|
|
|
|
|
|
|
|
|
新增 `bApplyAdditionalState` 参数,控制是否在设置管线状态时应用额外的平台特化状态。
|
|
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
## 完整代码解析
|
|
|
|
|
|
|
|
|
|
|
|
```hlsl
|
|
|
|
|
|
// RayTracingDeferredReflections.usf
|
|
|
|
|
|
// 仅缩进格式修复(去掉一级缩进),无功能性变更
|
|
|
|
|
|
// 不影响运行时行为
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
// RHI 模块 — PSO 部分编译标记
|
|
|
|
|
|
struct FRayTracingPipelineStateInitializer
|
|
|
|
|
|
{
|
|
|
|
|
|
// ASW 新增:允许部分编译
|
|
|
|
|
|
// 不需要等待所有 Hit Shader 就绪即可使用基础管线
|
|
|
|
|
|
// 用于减少首次光线追踪渲染时的卡顿
|
|
|
|
|
|
bool bPartial;
|
|
|
|
|
|
|
|
|
|
|
|
// 基础 PSO,用于派生新的 PSO
|
|
|
|
|
|
// 派生 PSO 只需要编译差异部分
|
|
|
|
|
|
FRayTracingPipelineState* BasePipeline;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// SetGraphicsPipelineState 扩展
|
|
|
|
|
|
// ASW 新增 bApplyAdditionalState 参数
|
|
|
|
|
|
// 控制是否在设置管线状态时应用平台特化的额外状态
|
|
|
|
|
|
void RHISetGraphicsPipelineState(
|
|
|
|
|
|
FGraphicsPipelineStateInitializer& Initializer,
|
|
|
|
|
|
bool bApplyAdditionalState = true // <-- 新增参数
|
|
|
|
|
|
);
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-05-03 20:37:58 +08:00
|
|
|
|
## 关联文档
|
|
|
|
|
|
|
|
|
|
|
|
- [[D3D12RHI]] — D3D12 层面的 PSO 异步创建改进
|
|
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
## 代码修改情况
|
2026-05-03 20:37:58 +08:00
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
| 文件路径 | 行号 | 修改类型 | 修改内容 |
|
|
|
|
|
|
|---------|------|---------|---------|
|
|
|
|
|
|
| `Shaders/Private/RayTracing/RayTracingDeferredReflections.usf` | L109~L121 | 格式 | 缩进调整(无功能变更) |
|
|
|
|
|
|
| `Source/Runtime/RHI/` | — | 修改 | `FRayTracingPipelineStateInitializer` 新增 `bPartial`、`BasePipeline` |
|
|
|
|
|
|
| `Source/Runtime/RHI/` | — | 修改 | `SetGraphicsPipelineState` 新增 `bApplyAdditionalState` 参数 |
|