Transform Compare Section
One source through every transform, split by a wipe you drag: a raymarched still life on the left, and on the right true Atkinson or Floyd–Steinberg diffusion, blue noise, Bayer, halftone or shape-matched ASCII.
This is a viberdy Pro component
The live preview, the props panel and the write-up are open to everyone. The full source, the AI prompt and CLI install are part of Pro.
Transforms
One source. Every output.
Drag the line. Left is the original; right is what the edge sends back, computed per request.
GET /v1/i/still-life.png?t=atkinson&cell=2 → 1-bit · …
Props
"use client";
import { useEffect, useRef, useState, useSyncExternalStore } from "react";
import type { CSSProperties, KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent, ReactNode, RefObject } from "react";
/**
* TransformCompareSection — one source through every transform, split by a wipe you drag.
*
* A still life is raymarched once in WebGL2. Left of the wipe it is the
* source; right of it, the transform you pick: true Atkinson or
* Floyd–Steinberg error diffusion (on the CPU, over the cell grid), blue
* noise, Bayer 8x8, a halftone screen or shape-matched ASCII. Changes
* dissolve through blue noise; cell size keys set the grain; the request
* line counts the cells. The wipe is a keyboard slider. Pass `image` to
* compare your own picture.
*
* Part of the Dither & ASCII kit: one ink, paper #f3f0e6, on a warm black
* ground #0b0b0d, with vermillion #ff4f2b as a second ink inside the
// ---------------------------------------------------------------
// Full source available with a viberdy Pro subscription.
// https://viberdy.dev/pricing
// ---------------------------------------------------------------
}About this section
A features section where the feature is shown working. A still life (a ball in signal, a ring on its edge and a turned block on a cyclorama under one soft light, with soft shadows and occlusion) is raymarched once in WebGL2. A wipe divides it: to the left, the source; to the right, the transform you choose. Atkinson and Floyd–Steinberg are the real sequential algorithms, run on the CPU over the cell grid read back from the GPU, not a blurred imitation; blue noise and Bayer 8x8 are ordered dithers compared in linear light; the halftone is a rotated screen with the signal on its own angle; ASCII matches the shape of every cell. Drag the wipe anywhere on the picture or move it with the arrow keys; changing the transform dissolves through blue noise; the cell keys set the grain from 1 to 3 pixels; and a mono request line names the output and counts its cells.
Curator’s note
The Dither & ASCII kit's feature section (slot 7), cut from dither-ascii-site. Pro: the kit's WebGL2 stage with a raymarched still life rendered once, a split composite, and CPU error diffusion read back from the GPU.
Pairs well with
Matched on shared tags and category — the entries most likely to be used alongside this one.
Transform Loupe Hero
heroesA first screen whose picture is computed live: a plane of spheres under a low sun, printed in blue-noise dither, with a loupe under the pointer that shows it as shape-matched ASCII, a halftone screen, Bayer or the source.
Dither & ASCII Site
templatesThe whole Dither & ASCII kit as one site for an image pipeline: a density nav, a live dithered hero with a transform loupe, an ASCII field, a transform comparison, printing cards, a drop-to-dither form, noise-fill pricing and an ASCII wordmark footer.
Dawn Timeline Section
sectionsThe sunrise laid out on a timeline and scrubbed by the scroll: the section pins, 05:30 to 07:00 runs with the scroll, the lamp rendered live rises along its curve, and the time, colour, output and phase follow.