Why do we need dithering?
- Auto-discovered
Dan Hollick
Visit resource ↗Description
Why do we need dithering? is a Typefully essay by Dan Hollick explaining why digital images historically used dithering and how common algorithms work.
It frames early limited palettes and low bit-depth quantization, banding in gradients, and spatial averaging that lets mixed neighboring colors read as intermediate tones. Ordered dithering is walked through with a 2x2 Bayer threshold map; error-diffusion dithering is summarized via the Floyd-Steinberg weights that push quantization error to neighbors. The piece notes that high bit-depth displays make dithering mostly a retro aesthetic today.
It is for beginners and general digital-imaging readers, including designers and programmers curious about quantization artifacts. No graphics API background is required.
Access is a free Typefully article written as a short explainer tied to the author's broader makingsoftware writing.
It is useful as a clear primer before reading more technical dithering or post-process noise material.
Related resources
- 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 · <blog><free><including><mostly><notes><programmers><read><used> - Depth (Cyanilux)
Long-form Cyanilux tutorial on Unity depth spaces, Z buffers, Scene Depth sampling, SV_Depth, and world-position reconstruction in URP and HDRP.
100% match · <blog><about><bit><depth><explaining><free><post><read> - 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 · <blog><common><depth><free><material><read><used><work> - Writing Shader Code in Universal RP (v2) (Cyanilux)
Writing Shader Code in Universal RP (v2) is Cyanilux's ShaderLab and HLSL guide for Unity URP (2021, updated 2022).
100% match · <blog><free><material><read><used><via><work><writing> - 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 · <blog><access><aesthetic><article><before><explaining><free><post> - A gentle introduction to shaders (Alan Zucconi)
Alan Zucconi's A gentle introduction to shaders in Unity3D (June 2015) is part one of his Gentle Introduction series on alanzucconi.com, aimed at Unity developers new to GPU programs. It connects vertices, materials, and shaders in Unity's pipeline, covering ShaderLab Properties and SubShader layout, inspector uniforms, Queue tags, ZTest, and the surface-versus-vertex/fragment split for lighting versus effects. Little prior shader knowledge is assumed; fixed-function shaders are skipped as obsolete.
100% match · <beginner><blog><about><access><article><before><free><programmers> - A Look at Spyro's Portals - Rendering the Background
Daniel Pokladek's November 2020 post begins a Unity series on Spyro Reignited portal shaders, focusing on the background visible through the opening while later installments cover
100% match · <general><blog><access><article><background><before><free><programmers> - Alexander Ameye
's blog at ameye.dev (alexanderameye.github.io) is a static Eleventy site documenting Unity graphics engineering experiments. Sixteen indexed notes explain URP scriptable render passes, Shader Graph stylized water, realtime caustics, cavity and halftone effects, hemisphere sampling, holographic cards, and several outline methods.
100% match · <blog><about><access><article><before><free><programmers><technical> - Branching on a GPU (Jason Booth, Dec 2021)
Branching on a GPU is Jason Booth's December 2021 Medium essay on when shader branches help or hurt on modern GPUs.
100% match · <general><blog><about><access><article><before><free><need> - Deus Ex - Alpha Terrain (Simonschreibt)
Simon Schreibt's May 2023 post on simonschreibt.de explains terrain blending in Deus Ex: Mankind Divided, where Prague levels hide harsh cuts where props meet ground. Opaque geometry renders first, then flat translucent terrain depth-fades toward surfaces beneath.
100% match · <general><blog><about><access><article><before><free><programmers> - Easing Functions
Easings.net is a free interactive cheat sheet by Andrey Sitnik and Ivan Solovev for choosing easing functions that control how a parameter changes over normalized animation time. The catalog lists quad, cubic, quart, quint, exponential, circular, elastic, and bounce curves in ease-in, ease-out, and ease-in-out forms.
100% match · <general><blog><access><article><before><free><make><programmers> - GPUGems - Chapter 38. Fast Fluid Dynamics Simulation on the GPU
Harris's GPU Gems Chapter 38 explains fast, stable 2D fluid simulation on the GPU.
100% match · <general><blog><access><article><before><free><including><programmers> - Harry Alisavakis
ShaderQuest walks from 3D mesh concepts through ShaderLab, URP and built-in pipeline examples, syntax, colors, and shaping functions, with updating GitHub sample projects.
100% match · <blog><access><article><before><free><programmers><reading><technical> - Impossible Geometry: Non-Euclidean Cubes
Alan Zucconi's 2015 Unity post opens his Impossible Geometry series on alanzucconi.com.
100% match · <general><blog><access><article><before><free><post><programmers> - Patreon > Team Dogpit (aka Xibanya)
Team Dogpit (Xibanya) publishes “Shaders For People Who Don’t Know How To Shader,” a Patreon-first series that assumes no prior Unity or programming background. Each lesson introduces one skill - colors, normal maps, rim light, deferred buffers, SDFs, raymarching - then walks through a complete shader.
100% match · <blog><about><article><free><post><programmers><read><technical> - Perlin Noise: A Procedural Generation Algorithm (Raouf)
Romain Touti’s article explains improved Perlin noise for procedural textures and terrain, clarifying how it differs from value noise, classic Perlin, and simplex variants. Walks 2D intuition with gradient hashing, fade curves, and octave stacking, then shows pseudocode loops that map noise samples into grayscale pixels via frequency scaling. Language-agnostic math focus suits any engine or offline tool; no GPU API required.
100% match · <general><blog><access><article><before><free><noise><programmers> - Physically Based Values for CG Artists
Rows cover metals, dielectrics, organics, and fluids with sRGB swatches and numeric F0/reflectance fields suited to Substance, Blender, or engine neutral workflows.
100% match · <general><blog><about><access><api><article><before><free> - 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 · <blog><access><article><before><free><images><make><programmers> - second post discussing 3D
BorisTheBrave’s 2018 post is the 3D installment of a marching-cubes series on smooth destructible terrain.
100% match · <general><blog><access><article><before><free><post><programmers> - Shader Viewer (Built-in RP) (Xibanya)
Xibanya's Unity Shader Viewer is a free browser utility for reading Unity Built-in Render Pipeline shaders and includes with syntax coloring and links to definitions.
100% match · <blog><access><article><before><colors><free><programmers><technical>