Version: 2020.1
言語: 日本語
ShaderLab: Name
ShaderLab : Texture Combiners

ShaderLab :古いライティング (非推奨)

マテリアルとライティングパラメーターは、ビルトイン頂点ライティングを制御するために使われます。頂点ライティングは、各頂点ごとに計算されている標準的な Direct3D/OpenGL のライティングモデルです。Lighting on はそれを点灯します。ライティングは Material ブロック、 ColorMaterialSeparateSpecular コマンドの影響を受けます。

  • 注意: 頂点シェーダーのプログラムが使われたとき、マテリアル/ライティングコマンドは効果ありません。その場合、すべての計算は完全にシェーダーに記載されています。旧頂点ライティングの代わりに、プログラマブルシェーダーを使用することをお勧めします。あなたはここで説明するコマンドのいずれも使用していないため、代わりにあなたがあなた自身、すべてのライティング、テクスチャリング、自分自身で何かを行う場所 頂点とフラグメントプログラムを定義します。*

頂点カラーリングと&ライティングは、レンダリングされたジオメトリのために計算された最初の効果です。これは、頂点レベルで動作し、テクスチャが適用される前に使用される基本の色を計算します。

シンタックス

トップレベルのコマンドは、固定機能ライティングを使うかどうか、および、いくつかの設定オプションを使用するかどうかを制御します。メインのセットアップは Material Block 、以下に詳細を詳述します。

カラー

    Color color

オブジェクトのソリッドカラーを設定します。色は括弧内の 4 つの RGBA 値、または角カッコの中の色のプロパティ名のいずれかです。

マテリアル

    Material {Material Block}

マテリアルブロックは、物体の材料特性を定義するために使用されます。

ライティング

    Lighting On | Off

マテリアルブロックで定義された設定で、任意の効果を持つようにするには、Lighting ON コマンドを使用してライティングを有効にする必要があります。ライティングがオフになっている場合は、色が Color コマンドから直接取得されます。

セパレートスペキュラ

    SeparateSpecular On | Off

このコマンドは、スペキュラーライティングがシェーダーパスの最後に追加されるので、スペキュラーライティングはテクスチャリングの影響を受けません。Lighting ON が使用されている場合にのみ効果があります。

カラーマテリアル

    ColorMaterial AmbientAndDiffuse | Emission

マテリアルにて設定された色の代わりに頂点ごとの色を使用します。 AmbientAndDiffuse は、マテリアルの Ambient および Diffuse 値を置き換えます。 Emission はマテリアルの Emission 値を置き換えます。

マテリアルブロック

これは、マテリアルが光にどのように反応するかの設定が含まれます。これらの特性のいずれかを省略することができます。その場合には、それらは黒にデフォルト設定されます (つまり、何の効果もありません)。

Diffuse color: 広がった色構成要素。これはオブジェクトの基本色です。

Ambient color: アンビエント色要素。アンビエントライトがオブジェクトに当たる際の色で、Lighting ウィンドウ で設定されます。

Specular color: オブジェクトのスペキュラーハイライトの色です。

Shininess number: 0 と 1 の間のハイライトのシャープネス値。0 で拡散照明のようなたくさんの巨大なハイライトを得、1 で小さな斑点を得ます。

Emission color: ライトが当たっていないオブジェクトの色。

オブジェクトを照らすライトのフルカラーは、次のとおりです。

Ambient * Lighting ウィンドウの Ambient Intensity 設定 + (Light Color * Diffuse + Light Color * Specular) + Emission

式のライトの部分 (かっこ内) は、オブジェクトに当たるすべてのライトに対して繰り返されます。

大抵の場合、Diffuse と Ambient は同じ色にしておきたいでしょう( Unity の組み込みシェーダーはすべて、そうなります)。

常に純粋な赤でオブジェクトをレンダリングします。

Shader "Solid Red" {
    SubShader {
        Pass { Color (1,0,0,0) }
    }
}

カラーオブジェクトを白、頂点ライティングを使用する基本的なシェーダー。

Shader "VertexLit White" {
    SubShader {
        Pass {
            Material {
                Diffuse (1,1,1,1)
                Ambient (1,1,1,1)
            }
            Lighting On
        }
    }
}

マテリアルインスペクターに表示プロパティとしてマテリアルの色を追加した拡張バージョン。

Shader "VertexLit Simple" {
    Properties {
        _Color ("Main Color", COLOR) = (1,1,1,1)
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
            }
            Lighting On
        }
    }
}

そして最後に、本格的な頂点ライトシェーダー (ShaderLab: 古いテクスチャの結合 リファレンスページを参照してください)​​。

Shader "VertexLit" {
    Properties {
        _Color ("Main Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
                Shininess [_Shininess]
                Specular [_SpecColor]
                Emission [_Emission]
            }
            Lighting On
            SeparateSpecular On
            SetTexture [_MainTex] {
                Combine texture * primary DOUBLE, texture * primary
            }
        }
    }
}
ShaderLab: Name
ShaderLab : Texture Combiners