SRBatch和GPUInstance的渲染比较

2021-01-22  本文已影响0人  暴走TA

简介: 对SRBatch的性能和GPUInstance的性能想做个比较于是做了如下渲染分析,可能有环境因素分析错了,目前临时做个笔记

测试环境:Unity2019.4.18
测试手机:黑鲨3 865的U

环境

在满屏幕绘制使用13个材质铺满全屏的物体,尽量错开摆放,使其全部都能参与渲染。
着色器 一个支持instance 一个支持 srbatch 其余逻辑一致

测试结果

FrameDebug 对比分析

参数名称 SRBatch Gpuinstancing
渲染时间 14-22 ms 18-21 ms
渲染消耗最高值 24 ms 25 ms
脚本占用时间 10-11 ms 8-11 ms
脚本占用峰值 16 ms 15 ms
DrawCall 36 265

可以看出 frameDebug 中的dc 数量有明显的减少,由于手机性能太好,所以 渲染时间差距不大

RenderDoc 对比分析

SRBatch 渲染时间
SRBathc 统计数据
SRBatch 合批绘制方式
Instance渲染时间
Instance统计数据
Instance合批渲染方式
参数名称 SRBatch Gpuinstancing
单帧耗时 113136 us 42215 us
RenderOpaques 105407 us 35116 us
DrawCalls 2973 370
APICalls 4003 3903
DrawCallRatio 1.35 10.55
Buffers 数量 163个 1056
Buffer 内存占用 3.19MB 11.07MB

结论

目前看来数量太多的时候 srbatch 并不一定可以提升效率,至于为何 在合批绘制时没有使用 glDrawElementsInstanced 要待验证。

上一篇 下一篇

猜你喜欢

热点阅读