ShaderLab文法:シェーダ
ShaderLab文法:サブシェーダ

ShaderLab文法:プロパティ

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

シェーダにより,UnityのMaterialインスペクター 上で,アーティストがセットできるパラメータの一覧を定義できます。シェーダでのPropertiesブロックで定義します。

文法

プロパティ

    Properties {Property [Property ...] }

プロパティのブロックを定義します。波括弧{}の中で次のように複数のプロパティを定義します。

Float Range

    name ("display name", Range (min, max)) = number

floatプロパティを定義し,インスペクタ上でスライドバーが_min_から_max_として表現。

Color

    name ("display name", Color) = (number,number,number,number)

Defines a color property.

Texture 2D

    name ("display name", 2D) = "name" { options }

Defines a 2D texture property.

Rectangle

    name ("display name", Rect) = "name" { options }

長方形(2のべき乗でない)テクスチャのプロパティを定義。

Cubemap

    name ("display name", Cube) = "name" { options }

Defines a cubemap texture property.

Float

    name ("display name", Float) = number

Defines a float property.

Vector

    name ("display name", Vector) = (number,number,number,number)

Defines a four-component vector property.

詳細

シェーダの各プロパティは name により参照されます(Unityで,シェーダのプロパティ名をアンダースコアで始めるのは一般的)。プロパティはマテリアルインスペクタ上で display name として表示されます。各プロパティのデフォルト値は等号=のあとに記述します。

  • RangeFloat プロパティでは1つの数字。
  • ColorVector プロパティでは括弧()で括る4つの数字。
  • テクスチャ(2D, Rect, Cube)ではデフォルト値は空の文字列か内蔵のデフォルトテクスチャ: “white” ,“black” ,“gray” ,“bump” 。

シェーダの後のほうで,プロパティの値は括弧[]でプロパティネームを記述して参照します:[name]

Properties {
    // properties for water shader
    _WaveScale ("Wave scale", Range (0.02,0.15)) = 0.07 // sliders
    _ReflDistort ("Reflection distort", Range (0,1.5)) = 0.5
    _RefrDistort ("Refraction distort", Range (0,1.5)) = 0.4
    _RefrColor ("Refraction color", Color) = (.34, .85, .92, 1) // color
    _ReflectionTex ("Environment Reflection", 2D) = "" {} // textures
    _RefractionTex ("Environment Refraction", 2D) = "" {}
    _Fresnel ("Fresnel (A) ", 2D) = "" {}
    _BumpMap ("Bumpmap (RGB) ", 2D) = "" {}
}

テクスチャプロパティのオプション

テクスチャプロパティの波括弧{}の中の_options_は任意のオプションです。利用可能なオプションは:

  • TexGen texgenmode: このテクスチャの自動テクスチャ座標生成モード。 ObjectLinear , EyeLinear , SphereMap , CubeReflect , CubeNormal のいずれかで,これらはOpenGL texgenモードと直接に対応する。カスタムのvertex program(頂点プログラム)が使用されている場合はTexGenは無視されるので留意して下さい。
  • LightmapMode 記述した場合,テクスチャは各レンダラーごとのライトマップパラメータの影響を受けます。つまり使用するテクスチャはマテリアルにないが,レンダラの設定から取得します,詳細はRendererクラス を参照下さい。

// EyeLinear texgen mode example
Shader "Texgen/Eye Linear" {
    Properties {
        _MainTex ("Base", 2D) = "white" { TexGen EyeLinear }
    }
    SubShader {
        Pass {
            SetTexture [_MainTex] { combine texture }
        }
    }
}
ShaderLab文法:シェーダ
ShaderLab文法:サブシェーダ