Post process framework roadmap
- Dominant language
- JavaScript
- Stars
- 15.7k
- Forks
- 3.9k
- Avg merge
- 4d 6h
- Merged PRs (30d)
- 34
Description
Initial implementation: #5615
5-year old [notes](https://github.com/AnalyticalGraphicsInc/cesium/wiki/Screen-Space-Rendering-Details)
* [ ] Finish full screen effects in https://github.com/AnalyticalGraphicsInc/cesium/pull/5615
* [ ] Per-entity effects. Any entity should be able to have post processing effects applied to it.
* [ ] Per-feature effects for 3D Tiles
* [ ] Write object ids to a gbuffer - or separate render pass for entities with effects applied to them.
* [ ] Use MRT, handle translucent issues.
* [ ] Use scissor test around entities with effects applied.
* [ ] Use textureLOD to determine if an id was written to part of texture?
* [ ] Use object id gbuffer for picking
* [x] Consolidate depth buffers into a single depth texture rather than use the closest frustum's depth texture.
* [x] May not be needed if we move to a log depth buffer, where the first frustum will be a lot larger. https://github.com/AnalyticalGraphicsInc/cesium/pull/5851
* [ ] HDR rendering
* [ ] Effects
* [x] Black and white
* [ ] Brightness, contrast, hue, saturation
* [x] 8-bit
* [x] Night vision
* [x] Texture overlay
* [x] Depth view
* [ ] Gamma correction
* [x] Lens flare
* [x] Ambient Occlusion
* [ ] Silhoutte (replace stencil-silhoutte in Model)
* [x] Edge detection
* [x] Depth of field
* [x] Bloom (simple)
* [ ] Bloom (advanced - requires HDR)
* [ ] Fog
* [x] Gaussian blur
* [ ] Motion blur
* [ ] Glow
* [ ] [SSRTGI](https://80.lv/articles/ssrtgi-toughest-challenge-in-real-time-3d/)?
* [ ] Use the post-processing framework wherever applicable throughout Cesium:
* [x] FXAA
* [ ] OIT
* [x] Sun bloom
* [ ] Picking buffer
* [ ] Invert classification
* [ ] Point cloud surface generation
* [ ] Atmosphere coloring
* [ ] Wide range of sandcastle examples highlighting use cases of post processing
* [ ] Tech blog post
* [ ] Reuse ping-pong textures: if we're not already doing this, I realized that when we are rendering to down-sampled textures, it would probably be better to just reuse a larger texture and render to a subset of it so we overall allocate fewer textures. Somewhat related, check out the [Transient resource system](https://www.slideshare.net/DICEStudio/framegraph-extensible-rendering-architecture-in-frostbite) in Frostbite. Note that I expect our textures to have a lifetime of multiple frames, and eventually be deallocated like the shader cache.
Later
* [ ] Post processing effects on particle systems (like heat haze, combining particles)
* [ ] Highlight objects that are occluded
* [ ] Cesium rendering blog post
* [ ] Longer-term transpiler/optimizer to combine multiple post-processing passes into one pass. Basically we provide a set of filters/effects/passes to a pipeline/whatever object, then the pipeline object is free to optimize as it sees fit. For more inspiration, see [Designing a next-generation post-effects pipeline](https://bartwronski.com/2014/12/09/designing-a-next-generation-post-effects-pipeline/).
Links
* [BabylonJS particle system post-processing](https://www.babylonjs-playground.com/frame.html#NNL67B#1)
* [BablyonJS post processing](https://doc.babylonjs.com/tutorials/how_to_use_postprocesses)
* [ThreeJS post processing](http://blog.cjgammon.com/threejs-post-processing)
* [Godot 3's Renderer Design Explained](https://godotengine.org/article/godot-3-renderer-design-explained)
* [deus-ex graphics study](http://www.adriancourreges.com/blog/2015/03/10/deus-ex-human-revolution-graphics-study/)
* [Open Source Unity Post-Processing Effects](https://bitbucket.org/Unity-Technologies/cinematic-image-effects)
* [An investigation of fast real-time GPU-based image blur algorithms](https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms)
* [Call for a new Post-Processing Pipeline](http://diaryofagraphicsprogrammer.blogspot.com/2013/09/call-for-new-post-processing-pipeline.html)
* [Stylized Rendering in Spore](http://gpupro.blogspot.com/2010/05/stylized-rendering-in-spore.html)
* [Post Process Framework Sample](http://graphicsrunner.blogspot.com/2008/06/post-process-framework-sample.html)
* [The rendering technology of skysaga: infinite isles](https://interplayoflight.wordpress.com/2015/04/08/the-rendering-technology-of-skysaga-infinite-isles/)
* [Deus Ex: Human Revolution - Graphics Study](http://www.adriancourreges.com/blog/2015/03/10/deus-ex-human-revolution-graphics-study/)
* [adventures in postprocessing with unity](https://interplayoflight.wordpress.com/2015/07/03/adventures-in-postprocessing-with-unity/)
* [Next Generation Post Processing in Call of Duty: Advance Warfare](http://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare)
Contributor guide
Assessment
This issue has not been assessed yet.