Mipmapping sRGB_EXT纹理

时间:2018-07-05 12:47:13

标签: webgl mipmaps srgb

我正在使用SRGB_EXT扩展名在WebGL 1.0中加载纹理。在Chrome中,generateMipmaps可以正常工作,但是在Firefox中,我得到警告:

Error: WebGL warning: generateMipmap: EXT_sRGB forbids GenerateMipmap with sRGB.

果然,OpenGL规范指出这应该显式失败:

Modify Section 3.7.11: Mipmap Generation

    Add the following sentence to the end of this section:

    If the format of a texture is sRGB, he error INVALID_OPERATION is 
    generated.

这并不是特别有用-WebGL加载的几乎所有格式本质上都是sRGB,并且会发生非线性比例的错误数学。

据我所知,这为我提供了一些选择:

  1. 忽略着色器内部读取的每个纹理的sRGB转换和伽玛校正,这虽然很慢,但至少是准确的。

  2. 在加载时在着色器中将sRGB转换为常规纹理,并将mipmap生成推迟到WebGL。这可能会严重降低纹理的精度,并可能引入其他瑕疵。

  3. 在着色器中生成我自己的mipmap。可能是正确的解决方案,但我要确保这一代产品不会带来细微的颜色问题。

如何生成这些mipmap,以确保它们正确运行而不用烘烤我的线性照明模型?

0 个答案:

没有答案