之前使用过GPA配合夜神模拟器实现K帧,来查看实际的渲染情况,后来一段时间没有使用,就忘记了具体步骤,这次边试边实现一下相关的具体步骤。
首先去英特尔官网下载工具:https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/download.html
安装完成以后,桌面会多出以下四个图标
然后打开Graphics Monitor工具,设置General Settings的Auto-detect为true,并设置好路径
如果你不知道模拟的路径,可以右键模拟器属性查看目标位置
点击start
上面会多出一个对应的图标
鼠标悬浮会有一个运行得标志
我启动的时候无法运行夜神,关闭以后,再打开夜神就成功运行了,进入后发现左上角有相关额外多出来的东西,证明已经成功开启了
进入游戏后,再打开Graphics Monitor会发现多出一个链接的,这个就是被工具标记的运行得软件了
点击链接
会弹出System Analyzer界面
左上角的相机按钮可以K帧了,游戏内提示Ctrl+F1可以k帧,可惜我这里不行,截帧成功以后,会在Graphics Monitor右侧显示截好的帧
双击可以进入,会自动打开Graphics Frame Analyzer,然后再打开你需要查看的帧
这里说明一下,你K帧结束以后,也可以直接通过Graphics Frame Analyzer查看之前K到的帧,帧数据里面包含了你需要查看的内容,所以你K的一帧的数据都是有几百M。
这里提示一下,夜神的显卡渲染模式一定要选择DirectX模式,要不然抓不到里面的数据
打开K好的一帧,上面部分直接看到这一帧的渲染耗时,和总共的批次
us的单位是微秒,1毫秒等于1000微秒,30004us就相当于30毫秒渲染完成此帧,右侧上面是33FPS,代表当前每秒可以渲染33帧,用1秒,也就是1000毫秒除以每帧时间30毫秒,结果是33.333,证明结果正确性。下面的344/344代表当前批次为344个批次渲染完成。
上图最上面的列表则是整个渲染每个批次顺序和耗时,黄色的为当前选中的批次,左下角则列出了当前每个批次进行的操作
这里分为了三大块,分别是输入,处理,输出,输入有顶点数据geometry,相关贴图。处理部分SH则是编译运行得着色器,State为渲染时状态,输出则渲染后的贴图,还有渲染后的模型(面片)
输入部分Geometry可以查看渲染的几何体部分,可以查看面片,线框以及法向
纹理右上角为纹理格式,尺寸,导出对应纹理资源,翻转,翻转这里主要可以在查看渲染结果时翻转,DX渲染完成后,图片都是反的。
FX可以查看图片的一些信息,图片图标点击可以弹出一个新的对话框查看。
时间图标按钮点击,可以在左侧查看当前资源使用的批次。
处理这里SH可以查看渲染shader,这是已经编译出来的,已经相当于是给计算机看的指令了,
选DXBC,查看,可以看到和在unity里面编译出来的D3D的代码很相像。
右上角可以选择查看使用的顶点着色器(Vertex)还是片元着色器(Pixel),这里的着色器听说还可以直接修改查看编译效果。
再编译结果这里查看左上角 Normal Mode就是直接查看所有结果,Scrub Mode,在此批次后面渲染的将不会在图片内显示。
还可以查看Overdraw
右侧两个下拉则是当前渲染的部分以什么形式显示,还有其它部分如何显示。
输出的geometry可以查看在屏幕渲染的位置,或者直接查看通过着色器处理完成后的模型的样子。
总得来说,这个工具调试性能,查看问题还是比较好用,我也只是会用,欢迎小伙伴们一起讨论如何使用。