Top / 4K Procedural Gfx Monitor / 4KBプロシージャルGFX入門講座 放課後

4KBプロシージャルGFX入門講座 放課後

今後の発展編

この講座では、4KBプロシージャルGFXの入門からレイトレの実装までやったけど
ここから先は自分の力で新たなアイデアを手に入れ実装していってほしい。
とはいっても、すぐには無理なので、ここではステップアップとして参考にすべき情報をのせておきます。

iq/RGBA 氏のサイト

RGBAのiq 氏のサイトにシェーダを使った4KBプロシージャルGFXについての有用な情報がある。
nvscene 2008 - Rendering Worlds With Two Triangles(英語)

Distance-aided ray marchingについての説明がされている。
詳しいコードはあまり乗っていないが、コレを参考にして私なりに実装したサンプルが
4kGfxMonのsample/distancefieldRaytrace です。

コードを参考にiq 氏 のプレゼンを読み解いてみてください。
まぁポイントは、最小距離情報をうまく使っているところでしょうか。
レイを探索するときは、最小距離情報を利用し探索し、
ソフトシャドウは最小距離情報を使い簡易的に計算していたりします。

4KB Introへの発展

最近の4KB Introはグラフィックス部分はシェーダだけで書かれているものが多い。
この講座での知識があれば4KB Introのグラフィックス部分に関しての基本を終えてるといっても過言ではない。
4KBプロシージャルGFXから4KB Introに必要なのは「時間パラメータ」と「音楽の再生」である。

まず、4KB Intro製作では欠かせないサイトをあげておく。 IN4K である。
ここはdemosceneの4KB Intro作成のリソースとしてははずせないサイトである。
やや古いコードもあるが、4KB製作をしている人で見たことが無い人はモグリである。
また、英語はちょっとという人は日本語で読めるリソースもある。 Megademo-wikiである。
ここは2chParty.netの下のサイトであるけど、日本人によるいくつかの4Kサンプルがあり、
また、手前味噌だが拙著の64KB and 4KB Tipsもあるので参考にしてほしい。

時間パラメータの追加

シェーダによる4KB Introの作成では時間パラメータはシェーダのみでは作ることができないので、CPUから
シェーダにパラメータとして渡してやる必要がある。方法はいくつかあるが、もっともわかりやすい方法は
GLSLのuniform変数を使った方法である。
ここに出血大サービスで4kGfxMonのテンプレートファイルを拡張したサンプルを用意した。
AmbientOcclusionのボールがとびはねる4KB Introのサンプルである。まぁ好きに使ってください。
(ちゃんと使うには4kGfxMonが必要です。)

リアルタイムアンビエントオクルージョン!? in 1.77KB

実行ファイルとソースと4kGfxMon用テンプレートをダウンロード!!

音楽再生の追加

音楽再生に関しては4KB Introにおいては非常に重要な要素をしめるが、このことについて
あまり細かく書くと、それはそれでもうひとつの講座になってしまうので、この場では概略だけ。

音楽再生の方法はいくつか方法があるが、一番簡単なのがsndPlaySound APIを使った方法。
この音楽再生は最初に音楽のレンダリングを済ませておく必要があるが、1APIをコールするだけで
サウンドが再生できるのでサウンドが再生できるので、とても簡単に使うことができる。

次によく使われる方法はwaveOut系のAPI もしくは DirectSoundである。これらはどちらも非常に良く似た性質をもつ。
どちらも音楽をバックグラウンドでレンダリングしながら再生することが可能である。
どちらか得意な方を使えばよいだろうが、某人によるとアセンブラレベルでチューニングする場合、
waveOut系のほうが少し有利らしい。
ただし、waveOut系の関数はXPとVistaで仕様が変わっているので注意が必要である。

音楽をレンダリングする手段としては、自前で軽量なソフトウェアシンセサイザを作り、波形合成を行うのも手だが
gm.dlsファイルを使ったテクニックも使われる。
このやり方はmegademo-wikiにのっているので参考にするのがよいだろう。

講座のまとめ

以上でこの講座は終了となります。いかがだったでしょうか。
4KBプロシージャルグラフィックス入門からはじまり、4KB Introへの発展まで。
自分なりには、なるべく多くの方がはじめられるように努めたつもりですが、もしここがわかりにくいというのが
あれば、私宛(kioku [a] sys-k.net )にメールをくだされば、できるかぎり対応したいと思います。

シェーダによる4KBの世界はここ1, 2年ではじまったばかり、Elevated @ Breakpoint2009 はすごかったけれど
これからもっとすごいものが出てくるでしょう。
個人的にはGeometry Shaderとかその他もろもろがもっと使いやすくになれば、
シェーダだけでポリゴンモデル作成して〜な4KBとかいろいろできそうな気がしてます。
ほんとにシェーダの機能が拡充されまくっているので、シェーダだけでやれることがどんどん増えています。
新たにはじめるなら今がチャンスです!
みなさんのアイデアを具現化する発表の場をdemosceneにしてみてはいかがでしょうか?

それでは日本のdemosceneが発展することを祈って!
. kioku / System K