Compositor: Difference between revisions

322 bytes removed ,  23 May 2019
no edit summary
No edit summary
No edit summary
Line 19: Line 19:
}}
}}


The '''Compositor''' aims to bring multi-pass rendering to FlightGear. It encapsulates a rendering pipeline and exposes its parameters to the [[Property Tree]].
The '''Compositor''' aims to bring multi-pass rendering to FlightGear. It encapsulates a rendering pipeline and exposes its parameters to a [[Property Tree]] interface. At startup, FlightGear reads the pipeline definition file for each physical viewport defined on the [[Howto:Configure camera view windows|CameraGroup settings]]. If no Compositor file is specified for a physical camera, the one given by the <code>--compositor=</code> startup command will be used. If such startup option is not used either, FlightGear will look for a valid Compositor file in $FG_ROOT/Compositor/default.xml
The pipeline used on each physical viewport defined on the [[Howto:Configure camera view windows|CameraGroup settings]] can be changed via a <code><compositor/></code> tag containing a valid path to the Compositor XML file (using the [[PropertyList XML File]] format). If no Compositor file is specified for a physical camera, the one given by the <code>--compositor=</code> startup command will be used. If such startup option is not used either, FlightGear will look for a valid Compositor file in $FG_ROOT/Compositor/default.xml


The Compositor introduces a new dedicated fgdata directory for new/custom rendering pipelines: $FG_ROOT/Compositor: {{Fgdata file|Compositor}}.
The Compositor introduces a new dedicated fgdata directory for new/custom rendering pipelines: $FG_ROOT/Compositor: {{Fgdata file|Compositor}}.
Line 83: Line 82:
* Flexible, expandable and compatible with modern graphics.
* Flexible, expandable and compatible with modern graphics.
* It doesn't increase the hardware requirements, it expands the hardware range FG can run on. People with integrated GPUs (Intel HD etc) can run a Compositor with a single pass that renders directly to the screen like before, while people with more powerful cards can run a Compositor that implements deferred rendering, for example.
* It doesn't increase the hardware requirements, it expands the hardware range FG can run on. People with integrated GPUs (Intel HD etc) can run a Compositor with a single pass that renders directly to the screen like before, while people with more powerful cards can run a Compositor that implements deferred rendering, for example.
* Static branching support. Every pipeline element can be enabled/disabled at startup via a <condition> block.


== Elements ==
== Elements ==
Line 261: Line 261:
* Finish Clustered Forward Rendering.
* Finish Clustered Forward Rendering.
* Some kind of versioning system to be able to make breaking changes in the future if/when the compositor is updated in any significant way, without people having to manually update their configs.
* Some kind of versioning system to be able to make breaking changes in the future if/when the compositor is updated in any significant way, without people having to manually update their configs.
* Effects registry. [http://www.zaretto.com/sites/zaretto.com/files/compositor-effects-registry.pdf Design document].
* Bring back Canvas integration so aircraft devs have access to the rendering pipeline. This allows to render exterior views in cockpit displays etc.
* Bring back Canvas integration so aircraft devs have access to the rendering pipeline. This allows to render exterior views in cockpit displays etc.


Line 267: Line 266:


* Setting a buffer scale factor different from 1.0 and rendering to it might not scale the splash screen correctly.
* Setting a buffer scale factor different from 1.0 and rendering to it might not scale the splash screen correctly.
* computeIntersections() always uses pass 0, which might fail. The scene pass should be used (which one if there are several?). This manifests as the inability to click on clickable objects in the low-spec pipeline.


== Related ==
== Related ==
343

edits