6日目 脱・茶柱記念日
ついに!
https://tetracalibers.github.io/webgl-practice-ground/alive-particle-following-mouse/
なんでこれ描こうとしてあの茶柱ができたのかw(もちろん色は変えているけど)
真相としてはおそらくインタリーブ配列への格納順序の問題で、インタリーブ配列から取り出した粒子の寿命データ・年齢データを速度データとして使ってしまっていたっぽい?
寿命と年齢は線形に変化するので、ランダム性がなくなって直線状に粒子が配置されてしまっていた…といったところか。(たぶん)
読み込みバッファと書き込みバッファをスワップしながらTransform Feedbackでパーティクルを描く基盤(自作ユーティリティクラス)ができたので、そのクラスを使ってwgld.orgさんのGPGPUデモも再現実装してみる。
再現版。せっかくなのでタッチデバイスにも対応させてみた。
https://tetracalibers.github.io/webgl-practice-ground/particle-spread-texture/
wgld.orgさんの解説とは実装方法をいろいろ変えている。
頂点・色・速度データをインタリーブ配列化したり(この作業はChatGPTにやってもらった)、VAOを使ってbind周りの処理を簡略化したり、スワップのロジックを変えたり。
基盤の実装を固めるにあたって、めっちゃお世話になったのが次の記事。
この記事がなかったら絶対諦めていた。
Transform Feedbackの動作自体、この記事のおかげで理解できた…update用のフラグメントシェーダがno-opだったなんて。必死にいじっていたよそこ。
そしてこの記事読んでて思い出した。GLSLでのパーリンノイズの実装、諦めたきりだったな。
もっとパーティクルをいじりたいけど、ランダム性を持たせる上で武器が足りない。勾配ノイズとか勉強してから出直そう