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/HalftoneCellWall.svelte and installs its dependencies.
The registry command writes the component to src/components/ui/HalftoneCellWall.tsx and installs its dependencies.
The registry command writes the component to src/components/ui/HalftoneCellWall.vue and installs its dependencies.
The effect is procedural and ships without image assets or auxiliary textures.
Both GPU backends use the same fixed 3 by 3 neighbor search and derivative-based antialiasing.
Overview
Halftone Cell Wall samples a continuous animated field once per cell, converts coverage to radius by area, and searches neighboring cells so large dots remain intact beyond the original grid.
The result sits between print halftone and a liquid cell wall: structured at close range and smoothly tonal from a distance.
Basic usage
The shader fills its parent. Your layout decides whether that parent is a card, hero, or viewport.
- Raise Dot reach above one to make neighboring dots overlap into larger scalloped regions.
- Cell size is measured in render-target pixels, so the pattern remains legible across aspect ratios.
Component API
Types below match the selected Svelte component.
Additional classes for the parent-sized root element.
- Type
string
Darkest color behind the halftone field.
- Type
string- Default
"#131315"
Color of the overlapping halftone dots.
- Type
string- Default
"#5867D3"
Animation speed of the underlying fluid field.
- Type
number- Default
0.65- Range / values
0–2
Size of each halftone cell in render-target pixels.
- Type
number- Default
30- Range / values
8–72
Maximum dot radius relative to its cell size.
- Type
number- Default
0.92- Range / values
0.2–1.2
Strength of the shadow-weighted film grain.
- Type
number- Default
0.3- Range / values
0–0.3
Spatial scale of the flowing source field.
- Type
number- Default
1.15- Range / values
0.35–3
Amount of cross-axis deformation in the field.
- Type
number- Default
1- Range / values
0–2
Contrast applied before field brightness becomes dot area.
- Type
number- Default
1.3- Range / values
0.25–3
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
Darkest color behind the halftone field.
- Type
string- Default
"#131315"
Color of the overlapping halftone dots.
- Type
string- Default
"#5867D3"
Animation speed of the underlying fluid field.
- Type
number- Default
0.65- Range / values
0–2
Size of each halftone cell in render-target pixels.
- Type
number- Default
30- Range / values
8–72
Maximum dot radius relative to its cell size.
- Type
number- Default
0.92- Range / values
0.2–1.2
Strength of the shadow-weighted film grain.
- Type
number- Default
0.3- Range / values
0–0.3
Spatial scale of the flowing source field.
- Type
number- Default
1.15- Range / values
0.35–3
Amount of cross-axis deformation in the field.
- Type
number- Default
1- Range / values
0–2
Contrast applied before field brightness becomes dot area.
- Type
number- Default
1.3- Range / values
0.25–3
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
HalftoneCellWallHandle- Range / values
pause, resume, reset, resize, destroy
Types below match the selected Vue component.
Additional classes for the parent-sized root element.
- Type
string
Darkest color behind the halftone field.
- Type
string- Default
"#131315"
Color of the overlapping halftone dots.
- Type
string- Default
"#5867D3"
Animation speed of the underlying fluid field.
- Type
number- Default
0.65- Range / values
0–2
Size of each halftone cell in render-target pixels.
- Type
number- Default
30- Range / values
8–72
Maximum dot radius relative to its cell size.
- Type
number- Default
0.92- Range / values
0.2–1.2
Strength of the shadow-weighted film grain.
- Type
number- Default
0.3- Range / values
0–0.3
Spatial scale of the flowing source field.
- Type
number- Default
1.15- Range / values
0.35–3
Amount of cross-axis deformation in the field.
- Type
number- Default
1- Range / values
0–2
Contrast applied before field brightness becomes dot area.
- Type
number- Default
1.3- Range / values
0.25–3
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