【发布时间】:2017-07-01 09:36:06
【问题描述】:
目前我的浏览器上的 WebGL 只支持 1024 * 4 字节的统一。但是,我可以将数据放入纹理中。在统一数组和纹理中存储数据有什么区别? uniform sampler2D 的大小是多少?
【问题讨论】:
目前我的浏览器上的 WebGL 只支持 1024 * 4 字节的统一。但是,我可以将数据放入纹理中。在统一数组和纹理中存储数据有什么区别? uniform sampler2D 的大小是多少?
【问题讨论】:
纹理是采样的,制服不是。当您调用texture2D(someSampler, someUV) 时,GPU 可以通过从 N 个 mip 中选择 2 个来计算一个值,然后读取最多 8 个像素,每个 mip 4 个,并在它们之间进行线性插值。 (如果是 WebGL2 中的 3D 纹理,则最多 16 像素)。
因此,从纹理读取比从制服读取要慢。您可以说“好吧,我关闭了线性插值”,但纹理仍然使用采样器读取,并且采样器数量有限(即使是高端 GPU 也只有 32 个采样器)
【讨论】: