0

如果您有很多浮点数据要传递给片段着色器,那么使用统一数组或纹理是更好的主意吗?似乎统一数组是正确的方法,但数组大小似乎有限(尤其是在我工作的 WebGL 中)如果我想发送有关数千个对象的信息(出于光线跟踪的目的)是除了使用纹理来传递数据,还有什么现实的替代方法吗?这是一件坏事还是一件好事?

4

1 回答 1

2

纹理是处理大量浮点数据的方法。

如果可能的话,将数据打包成 4 分量向量,并从片段着色器中删除尽可能多的分支指令。这个想法是在 GPU 上执行尽可能少的逻辑,并将着色器简化为需要对大量数据执行的一些操作。

对大规模并行硬件进行编程与为 CPU 编写代码完全不同,许多关于性能的标准直觉在并行环境中完全相反。一个很好的起点是这里:

http://developer.download.nvidia.com/GPU_Programming_Guide/GPU_Programming_Guide.pdf

于 2011-10-21T05:08:21.513 回答