Single-pass palette refinement and ordered dithering
- Auto-discovered
Pekka Väänänen
Visit resource ↗Description
Single-pass palette refinement and ordered dithering is a technical blog article by Pekka Väänänen.
Experiment showing online k-means color quantization that produces ordered Bayer-style dithering as a side effect of pixel visit order. Explains skipping final Euclidean pixel mapping, comparing raster, random, and Bayer matrix traversal with optional block shuffling, and includes a standalone Python script. Aimed at programmers interested in color reduction and dithering algorithms.
It is aimed at intermediate graphics programmers and matches the audience implied by Pekka Väänänen's other work.
The article is a free HTML blog post meant to be read in one sitting, with diagrams or code snippets embedded in the page.
It is useful when you want practical detail beyond a title or store listing and prefer primary-source explanation from the author or maintainer.
Related resources
- 2D Water Shader Breakdown (Cyanilux)
A Shader Graph breakdown of stylized 2D water in Unity URP: sprite reflections via a second camera, scrolling noise distortion, fake highlights, and tilemap shoreline ripples for pixel art.
100% match · <intermediate><blog><effect><free><online><pixel><read><style> - Crystal Shader Breakdown (Cyanilux)
A Cyanilux Shader Graph walkthrough for Unity URP that builds an unlit transparent crystal with object-space Y colour gradients, camera opaque-texture refraction, Fresnel opacity, and HDR glow for bloom.
100% match · <intermediate><blog><color><effect><free><includes><online><post> - Custom Renderer Features (Cyanilux)
Long-form Cyanilux guide to URP ScriptableRendererFeature and ScriptableRenderPass code: example effects, RTHandle setup, blit paths, and Unity 6 Render Graph notes.
100% match · <code><blog><explains><free><one><online><pass><programmers> - GPU Instanced Grass Breakdown (Cyanilux)
A Cyanilux URP breakdown on GPU-instanced grass: procedural draw APIs, structured buffers, Shader Graph instancing hooks, and optional indirect draws with compute frustum culling.
100% match · <intermediate><blog><effect><free><one><online><post><read> - Holofoil Card Shader Breakdown (Cyanilux)
Unity URP Shader Graph breakdown of stylized holofoil trading cards: tangent-space view distortion, rainbow sampling, region masks, stencil portal windows, and bloom notes.
100% match · <intermediate><blog><effect><explains><free><meant><online><read> - Hologram Shader Breakdown (Cyanilux)
A Shader Graph breakdown for Unity URP holograms: world-space scanlines from sine or frac, Fresnel rim, HDR additive tinting, plus optional UV distortion and glitch for quads.
100% match · <intermediate><blog><effect><free><online><optional><order><pixel> - Local UVs for Sprites in Sprite Sheet/Atlas (Cyanilux)
Unity shader techniques for per-sprite 0-1 UVs when sprites live in sheets or atlases: C# UV remap with Shader Graph/HLSL, plus URP object-space and renderer-bounds alternatives.
100% match · <code><intermediate><blog><effect><free><online><order><post> - Shoreline Shader Breakdown (Cyanilux)
Shoreline Shader Breakdown is a December 2024 Cyanilux post merging earlier shoreline water threads into one stylized coast tutorial for Unity URP Shader Graph. It compares depth-texture versus UV shoreline meshes, then walks approaching wave lines, synced swash motion, Voronoi on the swash, and wet-sand darkening via low-alpha blending.
100% match · <intermediate><blog><effect><free><mapping><one><online><read> - Swapping Colours (Cyanilux)
Swapping Colours is a February 2023 Cyanilux post on recolouring textures and procedural inputs in Unity Shader Graph for 3D, sprites, UI, or signed-distance shapes. Sections cover Tint, Lerp, channel-packed greys, mask textures, Replace Color, Blend modes, gradient ramps as textures, and palette index lookups.
100% match · <intermediate><blog><color><effect><free><one><online><read> - 5 ways to draw an outline (Alexander Ameye)
Five Ways to Draw an Outline is Alexander Ameye's 2021 note (alexanderameye.github.io / ameye.dev).
100% match · <intermediate><blog><article><free><includes><online><post><programmers> - Cracked Ice Shader (using Parallax effect) (Daniel Pokladek)
Daniel Pokladek's January 2021 blog post builds a Unity cracked-ice material with parallax crack planes under a tinted surface, extending Binary Impact's Shader Graph ice tutorial toward Dragon Age: Inquisition-style stacked cracks, not one repeating layer. Shader Graph work uses three parallax slices, surface offset, normal UV distortion, grayscale albedo tinting, and RGB-packed crack maps.
100% match · <intermediate><blog><article><effect><final><free><one><online> - Impossible Geometry: Non-Euclidean Cubes
Alan Zucconi's 2015 Unity post opens his Impossible Geometry series on alanzucconi.com.
100% match · <intermediate><blog><article><effect><euclidean><free><online><post> - My take on shaders : Interior Mapping (Harry Alisavakis)
Interior mapping suggests rooms behind flat window quads without extra geometry, a parallax-family facade trick.
100% match · <intermediate><blog><article><effect><free><mapping><online><post> - Outline Shader (Roystan)
Erik Roystan Ross's Unity article (2018.3, about fifty minutes) teaches screen-space outlines as a custom post-processing stack effect.
100% match · <intermediate><blog><article><effect><free><online><post><programmers> - Rendering Line Lights
Eric López’s article derives analytic shading for elongated line lights - treating luminous segments instead of point or area disks - in real-time renderers. Covers integration against BRDFs, energy considerations, and implementation notes useful for neon tubes, LED strips, and stylized fixtures.
100% match · <intermediate><blog><article><free><meant><online><programmers><showing> - A silly diffuse shading model
A silly diffuse shading model is a December 2025 post on the lisyarus graphics blog about a one-liner alternative to classic Lambertian diffuse for tech demos and early…
100% match · <math><intermediate><blog><article><author><free><html><matches> - An Experimental Approach to printf in HLSL
An Experimental Approach to printf in HLSL is a December 2025 technical post by Chris Bieneman describing a holiday prototype for GPU-side printf in HLSL. It covers GPU string…
100% match · <code><blog><article><author><free><html><post><side> - Getting started with BGFX
[video] Getting started with BGFX is a YouTube playlist by Game Coder Nz that walks through the bgfx cross-platform rendering library from a blank project to basic 3D and UI…
100% match · <code><color><free><intermediate><order><practical><programmers><useful> - Painting Holes in Terrain - Terrain Shaders - Episode 10
[video] Painting Holes in Terrain - Terrain Shaders - Episode 10 is a Ben Cloward tutorial on enabling terrain hole painting in custom Unreal landscape materials and Unity Shader…
100% match · <intermediate><block><free><pixel><side><skipping><technical><useful> - Realtime Raytracing in Bevy 0.18 (Solari)
Realtime Raytracing in Bevy 0.18 (Solari) is a December 2025 development post by jms55 on quality and performance work for Solari, Bevy's dynamic ray-traced lighting path planned…
100% match · <code><blog><article><free><html><intermediate><post><snippets>