Version: Unity 6.0 (6000.0)
言語 : 日本語
ShaderLab と HLSL によるカスタムシェーダーの記述
カスタムシェーダーでのサブシェーダーの追加

シェーダーファイルの作成

Switch to Scripting

シェーダーアセットは、Unity プロジェクトで シェーダーオブジェクト を定義するアセットです。.shader 拡張子を持つテキストファイルで、シェーダーコード が含まれています。

  1. メインメニューから Assets > Create > Shader を選択します。

  2. シェーダーを作成します。

以下のタイプのシェーダーを作成できます。

シェーダータイプ 説明
標準サーフェスシェーダー ライティングと相互作用する効率的なシェーダーコードを記述できるシェーダー。
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 を使うと、シェーダーファイルの自動アップグレードまたは自動変更を無効できます。

追加リソース

ShaderLab と HLSL によるカスタムシェーダーの記述
カスタムシェーダーでのサブシェーダーの追加