关于 override-shader-chunks
override-shader-chunks 是一项用于定制 StandardMaterial 着色器片段的技能,同时保留雾效、阴影和蒙皮等引擎功能。它指导开发者按版本处理 GLSL 与 WGSL 覆盖,并说明材质相关注意事项。
主要功能
- 01按版本选择着色器片段
- 02覆盖 GLSL 与 WGSL 片段
- 03共享材质克隆指南
- 04逐网格 uniform 参数设置
- 05着色器形变边界处理指南
适用场景
- 01定制 StandardMaterial 着色效果
- 02将着色器片段覆盖用于 WebGPU
- 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