2012-07-29 72 views
1

I.要切换着色器效果哪种方式更好? 1.使用大着色器程序并在着色器程序中使用统一的if/else子句来使用差异效果。打电话之间切换程序。webgl切换着色器和纹理的性能成本

II.Is它更好地使用大纹理或用几个小的质感?并且确实上传纹理成本,如何绑定纹理?

回答

6

嗯,这很可能是最好写一些PERF测试和尝试,但一般。

  • 小着色器比大干快上。
  • 1质地快许多纹理
  • 上传纹理缓慢
  • 结合纹理快速
  • 切换程序是缓慢的,但通常比2个的小程序合并成1个大的程序要快得多。

特别是中获取片段着色器执行数百万次的框架。一个1920x1080的显示器有200万像素,所以没有透支,这仍然意味着你的着色器每帧执行200万次。对于每秒执行200万次的任何事情,或者每秒钟以每秒120帧的速度执行60帧,小一点的会更好。

至于纹理,MIPS比没有MIPS更快,因为GPU有纹理缓存,如果需要的像素下一个接近它以前看了的人,他们很可能已经在缓存中。如果他们很远,他们将不会在缓存中。这也意味着从纹理中随机读取特别慢。但大多数应用程序通过纹理线性读取。

交换计划是很慢,足以通过该计划,他们使用,让您绘制使用的程序的第一个,然后使用B方案通常比以随机顺序绘制他们更快所有车型所有车型分类车型。但是还有其他一些效果表现。例如,如果一个大模型模糊了一个小模型,最好先绘制大模型,因为小模型将会通过深度测试(z-buffer),并且不会为任何像素执行片段着色器。所以这是一个折衷。你所能做的就是测试你的特定应用程序。

此外,以正确的方式进行测试也很重要。 http://updates.html5rocks.com/2012/07/How-to-measure-browser-graphics-performance