Code Monkey home page Code Monkey logo

bluenoise's Introduction

Blue Noise

by Duan Gao

Implement the algorithm introduced in [1].

The blue noise image can be used in Path Tracing to distribute the Monte Carlo noise from white noise to blue noise (I have tested this idea in my own physically based renderer Elegans) , more details are described in [2].

Update[2020-01-06]

  • Add Python binding support (via pybind11)
  • Add support for generating multiple dimensional blue noise texture. (e.g 2D/3D blue noise texture)

Dependencies

Results

1D blue-noise:

Resolution White noise White noise FFT [3] Blue noise Blue noise FFT
32x32
128x128

Here we show the path tracing results comparison of Cornell Box (only 1spp) :

Here I just implement the sorting scheme introduced in the slides [4].

  • sorting all the radiances of same pixel;
  • pick the radiance according to the blue noise value in the same pixel position.
path tracing(spp=1) dithering(spp=1 from 256) path tracing(spp=256) reference
Image
RMSE 0.04736 0.04778 0.003352 -

[1] Georgiev I, Fajardo M. Blue-noise dithered sampling[C]//ACM SIGGRAPH 2016 Talks. ACM, 2016: 35.

https://www.arnoldrenderer.com/research/dither_abstract.pdf

[2] Heitz E, Belcour L. Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames[C]//Computer Graphics Forum. 2019, 38(4): 149-158.

https://hal.archives-ouvertes.fr/hal-02158423/document

[3] Use ./results/vis_image_freq.py to generate the frequency visualization image. Please see OpenCV for more details.

[4] https://hal.archives-ouvertes.fr/hal-02158423/file/blueNoiseTemporal2019_slides.pdf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.