2013年1月23日水曜日

[Unity]Shaderのメモ-①-

UnityでShaderをいじるのでメモ。
分からないキーワードが続々出てきたので、とりあえずコードに記載されているものの説明から始めようと思う。
説明はコード上に記載。
※説明内容はprogramを知らない人が何となく理解できるような言葉で敢えての説明文、というか自分が理解するためのとっかかりとしてメモしたものなので分かりづらかったらドキュメントを見た方がいい。

// Shaderのネームスペース
Shader "Custom/Basic" {
 // Unity用に最適化したシェーダーの実行命令形態
 SubShader {
  // 複数のシェーダーをまとめて扱うためのおまじない。
  // パイプラインをまとめる(Pass)
  Pass {
  // Cgプログラムでシェーダーを使いますよっていうおまじない
  CGPROGRAM
  
  // "#pragma"はスニペット
  // "#pragma vertex"でバーテックスシェーダーを使用する旨を伝える、引数はファンクションネーム
  // "#pragma fragment"でフラグメントシェーダーを使用する旨を伝える、引数はファンクションネーム
  #pragma vertex vert_function
  #pragma fragment frag_function
  
  // 型 関数名(引数型 引数名) : 適応範囲
  float4 vert_function(float4 vertexPos : POSITION) : SV_POSITION {
   // mulは乗算、UNITY_MATRIX_MVPは演算適応範囲でMVPだとModel*View*Projection(射影行列)、で残りの引数が実効値
   return mul(UNITY_MATRIX_MVP, float4(1.0,0.1,1.0,1.0) * vertexPos);
  }
  
  // 型 関数名(引数型) : 適応範囲(フラグメントの色)
  float4 frag_function(void) : COLOR {
   return float4(1.0, 0.6, 0.0, 1.0);
   // (red, blue, green, alpha)
  }
  // Cgプログラムのシェーダーはここで終了ですよっていうおまじない
  ENDCG
  }
 }
}

詳細を知りたい場合はドキュメントを参照
日本語版もある。
「docs」の後に「-jp」を付ければ日本語版に早変わり♪

0 件のコメント:

コメントを投稿