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. 02覆盖 GLSL 与 WGSL 片段
  3. 03共享材质克隆指南
  4. 04逐网格 uniform 参数设置
  5. 05着色器形变边界处理指南

适用场景

  1. 01定制 StandardMaterial 着色效果
  2. 02将着色器片段覆盖用于 WebGPU
  3. 03仅对指定网格应用材质修改

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/playcanvas/skills --skill override-shader-chunks

安装后在 Claude Code 中输入/override-shader-chunks确认已加载。

详细介绍

覆盖 shader chunks

覆盖 StandardMaterial 的 chunk 可以保持雾效、色调映射、阴影、蒙皮和实例化功能完好无损。只有当外观需要自己的顶点和片段着色器对时,才使用 ShaderMaterial。

  • 将 material.shaderChunksVersion 设置为已安装的 major.minor 版本,例如 '2.23'。Chunk 名称和契约在不同版本之间会发生变化,因此请阅读已安装的 chunk 源代码,而不是凭记忆。
  • 使用 material.getShaderChunks(SHADERLANGUAGE_GLSL).set(name, source) 及对应的 WGSL 等效方法设置 chunk,然后调用 material.update()。对于设备上的每个材质,请使用 ShaderChunks.get(device, language);全局 shaderChunks 对象已弃用。
  • 同时提供 GLSL 和 WGSL。在 WebGPU 上,一个仅含 GLSL 的 chunk 会使整个着色器经过转译器处理,而该转译器通常并未加载,因此会编译失败。否则,请将设备固定到 WebGL。
  • 在仅对部分网格覆盖共享材质(包括导入的材质)之前,请先克隆它们。每个网格的 uniform 使用 meshInstance.setParameter()。
  • Uniform 是原始值;使用 Color#linear() 转换 sRGB 颜色。
  • 读取模型矩阵的顶点 chunk,例如 transformCoreVS,必须保留 INSTANCING 路径并带有 matrix_model 回退,就像内置 chunk 一样。
  • 按最大位移量扩展网格边界;CPU 边界无法感知着色器变形。
  • 对于仅自发光的外观,实现写入 dEmission 的 getEmission(),将 diffuse 和 specular 置零,并禁用 useSkybox。

评论

支持 Markdown