Texture Streaming (テクスチャストリーミング) システムは、Unity がメモリにロードするミップマップレベルを制御します。このシステムは Unity がテクスチャのために必要な合計メモリ量を削減します。なぜなら、テクスチャストリーミングシステムは、デフォルトでシーン内のすべてのミップマップをロードするのではなく、シーンの現在のカメラ位置のレンダリングに必要なミップマップのみをロードするからです。これにより、少量の CPU リソースと引き換えに、多くの GPU メモリを節約することが可能です。
テクスチャストリーミングの Memory Budget (メモリバジェット) を使用して、プロジェクトで使用するすべてのテクスチャの合計メモリ量を設定することもできます。テクスチャストリーミングシステムは自動的にミップマップレベルを下げてこの設定内に留めます。
テクスチャストリーミング API を使用して、特定のテクスチャに特定のミップマップレベルをリクエストできます。Unity は、ミップマップ選択のためのエンジンロジックを複製するサンプルの C# コードを提供しています。これを使用して、プロジェクトのためにエンジンロジックをオーバーライドできます。詳細は、テクスチャストリーミング API を参照してください。
Unity の Viking Village デモプロジェクトでは、テクスチャストリーミングはカメラの場所に応じて、テクスチャメモリの 25〜30% を節約します。
テクスチャストリーミングを有効にするには、Unity の Quality 設定 (Edit > Project Settings > Quality) に移動し、Texture Streaming チェックボックスをチェックします。これにより、テクスチャストリーミングシステム特有の設定が表示されます。各設定の詳細は、Quality 設定 を参照してください。
これを行うと、個々のテクスチャにテクスチャストリーミングを設定し、テクスチャストリーミングシステムが各テクスチャのミップマップをディスクからメモリにストリーミングできるようにします。これを行うには、テクスチャストリーミングを適用するテクスチャを選択し、インスペクターウィンドウに移動し、テクスチャインポートの設定を表示します。 Advanced 設定を開き、Streaming Mip Maps チェックボックスにチェックします。
Android 用に開発する場合は、Build Settings (ビルド設定) を開き、Compression Method を LZ4 か LZ4HC に設定する必要があります。 Unity では、テクスチャストリーミングシステムが依存する 非同期テクスチャの読み込み にそれらの圧縮方法の 1 つが必要です。
Unity はテクスチャの Memory Budget を観察しながら、可能な限り高い解像度レベルでミップマップを読み込みます。より詳細な制御や、テクスチャストリーミングシステムで自動的に得た結果の微調整を行うには、C# API を使用して各テクスチャのミップマップレベルを指定します。詳細は、テクスチャストリーミング API を参照してください。