Files
BlueRoseNote/03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/Rendering/光线追踪与PSO.md

87 lines
2.4 KiB
Markdown
Raw Normal View History

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 引擎在光线追踪和 PSOPipeline 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` 参数 |