pmndrs / pmndrs/postprocessing
Implement PoissonBlurMaterial
Open
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.9k
- Forks
- 251
- Avg merge
- 17m
- Merged PRs (30d)
- 1
Description
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
PoissonKernelutil (seeGaussKernel). - Create
BlueNoiseTextureutil. - 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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing GaussKernel utility and the referenced PoissionBlur.js, BlueNoiseGenerator.js, and realism-effects denoise and utils implementations. Create the PoissonKernel, BlueNoiseTexture, and PoissonBlurMaterial, then add the requested unit test. Done means the shader supports Poisson-disc sampling, blue-noise rotation, and bilateral depth and normal convolution.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, three.js
- Domain
- computer-graphics, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100