用于将数据传递到片段着色器的统一数组或纹理?

时间:2011-10-21 04:41:49

标签: textures webgl fragment-shader

如果要将大量浮点数据传递给片段着色器,使用统一数组或纹理更好吗?似乎统一数组是正确的方法,但数组大小似乎有限(特别是在WebGL,我正在工作的地方)如果我想发送有关数千个对象的信息(为了光线追踪的目的)是有没有使用纹理传递数据的现实替代?这是件坏事还是好事?

1 个答案:

答案 0 :(得分:2)

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

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

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

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