20,741
edits
(https://sourceforge.net/p/flightgear/mailman/search/?q=hdr+AND+fernando) |
m (stubs based on: https://sourceforge.net/p/flightgear/mailman/message/37260282/) |
||
| Line 1: | Line 1: | ||
{{Experimental}} | {{Experimental}} | ||
After getting convinced to pursue this by some of the core devs, for | |||
the past couple of days I've been working on a new Compositor | |||
pipeline. It's still very much experimental (trying to load any | |||
scenery crashes FG!), but it's somewhat working under very special | |||
circumstances. | |||
Here are some screenshots of the c172p on the Nimitz. Aircraft | |||
carriers are a nice substitute to actual terrain :) | |||
https://i.imgur.com/onHZ5te.png | |||
https://i.imgur.com/I65vYm4.png | |||
https://i.imgur.com/omj4REY.png | |||
A few implementation details for the curious: | |||
- It's a deferred renderer. Most post-processing effects integrate | |||
very nicely with a deferred pipeline, and modern forward rendering | |||
techniques usually require a depth prepass. I haven't found an easy | |||
way to share culling results between passes in OSG so that the main | |||
forward pass reuses the culling information gathered during the depth | |||
prepass, so I preferred to just go deferred. | |||
- Entirely PBR-based. Old/legacy materials try to "translate" from the | |||
legacy ambient/diffuse/specular model to PBR metalness/roughness. | |||
Still, the classic pipeline isn't going anywhere. If a particular | |||
aircraft is very broken under this pipeline, the user is free to use | |||
ALS/classic. | |||
- HDR and eye adaptation. Lighting values are written to HDR buffers | |||
and then tone mapped based on a exposure setting. This exposure | |||
parameter is calculated automatically based on the average scene | |||
luminance (like a camera on the Auto setting would do), but there is | |||
the possibility of lowering/increasing the exposure manually if the | |||
user feels like the scene is too bright/dark. Maybe the pilot is | |||
wearing sunglasses? :) | |||
- Real time environment mapping. At the start of the frame we render | |||
to a cubemap and subsequent passes use this information to evaluate | |||
indirect lighting. | |||
- Miscellaneous post-processing passes like ambient occlusions, FXAA, | |||
bloom, etc. | |||
Again, this is all *very* experimental for now. A lot of things are | |||
broken because I'm forcing the use of core profile shaders (thanks | |||
Nvidia for letting me do this under a compatibility profile context!), | |||
so this is nowhere near usable. Still, I'm planning to release this to | |||
next in the next week or so because it doesn't break anything: | |||
everything is in FGData and on a different compositor pipeline, so | |||
Classic and the C++ core are completely unaffected. In general the | |||
move to the core profile will probably fix a lot of the issues that | |||
this pipeline currently has.<ref>https://sourceforge.net/p/flightgear/mailman/message/37260282/</ref> | |||