Questions tagged «mipmap»

1
在Metal中如何计算Mipmap级别?
我的问题特别针对Metal,因为我不知道答案是否会针对另一个API改变。 我相信到目前为止我了解的是: 贴图纹理预先计算了“细节级别”,其中通过以某种有意义的方式对原始纹理进行下采样来创建较低级别的细节。 Mipmap级别以递减的细节级别来指代,其中级别0是原始纹理,而更高级别是其二阶幂的减少。 大多数GPU实现三线性过滤,即为每个样本选择两个相邻的mipmap级别,使用双线性过滤从每个级别中采样,然后线性混合这些样本。 我不太了解的是如何选择这些mipmap级别。在Metal标准库的文档中,我看到可以在指定或不指定lod_options类型实例的情况下进行采样。我假设此参数会更改mipmap级别的选择方式,并且显然存在3D lod_optionsfor 2D纹理: bias(float value) level(float lod) gradient2d(float2 dPdx, float2 dPdy) 不幸的是,文档没有费心地解释这些选项的作用。我可以猜测会bias()偏向某些自动选择的细节级别,但是偏见value是什么意思呢?它的运作规模是多少?同样的,又是怎样lod的level()转换成离散的纹理贴图的水平?并且,在gradient2d()使用纹理坐标的渐变的假设下进行操作时,如何使用该渐变选择mipmap级别? 更重要的是,如果我省略lod_options,那么如何选择mipmap级别?这取决于执行的函数类型吗? 并且,如果该sample()函数的默认no-lod-options指定操作是要执行类似的操作gradient2D()(至少在片段着色器中),它是利用简单的屏幕空间派生类,还是直接与光栅化器和插值纹理坐标一起使用?计算精确的梯度? 最后,设备之间的这种行为有多一致?我读过一篇老文章(在DirectX 9中是古老的文章),其中提到了复杂的设备特定的mipmap选择,但是我不知道在新的体系结构上是否可以更好地定义mipmap选择。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.