Christoph Peters
momentsingraphics.de · Personal blog · on HN since 2021
Christoph Peters writes about computer graphics, covering blue noise, spectral rendering, radiometry, Gaussian splatting and ray computation.
What HN saysHN commenters link his blue noise page and free textures for dithering, plus his cubic roots page, and recommend the blog.
15HN people shared it
9linked it in comments
21stories submitted
382story points
3 months agolast shared
2021people per year2026
Most-shared posts
- 1Blue noise – white noise alternative for graphics (2016)8 people · 5 points · first shared 2023 · 1 comments on HN
- 2Spectral rendering, part 2: Real-time rendering2 people · 60 points · first shared 2025 · 18 comments on HN
- 3Goodbye C++, Hello C1 people · 243 points · first shared 2021 · 215 comments on HN
- 4Splatshop: Efficiently Editing Large Gaussian Splat Models1 people · 34 points · first shared 2025 · 2 comments on HN
- 5Spectral rendering, part 3: Spectral vs. RGB1 people · 17 points · first shared 2025 · 2 comments on HN
- 6Gaussian Point Splatting1 people · 5 points · first shared 2026 · discussion on HN
- 7Computing Camera Rays1 people · 4 points · first shared 2026 · discussion on HN
- 8Radiometry, part 1: I got it backwards1 people · 2 points · first shared 2025 · discussion on HN
- 9Path Tracing Workshop1 people · 2 points · first shared 2022 · discussion on HN
- 10Spectral rendering, part 1: Spectra1 people · 2 points · first shared 2025 · discussion on HN
- 11Radiometry, part 2: Spectra and photometry1 people · 2 points · first shared 2025 · discussion on HN
- 12Jackknife Transmittance and MIS Weight Estimation1 people · 2 points · first shared 2025 · discussion on HN
- 13Radiometry: Overview1 people · 1 points · first shared 2025 · discussion on HN
- 14Illumination-Aware Spatial Subdivision for Path Guiding1 people · 1 points · first shared 2026 · discussion on HN
- 15Spectral Rendering: Overview1 people · 1 points · first shared 2025 · discussion on HN
What HN people wrote when they linked it
momojo · 2025-10-28
One of my favorite modern dithering methods is blue-noise dithering (see Figure 3b): https://developer.nvidia.com/blog/rendering-in-real-time-with-spatiote…
The only catch is that generating blue noise is a roughly O(n^2) algorithm. Its not feasible to be generated on the fly, so in practice you just pregenerate a bunch of blue-noise textures and tile them.
If you google 'pregenerated blue noise' you find plenty of them: https://momentsingraphics.de/BlueNoise.html
pasteldream · 2025-10-27
Agreed - blue noise dithering is very commonly used in computer graphics because it’s cheap and great, but it might be worth mentioning that it’s a kind of ordered dithering, which is mentioned in the article.
Christoph Peters’s free blue noise textures are the most commonly used, for people who can’t be bothered running void and cluster themselves: https://momentsingraphics.de/BlueNoise.html
CyLith · 2025-08-13
The library only solves up to cubic equations, and the comments have a link to the following page: https://momentsingraphics.de/CubicRoots.html
For general polynomials, it matters a great deal in what basis it is represented. The typical monomial basis is usually not the best from a numerical standpoint. I am aware of some modern methods such as this: https://arxiv.org/pdf/1611.02435
For polynomials expressed in e.g. a Bernstein basis, there are often much faster and stable tailored methods working solving for the eigenvalues of a companion matrix of a different form.
rikroots · 2025-03-13
It's an array of pre-calculated values that I extracted from an image donated to the Public Domain by Christoph Peters (the link is an interesting read about bluenoise - recommend!) - http://momentsingraphics.de/BlueNoise.html
No textures or masks, just brute computing on the CPU.
hjadal · 2022-02-07
I quite like Moments in graphics by Christoph Peters - http://momentsingraphics.de/
kragen · 2025-10-28
The major dithering algorithm that's missing from this list is blue-noise dithering. This is very similar to "ordered dithering"; you can think of ordered dithering as either thresholding the pixel values with a different threshold value on each pixel, following a regular pattern, or as adding a different offset value to each pixel, following a regular pattern, and thresholding the result with a constant threshold. Blue-noise dithering replaces the regular pattern with a random pattern that's been high-pass filtered. This has all the advantages of ordered dithering, in particular avoiding "crawling" patterns during animation, but avoids the repetitive patterns and line artifacts it introduces.
https://nelari.us/post/quick_and_dirty_dithering/ is the best quick introduction to the technique that I've seen. There's a more comprehensive introduction at https://momentsingraphics.de/BlueNoise.html. https://bartwronski.com/2016/10/30/dithering-part-three-real-world-2d-… also demonstrates it, comparing it to other dithering algorithms.
Ulichney introduced blue noise to dithering in 01988 as a refinement of "white-noise dithering", also known as "random dithering", where you just add white noise before thresholding: https://cv.ulichney.com/papers/1988-blue-noise.pdf. Ulichney's paper is also a pretty comprehensive overview of dithering algorithms at the time, and he also makes some interesting observations about high-pass prefiltering ("sharpening", for…
bj-rn · 2023-05-23
Blue noise dithering also gives some pretty nice results:
https://momentsingraphics.de/BlueNoise.html
sprash · 2023-01-12
This is interesting if you are after retro effects. State of the art dithering however works with blue noise threshold textures[1] because we have plenty of memory available these days. Here is a nice comparison of all kinds of dithering algorithms that also shows the clear superiority of blue noise dithering: [2].
1.: http://momentsingraphics.de/BlueNoise.html
2.: https://surma.dev/things/ditherpunk/
waynecochran · 2022-03-29
You are doing the polynomial evaluation wrong for Taylor Series. First of all you should be using Horner's Method to reduce the number of multiplications needed and then you should be using FMA to increase precision of the solution. https://momentsingraphics.de/FMA.html