このサイトはダイキン工業が運営するCG業界ニュースサイトです。
お問い合わせ

オンラインセミナー『ShaderFXを使った画像表現セミナー』(2)

 

デフォルトのシェーダーを解説

次に、ShaderFXの標準のノードの中身を紐解いていく。描画結果を知っているシェーダーが「どのようなノードの組み合わせで表現されているか」を学べば、スムーズに理解できるはずだ。

ShaderFXの設定後、まずディレクショナルライトを設定しておく。ビューポートのライティングで「すべてのライトの使用」をオンにして、ライトの当て方による変化を確認してみよう。

ShaderFXのノードは「Material」と「TraditionalGameSurfaceShader」、「Color」。ここで「Settings」の「Toggle Advanced Mode」が有効なら、展開して中身を見ることができる。中身を開くと、複数のノードで構成されていることが分かる。
なお、ここでの操作については、こまめにセーブしながら行なうことを推奨する。

Materialノードの中身

Materialノードは、TraditionalGameSurfaceShaderと「Surface Shader」で接続されている。
中を開いて、必要な部分を紐解く。

Shaderノードとして用意されているのは、「HwShader」。ここがスタート地点だ。HwShaderは、左の一覧では「Hw Shader Nodes」→「Core」→「Hardware Shader」に相当するものだ。
左上のライトのシェーダーは、Max3に設定されている。

HwShaderに接続されているのが「Technique」。このTechniqueには、複数のパスが接続されている。

「Surface Shader4」につながっているのは、ColorPass。Techniqueの次に必要なのは、カラーを決めるパス。ColorPassもグループノードで、展開可能だ。

中のColorPassは、設定できるパスのひとつ。
ColorPassの中で重要なのは「Vertex Shader」と「Pixel Shader」だ。

一番上の「State Settings」は、複数のパスを設定したときに必要となる。
内容は、次のStateノードに記述される。
※はじめての設定では、ひとつのパスなので設定せずに進める。

Pixel Shader

Pixel Shaderは、すぐ下のPixelShaderノードで設定されている。PixelShaderノードとつながっているのは「VectorConstruct」。PixelShaderと「Pixel Color」-「float4」で結ばれている。

float4はfloat×4、つまりRGBαがそれぞれ色として接続されている。
VectorConstructのピンの色で分かるように、floatがひとつの場合は緑、2つの場合は黄色、3つの場合は水色、4つの場合はピンクとなっている。ちなみに、HwShaderノードの接続で分かるように、整数型の接続は濃い青色だ。
VectorConstructの先は、多数のノードでリッチな表現にしていく。

Vertex Shader

Vertex Shaderは、最小限の設定で使い続けられるようになっている。黒い接続は、ClolorPassのVertexShader 0につながっている。ここでColorPassを閉じてみると、接続先はVertexShaderグループとなっている。
このグループに接続しているのはMaterialグループの「Object Vertex Position」だが、この先は使用していない。

 

ここで、Vertex Shaderを展開してみる。
複雑に見えるが、実はある程度省略して接続することが可能だ。
Vertex Shaderの接続は「Vertex Position Input」と「Vertex Position Output」の2つ。

Vertex Position Inputがつながる上段のまとまりは、VertexShaderグループへと接続されている。よって、必要となる「Pos Object Space」を直接接続すればよい。他は使用しない。

下の段はAかBという分岐が行なわれているが、Aの接続先とVertex Position Outputを直接つないでおく。ワールドスペースを採っているのは、先程のPos Object Spaceなので、「WVspace」へと接続しておく。
Vertex Shaderは、この4つのノードのみで使用できる。

そこで必要なもののみをコピーして、最上位階層にペーストする。元のグループは削除してかまわない。
これがリッチなシェーダーを作っていくベースとなるので、この状態で保存しておく。
メニューの「File」→「Export Graph」で任意の場所に、名前を付けてsfxファイルで保存しよう。このsfxファイルは、必要に応じてインポート可能だ。

 

オンラインセミナー『ShaderFXを使った画像表現セミナー』(3)へ続く)