ミップマッピング
ここで言うテクスチャフィルタリングとは、様々なミップマップレベルのフィルタリングを指します。ミップマップとは、同じテクスチャを様々なサイズで表現したバリエーションのことです。長い廊下に立って、地平線までタイル張りの床を眺めていると想像してみてください。リアルな外観を実現するには、手前のタイルは非常に細かく表現する必要があります。しかし、地平線に近づくにつれて、テクスチャはどんどん小さくなり、テクスチャを表現できるピクセル数が少なくなります。タイル間の目地などの詳細は、グラフィックカードのドライバーがテクスチャ内の重要なディテールを認識できないため、スケーリングによって失われてしまいます。
同じテクスチャの異なるサイズ。
画面のどちらの部分も、バイリニアフィルタリングされた画像を示しています。左側では、異なるミップマップレベルが表示されています。右側では、あるミップマップレベルが次のミップマップレベルにマージされる際に、バイリニアの縞模様が見られます。
しかし、まともな結果を得るにはミップマッピングだけでは不十分です。テクスチャの遠近感は地平線に近づくほど歪むため、視聴者から遠ざかるほど遠近感を最小限に抑える必要があります。テクスチャに特別なフィルタリング(ポイントサンプリング)を行わないと、非常にピクセル化された画像になります。もう一度、廊下の例を想像してみてください。視聴者からの距離が離れるにつれて、水平方向に表現できるピクセル数が少なくなります。これは、廊下が画面の下部から中央まで伸びているためです。
廊下の床の例に似たゲーム内シーンを以下に示します。遠近法の関係で、異なるスケーリングが必要であることがわかります。
記事の次のセクションでは、ミップマッピングがスケーリングによるピクセル化をどのように抑制するかを説明します。3DMark 2003(Pro版)のテクスチャフィルタリングテストを使用します。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
左側はミップマップなしで作成しました。このスクリーンショットではより鮮明に見えると思うかもしれません。確かに鮮明ですが、ミップマップがないとすべてのテクスチャが大量のノイズでちらつき、シーンが動いているときに見栄えが悪くなります。Q3エンジンを搭載したすべてのゲームで、ご自身で試してみることができます。r_textureModeを「GL_LINEAR」に設定すると線形フィルタリングによるミップマップが無効になり、GL_NEARESTに設定するとポイントサンプリングによるミップマップが無効になります。
ミップマップに関してもう一つ注目すべき点は、ミップマップが必ずしも完成したテクスチャとして存在する必要がないということです。最近のグラフィックカードは、基本テクスチャから縮小されたミップマップレベルを独自に生成できます。