为什么WebGL限制了统一的大小?

时间:2017-07-01 00:43:33

标签: glsl webgl shader

目前我浏览器上的WebGL仅支持1024 * 4字节的统一。但是,我可以将数据放在纹理中。在统一数组和纹理中存储数据之间的区别是什么? uniform sampler2D的大小是什么?

1 个答案:

答案 0 :(得分:1)

采样纹理,制服不采样。当您调用texture2D(someSampler, someUV)时,GPU可以通过从N个mips中的2个中选择来计算值,然后从每个mip读取最多8个像素,4个,并在它们之间进行线性插值。 (如果它是WebGL2中的3D纹理,则最多16个像素。)

因此,从纹理读取比从制服读取更慢。您可以说“我关闭了线性插值”,但仍然使用采样器读取纹理,并且采样器数量有限(即使是高端GPU也只有32个采样器)