ネッシーの心境

慣れない世界を必死に泳ぐ、息継ぎの記録

6日目 脱・茶柱記念日

ついに!

https://tetracalibers.github.io/webgl-practice-ground/alive-particle-following-mouse/

なんでこれ描こうとしてあの茶柱ができたのかw(もちろん色は変えているけど)

真相としてはおそらくインタリーブ配列への格納順序の問題で、インタリーブ配列から取り出した粒子の寿命データ・年齢データを速度データとして使ってしまっていたっぽい?

寿命と年齢は線形に変化するので、ランダム性がなくなって直線状に粒子が配置されてしまっていた…といったところか。(たぶん)

読み込みバッファと書き込みバッファをスワップしながらTransform Feedbackでパーティクルを描く基盤(自作ユーティリティクラス)ができたので、そのクラスを使ってwgld.orgさんのGPGPUデモも再現実装してみる。

wgld.org

再現版。せっかくなのでタッチデバイスにも対応させてみた。

https://tetracalibers.github.io/webgl-practice-ground/particle-spread-texture/

wgld.orgさんの解説とは実装方法をいろいろ変えている。

頂点・色・速度データをインタリーブ配列化したり(この作業はChatGPTにやってもらった)、VAOを使ってbind周りの処理を簡略化したり、スワップのロジックを変えたり。

基盤の実装を固めるにあたって、めっちゃお世話になったのが次の記事。

gpfault.net

この記事がなかったら絶対諦めていた。

Transform Feedbackの動作自体、この記事のおかげで理解できた…update用のフラグメントシェーダがno-opだったなんて。必死にいじっていたよそこ。

そしてこの記事読んでて思い出した。GLSLでのパーリンノイズの実装、諦めたきりだったな。

もっとパーティクルをいじりたいけど、ランダム性を持たせる上で武器が足りない。勾配ノイズとか勉強してから出直そう