As suggested on https://forum.openmw.org/viewtopic.php?f=6&t=4425, by using the 'effectcompositor' library we can provide a way for modders to write screen-space effects (HDR, SSAO etc) much like MGE allows.
The remaining problems with the "initial attempt":https://github.com/scrawl/openmw/tree/effectcompositor are:
- Chaining effects
Since people will commonly want to use more than one effect, we need a way to chain them together, which does not appear to be working at present. Possible solutions to this:
a) figure out why chaining by way of a node hierarchy does not work, and fix it
or b) write a function that merges two EffectCompositors into one EffectCompositor, linking the final output of the first compositor into the scene input of the second one.
- Uniform updates
The way shader uniforms are being updated in the EffectCompositor appears to have a threading bug (see https://wiki.openmw.org/index.php?title=Rendering_Architecture#Threading_considerations). This could be solved with a double buffering implementation. Ideally just the StateSets/Uniforms would be double buffered, but as an intermediate (easier) solution we can just double everything (including textures)
Write some cool example effects. Document the XML format in our documentation.
(RM-4067 from redmine: created on 2017-09-02 by scrawl ., )