!!!簡単なシェーダ 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}}