[Unity] ShaderLab入門とか2

前回の続き。
今日はなんとなくKindleストア眺めてたら
最近発売したUnityのシェーダに関する入門書があったので
買ってみました(シェーダーの本じゃなきゃこの値段だと悩むけど。。。)

この記事は本の紹介ではないですが、ざっくり本の内容を書くと

  1. はじめてのシェーダを書いてみる
  2. サーフェスシェーダーとテクスチャマッピング
  3. 光源モデルを理解する
  4. Unity5の物理ベースレンダリング
  5. Vertexシェーダ
  6. FragmentシェーダとGrabPasses
  7. モバイル向けのシェーダ
  8. スクリーンエフェクトとRenderTexture
  9. ゲームプレイ時のスクリーンエフェクト
  10. シェーダ応用テクニック
    • いろいろ
    • ファーシェーダー
    • ヒートマップ

ぼくはこれを書いている時点では、まだ3章までしか読めていませんが、とても勉強になってます。

OpenGL,DirectXでシェーダ書くと、シェーダ書くまでの準備が大変だったりするので
Unityに特化して詳しく書かれてる本はシェーダ自体の導入としても敷居が低くて良いと思います。
おすすめ

※書評は全部読んだら。。。(洋書だから時間かかってる。。。)

ShaderLabというかCgのことのメモになりそうですが。。。

ShaderLabのパラメータに指定できる型

Type 概要 宣言
Range(min,max) 範囲指定 _MyRange (“My Range”, Range(0,10)) = 2
Color _MyColor (“My Color”, Color) = (1,1,1,1)
2D テクスチャ _MainTex (“Texture”, 2D) = “white” {}
Rect b つかったことない。。。そのうち
Cube キューブマップ つかったことない。。。そのうち
Float 浮動小数点 _MyFloat (“My Float”, Float) = 2.0
Vector ベクトル _MyVector (“My Vector” Vector) (1,1,1)

packed array

int4とかfloat3とか。そういうやつ。
要するにint4intを4つもってる構造体、float3floatを3つもってる構造体

なんですが、少し特殊な使い方が可能

float4型のcというインスタンスを例に取ると

  • c.rgbという書き方でfloat3が取り出せる (色)
    • c.a という書き方でfloatが取り出せる
    • c.bgrという書き方をするとrとbの成分をスイッチできる
  • c.xyzという書き方でfloat3が取り出せる (ベクトル)
    • c.wという書き方でfloatが取り出せる
  • c.rxz のように複数の書き方(色とベクトルj)を混在させることはできない
  • もちろんc.rgという書き方でfloat2を取り出せる
  • c = 1 で float4(1,1,1,1)と同等

そして更にpacked arrayのmatrixも存在する。
たとえばfloat4x4型のfxfというインスタンスを例に取る
(float4が4つもつ型)

  • fxf[0]で最初の要素のfloat4が取り出せる
  • fxf._m00で最初のfloat4の最初のfloatが取り出せる
  • fxf._m00_m11_m22_m33で任意の位置から取り出したfloat4が取り出せる
  • fxf._m00_m01_m02_m03はfxf[0]と等価なfloat4を返す

Cgで組み込みで利用できる関数

ここに全部挙げられないので一覧のリンク。

参考リンク nVidia The Cg Tutorial

ShaderLabで組み込みで利用できる変数

ここも全部挙げられないので一覧のリンク。

UNITY_MATRIX_MVPとか_Timeとか_WorldSpaceCameraPosとか
チュートリアルでもよく見かけますね。

参考リンク Unity Built-in shader variables

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です