GPU Clocks正常但带宽高怎么办
- 作者:admin
- /
- 时间:2小时前
- /
- 浏览:11 次
- /
- 分类:厚积薄发
1)GPU Clocks正常但带宽高怎么办
2)FixedUpdate一帧调两次,这个"追帧"真的有必要吗
这是第472篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:793972859
本次推送的实战案例来自于使用UWA服务的项目的真实且典型的问题。UWA将关键线索、定位路径与处理建议整理成了可复用的案例笔记,便于大家快速对照、排查自身项目中的同类问题。
实战案例
Q:在我们的项目中,用UWA GOT Online测了一个新坐骑场景用例的报告,单看GPU Clocks数据信息,表现还可以,基本没碰红线,按理说不太像是典型的GPU算力瓶颈。但问题是,带宽这边还是有点高。像这种情况,后面到底该先排查什么?是继续盯Fragment、三角形这些指标,还是该往别的方向看?

A:这个问题其实挺典型的,一般都会下意识觉得:GPU指标有波动,那是不是面数高了、Shader重了、像素太多了。就比如说Clocks,它是像素数量乘以Shader复杂度,只看像素数量,其实不一定能反映Clocks是特别高还是特别低,如果Clocks本身已经没超,那说明至少从“GPU算力被打满”这个角度看,当前这个场景在这档设备上问题不算大,Fragment Shader影响就比较小了,可以先不用关注。真往下查,还是要回到带宽到底是被谁拉高了的角度去查。
带宽压力一般会去从下面这两个角度进行考虑,一个是纹理,另一个是RT(顶点也可能有一定影响,不过当前报告中顶点的影响比较小)。
1. 纹理方面:
第一个纹理,一般是考虑纹理的压缩,比如说是ASTC 4×4、6×6或者8×8,原理就是你压得越厉害,带宽就肯定更小。
再一个要考虑3D纹理是不是开了Mipmap?假设用来做3D渲染的,如果不开,影响会比较大。而开启Mipmap的影响会比压缩大很多,因为不开Mipmap,它很容易Cache Miss,而打开,它就有缓存,可以从很大程度上减少带宽的开销。
还有一个就是各向异性。各向异性只会在那种视角很小的情况下,比如一个很长的地形,镜头拉得很远,看到比较远的地方会有一些毛刺,开各向异性才比较有收益。大部分情况下开各向异性其实没有什么好处,它只会增加带宽。2. RT方面:
对于RT来说,影响带宽的主要因素是分辨率。RT分辨率越大,Fragment Shader数量就越多,每多画一个像素就要做纹理读取、Shader计算、寄存器存取等步骤,带宽就会越多。
再有,RT分辨率还会影响Load/Store次数。分辨率越大,要Load和Store的像素内容就会越多。如果能把分辨率降一下,带宽收益会非常高,顺带着Clocks也会更低。
再回到我们GOT Online的报告上来,从报告来看,分辨率影响最大。因为看起来RT的格式是比较正常的,穿插的也不是特别多,看上去只有一个Bloom的后期处理。所以还是分辨率的影响最大,如果用这个原始分辨率去做渲染,确实渲染的像素数量会非常多,切RT的时候,或者说Load/Store的时候也会有比较大的影响。
UWA以往优化的常规做法是把RT分辨率控制在1920×1080这个面积,约200万像素,而格式选32位而非64位。
实战案例
Q1:项目是帧同步,主要逻辑放在FixedUpdate里。UWA GOT Online报告显示,有些帧会出现FixedUpdate调用两次的情况,而且一旦跑两次,耗时明显就上去了。这个“两次调用”到底有没有必要?

A:一般追帧是为了保证物理模拟的准确性,比如子弹速度很快,如果不追帧,可能中间穿过去的墙就挡不住它了。但像这个项目的情况,应该不太会需要非常高速的移动或高速判定,所以理论上来说,触发两次是没有太多意义的,就需要做一下限制,可以在参数上做调整,就比如说Time里面的两个参数,一个是每一帧的上限,还有一个是每间隔多少时间触发一次,我们可以把每一帧的上限,调得更小一点,或者说把间隔调得更大一点。
Q2:但项目中是逻辑帧,间隔调得更大点可能就不合适了。
A:如果参数不好调,可以在代码里加一个硬核的限制。比如给它一个变量,判断这一帧有没有更新过,然后把更新过的变量变成True,第二次调用的时候因为变量是True就Return。这样不论上限设多少次,对这个游戏来说,FixedUpdate最多只调一次。
无论是社区里开发者们的互助讨论,还是AI基于知识沉淀的快速反馈,核心都是为了让每一个技术难题都有解、每一次踩坑都有回响。本期分享分别来自UWA AI问答和UWA问答社区,希望这些从真实开发场景中提炼的经验,能直接帮你解决当下的技术卡点,也让你在遇到同类问题时,能更高效地找到破局方向。
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859



