--- 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` 参数 |