トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_shader_basic

簡単なシェーダ

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
       }
    }
  }
}

光源を考慮して、マテリアルの「拡散反射色」「環境光色」「鏡面反射色」を指定します。
また、テクスチャを指定することでテクスチャマッピングを行います。
詳しくは「マテリアルの作成」を参照。

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は頂点カラー(光源を考慮している場合は光源も加味されたもの)。


最終更新時間:2013年11月22日 21時18分52秒