WebGL2 / GLSL ES 3.00 学習ノート
three.js のような抽象化レイヤーを使わず、WebGL2RenderingContextと GLSL ES 3.00 を直接扱って、3D ラスタライズパイプラインとプロシージャル/ジェネラティブ表現の両方を 体系的に習得するための学習サイトです。
- CPU 側のコードはすべて TypeScript (strict)。行列演算は
gl-matrixを使用 - シェーダーは
.vert/.fragの別ファイルで管理 - 各章のデモのソースは
src/lessons/以下にあり、自分で編集してその場で動かしながら読み進める - 必要な数学は登場した箇所でその都度解説する(前提知識は要求しない)
第1部 WebGL2 の基本 — 三角形が描けるまで
第2部 シェーダーで学ぶ数学 — 2D 表現の基礎
第3部 3D ラスタライズパイプライン
- ベクトルと行列 — gl-matrix で学ぶ線形代数
- 座標変換 — モデル・ビュー・射影 (MVP)
- 最初の 3D — インデックス描画・深度テスト・カリング
- ジオメトリをつくる — 球・トーラスのプロシージャル生成
- カメラ — 軌道カメラ・追跡カメラ
- テクスチャ — フィルタ・ラップ・ミップマップ・複数ユニット
- ライティング基礎 — 法線・拡散反射・鏡面反射
- 複数光源とマテリアル — 点光源・スポットライト・減衰
- モデル読み込み — OBJ と glTF 2.0
- フレームバッファ — オフスクリーン描画とレンダーターゲット
- シャドウマッピング — 光源視点の深度パスと影の品質
- PBR — 物理ベースレンダリングと IBL
- ディファードレンダリング — MRT と G-buffer
第4部 プロシージャル & ジェネラティブ
- 2D SDF — 距離場で形を合成する
- 乱数とノイズ — hash / value noise / gradient noise
- fbm とドメインワーピング — 雲・大理石・有機的な模様
- 色とパレット — sRGB・トーンマッピング・余弦パレット(準備中)
- レイマーチング — 3D SDF の世界(準備中)
- フィードバック — ping-pong バッファと自己組織化する系(準備中)
第5部 大量描画・GPGPU・統合
- ブレンディングとパーティクル — 加算合成と深度の兼ね合い(準備中)
- インスタンシング — 1 ドローコールで大量描画(準備中)
- Transform Feedback — GPU パーティクルと GPGPU(準備中)
- ポストプロセス — ブルーム・トーンマップ・FXAA(準備中)
- UBO と抽象化 — ミニエンジンを設計する(準備中)
- パフォーマンスとロバスト性 — 計測・コンテキストロスト(準備中)
- インタラクションと出力 — ポインタ・オーディオ反応・書き出し(準備中)