【问题标题】:Why does WebGL put limit on uniform size?为什么 WebGL 会限制统一大小?
【发布时间】:2017-07-01 09:36:06
【问题描述】:

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

【问题讨论】:

    标签: glsl webgl shader


    【解决方案1】:

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

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

    【讨论】:

    • 如果你写了一本关于 webgl 的书,那将会大受欢迎
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2011-10-02
    • 2019-01-21
    • 2022-07-21
    • 2020-01-02
    • 2018-03-06
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多