Version: Unity 6.0 (6000.0)
言語 : 日本語
ビルトインレンダーパイプラインでのマテリアルバリデーター
ビルトインレンダーパイプラインのマテリアルバリデーターと互換性のあるシェーダーを作成する

ビルトインレンダーパイプラインでのマテリアルの検証と修正

アルベドの検証

Unity のマテリアルチャートは、標準的な輝度範囲を、非金属の場合は 50 - 243 sRGB、金属の場合は 186 - 255 sRGB と定義しています。Validate Albedo (アルベドの検証) モードでは、値が低すぎる、または高すぎることを示すために、これらの範囲外のピクセルを異なる色で色付けします。

以下の例では、最初のテクスチャは最低輝度値を下回っており、そのため暗すぎています。4 番目のテクスチャは最高輝度値を超えているため、明るすぎます。

1 番目と 4 番目のマテリアルが誤ったアルベド値となっているシーン (Material Validator は無効の状態)
1 番目と 4 番目のマテリアルが誤ったアルベド値となっているシーン (Material Validator は無効の状態)
Material Validator を有効にし、Validate Albedo に設定した同じシーン。最低輝度値を下回るテクスチャは赤になります。最低輝度値より大きいテクスチャは青になります。
Material Validator を有効にし、Validate Albedo に設定した同じシーン。最低輝度値を下回るテクスチャは赤になります。最低輝度値より大きいテクスチャは青になります。

マテリアルチャートは、一般的なマテリアルのアルベド値を提供します。アルベド値の明度は、生成される拡散バウンスライトの量に劇的な影響を与えるため、グローバルイルミネーションのベイクでは、異なるマテリアルタイプが正しい輝度範囲内にあり、互いに比例していることを確認することが重要です。これらの値を正しく設定しやすくするために、Luminance Validation ドロップダウンでプリセットから選択することができます。このドロップダウンから、特定のマテリアルタイプの輝度範囲を検証するための一般的なマテリアルアルベド値を利用できます。

スペキュラーの検証

Unity のマテリアル チャートでは、2 つの異なるスペキュラー色範囲が定義されています。

  • 非金属マテリアル: 40 - 75 sRGB
  • 金属マテリアル: 155 - 255 sRGB

Unity では、すべての非金属マテリアルには一定のスペキュラー色があり、この色は常に正しい範囲内に収まっています。しかし、金属マテリアルでは、スペキュラー値が低すぎるということがよくあります。この問題のある金属マテリアルを見つけやすくするために、マテリアルバリデーターの Validate Metal Specular (メタルスペキュラーの検証) モードでは、スペキュラー色の値が低すぎるすべてのピクセルが色付けされます。これには、定義上は非金属マテリアルとされているものも含まれます。

下の例の左のマテリアルでは、スペキュラー値が最低よりも低いため、表示が暗すぎます。これはシーンの背景にも当てはまります。右のマテリアルのスペキュラー値は、有効範囲内です。

2 つの金属マテリアルがあるシーン。左側のメタリックスペキュラー値が正しくありません
2 つの金属マテリアルがあるシーン。左側のメタリックスペキュラー値が正しくありません
同じシーンで Material Validator を有効にし、Validate Metal Specular に設定した場合
同じシーンで Material Validator を有効にし、Validate Metal Specular に設定した場合

ピュアメタルの検証

Unity では、スペキュラー色の値が 155 sRGB より高い物理ベースのシェーディングマテリアルを、金属と定義します。また、正しく設定された金属マテリアルを__ピュアメタル__と呼びます。

非金属サーフェスのスペキュラー色の値が高すぎるにもかかわらずアルベド値が 0 でないという状況は、多くの場合、オーサリングエラーによって引き起こされます。Material Validator には、Check Pure Metals (ピュアメタルのチェック) というオプションがあります。このオプションを有効にすると、Unity では金属として定義しているにもかかわらずアルベド値が 0 でないマテリアルが、Material Validator によって黄色で表示されます。下の画像にその例を示します。表示されている 3 つのマテリアルで、左と右のマテリアルはピュアメタルですが、中央のマテリアルは異なるため、Material Validator で黄色に表示されます。

3 つの金属マテリアルがあるシーン。中央のマテリアルはピュアメタルではありません (アルベド値が 0 ではありません)
3 つの金属マテリアルがあるシーン。中央のマテリアルはピュアメタルではありません (アルベド値が 0 ではありません)
同じシーンを、Material Validator を有効にし、Validate Metal Specular に設定して、Check Pure Metals が有効な状態で表示
同じシーンを、Material Validator を有効にし、Validate Metal Specular に設定して、Check Pure Metals が有効な状態で表示

上の 2 番目の画像の背景は赤くなっていますが、これは Material Validator の Validate Metal Specular モードで背景のマテリアルのスペキュラー値が最低値よりも低いからです。

金属と非金属のプロパティを組み合わせた複雑なマテリアルに対して、ピュアメタルのチェック機能が無効なピクセルの一部を検出することがあります。しかし、マテリアルがすべて無効な場合は、通常はオーサリングエラーです。

デフォルトの輝度値のオーバーライド

プロジェクトのアートスタイルによっては、マテリアルの輝度値をプリセットされた輝度範囲の外に設定する場合があります。このような場合、Material Validator を使ってビルトインのアルベド値を独自の値にオーバーライドすることができます。プリセットの輝度範囲をオーバーライドするには、必要な各マテリアルタイプの AlbedoSwatchInfo 値の配列を、プロパティの EditorGraphicsSettings.albedoSwatches に割り当てます。

ビルトインレンダーパイプラインでのマテリアルバリデーター
ビルトインレンダーパイプラインのマテリアルバリデーターと互換性のあるシェーダーを作成する