A
Alan Zucconi
alanzucconi.com · Personal blog · on HN since 2014
Alan Zucconi writes tutorials on shaders, procedural animation, color, and math for game and graphics programming.
What HN saysCommenters recommend his tutorials as clear first steps for shaders and graphics, including his diffraction grating and atmospheric scattering articles that produce working images.
53HN people shared it
14linked it in comments
202stories submitted
529story points
3 months agolast shared
2014people per year2026
Most-shared posts
- 1The challenging task of sorting colours7 people · 62 points · first shared 2015 · 5 comments on HN
- 2Valve's Flickering Lights4 people · 13 points · first shared 2024 · 1 comments on HN
- 3Color Interpolation3 people · 1 points · first shared 2020 · discussion on HN
- 4Recreational Maths in Python2 people · 40 points · first shared 2015 · 4 comments on HN
- 5Volumetric Rendering: Signed Distance Functions2 people · 6 points · first shared 2016 · discussion on HN
- 6Seam Carving2 people · 4 points · first shared 2023 · discussion on HN
- 7Principal Component Analysis for Programmers2 people · 4 points · first shared 2025 · discussion on HN
- 8CD-ROM curtains are back2 people · 4 points · first shared 2017 · discussion on HN
- 9An Introduction to Procedural Animation2 people · 4 points · first shared 2017 · discussion on HN
- 10The AI of Creatures2 people · 3 points · first shared 2020 · 1 comments on HN
- 11A Journey Through the Atmosphere2 people · 3 points · first shared 2017 · discussion on HN
- 12A Journey into Journey's Sand Shader2 people · 3 points · first shared 2019 · discussion on HN
- 13Viking Villages and CD-ROMs2 people · 2 points · first shared 2017 · discussion on HN
- 14Understanding the 4th Dimension2 people · 2 points · first shared 2023 · discussion on HN
- 15Rendering 4D Objects2 people · 2 points · first shared 2023 · discussion on HN
What HN people wrote when they linked it
pcwalton · 2023-04-04
Yes, it's possible to do physically based diffraction grating effects in the traditional pipeline. Here's a tutorial on it: https://www.alanzucconi.com/2017/07/15/the-nature-of-light/ (I actually implemented this effect recently: the article is great overall, but you can get rid of the loop by using some simple algebra.)
However, as pointed out in sibling comments, this makes assumptions about the coherence of the light coming in.
honkycat · 2022-02-16
For procedural animation: I have yet to find the path to learning this skill. It is very opaque, and I think you just need to attack it with your brain and learn it.
For shader and graphics programming: I liked this tutorial series as a "first steps" by Freya Holmér: https://www.youtube.com/watch?v=kfM-yu0iQBk
Here is another list: https://www.alanzucconi.com/2018/01/03/learning-shaders/
The Book of Shaders is a popular suggestion, but it appears to be abandoned: https://thebookofshaders.com/
For general Unreal? Tom Looman's $300 Unreal C++ class, available on his website. It is pricey but really excellent.
I also discovered this AWESOME list of learning paths for all gamedev concepts: https://github.com/miloyip/game-programmer
jamcohen · 2021-02-24
Catlike coding is great. I’m also a fan of Alan Zucconi’s tutorials: https://www.alanzucconi.com/tutorials/
asqueella · 2026-02-09
The explanation that made it click for me a while ago was by someone who implemented a shader https://www.alanzucconi.com/2017/10/10/atmospheric-scattering-3/ — the explanations that don't end up producing an image all seemed to skip over one detail or another.
benrbray · 2025-09-02
Really cool! Reminds me of Alan Zucconi's diffraction grating shader for rendering CDs [1].
[1] https://www.alanzucconi.com/2017/07/15/cd-rom-shader-1/
gugagore · 2024-05-07
Technically, image resizing does in general care about the color channel ordering, because color spaces are in general not linear. https://www.alanzucconi.com/2016/01/06/colour-interpolation/
jsheard · 2024-04-26
A neat real-world example of ancient Quake code surviving to this day is visible in Valves games - the hardcoded patterns for flickering lights in Quake 1 survived into GoldSrc and then into Source and then into Source 2, most recently showing up in Half Life Alyx, 24 years on from their original appearance in Quake 1.
https://www.alanzucconi.com/2021/06/15/valve-flickering-lights/
Basically all of the bigger systems will have been Ship-of-Theseus'd several times over by now, but little things like that can slip through the cracks.
wlesieutre · 2023-10-29
No raytracing needed for the window interiors, it’s shader wizardry
https://www.alanzucconi.com/2018/09/10/shader-showcase-9/
richrichardsson · 2022-11-05
Anyone as clueless as I seeing SDF littered throughout the comments :
Signed Distance Functions
Nice explanation (with some code) : https://www.alanzucconi.com/2016/07/01/signed-distance-functions/
mofosyne · 2021-01-02
Written Article : https://www.alanzucconi.com/2020/07/27/the-ai-of-creatures/
kuon · 2020-03-09
By interpolating, you mean like given two colors, you want to generate the intermediate gradient colors, like on this article[1]? If that's the case, I don't see why interpolating two saturated colors would provide a shade of gray. Can you clarify?
[1]: https://www.alanzucconi.com/2016/01/06/colour-interpolation/
rjkaplan · 2016-04-14
I mostly just think they look cool :)
In the post there's a demo on how to use the same algorithm that generates Voronoi diagrams to render 2D drop shadows with a spread radius.
You may also be interested in Alan Zucconi's article on Voronoi diagrams where he outlines a few use-cases in games: http://www.alanzucconi.com/2015/02/24/to-voronoi-and-beyond/2/#acp_wra…
pp19dd · 2014-09-08
Reminds me of orbitalis - a Ludum dare game from last year that eventually ended up on steam. Object is simple, establish a stable orbit in the system for a span of one clock rotation (clock is on the very outside.) See http://www.alanzucconi.com/extra/0rbitalis/ld48/
bogwog · 2024-09-05
UE5 Nanite -> https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-vir…
WebGPU -> https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API
Meshlet -> https://developer.nvidia.com/blog/introduction-turing-mesh-shaders/
LOD -> https://en.wikipedia.org/wiki/Level_of_detail_(computer_graphics)
Software rasterizer -> https://en.wikipedia.org/wiki/Rasterisation ("software" means it runs on the CPU instead of GPU)
Billboard imposters -> https://www.alanzucconi.com/2018/08/25/shader-showcase-saturday-7/
Culling -> https://en.wikipedia.org/wiki/Hidden-surface_determination