### 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.
Description
Implement a
PoissonBlurMaterial.References:
Tasks
PoissonKernelutil (seeGaussKernel).BlueNoiseTextureutil.PoissonBlurMaterial.Implementation Details