mcpField
O
override-shader-chunks

override-shader-chunks

github.com/playcanvas開発31284 回インストール1 週間前に更新
リポジトリ

override-shader-chunks について

override-shader-chunksは、フォグやシャドウ、スキニングなどを維持しながらStandardMaterialのシェーダーチャンクをカスタマイズするスキルです。バージョンに応じたGLSLとWGSLの上書き方法や、マテリアル固有の注意点を扱います。

主な機能

  1. 01バージョンに応じたチャンク選択
  2. 02GLSLとWGSLチャンクの上書き
  3. 03共有マテリアルの複製方法
  4. 04メッシュ単位のuniform設定
  5. 05シェーダー変形時の境界設定

活用シーン

  1. 01StandardMaterialのシェーダー効果を調整
  2. 02シェーダーチャンクの上書きをWebGPU向けに適用
  3. 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 を無効にしてください。

コメント