Version: 2022.3
言語: 日本語
ShaderLab
ShaderLab: マテリアルプロパティの定義

ShaderLab: シェーダーオブジェクトの定義

ShaderLab でシェーダーオブジェクトを定義するには、Shader ブロックを使用します。このページでは、Shader ブロックの使用に関する情報を掲載しています。

シェーダーオブジェクトの仕組みや、シェーダーオブジェクト、サブシェーダー、パスの関係については、シェーダーオブジェクトの基礎 を参照してください。

概要

シェーダーオブジェクトは Unity 固有の概念で、シェーダープログラムやその他の情報のラッパーです。同一ファイル内に複数のシェーダープログラムを定義し、それらをどのように使用するかを Unity に伝えることができます。

シェーダーオブジェクトはネスト構造になっており、サブシェーダーやパスと呼ばれる構造に情報を整理します。

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

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
ShaderLab: シェーダーブロック

シェーダーブロックの使用

Shader ブロック内で、以下を行うことができます。

署名 機能
Shader "<name>"
{
    <optional: Material properties>
    <One or more SubShader definitions>
    <optional: custom editor>
    <optional: fallback>
}
指定された名前のシェーダーオブジェクトを定義します。

古いシェーダー名

Unity 5.0 以前では、シェーダーの機能の一部はそのパスと名前によって決定されました。今でも Unity の古いシェーダー はそのように動作します。これらのシェーダーの名前を変更すると、その機能に影響を与える可能性があります。

このサンプルコードは、シェーダーオブジェクトの基本的な構文と構造を示しています。この例のシェーダーオブジェクトは、1 つのパスを含む 1 つの SubShader を持っています。そのシェーダーオブジェクトは、Material プロパティ、CustomEditor、Fallbackを定義します。

Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"

    Properties
    {
        // Material プロパティの宣言はここに記述
    }
    SubShader
    {
        // 残りの SubShader の定義はここに記述

        Pass
        {
           // Pass 定義のコードはここに記述
        }
    }

    Fallback "ExampleFallbackShader"
}

異なるレンダーパイプラインに対応するカスタムシェーダーの例については、カスタムシェーダーの例 を参照してください。

ShaderLab
ShaderLab: マテリアルプロパティの定義