シェーダーアセットは、Unity プロジェクトで シェーダーオブジェクト を定義するアセットです。.shader 拡張子を持つテキストファイルで、シェーダーコード が含まれています。
メインメニューから Assets > Create > Shader を選択します。
シェーダーを作成します。
以下のタイプのシェーダーを作成できます。
| シェーダータイプ | 説明 |
|---|---|
| 標準サーフェスシェーダー | ライティングと相互作用する効率的なシェーダーコードを記述できるシェーダー。 |
| Unlit シェーダー | ライティングのないテクスチャを表示する基本的なシェーダー。 |
| イメージエフェクトシェーダー | イメージエフェクト を作成する C# スクリプトに関連付けられたシェーダーファイル。 |
| コンピュートシェーダー | GPU 上 (通常のグラフィックスパイプラインの外) で計算を行うシェーダー。 |
| レイトレーシングシェーダー | レイトレーシングに関する計算を行うシェーダー。 |
Unity は、Assets フォルダー内の新しい .shader ファイルに基本コードを設定します。
ShaderLab でシェーダーオブジェクトを定義するには、Shader ブロックを使用します。このページでは、Shader ブロックの使用に関する情報を説明します。
シェーダーオブジェクトの仕組みや、シェーダーオブジェクト、SubShader、Pass の関係については、シェーダーオブジェクトの基礎 を参照してください。
このサンプルコードは、シェーダーオブジェクトの基本的な構文と構造を示しています。この例のシェーダーオブジェクトは、1 つのパスを含む 1 つの SubShader を持っています。そのシェーダーオブジェクトは、Material プロパティ、CustomEditor、Fallback を定義します。
Shader "Examples/ShaderSyntax"
{
CustomEditor = "ExampleCustomEditor"
Properties
{
// Material property declarations go here
}
SubShader
{
// The code that defines the rest of the SubShader goes here
Pass
{
// The code that defines the Pass goes here
}
}
Fallback "ExampleFallbackShader"
}
それぞれのレンダーパイプラインと互換性のあるカスタムシェーダーの例については、カスタムシェーダーの例 を参照してください。
Unity 5.0 以前では、シェーダーの機能の一部はパスと名前で定義されていました。今でも Unity の古い機能のシェーダー はそのように動作します。これらのシェーダーの名前を変更すると、その機能に影響を与える可能性があります。
UNITY_SHADER_NO_UPGRADE を使うと、シェーダーファイルの自動アップグレードまたは自動変更を無効できます。