Compoのチュートリアルです。今回はレイマーチングに特化して解説したいと思います。予備知識としてGLSLがある程度触れると嬉しいです。CompoはTokyoDemoFestとしては2回目です。今年は「7Line(行)」の制限はありません。よって、自由に何行でもGLSLを書くことができます。※もちろん7Lineの作品を投稿しても大丈夫です。Compo作品の上映時間ですが、必要であれば指定することができます(30[s]など...)投稿する際にコメントを書く欄があるので、そちらに記載して上映時間を設定することができます。作品上映中は具合の良いBGMが流れます。※不明点は会場で聞いてみてください。リモートで投稿したい方はオーガザイナーの方に事前にメールだったりtwitter等でご連絡いただけると嬉しいです。※制限時間内であれば飛び入りでコンポ登録しても大丈夫です。2014のチュートリアルが参考になります。綺麗にまとめられております。Compoの作品をみてみましょう。mitsumanこのような素晴らしい作品が会場で上映されました。観てみるとすごいですね...みんなリアルタイムできびきびと動きます。海外からの作品投稿もありました。Sandboxはbackbufferが使えます)上記の作品は去年の作品です。したがって7Line(7行)の制限があります。7行のGLSLでこれだけの表現ができます。レイマーチングってなんぞ?手前みそですが、2012年のTokyoDemoFestで発表したスライドを以下に記載します。レイマーチングでDistanceFieldする為のひな形さあ、スライドを観たので大体考え方はばっちりなのではないでしょうか。普段ポリゴン出したりしてモデリングしている方は、今こそ2ポリで何か描画する面白いShaderの書き方を覚えると面白かもしれません。今回はレイマーチングがテーマです。スライド観たけど、どこから手をつけたらいいのかわからない、と、思われている方は多いんじゃないでしょうか。・画面一枚に大きな板ポリがあって・UVが0~1まで取れるという制限さえ知っていればOKです。3D用のひな形を作ってみました。fieldでの形状描画)■ちょっと長いですが、説明を記載しました。//t更新時の適当な係数。//視点ベクトルを作成する。//map関数で定義した形状を反復法で解きます。//SphereTracing。DIST_COEFFは複雑な形状を描画する際に小さく為につけています。//ちょっとずつレイを進める事ができます。↑の表示例は以下です。Sandboxにも他の方が書かれた同じような仕組みが一杯あります。表示したい形を定義した陰関数(の集まりとの距離)を反復法で解いていきます。レイの飛ばし方は作られている方々や表示したいオブジェクトによって工夫が見られます。多少離散的になって荒くなっても良いのでスピードを出すようにレイの突き出し方を工夫しているものもあります。リッチなレイの飛ばし方は、ShaderToyの作品群が参考になると思います。TBCの最初のシーンです。遠くまでレイが飛んでいるのがすごいのと、スピードがあるdemoなのでノイズなんてそんなに気になりません。map関数でよく使われるをまとめてみました適当に目的別に並べてみました。[plasmaなテクスチャが欲しい]基本中の基本、以下から作ってみてください(GLSLSandboxは簡単なUV操作ができる状態からStartします)http://glslsandbox.com/e[無限の床を描きたい]平面の方程式を考えます。0これをそのままmap関数に入れちゃいます。Sandbox向け)床ができました。map関数はシンプルですね。Sandboxのデフォルトのを使ってみます)uvは、今回はy方向の法線で定義した床なので、衝突した点のxzでuvを取ります。Sandbox向け)床に模様がつきました。[柱を描きたい]球の応用です。球のmap関数から、y方向の制限を外します。※この場合は視点からみて上下(タテ)方向に無限遠にします。Sandbox向け)床と柱が出ました。★ここで複数のオブジェクトを混ぜる場合、レイが最も近いオブジェクトに当たっていないとダメなので、tの最小値をmapから返すようにします。}[glslだけでperlinノイズを出してみたい]以下に簡単なperlinノイズ関数があります。}結果は以下の通りです。Sandbox向け)perlinnoise系は応用範囲がとても広いです。[四角い板を出してみたい]球の応用です。z=0.5で、ちょっとだけ角が丸い板を出してみます。Sandbox向け)球と床と混ぜて、視点のアングルをrotate関数で変えて動かしてみました。積極的にオブジェクトを動かしてみると良いかもしれません。noiseで何かできる・プロシージャルテクスチャを適当に貼れる・床が作れる・timeで動かせるムムッ、何となく、寿司が作れそうですね。GLSLSandboxをみるとワンサカ出てきます。面白そうなShaderを組み合わてみると、色々発見があると思います。宜しければ是非、お気軽にCompo投稿してみてください。primitives2015,@gyabo。