override-shader-chunks について
override-shader-chunksは、フォグやシャドウ、スキニングなどを維持しながらStandardMaterialのシェーダーチャンクをカスタマイズするスキルです。バージョンに応じたGLSLとWGSLの上書き方法や、マテリアル固有の注意点を扱います。
主な機能
- 01バージョンに応じたチャンク選択
- 02GLSLとWGSLチャンクの上書き
- 03共有マテリアルの複製方法
- 04メッシュ単位のuniform設定
- 05シェーダー変形時の境界設定
活用シーン
- 01StandardMaterialのシェーダー効果を調整
- 02シェーダーチャンクの上書きをWebGPU向けに適用
- 03特定メッシュだけにマテリアル変更を適用
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ playcanvas/ skills --skill override-shader-chunksインストール後、Claude Code で/override-shader-chunksを入力して読み込まれたか確認します。
詳細
シェーダーチャンクのオーバーライド
StandardMaterial のチャンクをオーバーライドすると、フォグ、トーンマッピング、シャドウ、スキニング、インスタンシングをそのまま維持できます。独自の頂点シェーダーとフラグメントシェーダーの組み合わせが必要な場合に限り、ShaderMaterial を使用してください。
material.shaderChunksVersionに、インストールされているメジャー・マイナーバージョン(例:'2.23')を設定してください。チャンク名や仕様はバージョン間で変わるため、記憶に頼らず、インストール済みのチャンクソースを確認してください。material.getShaderChunks(SHADERLANGUAGE_GLSL).set(name, source)と WGSL の同等の方法でチャンクを設定し、その後material.update()を呼び出してください。デバイス上の各マテリアルについては、ShaderChunks.get(device, language)を使用してください。グローバルのshaderChunksオブジェクトは非推奨です。- GLSL と WGSL の両方を用意してください。WebGPU では、GLSL のみのチャンクが 1 つでもあると、シェーダー全体が通常ロードされていないトランスパイラーに送られるため、コンパイルに失敗します。それ以外の場合は、デバイスを WebGL に固定してください。
- 一部のメッシュだけを対象にオーバーライドする場合は、インポートしたものも含め、共有マテリアルを複製してください。メッシュごとのユニフォームには
meshInstance.setParameter()を使用します。 - ユニフォームは生の値です。sRGB カラーは
Color#linear()で変換してください。 transformCoreVSなど、モデル行列を読み取る頂点チャンクでは、標準チャンクと同様にmatrix_modelへのフォールバックを伴うINSTANCINGパスを維持してください。- メッシュの境界を最大変位分だけ拡張してください。CPU の境界計算では、シェーダーによる変形は認識されません。
- エミッシブのみの見た目にするには、
dEmissionに書き込むgetEmission()を実装し、diffuseとspecularをゼロにして、useSkyboxを無効にしてください。
コメント
Markdown 対応