組み込みの自動アルゴリズムではなく、独自のアルゴリズムを使用して事前に生成した場合、テクスチャ ミップマップの品質が向上するかどうか疑問に思っていました。おそらく、Lanczos のリサンプリングのような、遅いがきれいなアルゴリズムを使用するでしょう。
それは理にかなっていますか?最新のグラフィックス カードで品質が向上しますか?
独自のミップマップを生成するのには十分な理由があります。ただし、ダウンサンプリングの品質はその 1 つではありません。
ゲームやグラフィックのプログラマーは、過去にあらゆる種類のダウンサンプリング アルゴリズムを試してきました。最終的に、非常に単純な「平均 4 ピクセル」法が最良の結果をもたらすことが判明しました。また、より高度な方法は、理論的には数学的により正確であり、ミップマップから多くのシャープネスを取り除く傾向があります。これにより、フラットな外観が得られます (試してみてください!)。
いくつかの (私には理解できない) 理由から、単純平均法は、アンチエイリアシングとミップマップの鮮明さの維持との間で最良のトレードオフを持っているようです。
ただし、ガンマ補正を使用してミップマップを計算したい場合があります。OpenGL は、単独ではこれを行いません。これにより、特に暗いテクスチャの場合、実際の視覚的な違いが生じる可能性があります。
やり方は簡単です。次のように 4 つの値を平均する代わりに、次のようにします。
float average (float a, float b, float c, float d)
{
return (a+b+c+d)/4
}
これを行う:
float GammaCorrectedAverage (float a, float b, float c, float d)
{
// assume a gamma of 2.0 In this case we can just square
// the components.
return sqrt ((a*a+b*b+c*c+d*d)/4)
}
このコードは、色成分が 0 から 1 の範囲に正規化されていることを前提としています。
何をやる気にさせていますか?現在生成されているミップマップは不十分ですか?(つまり、見たことがありますか?)とにかく、結果は依然として(三)線形補間されることが多いことを覚えておいてください。そのため、モーションの間に、リサンプリングの改善への収穫逓減が急激に減少することがよくあります。
表示するアセットの種類によって異なります。Lanczos フィルターは理想的なローパス フィルターに近づき、ミップ マップを並べて比較すると結果が顕著になります。ほとんどの人は、エイリアシングをシャープネスと間違えます。これも、アセットに高周波が含まれる傾向があるかどうかによって異なります。ボックス フィルターが適切なオプションではないケースを私は確かに見てきました。ただし、ミップ マップはとにかく線形補間されるため、ゲインはそれほど目立たない可能性があります。言及すべきもう 1 つのことがあります。ほとんどの人は、ボックス フィルターを使用し、出力を次の段階への入力として渡します。この方法では、精度と視覚エネルギーの両方が失われます (ただし、ガンマはこれを助けます)。