What problem does it solve? Writing custom shaders in Three.js requires juggling GLSL syntax, uniform declarations, varying interpolation, and material injection points, 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 attribute declarations. - Common Shader Patterns: Implement texture sampling, vertex displacement, Fresnel effects, rim lighting, dissolve effects, noise functions, and gradients. - Extending Built-in Materials: Use onBeforeCompile to inject custom GLSL into MeshStandardMaterial and other built-in materials at known shader chunk points. - Use Case: Build an animated water surface by displacing vertices with sine waves in the vertex shader and updating the time uniform each frame. ## Quick Start Ask the AI to create a Three.js ShaderMaterial with a wave vertex displacement effect and an animated time uniform.