流式加载后,为什么GPU仍在裁剪大量三角形 – UWA问答 | 博客 | 游戏及VR应用性能优化记录分享
1)流式加载后,为什么GPU仍在裁剪大量三角形2)开启级联阴影后,三角形数量为什么明显增加 这是第488篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 UWA社区主页:community.uwa4d.comUWA QQ群:793972859 本次推送的实战案例来自于使用UWA服务的项目的真实且典型的问题。UWA将关键线索、定位路径与处理建议整理成了可复用的案例笔记,便于大家快速对照、排查自身项目中的同类问题。 实战案例 Q1:大地图已经做了流式加载,只加载角色附近区域,但GPU里仍有大量三角形被裁剪。为什么还会出现这种情况? A:可以先看UWA GOT Online报告中GPU Input Primitive的数据,继续拆分Culled Primitives的具体构成。 以报告中第830帧为例,Culled Primitives约95.8万,其中Facing & XY Plane Culling Primitives约43.2万,Z Plane Culling Primitives约21万,Coverage Culling Primitives约31.6万。 Facing & XY Plane Culling里包含背面剔除,这本身属于正常的渲染流程,而且目前无法继续区分其中有多少来自背面剔除、多少来自XY方向超出范围,所以不能直接把这部分都当成无效开销。 Z Plane Culling可以优先检查场景里是否有覆盖范围比较大的Mesh。比如一块Mesh横跨较大的空间,其中一部分几何已经超出摄像机视锥的前后范围,但整块模型仍然被提交给GPU,这种情况下可以评估大块Mesh是否需要适当拆分。 Coverage Culling则可以重点检查LOD。如果模型已经离相机很远,但仍保持近距离时的高面数,三角形投射到屏幕后会非常小,其中一部分甚至覆盖不到有效采样点,最后被GPU裁掉。可以检查远距离LOD是否降得足够。 Q2:项目里的角色支持换装,如果给不同衣服都做LOD成本比较高,这种情况下角色LOD还需要做吗? A:可以先确认角色对当前三角形数量的影响有多大,再决定是否值得做。比较简单的方式是在相同场景、相同视角下做一组开关测试,一组正常显示角色,一组把角色关闭,再对比Primitive相关数据。 角色关闭后三角形数量和裁剪数据明显下降,说明角色对当前几何压力的贡献较大,可以进一步评估角色LOD;数据变化不明显,则优先把精力放在场景模型上,继续检查大块Mesh和场景LOD。 实战案例 Q:高画质开启级联阴影后,三角形数量从几十万涨到100万以上,这部分增长和级联阴影有关吗? A:有关系。级联阴影会让部分物体重复参与阴影绘制,同一个物体除了正常渲染,还可能需要参与额外的阴影绘制,所以GPU需要处理的几何量也会增加。 高画质下Triangle数量 中画质下Triangle数量 从GOT Online报告数据来看,两档画质下的几何量差异比较明显。中画质下大部分场景维持在几十万,峰值约62.1万;高画质下则多次接近或超过100万,峰值约130.6万。 不过,高画质下可能还同时调整了其他渲染配置,所以不能把这部分增长全部归到级联阴影上。可以固定场景和摄像机视角,只调整级联阴影相关配置,再对比Triangle或Input Primitive的变化。 中画质GPU…
Read More