Version: Unity 6.0 (6000.0)
言語 : 日本語
サーフェスシェーダーの記述
ビルトインレンダーパイプラインのサーフェスシェーダー出力構造体

ビルトインレンダーパイプラインのサーフェスシェーダーの概要

ビルトインレンダーパイプラインでは、サーフェスシェーダは、ライティングと連動するシェーダを効率的に記述する方法です。

レンダーパイプラインの互換性

機能名 ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP ビルトインレンダーパイプライン
サーフェスシェーダー いいえ

URP でシェーダーオブジェクトを効率的に作成する方法については、Shader Graph を参照してください。
いいえ

HDRP でシェーダーオブジェクトを効率的に作成する方法については、Shader Graph を参照してください。
いいえ はい

概要

ライティングと相互作用するシェーダーの記述は複雑です。各種ライト、各種の影のオプション、各種レンダリングパス (フォワードやディファードレンダリング) があり、シェーダーはその複雑さを処理する必要があります。

サーフェスシェーダーは、低レベルの頂点/ピクセルシェーダープログラムを使用するよりもはるかに簡単に lit シェーダーを作成できるコードの生成方法です。

いくつかの例については、サーフェスシェーダー例を参照してください。

しくみ

入力として必要な UV やデータを取得し、出力構造体の SurfaceOutput に入力する “サーフェス関数”を定義します。SurfaceOutput は、基本的に_サーフェスのプロパティ_ (アルベドの色、法線、エミッション、スペキュラーなど) を表します。このコードは HLSL で作成します。

サーフェスシェーダーコンパイラーは、どのような入力が必要であり、どのような内容を出力するかなどを把握し、実際の頂点シェーダーとピクセルシェーダーを生成するとともに、フォワードレンダリングやディファードレンダリングを処理するレンダリングパスを生成します。

サーフェイスシェーダーと DirectX 11 HLSL 構文

現在サーフェスシェーダーの一部のコンパイルパイプラインは DirectX 11 固有の HLSL 構文を解釈できないため、StructuredBuffers、RWTextures およびその他の非 DX9 構文といった HLSL 機能を使用する場合は、DX11 専用のプリプロセッサーマクロでラッピングする必要があります。

詳細については、プラットフォーム固有の違いページおよび HLSL の使用ページを参照してください。

追加リソース

サーフェスシェーダーの記述
ビルトインレンダーパイプラインのサーフェスシェーダー出力構造体