BlueRoseNote/03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md

168 lines
7.1 KiB
Markdown
Raw Normal View History

2023-06-29 11:55:02 +08:00
---
title: RenderDoc使用技巧
date: 2022-09-30 11:17:29
excerpt:
tags: RenderDoc
rating: ⭐⭐
---
## 前言
参考https://zhuanlan.zhihu.com/p/568990608
2024-02-19 21:03:57 +08:00
>UE5.3需要关闭异步计算让Renderdoc抓帧正常。输入命令即可**r.rdg.asynccompute 0**
2023-06-29 11:55:02 +08:00
## UE相关设置
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20220930121129.png)
### UE5中的改动
UE5中这些名称有了一定的变化
| 旧名称 | 新名称 | 注解 |
| --------------------------------------- | ------------------------ | -------------------------------------------------------------------------- |
| r.Shaders.KeepDebugInfo | r.Shaders.Symbols | 通过生成符号并将其写入主机的磁盘来启用着色器调试PC符号仍以内联方式存储。 |
| r.Shaders.KeepDebugInfo(被划分为两部分) | r.Shaders.ExtraData | 生成着色器名称和其他"额外"着色器数据。 |
| r.Shaders.PrepareExportedDebugInfo | r.Shaders.GenerateSymbol | 生成符号,但不将其写入磁盘(备注符号存储在DDC中) |
| r.Shaders.ExportDebugInfo | r.Shaders.WriteSymbols | 如果符号已生成,则将其写入磁盘。 |
2024-01-25 19:31:07 +08:00
2023-06-29 11:55:02 +08:00
## 其他设置
renderdoc.BinaryPath  // 查看RenderDoc的安装路径
renderdoc.BinaryPath "C:\Program Files\RenderDoc"  // 设置RenderDoc的安装路径为C:\Program Files\RenderDoc
renderdoc.CaptureAllActivity 1   // 勾选CaptureAllActivity获取编辑器所有viewport和窗口的渲染数据而不仅仅是当前viewport  获取UI的Draw需要开启该开关
renderdoc.CaptureCallstacks // 查看CaptureCallstacks获取图形API的调用堆栈是否勾选
renderdoc.EnableCrashHandler 0 // 取消勾选EnableCrashHandler截帧崩溃时是否使用RenderDoc的crash handler
renderdoc.ReferenceAllResources  // 查看ReferenceAllResources获取所有mesh、材质纹理等渲染资源开启该选项会导致帧文件很大是否勾选
renderdoc.SaveAllInitials 1 // 勾选SaveAllInitials获取所有mesh、材质纹理等渲染资源的初始状态开启该选项会导致帧文件很大
renderdoc.ShowHelpOnStartup  // 查看ShowHelpOnStartup启动编辑器时是否弹出RenderDoc的帮助对话框是否勾选
>调试Slate所需命令renderdoc.CaptureAllActivity 1
## 截帧命令
- renderdoc.CaptureFrameCount  10  // 连续截10帧并保存到一个rdc文件中
- renderdoc.CapturePIE 12 // 在编辑器中将当前地图Play然后连续截取12帧
- renderdoc.CaptureDelayInSeconds 0   // 设置Delay的单位为帧
- renderdoc.CaptureDelayInSeconds 1   // 设置Delay的单位为秒
- renderdoc.CaptureDelay 15  // 当Delay的单位为帧时表示设置延迟15帧当Delay的单位为秒时表示设置延迟15秒
//  这个只是设置仍然需要调用renderdoc.CaptureFrame等来发起截帧动作
## 重新编译Shader
- r.RecompileRenderer重新编译所有RenderModule。
- recompileshaders位于`bool RecompileShaders(const TCHAR* Cmd, FOutputDevice& Ar);`可以编译指定的Material。命令默认编译所有Shader快捷键是Ctrl+Shift+.。`recompileshaders material <material name>`
- Changed编译修改过文件
- Global编译GlobalShader
- Material **MaterialName**:附带一个参数材质名称
- All所有文件
- **ShaderFileName**编译指定的Shader
有人说`recompileshaders <USF FileName>`可以只编译指定的USF文件但实际测试会报错。或许可以试试Material版本比如`recompileshaders material M_SGSSS`
## 截取非管线Shader的方法
在你EnqueueRenderCommand前加一个FScopedCapture 跑到你的Cmd的时候就可以自动Renderdoc截帧 ,类为FcopedCapture。
## 使用技巧
### 修改ms显示耗时
![](https://pic1.zhimg.com/80/v2-804879d0e02dbd0622f6480b9dd5040c_720w.webp)
### 过滤高耗时DrawCall
使用$action(duration > 0.8ms) 进行过滤
![](https://pic4.zhimg.com/80/v2-6598ae8de61ecf7256aa2b2860fa622b_720w.webp)
### **调试VS**
Mesh Viewer中vs input选中或在preview窗口中鼠标右键选中顶点在选中顶点行上右键debug thie vertices
![](https://pic3.zhimg.com/80/v2-3001ac53f0fa085e47df236c0430d2ea_720w.webp)
### **调试PS**
Texture Viewer中右键选择像素在Pixel Context中心就是选中的像素选择需要调试的历史时间点击“Debug”调试
![](https://pic1.zhimg.com/80/v2-c7ab8ffce562b57fe12234a1a39952c4_720w.webp)
### 修改VS
![](https://pic4.zhimg.com/80/v2-b7acd2f64495b688274e6bb5ca6ea06b_720w.webp)
选中dc高亮绘制
![](https://pic1.zhimg.com/80/v2-246cc1577f0a61d68926299a30e488d8_720w.webp)
Pipeline state进入VS
![](https://pic2.zhimg.com/80/v2-37211dff3c6e57067255d6e91d08c6a1_720w.webp)
修改坐标
![](https://pic1.zhimg.com/80/v2-16f647910f37dc54ba7e09c199813a60_720w.webp)
Texture View中预览位置变化
### 修改PS
![](https://pic1.zhimg.com/80/v2-ba7d6b23e94fcf541c5815beacfbf674_720w.webp)
进入pipeline state 编辑ps
![](https://pic3.zhimg.com/80/v2-7442e83ed016b30a3bdd1745912c9c6e_720w.webp)
修改前颜色
![](https://pic2.zhimg.com/80/v2-4878401ef7cae939c76912135106500d_720w.webp)
修改base color为红色
![](https://pic3.zhimg.com/80/v2-cb6a39670c6d94c8703314239f00ebd2_720w.webp)
修改后效果预览
### 查看深度模板测试结果
![](https://pic1.zhimg.com/80/v2-10b497754fb1ed7ba0e12ced038e6fd4_720w.webp)
红色测试不同多,绿色测试通过
### 查看纹理在那些事件引用
![](https://pic4.zhimg.com/80/v2-ee8e0720527ca27045b8cefdeb483433_720w.webp)
![](https://pic2.zhimg.com/80/v2-8c3ed3a794c7b2fca04d8fda4ade6195_720w.webp)
PS 资源种点击链接
![](https://pic1.zhimg.com/80/v2-c70907dd5c33daf560f1be6405bc2a34_720w.webp)
Resource Inspector中右侧查看那些事件使用了此资源
### 纹理太暗
![](https://pic3.zhimg.com/80/v2-d7bdb13af09c789d374523b5df1e6b7e_720w.webp)
![](https://pic2.zhimg.com/80/v2-07d9e1d97230e47a22d641aae5cbbaa1_720w.webp)
### **查看DrawCall耗时**
![](https://pic2.zhimg.com/80/v2-9fc83fdaadf6a453e9dbccefb83ff65d_720w.webp)
### 查看纹理输入输出
![](https://pic2.zhimg.com/80/v2-f464f36300516d1c4c613820d2779fbd_720w.webp)
![](https://pic4.zhimg.com/80/v2-3e224c777f579d5bdcc8752a06231217_720w.webp)
### 重名名纹理
![](https://pic4.zhimg.com/80/v2-a08a7d270a4c8de3c952298ba209bcfb_720w.webp)
### 如何对比数据
将过滤后的数据导出为文本使用对比工具进行对比。用于发现dc耗时问题
![](https://pic3.zhimg.com/80/v2-358566c0e1500019840fc914d7394fc2_720w.webp)
![](https://pic4.zhimg.com/80/v2-84f8f79ac5d241946aeabaa59576a947_720w.webp)
2024-01-25 19:31:07 +08:00
![](https://pic4.zhimg.com/80/v2-6dca8e57407f84970125b9114b9bde2f_720w.webp)
# UE5.2之后开启Renderdoc
在DefaultEngine.ini中添加一下配置
[/Script/RenderDocPlugin.RenderDocPluginSettings]
renderdoc.AutoAttach=True