LoginSignup
17
14

More than 5 years have passed since last update.

vvvv でシェーダの入門をしよう!

Last updated at Posted at 2014-12-13

この投稿は VVVV Advent Calendar 2014 の 13 日目の記事です。


シェーダとは

こんにちは。

vvvv ではシェーダも書きやすい環境が整っています。
シェーダを学習し始める人、思いついたシェーダを簡単に試してみたい時などにも便利です。

シェーダを使うと色々な表現ができますが、1から丁寧に説明するのはつらいので、どこか違う所で文法や仕様、仕組みを勉強しつつ、vvvv で試すというのがいいんじゃないでしょうか。

普通にコードでシェーダ書いてる人にとっては、すごい楽に扱えるなーっていうのを知ってもらえると嬉しいです。

とりあえず触ってみる

とりあえず何も考えずについて来てください。

1)ノードを作ってみる

まず、vvvv の画面上で左ダブルクリックし、「Template」と入力し、「Template (EX9.Effect)」を「Ctrl+左クリック」してください。

00.JPG

すると下のような画面が出ますのでてきとーに入力します。

01.JPG

付けた名前のノードが置かれたはずですので、それを「右クリック」すると、シェーダのコードが見れます。

02.JPG

ちなみに vvvv では HLSL を使います。
わけ分からなくてもついて来てください。

ここで落ち着いてピンを見てみると、なにやら Transform や Geometory、Texture などの見慣れた感じのピンが出ています。
とりあえず適当なノードを差し込んでみましょう。
「Teapot」、「FilteTexture」、「Rotate」を差し込んでみました。

03.JPG

テクスチャにはこの画像を使いました。
この画像は僕の撮影したもので、著作権フリーです。好きに使ってください。

tokyo.jpg

なんかクルクル周ると思います。
デプスがおかしいので、レンダラのデプスバッファの設定もついでにしました。

2)コードをいじってみる

それでは次はコードをいじってみましょう。
「Teapot」から来る Geometory にはノーマル(法線)も仕込まれているので、それを色にしてみましょう。
そろそろ説明にが苦しくなってきたのは自覚していますが、とりあえずついて来てください。
黄色くした部分を何も考えず入力してみてください。

04.JPG

すると、上手くいけばこうなります。

もしノードが赤くなった場合は、何かタイプミスをしています。
エラーメッセージをヒントに頑張ってミスった場所を探しましょう。

3)入力ピンを追加してみる

vvvv でのシェーダでは簡単に外部から入力を取る事もできます。
簡単な例として色を渡してみましょう。

コードの黄色い部分を一行入力すると入力ピンが増えているはずです。
05.JPG

その入力を使うために「PS」関数内をこういう風に変更してください。

06.JPG

すると上手くいけばこうなります。
色の変化もリアルタイムに反映されてくれます。

3)このパッチをアップしています

参考にしてください。
vvvv_tutorial/shader_begin.v4p

ダウンロードは「Raw」を右クリックして「名前を付けて保存」をしてください。
11.JPG

4)シェーダの理解のための参考本とか

不完全燃焼だと思いますが、何か他の資料で HLSL の文法や、シェーダの仕組みなどを勉強してみてください。
おすすめは、MSDN ですかね。
これとか。http://msdn.microsoft.com/ja-jp/library/bb509561(v=vs.85).aspx

シェーダの仕組みを解説している本では
ゲーム制作者になるための3Dグラフィックス技術 増補改訂版
とかおすすめです。

エフェクトを作ってみる

実用的な例として、ポストエフェクトを書いてみましょう。

1)ノードを作る

一旦、全て忘れて、「Template (EX9.Effect)」を Clone し直します。
先ほど説明したのと同じようにノードブラウザから「Template (EX9.Effect)」を見つけて「Ctrl+左クリック」です。
てきとーに名前をつけて作るフォルダをてきとーに選択します。

07.JPG

2)テクスチャを普通に表示する

とりあえず「Grid」を置いて全画面に表示してみましょう。

08.JPG

3)ピクセルシェーダをいじってみる

ここから、どう解説していくか少し心が折れてきました。
明るいところを抽出してみましょう。「Threshold (EX9.Texture Filter)」ノードの簡易版です。

float 型の「Threshold」というピンを作ります。
10.JPG

で、「PS」関数内をこういう風にいじります。

09.JPG

するとこうなります。

4)いろいろいじってみる

さらになんかクロスグレアフィルタを書くとキラキラします。解説は放棄しました。
下の方でパッチをアップしているのでそれを参考にしてください。

で、てきとーに元画像とかに Add とかしたり多少調整をするとこういう風にキラキラします。
僕はこういうの好きです。

5)これもパッチファイルをアップしました

参考にしてください。
vvvv_tutorial/ShaderFilter

おしまい

以上です。
シェーダを使うと自分の思い通りの表現を好きに作れます。
vvvv はシェーダの学習用ツールとしてもいいと思います。

それでは。ばいばーい。

17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14