30fps.net
- 2026-06-28: Revisiting Yliluoma's ordered dither algorithm
- 2026-05-31: Should you normalize RGB values by 255 or 256?
- 2026-04-22: Single-pass palette refinement and ordered dithering
- 2025-10-29: More accurate Doom colormap
- 2025-10-23: Why CIELAB doesn't improve median cut
- 2025-10-12: Better sRGB to greyscale conversion
- 2025-09-06: Mapping to the PICO-8 palette, perceptually
- 2025-07-16: Approximate first principal component
- 2025-07-08: HyAB k-means for color quantization
- 2025-05-16: Palette lighting tricks on the Nintendo 64
- 2025-01-17: Portal flow brings it all together
- 2025-01-09: Fine visibility via clipping
- 2025-01-09: Coarse base visibility
- 2025-01-09: Portals and Quake
- 2024-11-26: A simple way to scale pixel art games
- 2024-11-14: How to present MS-DOS screenshots
- 2024-11-13: How Westwood VQA works
- 2024-11-06: Efficiently split a NumPy array into tiles
- 2024-10-24: Classic 3D videogame shadow techniques
- 2024-04-05: Shader post-processing in a hurry
- 2024-03-15: Moving basis decomposition for images
- 2024-03-07: Color quantization with a self-organizing map
- 2024-03-04: PCA image color compression experiment
- 2024-01-20: Clean pointer serialization in C
- 2024-01-09: Sort a sphere BVH with split planes
- 2024-01-03: Annoying details of a Z-buffer rasterizer
- 2023-11-07: Going up in color bit depth
- 2023-04-29: Image vector quantization is just like creating a tilemap
- 2023-03-21: In-place filtering of an array
- 2023-03-06: BSP Lessons
- 2023-02-26: Full screen triangle optimization
End of feed.