是否有可能,如果可以的话,在OpenGL4.x中的不同通道上创建和读取具有不同压缩算法的RGBA纹理:
示例A没有实际意义:
例B:
背景:
在第15页和第18页的Physically Based Rendering PBR (PDF)的Frostbite实现中,作者描述了他们如何将材质参数构建到不同的纹理通道中。他们还提到他们避免了某些频道上的纹理压缩,而没有详细说明它们所指的那些频道。
第15页
所有基本属性(Normal,BaseColor,Smoothness,MetalMask,Reflectance)都需要可混合以支持延迟贴花。像MaterialId这样的不可混合属性存储在alpha通道中。我们还避免了可能影响混合质量的压缩和编码机制。
第18页
我们选择在少数属性上避免压缩,并且在这种情况下依赖于简单的线性插值alpha混合。
答案 0 :(得分:1)
没有OpenGL或硬件支持在不同通道上读取不同压缩的纹理。当然,人们可以创建一个预制过程,将这样一个手工制作的纹理分割成单独的纹理,然后分别解压缩。
正如Nicol Bolas所说,Frostbite PBR实施避免了由于混合造成的压缩。