Installation
Choose your framework. The registry installs one component file and its PixiJS dependency.
Installation unavailable
The preview is public, but its installable release is still being prepared.
The registry command writes the component to src/lib/components/ui/MetalPanels.svelte and installs its dependencies.
The registry command writes the component to src/components/ui/MetalPanels.tsx and installs its dependencies.
The registry command writes the component to src/components/ui/MetalPanels.vue and installs its dependencies.
The surface and studio environment are procedural, so the component does not load image or HDR assets.
Overview
Metal Panels uses the repeating cubic panel profile from Glass Pane, including its hard joins and optional wavy seams, without sampling an image underneath.
The surface uses the exact conductive GGX material shared with Metallic Logo: brushed microstructure, procedural studio reflections, warm and cool lights, and ACES tone mapping.
Basic usage
The shader fills its parent. Your layout decides whether that parent is a card, hero, or viewport.
- Panel width controls the density of the field. Rotation changes its direction without stretching the panel profile.
- Set both Wave frequency and Wave amplitude above zero to bend the otherwise straight joins.
- Lower roughness for sharper chrome reflections. Raise it for a softer satin finish.
- Set Speed to zero for a static surface, then position the reflections with Environment rotation.
Component API
Types below match the selected Svelte component.
Additional classes for the parent-sized root element.
- Type
string
Rotation of the repeating panel field in degrees.
- Type
number- Default
60- Range / values
-180–180
Width of each repeating sculpted panel.
- Type
number- Default
2- Range / values
0.2–2.5
Number of bends applied along the panel field.
- Type
number- Default
0- Range / values
0–16
Amount of animated lateral bending in the panel seams.
- Type
number- Default
0- Range / values
0–0.25
Speed of the panel wave and reflected studio lights.
- Type
number- Default
0.35- Range / values
0–2
Base reflectance color of the metal.
- Type
string- Default
"#C5C8D2"
Blends between a coated surface and conductive metal.
- Type
number- Default
1- Range / values
0–1
Softness of the reflected lights and specular highlight.
- Type
number- Default
0.18- Range / values
0.04–1
Strength of the fine directional texture in the metal.
- Type
number- Default
0.08- Range / values
0–1
Color of the cool studio light reflected by the metal.
- Type
string- Default
"#5867D3"
Color of the warm studio light reflected by the metal.
- Type
string- Default
"#D7A06E"
Brightness of the reflected studio environment.
- Type
number- Default
1.25- Range / values
0–3
Contrast between dark and bright reflected panels.
- Type
number- Default
1.1- Range / values
0.25–2
Starting angle of the reflected studio lights.
- Type
number- Default
15- Range / values
0–360
Stops the render loop while keeping the current frame visible.
- Type
boolean- Default
false
Enables pointer-driven effects when the shader supports them.
- Type
boolean- Default
false
Caps render resolution independently from the element size.
- Type
number- Default
2- Range / values
1–3
Scales GPU resolution without changing layout dimensions.
- Type
number- Default
1- Range / values
0.25–1
Runs after the shader is mounted successfully, including a WebGL fallback.
- Type
(backend: ShaderBackend) => void- Range / values
webgpu, webgl
Runs when automatic initialization changes the requested WebGPU backend to WebGL.
- Type
(backend: ShaderBackend, reason: string) => void- Range / values
webgl
Reports source-loading or renderer failures so the host application can decide how to recover.
- Type
(error: Error) => void
Exposes the imperative component lifecycle methods.
- Type
Component public instance- Range / values
pause, resume, reset, resize, destroy
Types below match the selected React component.
Additional classes for the parent-sized root element.
- Type
string
Rotation of the repeating panel field in degrees.
- Type
number- Default
60- Range / values
-180–180
Width of each repeating sculpted panel.
- Type
number- Default
2- Range / values
0.2–2.5
Number of bends applied along the panel field.
- Type
number- Default
0- Range / values
0–16
Amount of animated lateral bending in the panel seams.
- Type
number- Default
0- Range / values
0–0.25
Speed of the panel wave and reflected studio lights.
- Type
number- Default
0.35- Range / values
0–2
Base reflectance color of the metal.
- Type
string- Default
"#C5C8D2"
Blends between a coated surface and conductive metal.
- Type
number- Default
1- Range / values
0–1
Softness of the reflected lights and specular highlight.
- Type
number- Default
0.18- Range / values
0.04–1
Strength of the fine directional texture in the metal.
- Type
number- Default
0.08- Range / values
0–1
Color of the cool studio light reflected by the metal.
- Type
string- Default
"#5867D3"
Color of the warm studio light reflected by the metal.
- Type
string- Default
"#D7A06E"
Brightness of the reflected studio environment.
- Type
number- Default
1.25- Range / values
0–3
Contrast between dark and bright reflected panels.
- Type
number- Default
1.1- Range / values
0.25–2
Starting angle of the reflected studio lights.
- Type
number- Default
15- Range / values
0–360
Stops the render loop while keeping the current frame visible.
- Type
boolean- Default
false
Enables pointer-driven effects when the shader supports them.
- Type
boolean- Default
false
Caps render resolution independently from the element size.
- Type
number- Default
2- Range / values
1–3
Scales GPU resolution without changing layout dimensions.
- Type
number- Default
1- Range / values
0.25–1
Runs after the shader is mounted successfully, including a WebGL fallback.
- Type
(backend: ShaderBackend) => void- Range / values
webgpu, webgl
Runs when automatic initialization changes the requested WebGPU backend to WebGL.
- Type
(backend: ShaderBackend, reason: string) => void- Range / values
webgl
Reports source-loading or renderer failures so the host application can decide how to recover.
- Type
(error: Error) => void
Exposes the imperative component lifecycle methods.
- Type
MetalPanelsHandle- Range / values
pause, resume, reset, resize, destroy
Types below match the selected Vue component.
Additional classes for the parent-sized root element.
- Type
string
Rotation of the repeating panel field in degrees.
- Type
number- Default
60- Range / values
-180–180
Width of each repeating sculpted panel.
- Type
number- Default
2- Range / values
0.2–2.5
Number of bends applied along the panel field.
- Type
number- Default
0- Range / values
0–16
Amount of animated lateral bending in the panel seams.
- Type
number- Default
0- Range / values
0–0.25
Speed of the panel wave and reflected studio lights.
- Type
number- Default
0.35- Range / values
0–2
Base reflectance color of the metal.
- Type
string- Default
"#C5C8D2"
Blends between a coated surface and conductive metal.
- Type
number- Default
1- Range / values
0–1
Softness of the reflected lights and specular highlight.
- Type
number- Default
0.18- Range / values
0.04–1
Strength of the fine directional texture in the metal.
- Type
number- Default
0.08- Range / values
0–1
Color of the cool studio light reflected by the metal.
- Type
string- Default
"#5867D3"
Color of the warm studio light reflected by the metal.
- Type
string- Default
"#D7A06E"
Brightness of the reflected studio environment.
- Type
number- Default
1.25- Range / values
0–3
Contrast between dark and bright reflected panels.
- Type
number- Default
1.1- Range / values
0.25–2
Starting angle of the reflected studio lights.
- Type
number- Default
15- Range / values
0–360
Stops the render loop while keeping the current frame visible.
- Type
boolean- Default
false
Enables pointer-driven effects when the shader supports them.
- Type
boolean- Default
false
Caps render resolution independently from the element size.
- Type
number- Default
2- Range / values
1–3
Scales GPU resolution without changing layout dimensions.
- Type
number- Default
1- Range / values
0.25–1
Runs after the shader is mounted successfully, including a WebGL fallback.
- Type
(backend: ShaderBackend) => void- Range / values
webgpu, webgl
Runs when automatic initialization changes the requested WebGPU backend to WebGL.
- Type
(backend: ShaderBackend, reason: string) => void- Range / values
webgl
Reports source-loading or renderer failures so the host application can decide how to recover.
- Type
(error: Error) => void
Exposes the imperative component lifecycle methods.
- Type
Component public instance- Range / values
pause, resume, reset, resize, destroy