本文へスキップ

WebGL背景

生WebGLのフラグメントシェーダーで藍系プラズマをアニメーション。マウス/タッチで揺らぎが反応し、上に重ねたキャッチコピーがヒーロー背景として機能する。WebGL非対応時はCSSグラデにフォールバック。

ENGLISH

WebGL Shader Background

  • JS
  • WebGL
約296行動きと演出 / 没入・リッチ演出 の一覧 →

プレビュー

ホバー

操作カーソルを乗せると動きます(スマホはタップ)。

仕様書

向く場面
  • ブランドサイトのヒーロー背景
  • テック系プロダクトの第一印象づくり
  • WebGL 対応を前提にできる LP
避ける場面
  • 長文の背景(常時描画で電池と可読性を削る)
  • 低スペック端末が主な利用者の画面
  • 同一ページに複数並べる(GPU 負荷)
構成要素
  • 流体背景(canvas)
  • CSS フォールバック
  • サブ見出し
  • 見出し
  • 説明文
持っている状態
  • 通常
キーボード

操作要素なし(背景)。見出し側は pointer-events none で下の canvas がポインタを拾う

支援技術

canvas は aria-hidden の装飾で、見出し h2 と本文が情報を持つ。reduce 設定では静止フレーム1枚だけ描画。WebGL 不可・シェーダー失敗時は CSS グラデへフォールバック

動き

fbm ノイズを時間 0.28 倍で流し続ける流体プラズマ。ポインタ近傍で歪みと輝点が exp 減衰で強まる

デザインの要点

  • fbm を2段ネスト(q→r→f)して流体らしい歪みを作る。1段のノイズは雲にはなっても流れにならない
  • 時間は 0.28 倍・ポインタの効きは exp(−距離×3.5)×0.18 と小さく。背景は「反応した」と分かる最小限で止める
  • 色は藍の4色を f で混ぜ、ビネットで四隅を 25% 落とす。白文字を中央に置く前提の明度設計
  • canvas は devicePixelRatio 2 まで。取得失敗・コンパイル失敗は同じ色味の CSS グラデへ静かに落とす

コード(コピーして使えます)

<div class="hero-wrap">
  <canvas id="glc" aria-hidden="true"></canvas>
  <div class="hero-fallback" id="fb" aria-hidden="true" hidden></div>
  <div class="hero-copy">
    <p class="hero-sub">インタラクションデザイン</p>
    <h2 class="hero-title">世界を、動かせ。</h2>
    <p class="hero-desc">WebGL フラグメントシェーダーによる<br>リアルタイム流体背景</p>
  </div>
</div>

タグ

同じカテゴリ「没入・リッチ演出」のほかのパーツ

関連パーツ