Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2040

B

Bart Wronski

Personal blog · bartwronski.comprogrammingscience

Bart Wronski's personal blog at bartwronski.com covers programming and science. Since 2014, 36 different Hacker News readers have linked it 62 times, most often “Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel (2021)”. The last post was in 2024, but the archive is still widely read.

Visit the blog
62mentions?
1recommend?
36HN people?
2014–2025first – last linked?
Links on Hacker News per year · peak 13 in 2020

Too few sampled comments (12) to say how often HN recommends it.?

Why HN links it

HN readers link Bart Wronski's blog for graphics and image-processing write-ups, mainly his dithering series and posts on blur, deconvolution and resampling, which commenters cite as references.

Recommended for · 1 comments
One commenter said folks interested in dithering, and blue noise dithering in particular, should read the posts.

Summarised by Claude from a sample of 12 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Technology, programming, art, machine learning, image and signal processing

Most-linked posts?

  1. Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel (2021)
    4 people · 4 mentions · first linked 2021-02-17
  2. Technical debt… or technical weight?
    4 people · 4 mentions · first linked 2016-06-27
  3. Why are video games graphics challenging? Productionizing rendering algorithms
    3 people · 4 mentions · first linked 2020-12-28
  4. Bilinear texture filtering – artifacts, alternatives, frequency domain analysis
    3 people · 3 mentions · first linked 2020-04-15
  5. I use ChatGPT daily (scientist/coder perspective)
    3 people · 3 mentions · first linked 2024-01-22
  6. Separability, SVD and low-rank approximation of 2D image processing filters
    3 people · 3 mentions · first linked 2020-02-03
  7. Is This a Branch?
    3 people · 3 mentions · first linked 2021-01-19
  8. Removing blur from images – deconvolution and using simple image filters
    3 people · 3 mentions · first linked 2022-05-26
  9. Dithering in Games – Mini Series
    3 people · 3 mentions · first linked 2019-12-21
  10. /2016/10/30/dithering-part-three-real-world-2d-quantization-dithering/
    2 people · 3 mentions · first linked 2021-11-15

