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

87 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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` 参数,控制是否在设置管线状态时应用额外的平台特化状态。
## 完整代码解析
```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` 参数 |