Megatextureはどのように機能しますか?


21

私は小さな実験的なゲームを開発するためだけでなく、さまざまなレンダリング技術やそのようなものをテストするためのベースとして機能するために、小さなエンジンを開発することを考えてきました。今、私はテクスチャの処理方法について多くのことを考えており、メガテクスチャにつまずきましたが、これは少し不可解なものです。多くのテクスチャを必要に応じてロードしてロードする従来のアプローチよりも優れているという話がたくさんありますが、メガテクスチャはこれをどのように回避しますか?それぞれのテクスチャを個別にロードするのではなく、その一部ですが、それはどのように優れたパフォーマンスを提供しますか?それは単なる別の形の耕作ではありませんか?

シェーダーでそのようなテクスチャをどのようにサンプリングし、その一部をメモリにストリームしてから作業しますか。Rageの最新のビデオとテクスチャは見た目は素晴らしいですが、それは素晴らしいアーティストの結果であるか、技術が登場するだけなのです。

要約すると、それがどのように機能するのか、なぜそれが素晴らしいのか、どうすれば似たようなことができるのでしょうか。

回答:


15

メガテクスチャの基本的な考え方は、テクスチャアトラスを使用して、さまざまなテクスチャをすべて大きなテクスチャにパックし、UVを使用してこの画像にインデックスを付けることです。画面に表示される内容に基づいて、テクスチャのどの部分をディスクからストリーミングする必要があるかを知るには、優れたヒューリスティックが必要です。利点は、ゲームワールド全体で完全に一意のテクスチャを使用し、可視データのみをRAMに保持できることです。これを手頃な価格にするには、優れたストリーミングおよびキャッシングシステムが必要です。

あるアプローチの詳細については、このページの資料を参照することをお勧めします。http//silverspaceship.com/src/svt/


4

既存のSGIハードウェア実装のクリップマッピングを確認します。

最近では、MegatextureがSparse Virtual Texturing(SVT)のpr名として使用されています

SVTは、低解像度のカメラビューをレンダリングし、どのテクスチャとミップマップが必要かを示します。次に、CPUルーチンがディスクシステムにロードを発行して、それらのテクスチャ/ミップチャンクをメモリに持ち込み(メモリにない場合)、ロードされたテクスチャチャンクを大きなテクスチャアトラスのセクションに配置します(通常は128x128のチャンクに入れます)

テクスチャチャンクが取り込まれると、リダイレクトテクスチャ(仮想ページマップ)が更新され、モデルに必要なテクスチャが取得され、実際に保存されている大きなテクスチャの特定の部分にリダイレクトされます。


それはかなり説明します。ストリーミングのみが行われている場合、その巨大なテクスチャのチャンクをどのようにHDDまたは任意の使用に十分なディスクでストリーミングすることができたのか、中間アトラスは非常にうまく答えています。また、従来の方法よりもメモリ効率が高い理由がわかりました。SVTの詳細を確認します(Flaweのリンクは、そのための良い出発点のようです)
Daemoniorum

1

Megatextureは、一種の「ストリーミング」テクスチャと考えることができます。1つの巨大で完全に詳細なテクスチャイメージ(簡単に言えば)を表示するには、そのセクションとして読み込まれます。LOD /ミップマッピング、ロード、リソース管理など、明らかなことの中でも、それよりもはるかに多くのことがあると確信しています。

ウィキペディアには記事があります。


2
私は前に記事を読んだことがありますが、それは詳細に少し光です。そのテクニックの実際の詳細を知るのは少し難しいです。私は... IDはそれの紙を作った希望
Daemoniorum
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.