マウスやスワイプの動きに連動して、背景が水面のように美しく揺らぐ演出(WebGL)のサンプル集です。
軽量なライブラリから、高度なカスタマイズが可能なものまで、3種類のライブラリによる実装パターンを収録しています。
- インタラクティブ性: クリック不要。マウスホバーやスワイプの軌跡に合わせて波紋が発生します。
- マルチデバイス対応: PCのマウス、スマホのタッチ・スワイプ両方に対応しています。
- 最新のライブラリ構成: PixiJS v7、Curtains.js v8 などのモダンな記述を採用しています。
- 特徴: 最もパフォーマンスが高く、自然な波紋の広がりを再現します。
- 仕組み: マウス位置に「法線マップブラシ」を動的に描画し、それを変位マップとして背景に適用しています。
- 特徴: DOM要素(HTML)との親和性が高く、シェーダー(GLSL)を直接制御できます。
- 仕組み: 裏側の Canvas で描画した波紋データをテクスチャとしてシェーダーに渡し、ピクセル単位で画像を歪ませています。
- 特徴: 物理演算に基づいた最もリアルな水面表現で、導入も非常に簡単です。
- 仕組み: ライブラリ内部で高度な流体シミュレーションが行われています。
WebGL および外部画像の読み込み制限(CORS)を回避するため、必ずローカルサーバーを立てて実行してください。
- 拡張機能
Live Serverをインストールします。 index.htmlを右クリックしてOpen with Live Serverを選択します。
# Python 3
python3 -m http.server 8000
# Node.js (npx)
npx serve波紋の表現には、Displacement Mapping(変位マッピング)を使用しています。
- Redチャンネル: ピクセルを横方向にどれくらいずらすか
- Greenチャンネル: ピクセルを縦方向にどれくらいずらすか
- Alphaチャンネル: 歪みの強度
これらをマウス位置に合わせて動的に生成することで、静止画があたかも水の中に沈んでいるような視覚効果を生み出しています。
MIT License. 自由に変更・商用利用いただけます。
リポジトリは以下のような構成です。
.
├── curtainsjs/
│ └── index.html
├── jquery-ripples/
│ └── index.html
├── pixijs/
│ └── index.html
├── .gitignore
├── index.html
├── README.md
└── webgl.htm