用途:在 Three.js 项目中编写和调试 GLSL 着色器,实现自定义材质效果、uniforms 传参与顶点变形(displacement)。
主要能力与要点:
- 写代码前先确认渲染器、已安装版本、着色器语言与材质扩展机制;使用与管线兼容的 GLSL ShaderMaterial/RawShaderMaterial,不假设 WebGL 着色器可直接用于 WebGPU 材质。
- 为位置、法线、光照向量与 varying 明确坐标空间;非均匀缩放下正确变换法线;保持 uniforms 稳定,更新其值而非每帧重建材质;避免不必要的逐片元计算与动态着色器排列组合。
- 增量构建效果:先常量输出,再坐标,再纹理采样,最后实现效果;开启完整错误输出检查编译/链接日志;对零向量归一化、接近零的除法与未定义 smoothstep 区间做防护;导数需要相应阶段与支持。
- 顶点位移时更新法线或计算合适着色,扩大边界以利剔除,并考虑为阴影匹配深度/距离材质;CPU 射线检测仍基于 CPU 几何体,除非提供匹配方案。
- onBeforeCompile 与 shader chunks 对版本敏感;自定义编译变体需要不同程序时使用合适的自定义程序缓存键,并保留可复现的着色器夹具以便升级。在输出边界验证显示色彩/色调映射。
- 检查极端参数值、缩放、移动端精度、透明重叠、阴影与拾取;功能可选时保留普通材质回退。
使用方式:作为用户任务的补充说明,不授权无关改动或外部操作;API 签名与版本相关行为以官方文档为准,无法访问文档时检查已安装类型/源码并说明不确定之处。
限制:资料未提供具体安装命令、代码示例、收费与平台信息。