スキル自身の言葉で
リアルタイムビジュアルエフェクトのために、36種類のShaderToy互換シェーダー技法を1つのGLSLスキルにまとめたもの:SDFジオメトリ、レイマーチングとライティング、流体・パーティクル・物理シミュレーション、自然現象(海洋、地形、大気、ボリュメトリック)、プロシージャル生成、ポストプロセッシング、オーディオ、WebGL2デバッグ。
ルーティングテーブルは各リクエストを、コアとなる原理・実装手順・完全なコードテンプレートを収めたtechniques/配下の技法ファイルに対応付け、より深い数学的内容はreference/に置かれます。単体のHTMLページを生成する際には、WebGL2への適応ルール(fragCoordの代わりにgl_FragCoord.xy、mainImageのためのvoid main()ラッパー、関数呼び出しマクロの代わりにconst)を、決められたパフォーマンス予算の中で適用し、簡易レシピとビジュアルデバッグの切り替えを提供します。
生成されるもの
- 36種類のエフェクト技法のうちの1つに対応する、ShaderToy互換のGLSLで、リアルタイムビジュアルの土台として使用できます。
- キャンバスがビューポート全体を占め、ウィンドウに合わせてリサイズされ、黒背景でスクロールバーがなく、ShaderToy互換のuniform(iTime、iResolution、iMouse、iFrame)を公開する単体のHTMLページです。
- Buffer A/Bのような状態を扱うためにピンポンバッファを使用し、WebGL2のフレームバッファ上に構築されたマルチパスエフェクトです。
- フォトリアリスティックなシーン向けに、ACESトーンマッピングと2x SSAA、ビネットを組み合わせた完成したポストチェーン。
仕組み
- 01リクエストを技法にルーティングする
エージェントは、36個のファイルすべてを読むのではなく、技法ルーティングテーブルとユーザーの表現を照合し、主となる技法1つと組み合わせ可能な技法を選択します。
- 02技法ファイルを読む
techniques/配下の各ファイルは自己完結しており、原理、順序立てられた実装手順、そのエフェクトのための完全なコードテンプレートを提供します。
- 03数式が必要な場合はReference/にエスカレーションする
導出や高度なパターンが必要な場合、エージェントはテクニックファイルの末尾にあるリンクをたどり、対応するreference/ガイドを参照します。
- 04ShaderToyの出力をWebGL2へ移植する
単体のHTML成果物の場合、ShaderToy形式のコードを書き出す前にWebGL2への適応ルールを適用します。
- 05レシピを組み合わせてパイプラインを構築する
クイックレシピは、単一のエフェクトではなく、ジオメトリ・レンダリング・ライティング・大気・ポストといったモジュールを連結して完全なパイプラインを組み立てます。
- 06出力を入れ替えてデバッグする
実際の色を復元する前に、法線・ステップ数・深度・SDFバンドで出力を一時的に置き換え、不具合を特定します。