- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!簡単なシェーダ
Unityでは「ShaderLab」という独自フォーマットで記載されます。
以下、参考サイト。
http://marupeke296.com/UNI_S_No2_ShaderLab.html
http://docs-jp.unity3d.com/Documentation/Components/SL-Material.html
一番参考になるのは、標準で内蔵されているShaderのソース。
http://unity3d.com/unity/download/archive/
より、「Built-in shaders」をダウンロードして解凍。
シェーダは、
:サーフェイス シェーダ:シェーダがライトや影の影響を受ける必要がある場合に使用。
:頂点シェーダ/フラグメントシェーダ(ピクセルシェーダ):シェーダがライトの影響を受ける必要がない場合に使用。
:固定関数シェーダ:プログラマブルシェーダを必要としない古いハードウェアのための記述。
の3つが存在します。
!!シェーダーの新規作成
Projectウィンドウ内で右クリックし、ポップアップメニューで「Shader」を選択すると新規生成できます。
MaterialsでShaderを割り当てる際に「Custom」の中に作成したものが配置されます。
Shaderのソースで「Shader "Custom/simpleShader"」のようにしている命名がそのままメニューにも反映されています。
!!シェーディングをしない指定色だけで塗りつぶす
Shader "Custom/simpleShader" {
Properties {
_Color ("Main Color", Color) = (1.0, 1.0, 1.0 ,1.0)
}
SubShader {
Pass {
Color [_Color]
Lighting Off
}
}
}
この場合は、光源を考慮せずに単一の白色で塗りつぶされます。
!!光源の反映、スペキュラ有効化
Shader "Custom/myShader" {
Properties {
_Color ("Main Color", Color) = (1, 1, 1, 0)
_SpecColor ("Spec Color", Color) = (1, 1, 1, 1)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Pass {
ZWrite On
SeparateSpecular On
Lighting On
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
}
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
}
}
}
光源を考慮して、マテリアルの「拡散反射色」「環境光色」「鏡面反射色」を指定します。
また、テクスチャを指定することでテクスチャマッピングを行います。
詳しくは「[[マテリアルの作成|unity_script_create_material]]」を参照。
!Properties内
使用する変数宣言。
:_Color:基本色
:_SpecColor:鏡面反射色
:_Shininess:鏡面反射のサイズ値
:MainTex:テクスチャ情報
!SubShader のPass内
:ZWrite:Zバッファへの書き込みを行うかどうか
:SeparateSpecular:鏡面反射を有効化するか
:Lighting:光源をシェーディング表現で考慮するか
:Material:マテリアルの各種情報を指定
:SetTexture:テクスチャ指定時の定型文。
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
については「texture * primary DOUBLE」がRGBの計算、「texture * primary」がアルファの計算になります。
「DOUBLE」は2倍にする処理。
textureはテクスチャ色そのもの、primaryは頂点カラー(光源を考慮している場合は光源も加味されたもの)。
----
{{lastmodified}}