WebGL纹理平铺边缘工件与mipmap

时间:2014-06-23 22:25:23

标签: textures webgl tiling mipmaps

我在WebGL中使用需要mipmap看起来很好(不可协商)的纹理来平铺表面。因为WebGL不支持gl.REPEAT的包装模式用于mipmap的纹理,所以我在片段着色器中使用'fract(texcoord)'来自己锁定纹理坐标。

因此,我在纹理的边缘得到了人工制品,因为'fract(texcoord)'包裹着,因此GPU认为它只需要一个低细节的mipmap。

如果这是普通的OpenGL,我可以使用textureGrad告诉GPU有关真正的渐变,但不幸的是,这在WebGL中不可用。

有什么建议吗?我知道在那里描述的4抽头技巧 http://0fps.net/2013/07/09/texture-atlases-wrapping-and-mip-mapping/但这似乎是一个额外的开销,只会使效果不那么严重,而不是完全消失。我也看到了Threejs Custom Shader - Screen Tearing中使用纹理的'lod'参数的建议,但这并没有解决问题(此外,答案是从2012年开始,所以现在可能有更好的解决方案?)。

1 个答案:

答案 0 :(得分:0)

WebGL在重复时做得很好。你的纹理需要在每个方向上具有两种尺寸的力量 - 不一定相同。 同样的要求也适用于能够使用mip贴图(完全!)。 它在规范中有点隐藏。