Skip to documentation

Components

Halftone Cell Wall

A fluid scalar field rebuilt as oversized halftone dots that flow cleanly across their cell boundaries.

  • pixi.js@^8.20.1

Preparing preview…

Installation

Choose your framework. The registry installs one component file and its PixiJS dependency.

Installation unavailable

This preview is not assigned to the free or paid catalog. Installation is unavailable.

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.

Hero.svelte
<script lang="ts">
	import HalftoneCellWall from '$lib/components/ui/HalftoneCellWall.svelte';
</script>

<section class="relative h-128 overflow-hidden">
	<HalftoneCellWall
		class="absolute inset-0"
		speed={0.8}
	/>

	<div class="relative z-10">Your content</div>
</section>
<script lang="ts">
	import HalftoneCellWall from '$lib/components/ui/HalftoneCellWall.svelte';
</script>

<section class="relative h-128 overflow-hidden">
	<HalftoneCellWall
		class="absolute inset-0"
		speed={0.8}
	/>

	<div class="relative z-10">Your content</div>
</section>
import { HalftoneCellWall } from '@/components/ui/HalftoneCellWall';

export function Hero() {
	return (
		<section className="relative h-128 overflow-hidden">
			<HalftoneCellWall
				className="absolute inset-0"
				speed={0.8}
			/>

			<div className="relative z-10">Your content</div>
		</section>
	);
}
import { HalftoneCellWall } from '@/components/ui/HalftoneCellWall';

export function Hero() {
	return (
		<section className="relative h-128 overflow-hidden">
			<HalftoneCellWall
				className="absolute inset-0"
				speed={0.8}
			/>

			<div className="relative z-10">Your content</div>
		</section>
	);
}
<script setup lang="ts">
import HalftoneCellWall from '@/components/ui/HalftoneCellWall.vue';
</script>

<template>
	<section class="relative h-128 overflow-hidden">
		<HalftoneCellWall
			class="absolute inset-0"
			:speed="0.8"
		/>

		<div class="relative z-10">Your content</div>
	</section>
</template>
<script setup lang="ts">
import HalftoneCellWall from '@/components/ui/HalftoneCellWall.vue';
</script>

<template>
	<section class="relative h-128 overflow-hidden">
		<HalftoneCellWall
			class="absolute inset-0"
			:speed="0.8"
		/>

		<div class="relative z-10">Your content</div>
	</section>
</template>
  • Raise Dot reach above one to make neighboring dots overlap into larger scalloped regions.
  • Cell size is measured in canvas pixels, so the pattern remains legible across aspect ratios.

Component API

Types below match the selected Svelte component.

Property Type Default Range / values
class
string
backgroundColor
string "#131315"
inkColor
string "#5867D3"
speed
number 0.65 0–2
cellSize
number 30 8–72
radius
number 0.92 0.2–1.2
grain
number 0.3 0–0.3
fieldScale
number 1.15 0.35–3
warp
number 1 0–2
contrast
number 1.3 0.25–3
paused
boolean false
interactive
boolean false
maxDpr
number 2 1–3
resolutionScale
number 1 0.25–1
onReady
(backend: ShaderBackend) => void webgpu, webgl
onRendererChange
(backend: ShaderBackend, reason: string) => void webgl
onError
(error: Error) => void
bind:this
Component public instance pause, resume, reset, resize, destroy

Types below match the selected React component.

Property Type Default Range / values
className
string
backgroundColor
string "#131315"
inkColor
string "#5867D3"
speed
number 0.65 0–2
cellSize
number 30 8–72
radius
number 0.92 0.2–1.2
grain
number 0.3 0–0.3
fieldScale
number 1.15 0.35–3
warp
number 1 0–2
contrast
number 1.3 0.25–3
paused
boolean false
interactive
boolean false
maxDpr
number 2 1–3
resolutionScale
number 1 0.25–1
onReady
(backend: ShaderBackend) => void webgpu, webgl
onRendererChange
(backend: ShaderBackend, reason: string) => void webgl
onError
(error: Error) => void
ref
HalftoneCellWallHandle pause, resume, reset, resize, destroy

Types below match the selected Vue component.

Property Type Default Range / values
class
string
backgroundColor
string "#131315"
inkColor
string "#5867D3"
speed
number 0.65 0–2
cellSize
number 30 8–72
radius
number 0.92 0.2–1.2
grain
number 0.3 0–0.3
fieldScale
number 1.15 0.35–3
warp
number 1 0–2
contrast
number 1.3 0.25–3
paused
boolean false
interactive
boolean false
maxDpr
number 2 1–3
resolutionScale
number 1 0.25–1
@ready
(backend: ShaderBackend) => void webgpu, webgl
@rendererchange
(backend: ShaderBackend, reason: string) => void webgl
@error
(error: Error) => void
ref
Component public instance pause, resume, reset, resize, destroy