スパーステクスチャは全テクスチャデータが一度にメモリに存在するのではないテクスチャです。これらは一般的に“タイル状のテクスチャ”や"メガテクスチャと呼ばれています。
ピクセルあたり32ビットで16384x16384のテクスチャを想像してみよう - それは1GBのメモリを取るでしょう。テクスチャは長方形の"タイルに分割され,各タイルはメモリ内か外のいずれかに存在することができます。カメラからの距離,プレイヤーが見えている世界での活動範囲などに基づいて,必要に応じてこれらのタイルをロードとアンロードすることができます。
それ以外では,スパーステクスチャは単にシェーダ内の他のテクスチャをのように振る舞い,ミップマップを持つことができ,その他すべてのテクスチャフィルタリングモードを使用することができます。存在しないのタイルを読み取るようなことが起きた場合は,未定義の結果を得ることになります(多くのGPU上での結果は黒色ですが,それは保証されたものではありません)。
ハードウェアおよびプラットフォームのすべてがスパーステクスチャをサポートしているのではないことに注意してください。例えば,DirectXのシステムでは,DX11.2(Windows8.1)を必要とします。そして,最近のGPUは,OpenGL上で,拡張されたサポートが必要ですARB_sparse_texture。スパーステクスチャもUnity Proのライセンスが必要です。
詳細は SparseTexture scripting classを参照してください。
小さな使用例は,大きなテクスチャを作成する地図のようなアプリケーションかもしれません。しかし,わずかでもカメラから見える部分は,いつでもメモリの中にある必要があります。 カメラが移動すると,新たに見えるタイルがロードされ,見えなくなったタイルはロードされません。
サンプルプロジェクト:SparseTextureExample.zip.この例では,簡単な手続き型テクスチャパターンが単一に生成されてます。これは,最近のGPUとDirectX11.2(Windows 8.1)システムが必要であること,またはARB_sparse_textureをサポートするOpenGLを使用することに注意してください。