87 lines
2.4 KiB
Markdown
87 lines
2.4 KiB
Markdown
---
|
||
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` 参数,控制是否在设置管线状态时应用额外的平台特化状态。
|
||
|
||
## 完整代码解析
|
||
|
||
```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 // <-- 新增参数
|
||
);
|
||
```
|
||
|
||
## 关联文档
|
||
|
||
- [[D3D12RHI]] — D3D12 层面的 PSO 异步创建改进
|
||
|
||
## 代码修改情况
|
||
|
||
| 文件路径 | 行号 | 修改类型 | 修改内容 |
|
||
|---------|------|---------|---------|
|
||
| `Shaders/Private/RayTracing/RayTracingDeferredReflections.usf` | L109~L121 | 格式 | 缩进调整(无功能变更) |
|
||
| `Source/Runtime/RHI/` | — | 修改 | `FRayTracingPipelineStateInitializer` 新增 `bPartial`、`BasePipeline` |
|
||
| `Source/Runtime/RHI/` | — | 修改 | `SetGraphicsPipelineState` 新增 `bApplyAdditionalState` 参数 |
|