Files
BlueRoseNote/03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/其他RHI改进.md

80 lines
2.0 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: 其他RHI改进
date: 2026-05-03 00:00:00
excerpt: PSO 异步创建、纹理池管理、CommandList 任务分流等 D3D12 改进
tags:
- ARC
- D3D12RHI
rating: ⭐
---
# 其他 RHI 改进
返回 [[D3D12RHI]]
## 概述
ARC 引擎在 D3D12 RHI 层面做了多项基础设施改进,涵盖 PSO 管理、纹理内存、命令列表执行和光线追踪支持。
## PSO 异步创建
### Busy-Wait + Stall 告警
PSO 创建改为异步模式,当 Shader 未就绪时 busy-wait 并记录 stall 时间:
```cpp
// PSO 创建等待时输出告警日志
// 帮助识别哪些 Shader 组合导致了渲染卡顿
```
### 部分编译bPartial
Ray Tracing Pipeline 支持部分编译——不需要等待所有 Hit Shader 就绪即可使用基础管线。参见 [[光线追踪与PSO]]。
## 纹理池管理
新增 CVar `D3D12.TexturePoolOnlyAccountStreamableTexture`
- 纹理池统计时仅计算可流式加载的纹理
- 避免非流式纹理(如 UI、字体干扰流式预算
## CommandList 任务分流
CVar `r.D3D12.ExecuteCommandListTask`
- 将部分 Command List 执行工作从 RHI 线程分流到 Task 线程
- 减少 RHI 线程压力
## Ray Tracing 改进
- View Descriptor Heap 扩展到 250k 描述符
- BLAS Compaction 支持(减少加速结构内存占用)
- PSO 缓存改进
## Buffer Staging
改进 GPU Readback 的 Staging Buffer 管理,减少 CPU-GPU 同步开销。
## Back Buffer 引用
安全处理 Presentable Texture 的引用计数,防止拷贝操作时的悬空引用。
## D3D12RHIBridge
新增 `D3D12RHIBridge.h`,暴露底层接口供外部模块使用:
```cpp
// 获取图形命令列表和队列
GetGfxCommandListAndQueue();
// 获取拷贝命令队列
GetCopyCommandQueue();
```
## 修改文件列表
涉及 `Source/Runtime/D3D12RHI/` 下约 60 个文件,主要覆盖:
- `Private/D3D12Commands.cpp` — CommandList 执行
- `Private/D3D12PipelineState.cpp` — PSO 缓存
- `Private/D3D12Texture.cpp` — 纹理池
- `Private/D3D12RayTracing.cpp` — RT 改进
- `Public/D3D12RHIBridge.h`**新增**