GPU Stat

新增了Editor下的GPU Stat内容,目的是方便美术在制作时可以方便自查各种GPU性能指标 指标针对的是整个游戏的GPU绘制,如果美术无法定位出指标异常的原因,可以联系程序帮忙定位 代码实现(程序阅读) 实现包在EDITOR WITH GPU STAT中,Editor默认打开此宏 目前Editor都使用D3D11,在GfxDevice中的BeginFrame和EndFrame插入GPU St…


新增了Editor下的GPU Stat内容,目的是方便美术在制作时可以方便自查各种GPU性能指标

指标针对的是整个游戏的GPU绘制,如果美术无法定位出指标异常的原因,可以联系程序帮忙定位

代码实现(程序阅读)

实现包在EDITOR_WITH_GPU_STAT中,Editor默认打开此宏

目前Editor都使用D3D11,在GfxDevice中的BeginFrame和EndFrame插入GPU Stat的函数

具体实现是使用一个QueryPool(Ring Buffer),循环利用创建好的D3D11_QUERY_PIPELINE_STATISTICS

在EndFrame时尝试异步获取之前帧的Query数据,会有一定延迟,但对此需求场景没有影响

详情见这俩函数 GfxDeviceD3D11Base::GpuPipelineStatStart()

GfxDeviceD3D11Base::GpuPipelineStatEnd()

指标详解(程序&美术阅读)

  • VSInvocations

Vertex Shader执行次数,跟顶点数相关 如果数量异常,美术需检查是否美术资源顶点数超标,程序需考虑是否Culling失效了或者额外的无效绘制(Shadow等)

  • Overdraw | PSInvocations

Overdraw指示的是像素绘制数量相对于全屏像素数量的比例,这个数值越高代表像素被多次绘制的情况越严重。

Overdraw数值

1.0-2.2 优秀

2.2-3.0 正常

3.0+ 异常

美术需要关注:是否叠加了过多的透明层、使用了大面积的特效等,是否有完全透明的像素浪费。

程序需要关注:是否某些物体的显示隐藏逻辑失效、是否Culling失效等。