【Three.js発展講座】シェーダー言語を駆使して複雑な3Dオブジェクトを自在に操りたい人のためのマスター講座
頭の中でイメージする物体をそのままウェブサイトに落とし込めるThree.jsシェーダー言語。GLSLと呼ばれる難関言語をマスターして他と一線を画したフロントエンドエンジニアを目指せる講座
本講座で学べること・デモ
本講座の学び方
シェーダーがブラウザ上で動く仕組み
GLSL言語を使ったシェーダーまでの流れ
VertexShaderとFragmentShaderを図解で解説
シェーダー開発環境を構築してみよう
環境構築したファイル群(webpack5)の中身の解説
GLSL言語を書くためのファイルを用意しよう
シェーダーを描画するための最低限のコーディングをしてみよう
VertexShaderの中身の座標変換について解説
FragmentShaderの中身を解説
GLSL言語のコーディング基礎
ストレージ修飾子について
試しにオブジェクトの位置や形を変更してみよう
はじめに:完成品デモ
RawShaderMaterialからShaderMaterialへ置き換えてみよう
平面を波の形に変形してみよう
uniformsを使ってJavascriptからVertexShaderに値を送ろう
Vector2型を使って縦方向にも波を追加してみよう
UIデバッグを導入して波形を自由に変更してみよう
経過時間を取得して旗をなびかせてみよう
シェーダーに色を付け加えてみよう
国旗のテクスチャを用意してシェーダーに貼り付けてみよう
uv座標を取得してテクスチャと組み合わせてみよう
国旗に影を追加してみよう
シェーダーの大きさを調整しよう
本セクションを振り返ってシェーダーの理解を深めよう
完成品デモの紹介
まずはセットアップから
ShaderMaterialを導入してみよう
ベースとなる頂点シェーダーとフラグメントシェーダーを記述しよう
平面の波の高さ(振幅)を変更してみよう
波の周波数を変更してみよう
UIデバッグで周波数を自在に変更させてみよう
時間の経過とともに波形を変更してみよう
波に色を追加してみよう
表面の色と深い色を組み合わせてリアルな海を表現してみよう
波の色の濃淡をはっきりさせてみよう
ノイズを追加してよりリアルな海に近づけよう
abs関数を使って山と谷をリアルに表現しよう
小さい波に対してUIデバッグを追加してみよう
cnoiseを複数回利用してよりリアルな海を表現しよう