







Now that we have a spectral renderer, it is time to see if it was worth the effort. I hope you agree with my reasoning in part 1, that RGB rendering does not match the physical reality, but does it really matter? We will now compare RGB rendering to spectral rendering using my spectral path tracer. In the process, we will look at various types of light sources. RGB rendering simply multiplies RGB triples of illuminants and textures component-wise to arrive at the linear RGB color displayed on screen. Spectral rendering uses proper illuminant spectra (mostly from LSPDD.org) and reflectance spectra that are upsampled from sRGB using Fourier sRGB.
Generating a Color Spectrum for an Image — Amanda Hinton
Walkthrough of building the Chromaculture Spectrimage analyzer that extracts and displays the color composition of an uploaded image.

2024 Display of the Year: E Ink Spectra 6
Rendering Particles with Compute Shaders
Overview I developed a technique to render single-pixel particles (using additive blending) with compute shaders rather than the usual fixed-function rasterization with vertex and fragment shaders. My approach runs 31–350% faster than rasterization on the cases I tested and is particularly faster for some “pathological” cases (which for my application are not actually that uncommon). I observed these speedups on both NVIDIA and AMD GPUs. Using this technique allowed me to ship an app that runs on minimum-spec hardware without sacrificing visual fidelity.

Shader Color
Shader Color is three groundbreaking typefaces that reimagine our existing design Shader for its Color Font debut. Shader 16 boasts bright 16-bit pixels. Shader 64 revels in shiny 64-bit chrome. Shader Glitch conjures a future where technology conspires against us.
Liber Indigo - Metaphysical Prisoners of the Desktop
What's My JND?
Find your Just Noticeable Difference in colour perception. How small a colour difference can you actually see?

CuspHanger — palettes from intuitive parameters
Sequential and diverging OKLCH palettes from a few intuitive parameters — the Wijffelaars et al. 2009 model, in-gamut by construction, for sRGB and Display-P3.

Surfel-based global illumination on the web
Can we use WebGPU to compute real-time global illumination with surface patches called surfels? Does it look good enough? Is it fast enough? And can we finally construct viable compute-heavy rendering pipelines right here on the open web? Join me on this journey and let's find out!


Shaders
Component library for creative WebGPU effects in modern frontend frameworks. Compose interactive visuals for Vue, React, Svelte and Solid.



nutelch — cusp explorer
NUTELCH measures chroma relative to the gamut shell — the cusp — in OKLCH and LCH. You ask for a fraction of the way to the boundary (relC) instead of an absolute chroma, so “saturation” means the same thing at every lightness and hue and never accidentally lands out of gamut, while the result stays a native oklch() / lch() color. It's dependency-free and LUT-backed: the boundaries are precomputed, so lookups are fast. nutelch on GitHub →
Reasonable Colors
Yes. Reasonable Colors is open-source (the annotated source-code is available on Github) and released under the MIT license. The color specimen document is also available to download as a PDF, JPEG, and WEBP image.
The Best Darn Grid Shader (Yet)
For as long as I’ve been writing shaders, there’s been one specific shader I’ve always tried to write…
