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

2.0 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
其他RHI改进 2026-05-03 00:00:00 PSO 异步创建、纹理池管理、CommandList 任务分流等 D3D12 改进
ARC
D3D12RHI

其他 RHI 改进

返回 D3D12RHI

概述

ARC 引擎在 D3D12 RHI 层面做了多项基础设施改进,涵盖 PSO 管理、纹理内存、命令列表执行和光线追踪支持。

PSO 异步创建

Busy-Wait + Stall 告警

PSO 创建改为异步模式,当 Shader 未就绪时 busy-wait 并记录 stall 时间:

// 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,暴露底层接口供外部模块使用:

// 获取图形命令列表和队列
GetGfxCommandListAndQueue();

// 获取拷贝命令队列
GetCopyCommandQueue();

修改文件列表

涉及 Source/Runtime/D3D12RHI/ 下约 60 个文件,主要覆盖:

  • Private/D3D12Commands.cpp — CommandList 执行
  • Private/D3D12PipelineState.cpp — PSO 缓存
  • Private/D3D12Texture.cpp — 纹理池
  • Private/D3D12RayTracing.cpp — RT 改进
  • Public/D3D12RHIBridge.h新增