バージョン2018.3以降、Substance PainterはリアルタイムビューポートでSparse Virtual Textures(SVT)を使用して大量のテクスチャを管理します。 このテクノロジは、GPUメモリの特定のフットプリントを維持するために、特定の観点からのみ必要なテクスチャの入出力を可能にします。 大量のテクスチャセット(またはUDIM)を含むプロジェクトのパフォーマンスが向上します。
サポートされているプラットフォーム
スパーステクスチャが完全に機能するためには特定のハードウェア構成に依存します。 現在の設定で正しくサポートされていない場合は、Substance Painterは代わりにソフトウェア実装にフォールバックします(精度が低くパフォーマンスが低い)。
[Settings]に移動して、Substance Painterにハードウェアアクセラレーションの代わりにソフトウェアフォールバックを強制的に使用させることができます。
下記はサポートされているハードウェアアクセラレーション設定です。
*:ハードウェアアクセラレーションはデフォルトで無効になっています。Settingsにて手動で有効にできます。
Substance PainterがSparse Virtual Texturesを使用するのはなぜですか?
Substance Painterは、ビューポートに表示されるテクスチャを計算するためにメインエンジンを使用します。 つまり、これらのテクスチャを計算して表示するために、エンジンとビューポートはGPUメモリ(VRam)を共有する必要があります。 プロジェクトに含まれるテクスチャセット(またはUVタイル)が多いほど、ビューポートに必要なメモリが多くなります。 ビューポートがGPU上のメモリを使いすぎると、メインエンジンはテクスチャを計算するのに十分なスペースがなくなり、テクスチャをシステムメモリに追いやらなければならなくなります(Ram)。 これにより、パフォーマンスが低下し、計算が遅くなります。
SVTの目標は、ビューポートがGPUメモリ上でどれだけ使用できるかを見積もり、メインエンジンができる限り多くの計算スペースを確保することです。このシステムの利点は、通常どおりに作業できる一方で、はるかに大きいプロジェクトをSubstance Painterにロードする機能も解除できることです。
Sparse Texturesはどのように機能しますか?
Sparse Virtual Texturesは、完成していない一種のテクスチャです。 つまり、アプリケーションはテクスチャの一部だけをメモリにロードします。 必要なものだけがロードされ、残りはシステムメモリまたはディスク(キャッシュ)に置かれます。 再度必要になると、テクスチャはキャッシュから取得されてビューポートに戻されます。 転送速度を十分に速くするために、システムはミップマップに依存し、異なる解像度のテクスチャ間を素早くジャンプします。 これが、ビューポートですばやく移動すると最初にぼやけたテクスチャが表示され、その後数秒後に品質が向上する理由です。
技術的な知識についてはSparse Virtual Texturesをご確認ください。
キャッシュの場所
SVTキャッシュを保存するのに十分なシステムメモリ(Ram)が利用できない場合、Substance Painterはキャッシュを保存する代わりにコンピュータのハードドライブに切り替えます。
このキャッシュの場所は、デフォルトではOperating System Temporary Filesフォルダにあります。 この場所はアプリケーションのメイン設定に入ることによって変更することができます。Settingsをご確認ください。
シェーダの互換性
SVTを最大限に活用するために、シェーダはSparseシステムにテクスチャを要求して読み込む必要があります。 そのため、vec2 texture coordinatesとサンプラに基づく以前の関数は廃止されました。 Sparse textures.を使用する代わりに、 Helper 関数が提供されるようになりました。
シェーダを更新するには:
標準のSubstance Painterシェーダの場合:「Updating a Shader」ページの手順に従って操作します。
カスタムシェーダの場合:ログ内のエラーメッセージとカスタムシェーダページを確認してください。