What problem does it solve? Writing custom WebGL shaders in Three.js requires juggling GLSL syntax, uniform declarations, varying interpolation, and material extension hooks, which is error-prone without a structured reference. ## Core Features & Use Cases - ShaderMaterial and RawShaderMaterial Setup: Create custom materials with uniforms, vertex shaders, and fragment shaders using built-in or fully manual declarations. - Common Effect Patterns: Implement vertex displacement, Fresnel lighting, rim lighting, dissolve effects, noise functions, and gradients with ready GLSL snippets. - Extending Built-in Materials: Use onBeforeCompile to inject custom logic into MeshStandardMaterial and other built-in materials at known shader chunk injection points. - Use Case: You want an animated wave surface in a Three.js scene. Use the vertex displacement pattern with a time uniform updated in the animation loop to produce continuous motion. ## Quick Start Ask the AI to create a Three.js ShaderMaterial with a wave vertex displacement effect and a time uniform updated each frame.