postprocessing icon indicating copy to clipboard operation
postprocessing copied to clipboard

Implement PoissonBlurMaterial

Open vanruesc opened this issue 1 year ago • 0 comments

Description

Implement a PoissonBlurMaterial.

References:

  • https://github.com/0beqz/realism-effects/tree/061daeaefb7773d8a1a8e10fa95a184fbcda1fb7/src/denoise
  • https://github.com/N8python/n8ao/blob/8a79a026eab3899990322596e893d1fbd9ba3f89/src/PoissionBlur.js
  • https://github.com/gkjohnson/threejs-sandbox/blob/8ebf61b0a36d188ccf50f31d31dacc44319e3986/blue-noise-generation/src/BlueNoiseGenerator.js
  • https://github.com/0beqz/realism-effects/tree/061daeaefb7773d8a1a8e10fa95a184fbcda1fb7/src/utils
  • https://diharaw.github.io/post/adventures_in_hybrid_rendering/

Tasks

  • [ ] Create PoissonKernel util (see GaussKernel).
  • [ ] Create BlueNoiseTexture util.
  • [ ] Create PoissonBlurMaterial.
  • [ ] Add unit test.

Implementation Details

  • The blur shader must support bilateral convolution (depth and normals).
  • Depth and normals are separate input textures.
    • Consider adding support for a combined normal-depth input texture (normal-depth downsampling).
  • The blur kernel should use a Poisson disc distribution.
  • The shader should support rotating the sampling disc using blue noise.

vanruesc avatar Feb 15 '24 17:02 vanruesc