Version: 2020.1
言語: 日本語
テクスチャを "Virtual Texturing Only" とマークする
コンピュートシェーダー

仮想テクスチャリングのエラーマテリアル

シェーダーグラフ で作成した シェーダー でストリーミング仮想テクスチャリング (SVT) を使用できます。SVT を使用して 1 つまたは複数のテクスチャのストリーミングを行うには、マテリアルとシェーダーグラフを正しく設定する必要があります。詳細については、シェーダーグラフでストリーミング仮想テクスチャリングを使用 を参照してください。

テクスチャが正しく設定されていないと、Unity はマテリアルを描画することができません。代わりに、Unity は紫と青のチェッカーボードの仮想テクスチャリング (VT) エラーテクスチャを描画します。このテクスチャは、検証エラーを修正するまで表示されたままになります。

仮想テクスチャリングのエラーテクスチャ
仮想テクスチャリングのエラーテクスチャ

検証エラー

テクスチャスタックとは、同じ UV 座標を使って同時にサンプリングしたテクスチャのグループです。テクスチャスタックまたはテクスチャスタックのテクスチャが有効な状態でない場合、検証エラーが発生します。

この検証エラーは、マテリアルの Inspector で見ることができます。

Inspector の検証エラー
Inspector の検証エラー

この検証エラーの例は、3 つのレイヤーを持つテクスチャスタックに 2 つのテクスチャスロットしか割り当てられていない場合に発生します。

テクスチャスタックの検証エラーの一般的な理由は以下の通りです。

また、スタック内の 1 つまたは複数のテクスチャが有効な状態でない場合にもエラーが発生します。テクスチャ検証エラーの原因には以下があります。

  • テクスチャが Texture2D タイプではない (SVT は配列やキューブマップをサポートしません)。

  • テクスチャが、ミラーラップモードを使用している。

  • テクスチャが軸ごとに異なる固定モードを使用している (例えば、水平方向に繰り返しながら垂直方向に固定されている)。テクスチャの解像度が 2 の累乗ではない。

  • 全てのテクスチャのアスペクト比が同じではない。

  • テクスチャが最小サイズの 128 × 128 ピクセルを満たしていない。

  • テクスチャにミップマップがない。

  • テクスチャインポーター で、テクスチャの Use Crunch compression が有効になっている。

プレイヤーのビルドエラー

Unity が SVT を使用してプレイヤーをビルドするためには、すべてのマテリアルがアスペクト比の一致した有効なテクスチャを使用し、有効な Virtual Texture プロパティを持っている必要があります (検証エラー 参照)。プレイヤービルドのマテリアルが無効な状態の場合、ビルドエラーが発生します。ビルドエラーはコンソールログに表示されます。

エラーの命名規則

Unity が検証エラーを記録するとき、テクスチャスタックは以下の規則で命名されます。

  • テクスチャスタックが持つレイヤーの数。
  • シェーダーグラフで設定されたテクスチャスタックのレイヤー名。

以下は、この命名規則の 2 つの例です。

  • 2 つのレイヤーを持つテクスチャスタックでのエラー名: Texture 2(Layer_Name_1, NULL)
  • 3 つのレイヤーを持つテクスチャスタックでのエラー名: Texture 3 (Layer_Name_1, Layer_Name_2, NULL)

コンソールログにエラーが表示されるとき、エラー名にはテクスチャスタックを使用しているマテリアルも含まれます。例えば、以下のようになります。

  • ‘Texture Stack 2 (3_BaseColorMap, NULL)’ of material ‘materialname3’.
テクスチャを "Virtual Texturing Only" とマークする
コンピュートシェーダー