vault backup: 2026-05-03 20:37:58
This commit is contained in:
29
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/D3D12RHI.md
Normal file
29
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/D3D12RHI.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: D3D12RHI
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: ARC 引擎 D3D12 RHI 改进分类索引
|
||||
tags:
|
||||
- ARC
|
||||
- D3D12RHI
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# D3D12RHI — D3D12 RHI 改进
|
||||
|
||||
返回 [[ARC引擎修改总览]]
|
||||
|
||||
## 概述
|
||||
|
||||
D3D12RHI 是 ARC 引擎修改量第二大的模块(60 个文件),但与卡通渲染无关。这些修改主要是**底层 GPU 基础设施的性能优化和调试增强**,部分可能从后续 UE 版本回移,部分是为主机平台开发的专用功能。
|
||||
|
||||
## 功能列表
|
||||
|
||||
| 功能 | 文档 | 说明 |
|
||||
|------|------|------|
|
||||
| 提交间隔记录器 | [[提交间隔记录器]] | GPU 帧间提交间隔分析 |
|
||||
| DRED 调试增强 | [[DRED调试增强]] | GPU 崩溃时的扩展诊断 |
|
||||
| 其他 RHI 改进 | [[其他RHI改进]] | PSO 异步、纹理池、CommandList 等 |
|
||||
|
||||
## 新增文件
|
||||
|
||||
- `Source/Runtime/D3D12RHI/Public/D3D12RHIBridge.h` — 暴露 D3D12 命令队列供外部访问
|
||||
46
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/DRED调试增强.md
Normal file
46
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/DRED调试增强.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: DRED调试增强
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: Device Removed Extended Data 增强,GPU 崩溃时提供面包屑上下文
|
||||
tags:
|
||||
- ARC
|
||||
- D3D12RHI
|
||||
- Debug
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# DRED 调试增强
|
||||
|
||||
返回 [[D3D12RHI]]
|
||||
|
||||
## 概述
|
||||
|
||||
DRED(Device Removed Extended Data)是 D3D12 的 GPU 崩溃诊断机制。ARC 引擎增强了 DRED 的使用,在 GPU 崩溃时提供更详细的面包屑(Breadcrumb)上下文信息。
|
||||
|
||||
## 增强内容
|
||||
|
||||
### 面包屑上下文
|
||||
|
||||
在关键渲染操作处插入 Breadcrumb 标记,GPU 崩溃时可以追溯到具体的操作步骤:
|
||||
|
||||
- 绘制调用标记
|
||||
- 资源状态转换标记
|
||||
- 计算着色器调度标记
|
||||
|
||||
### 向量化异常处理器
|
||||
|
||||
新增 Vectored Exception Handler,在 Windows 异常触发时检查 D3D12 Debug 消息:
|
||||
|
||||
- 捕获 D3D12 设备丢失事件
|
||||
- 自动收集 DRED 信息
|
||||
- 输出到日志供崩溃分析
|
||||
|
||||
## 使用场景
|
||||
|
||||
- 主机开发中 GPU 挂起的排查
|
||||
- 复杂着色器导致的设备丢失诊断
|
||||
- CI/CIS 环境中的自动化崩溃分析
|
||||
|
||||
## 修改文件
|
||||
|
||||
涉及 D3D12RHI 模块的设备创建、命令列表执行和异常处理路径。
|
||||
79
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/其他RHI改进.md
Normal file
79
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/其他RHI改进.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
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` — **新增**
|
||||
35
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/提交间隔记录器.md
Normal file
35
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/D3D12RHI/提交间隔记录器.md
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: 提交间隔记录器
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: D3D12 Submission Gap Recorder,追踪 GPU 帧间提交间隔用于性能分析
|
||||
tags:
|
||||
- ARC
|
||||
- D3D12RHI
|
||||
- Profiling
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# 提交间隔记录器
|
||||
|
||||
返回 [[D3D12RHI]]
|
||||
|
||||
## 概述
|
||||
|
||||
Submission Gap Recorder(`D3D12_SUBMISSION_GAP_RECORDER`)是一个 GPU 性能分析系统,记录 D3D12 Command List 提交之间的间隔时间,用于识别 CPU-GPU 同步瓶颈和提交延迟。
|
||||
|
||||
## 功能
|
||||
|
||||
- 记录每帧 Command List 提交的时间戳
|
||||
- 计算相邻提交之间的间隔(Gap)
|
||||
- 识别异常长的提交间隔(可能的 CPU stall 或 GPU bubble)
|
||||
- 提供统计数据用于性能优化
|
||||
|
||||
## 使用场景
|
||||
|
||||
- 分析格斗游戏中的帧率卡顿原因
|
||||
- 排查 CPU 提交瓶颈
|
||||
- 验证多线程命令录制的效率
|
||||
|
||||
## 修改文件
|
||||
|
||||
涉及 D3D12RHI 模块多个文件,主要在命令列表管理和提交路径中插入时间戳记录点。
|
||||
Reference in New Issue
Block a user