Guide
为什么第一次分数较低:Shader 编译说明
说明第一次浏览器 GPU 测试为何偏低、Shader 编译如何影响 FPS,以及公开结果为何应使用预热后数据。
🚀 volumeshadertest
今天
5 分钟

第一次 benchmark 结果偏低,常见原因是浏览器和驱动还在编译、链接 shader 程序。Volume Shader BM Test 使用循环密集的 raymarching fragment shader,因此第一次运行可能包含后续运行不会重复的准备成本。
渲染前发生了什么
当一个测试模式开始时,浏览器会创建 WebGL shader 程序。驱动会编译 shader 源码、链接成 GPU 程序、分配缓冲区,并准备渲染路径。有些成本发生在第一帧前,有些会影响前几秒帧率。
它如何影响结果
| 现象 | 可能原因 | 建议 |
|---|---|---|
| 第一次低于第二次 | Shader 编译和缓存预热 | 比较第二次结果 |
| 前几秒卡顿,之后稳定 | 驱动管线准备 | 关注 P10 FPS 和稳定性 |
| 每次运行都越来越低 | 发热或电池降频 | 让设备降温 |
| 只有电池供电时分数下降 | 电源策略 | 接电源或关闭省电模式 |
推荐流程
先用同一模式运行一次,把它当作预热。关闭结果面板,再在同样条件下运行同一模式。记录第二次结果。如果第二次和第三次仍持续下降,问题更可能是热降频,而不是编译。
为什么公开结果需要说明
公开结果应该说明是否为预热后结果、使用的浏览器、测试模式,以及明显的温度条件。没有这些字段,两条同设备名称的结果也可能不可比。
相关页面
标签
Shader 编译FPS方法论