読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

レイマーチングを学ぶ

GLSL WebGL シェーダーコードを書く

3Dグラフィックスもままならないのに、レイマーチングに手を出そうという。

レイマーチングとはレイトレーシングの一種だとのことだ。レイトレの高速アルゴリズム版、DFTに対するFFTのようなものか。 コードはとても簡素だけど、生成した画像をは恐ろしくリアルだったりする。 頑張れば下のようなのがフラグメントシェーダーのみで描けて、しかもリアルタイムで動くという。

しかもその簡素なコードでなぜこのようなものが描けるのかパッと見理解できない不思議。なんでこのような簡単な形状関数(距離関数)で描けるのかね。。もうちょっと数学的な知識があればなぁ。。

1画面を書くのに結構な計算をしなくてはいけないけど、GPUの並列処理のおかげでリアルタイムで動くものが作れるようになった。レイマーチングはGPUの活用例としてもすぐれた素材なのだろうな。

チュートリアルコードをコピペしつつ、勉強を進めよう。 ということで、まずは「全能感UP! GLSLで進めレイマーチング « demoscene.jp」のコードをコピペしてちょっとだけっていじったものが下。

3d_codes/src/00004 at gh-pages · sfpgmr/3d_codes · GitHub

こんなのが数十行のコードで描けるのだから、レイマーチングはほんとすごいや。