What Hacker News says?

  1. jacobolus · 2021-01-05Recommends
    Folks interested in learning more about dithering in genreal or blue noise dithering in particular should read Bart Wronski's blog posts here: https://bartwronski.com/2016/10/30/dithering-in-games-mini-s...

    Comment linking /2016/10/30/dithering-in-games-mini-series/

    on “Ditherpunk: The article I wish I had about monochrome image dithering”
  2. Submitted Why are video games graphics challenging? Productionizing rendering algorithms as a story · 309 points

    HN discussion
  3. You want a deconvolution pipeline like https://bartwronski.com/2022/05/26/removing-blur-from-images... Or more likely https://www.cse.cuhk.edu.hk/~leojia/projects/motion_deblurri... for video

    Comment linking /2022/05/26/removing-blur-from-images-deconvolution-and-using-optimized-simple-filters/

    on “Nano Banana Pro”
  4. Submitted Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel (2021) as a story · 136 points

    HN discussion
  5. Cool, interesting links to code -- thank you! I chased down Intel's paper the code linked to describing how it works on archive.org. https://web.archive.org/web/20110317025924/https://software.... It's not just about using SIMD instructions (they help), and laying out memory to optimize cache performance (which also helps), but most importantly that Gaussian blur is a "separable filter" that you can break up into a…

    Comment linking /2020/02/03/separate-your-filters-svd-and-low-rank-approximation-of-image-filters/

    on “It's always been you, Canvas2D”
  6. Submitted Is This a Branch? as a story · 136 points

    HN discussion
  7. As a toy example if you have pixels a,b,c and you blur to (a+b)/2,(b+c)/2, you can recover back c - a. You might be able to have a good estimate of the boundary condition ("a"), e.g. you can just use (a+b)/2 as an approximation for "a", so the recovered result might look fairly close. You'll basically want to look up the area of deconvolution. You can interpret it in linear algebra terms as trying to invert an ill-c…

    Comment linking /2022/05/26/removing-blur-from-images-deconvolution-and-using-optimized-simple-filters/

    on “It's easier than ever to de-censor videos”
  8. Submitted Removing blur from images – deconvolution and using simple image filters as a story · 131 points

    HN discussion
  9. Good article, but it uses less than ideal formula for weights of the gaussian blur kernel. Gaussian function for coefficients is fine for large sigmas, but for small blur radius you better integrate properly. Luckily, C++ standard library has std::erf function you gonna need for the proper formula. Here’s more info: https://bartwronski.com/2021/10/31/practical-gaussian-filter...

    Comment linking /2021/10/31/practical-gaussian-filter-binomial-filter-and-small-sigma-gaussians/

    on “Video Game Blurs (and how the best one works)”
  10. Submitted Using JAX, numpy, and optimization techniques to improve separable image filters as a story · 101 points

    HN discussion
  11. I've experimented with that. It only works if you pick you pick a form of ordered dithering, like a Bayer index or Interleaved Gradient Noise[0][1]. Which looks pretty terrible compared to error diffusion dithering approaches like Sierra3. And even if you use ordered dithering it only somewhat helps with compression. [0] https://bartwronski.com/2016/10/30/dithering-part-three-real... [1] https://www.iryoku.com/next-…

    Comment linking /2016/10/30/dithering-part-three-real-world-2d-quantization-dithering/

    on “Websites should not use dithered images”
  12. Submitted (Unofficial) Insider guide to tech interviews as a story · 89 points

    HN discussion
  13. Curious to see whether more recent dithering approaches would produce better results. They don't even have to be more resource hungry than the classic Bayer or Floyd-Steinberg dithers! Interleaved Gradient Noise[0][1][2] comes to mind as an alternative to Bayer, and it can even be approximated quite well with just 8-bit operations! Basically, use the following function to determine your threshold based on pixel posi…

    Comment linking /2016/10/30/dithering-part-three-real-world-2d-quantization-dithering/

    on “Modos Paper Monitor Pre-Launch on Crowd Supply”
  14. Submitted On Leaving California and the Silicon Valley as a story · 71 points

    HN discussion
  15. I meant about where this line comes from: mask = masks[0][0] Presumably 0 is the class ID? For someone new to ML or object detection, it might not be obvious why you take the first channel here. Also recent related reading: https://bartwronski.com/2020/03/15/using-jax-numpy-and-optim... HN Discussion: https://news.ycombinator.com/item?id=22590360&ref=hvper.com&...

    Comment linking /2020/03/15/using-jax-numpy-and-optimization-techniques-to-improve-separable-image-filters/

    on “Bokehlicious Selfies”
  16. Submitted Separability, SVD and low-rank approximation of 2D image processing filters as a story · 54 points

    HN discussion
  17. 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.…

    Comment linking /2016/10/30/dithering-part-three-real-world-2d-quantization-dithering/

    on “Image Dithering: Eleven Algorithms and Source Code (2012)”
  18. Submitted Bilinear downsampling, aligning pixel grids and the infamous half pixel offset as a story · 46 points

    HN discussion
  19. Assasin's Creed mentions of Geometry Shaders being used - (March, 2014, GDC) - https://bartwronski.files.wordpress.com/2014/03/ac4_gdc.pdf possibly many others. EDIT: Here is much more updated version (4 versions actually with much more detailed images/video and more notes) - from the author's web-page - http://bartwronski.com/2014/05/09/digital-dragons-2014-slide... oh, and if you are looking for some fun graphics…

    Comment linking /2014/05/09/digital-dragons-2014-slides/

    on “Why Geometry Shaders Are Slow (Unless You’re Intel)”
  20. Submitted Dithering in Games, Part 1: Simple Quantization (2016) as a story · 33 points

    HN discussion
  21. This is part 1 of a series: https://bartwronski.com/2016/10/30/dithering-in-games-mini-s... . We changed the URL from that to the first post, since generally it's better to link to one element of a list rather than to the list itself ( https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que... ).

    Comment linking /2016/10/30/dithering-in-games-mini-series/

    on “Dithering in Games, Part 1: Simple Quantization (2016)”
  22. Submitted Gradients on grids of pixels/voxels – forward, central, and diagonal differences as a story · 21 points

    HN discussion
  23. The half pixel offset makes sense, though. If you have two textures, you want the edges to align, not the centers of the pixels. See, for example: https://bartwronski.com/2021/02/15/bilinear-down-upsampling-... Implementations of resizing based on aligning pixel centers resulted in slight shifts, which caused a lot of trouble.

    Comment linking /2021/02/15/bilinear-down-upsampling-pixel-grids-and-that-half-pixel-offset/

    on “A Pixel Is Not a Little Square (1995) [pdf]”
  24. Submitted Why are video games graphics (still) a challenge? as a story · 16 points

    HN discussion
  25. Submitted Transforming “noise” and random variables through non-linearities as a story · 6 points

    HN discussion
  26. Submitted I use ChatGPT daily (scientist/coder perspective) as a story · 4 points

    HN discussion
  27. Submitted I use ChatGPT daily (scientist/coder perspective) as a story · 3 points

    HN discussion
  28. Submitted Exposure Fusion – local tonemapping for real-time rendering as a story · 3 points

    HN discussion
  29. Submitted Light transport matrices, SVD, spectral analysis, and matrix completion as a story · 3 points

    HN discussion
  30. Submitted Dimensionality reduction for image and texture set compression as a story · 3 points

    HN discussion

Search all of HN for bartwronski.com

Linked by the same people?