Glsl 为什么WebGL对统一大小设置限制?

Glsl 为什么WebGL对统一大小设置限制?,glsl,webgl,shader,Glsl,Webgl,Shader,目前我的浏览器上的WebGL仅支持1024*4字节。但是,我可以将数据放在纹理中。在统一数组和纹理中存储数据有什么区别?制服取样器2D的大小是多少?纹理被取样,制服不被取样。当您调用texture2D(someSampler,someUV)时,GPU可以通过选择N个mip中的2个,然后读取最多8个像素,每个mip读取4个像素,并在它们之间进行线性插值来计算值。(如果是WebGL2中的3D纹理,则最多16个像素) 因此,从纹理中读取比从制服中读取要慢。你可以说“我关闭了线性插值”,但纹理仍然是用采

目前我的浏览器上的WebGL仅支持1024*4字节。但是,我可以将数据放在纹理中。在统一数组和纹理中存储数据有什么区别?
制服取样器2D的大小是多少?

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


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

如果你在webgl上写一本书,那将是一个巨大的成功