Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add blue noise #66

Open
ricardomatias opened this issue Apr 6, 2020 · 5 comments
Open

Add blue noise #66

ricardomatias opened this issue Apr 6, 2020 · 5 comments
Labels
enhancement New feature or request

Comments

@ricardomatias
Copy link
Member

ricardomatias commented Apr 6, 2020

  • via textures
    or
  • via halton sequences (@edwinRNDR)

Resources

@hamoid
Copy link
Member

hamoid commented Apr 6, 2020

strange to say this but... those noises are beautiful :) Thank you for the links.

@edwinRNDR edwinRNDR added the enhancement New feature or request label Apr 15, 2020
@hamoid
Copy link
Member

hamoid commented Jun 7, 2020

From the 3rd link above:

Update 2nd April 2020. Tommy Ettinger has provided corresponding Java code which is around 20x faster than this python code. As an indication, it generates balanced permutations of length n=16 in about one millisecond, and balanced permutations of length n=56 in about one second.

https://github.com/tommyettinger/sarong/blob/master/src/test/java/sarong/PermutationEtc.java

I wonder if that repo has useful random number generators for us:
https://github.com/tommyettinger/sarong

@hamoid
Copy link
Member

hamoid commented Jun 7, 2020

A C++ implementation from 2016 https://github.com/bartwronski/BlueNoiseGenerator

@hamoid
Copy link
Member

hamoid commented Jan 4, 2021

A post showing blue noise dithering https://surma.dev/things/ditherpunk/

A comment about that post in hackernews:

linuxlizard -> Back when I worked at Marvell Semiconductor (circa 2005), we made laser printer ASICs for HP. We did a lot of dithering in hardware. We had a hardware block that did error diffusion, we had a hardware block that did regular diffusion. We also had a hardware block that did Blue Noise. I was responsible for implementing the firmware that drove those printers' scan/copy path: scan an image in monochrome, run through the dither hardware to create the bit pattern fed to the laser engine.No one could explain to me how to use the blue noise block. I couldn't understand what the blue noise block was doing. This is the first article that explained, in terms I could understand, how blue noise dithering works.I can die happy. Thank you.

@hamoid
Copy link
Member

hamoid commented Jan 19, 2021

This site includes 10+ posts about blue noise: https://blog.demofox.org/

And it links to this GPU implementation
https://github.com/jdupuy/BlueNoiseDitherMaskTiles

It sounds like generating blue noise textures is too expensive to do in real time. Here they are free to download:
http://momentsingraphics.de/BlueNoise.html
and this is the zip file: http://momentsingraphics.de/Media/BlueNoise/FreeBlueNoiseTextures.zip
Now I'm trying to figure out how to use those textures.

Update: it seems that my desired use case is described in this paper: http://johanneskopf.de/publications/blue_noise/paper/Recursive_Wang_Tiles_For_Real-Time_Blue_Noise.pdf in point 6.2

A video about the same paper found by Ricardo: https://www.youtube.com/watch?v=0NMmB-IlDsk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants