Version: 2023.1
言語: 日本語
シェーダーの作成
ShaderLab

シェーダー作成の概要

言語

Unity のシェーダーを作成する際には、以下の言語を使用します。

  • HLSL と呼ばれるプログラミング言語。これを使ってシェーダープログラムそのものを書きます。HLSL の詳細については、Unity の HLSL を参照してください。
  • ShaderLab と呼ばれる Unity 固有の言語。これを使って シェーダーオブジェクト を定義します。これは、シェーダープログラムのコンテナとして機能します。ShaderLab の詳細については、ShaderLab を参照してください。

プラットフォームごとに異なる言語を使用する必要はありません。Unity は HLSL と ShaderLab のコードを、様々なグラフィックス API に対して異なる言語にコンパイルします。詳しくは、シェーダーコンパイル を参照してください。

ノート: 必要であれば、シェーダープログラムを GLSL や Metal で直接書くこともできます。これは、通常のワークフローの一部としては推奨されていません。また、通常のワークフローに必要ではありません。GLSL の使用についての詳細は、Unity の GLSL を参照してください。

様々なシェーダーの作成方法

シェーダーには様々な作成方法があります。

  • 最も一般的な方法は、頂点シェーダとフラグメントシェーダーを HLSL で作成することです。詳しくは、頂点シェーダとフラグメントシェーダーの作成 を参照してください。
  • ビルトインレンダーパイプラインでは、サーフェスシェーダーを作成することもできます。これはライティングと連動するシェーダーを作る簡単な方法です。詳細については、サーフェスシェーダー を参照してください。
  • 後方互換性の理由から、Unity は “固定関数スタイル” の ShaderLab コマンドもサポートしています。これにより、HLSL を使わずに ShaderLab でシェーダーを作成することができます。これは現在では推奨されていませんが、詳しくは ShaderLab の古い機能 のページを参照してください。

様々なグラフィックス API のためのシェーダーの書き方

場合によっては、ターゲットとしているグラフィックス API に応じて、異なる方法でシェーダーコードを記述する必要があります。この点については、様々なグラフィックス API のシェーダーの作成 を参照してください。

シェーダーの作成
ShaderLab