我想请求有关制作WEBGL引擎的帮助。我被困在纹理地图集上。有一个纹理,包含2-2张图片,我将其左上角绘制到一个顶点(纹理坐标如下:0-0.5 0-0.5)。
这样可以正常工作,虽然当我从远处看顶点时,所有这些都会模糊在一起,并给出奇怪的颜色。我认为它是由于我使用自动生成的Mipmap,当我从远处看它时,纹理单元使用1x1 Mipmap纹理,其中4个纹理一起模糊到一个像素。 我被建议使用Mipmap自己的生成器,具有最大级别设置(GL_TEXTURE_MAX_LEVEL),尽管Webgl不支持它。我还建议在Fragment Shader中使用“textureLod”函数,但Webgl只允许我在顶点着色器中使用它。
唯一的解决方案似乎是Bias,可以在Fragment Shader“texture2D”函数的第3个参数中给出的值,但是有了这个,我只能设置Mipmap LOD的偏移量,而不是实际值。
我的想法是使用深度值(距离相机的距离)来移动偏移(增加它,因此它将变得越来越负面)所以这样可以确保它不会使用最后的Mipmap级别更远的距离,但始终从更高分辨率的Mipmap级别获取样本。这个问题,我必须计算给定顶点到摄像机的角度,因为LOD值取决于此。
所以偏差=深度+角度的某种组合。我想请帮忙计算一下。如果有人对Webgl纹理地图集有任何想法,我很乐意使用它们。