Project Rembrandt: Difference between revisions

m
→‎Status (07/2014): remove highlighted formatting that got automatically converted by Instant-Cquotes
m (→‎Status ?: update with status & quotes from the forum to provide a few pointers because this keeps coming up on the forum/issue tracker, can be removed once the status changes...)
m (→‎Status (07/2014): remove highlighted formatting that got automatically converted by Instant-Cquotes)
Line 78: Line 78:


{{FGCquote
{{FGCquote
   |So, it's not really '''Rembrandt''' that's the issue here, the bottleneck is the number of active expert C++ developers (you cannot really touch the 3D parts of the simulator with "just" C++ knowledge, you also need strong maths skills and OpenGL/OSG 3D rendering experience), especially once they're no longer around to help integrate their code and if there's little documentation to help newcomers maintain their code, because that's when base package development is often taking over eventually.
   |So, it's not really Rembrandt that's the issue here, the bottleneck is the number of active expert C++ developers (you cannot really touch the 3D parts of the simulator with "just" C++ knowledge, you also need strong maths skills and OpenGL/OSG 3D rendering experience), especially once they're no longer around to help integrate their code and if there's little documentation to help newcomers maintain their code, because that's when base package development is often taking over eventually.
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
Line 87: Line 87:


{{FGCquote
{{FGCquote
   |For example, I think it's pretty safe to say that the '''Canvas''' system was never intended to "compete" with '''Rembrandt''', and most people here will be wondering how it could possibly be competing at all ? But ultimately it really is an integration and accessiblity issue, too. Admitedly, you need to be familiar with the way the project works to foresee what could be happening here, but it's not really far-fetched at all:<br/>
   |For example, I think it's pretty safe to say that the Canvas system was never intended to "compete" with Rembrandt, and most people here will be wondering how it could possibly be competing at all ? But ultimately it really is an integration and accessiblity issue, too. Admitedly, you need to be familiar with the way the project works to foresee what could be happening here, but it's not really far-fetched at all:<br/>
<br/>
<br/>
I had a quick look, and according to the initial '''Rembrandt''' commits by FredB, they were all about decoupling rendering into multiple stages and doing offscreen rendering to textures. This is also supported by the wiki and the initial '''Rembrandt''' discussions on the devel list. So far, straightforward to understand - even without knowing any GLSL.<br/>
I had a quick look, and according to the initial Rembrandt commits by FredB, they were all about decoupling rendering into multiple stages and doing offscreen rendering to textures. This is also supported by the wiki and the initial Rembrandt discussions on the devel list. So far, straightforward to understand - even without knowing any GLSL.<br/>
<br/>
<br/>
So basically it's about decoupling each rendering step and rendering each stage to a separate offscreen texture, and then it's mostly about exposing each rendering step/stage to the effects/GLSL framework for further processing there.<br/>
So basically it's about decoupling each rendering step and rendering each stage to a separate offscreen texture, and then it's mostly about exposing each rendering step/stage to the effects/GLSL framework for further processing there.<br/>
<br/>
<br/>
'''Rembrandt''' obviously predates the '''Canvas''' system, but these days that's exactly what the '''Canvas''' is good at: offscreen rendering to an osg::Image, without having to touch any C++ code, and without having to build FlightGear from source.<br/>
Rembrandt obviously predates the Canvas system, but these days that's exactly what the Canvas is good at: offscreen rendering to an osg::Image, without having to touch any C++ code, and without having to build FlightGear from source.<br/>


   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
Line 105: Line 105:
   |Tim Moore (developer of the effects framework) did mention several times how it would be great to extend the effects framework to allow  arbitrary textures to be used as inputs/outputs for the effects frame. For example, see: [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg37873.html http://www.mail-archive.com/flightgear- ... 37873.html]<br/>
   |Tim Moore (developer of the effects framework) did mention several times how it would be great to extend the effects framework to allow  arbitrary textures to be used as inputs/outputs for the effects frame. For example, see: [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg37873.html http://www.mail-archive.com/flightgear- ... 37873.html]<br/>
<br/>
<br/>
So consider a '''Canvas''' texture as the potential input/output for an effect, and there you have it: '''Canvas''' + effects/shader {{=}}&gt; one important ingredient for a '''Canvas'''-based '''Rembrandt''' port.  
So consider a Canvas texture as the potential input/output for an effect, and there you have it: Canvas + effects/shader {{=}}&gt; one important ingredient for a Canvas-based Rembrandt port.  
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
Line 115: Line 115:
{{FGCquote
{{FGCquote
   |we also have dozens of feature requests from aircraft developers to allow scenery views to be rendered as cockpit textures, e.g. to render mirrors or tail camera images. A feature also commonly seen on FSX and XPlane. <br/>
   |we also have dozens of feature requests from aircraft developers to allow scenery views to be rendered as cockpit textures, e.g. to render mirrors or tail camera images. A feature also commonly seen on FSX and XPlane. <br/>
Several years ago, Zan made lots of progress doing this sort of thing, long before the '''Canvas''' again - so it's also an integration issue.<br/>
Several years ago, Zan made lots of progress doing this sort of thing, long before the Canvas again - so it's also an integration issue.<br/>
<br/>
<br/>
These days, this would require the view_mgr code to be adapted and turned into a '''Canvas'''::Element. For example, see:<br/>
These days, this would require the view_mgr code to be adapted and turned into a Canvas::Element. For example, see:<br/>
[http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg36673.html http://www.mail-archive.com/flightgear- ... 36673.html]<br/>
[http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg36673.html http://www.mail-archive.com/flightgear- ... 36673.html]<br/>
[[Howto:Use_a_Camera_View_in_an_Instrument]]<br/>
[[Howto:Use_a_Camera_View_in_an_Instrument]]<br/>
<br/>
<br/>
Other aircraft developers have asked for effects/GLSL being available to cockpit textures for other reasons, e.g. to implement night vision views/FLIR imagings. And supporting effects/shaders in '''Canvas''' has been discussed various times on the forum too.<br/>
Other aircraft developers have asked for effects/GLSL being available to cockpit textures for other reasons, e.g. to implement night vision views/FLIR imagings. And supporting effects/shaders in Canvas has been discussed various times on the forum too.<br/>
<br/>
<br/>
So, these are just two new features: 1) making effects/GLSL usable to '''Canvas''' textures and 2) rendering scenery views - and suddenly you have two major ingredients for a deferred shading scheme in place, without requiring extensive C++ changes, and without necessarily having to even look at '''Rembrandt''' ...
So, these are just two new features: 1) making effects/GLSL usable to Canvas textures and 2) rendering scenery views - and suddenly you have two major ingredients for a deferred shading scheme in place, without requiring extensive C++ changes, and without necessarily having to even look at Rembrandt ...
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
Line 132: Line 132:


{{FGCquote
{{FGCquote
   |I don't think that anybody is working on replacing '''Rembrandt''', but I also don't think that we have any active core developers who could easily help maintain '''Rembrandt''' (except for FredB obviosuly) - still it is foreseeable that the '''Canvas''' system will -eventually- provide all essential building blocks to allow deferred rendering to be built on top, it's really just a matter of time.<br/>
   |I don't think that anybody is working on replacing Rembrandt, but I also don't think that we have any active core developers who could easily help maintain Rembrandt (except for FredB obviosuly) - still it is foreseeable that the Canvas system will -eventually- provide all essential building blocks to allow deferred rendering to be built on top, it's really just a matter of time.<br/>
<br/>
<br/>
At that point revisiting the '''Rembrandt''' code and moving its rendering stages into cascaded '''Canvas''' textures that make use of scenery views and effects/shaders with an osgViewer-based placement, would be straightforward for any GLSL developer, much more so than getting to grips with the underlying '''Rembrandt''' C++ code itself. <br/>
At that point revisiting the Rembrandt code and moving its rendering stages into cascaded Canvas textures that make use of scenery views and effects/shaders with an osgViewer-based placement, would be straightforward for any GLSL developer, much more so than getting to grips with the underlying Rembrandt C++ code itself. <br/>
<br/>
<br/>
So, nobody  is working on revamping/replacing Rembrandt, but even if it  were to continue to be stalled, the idea could still evolve - C++ templates were also never intended to be turing-complete, it just happened by accident :lol:<br/>
So, nobody  is working on revamping/replacing Rembrandt, but even if it  were to continue to be stalled, the idea could still evolve - C++ templates were also never intended to be turing-complete, it just happened by accident :lol:<br/>
<br/>
<br/>
As we know, even for good ideas, it usually takes ~3-5 years for them to be implemented (remember: OSG port, '''Rembrandt''', '''Canvas''' etc).<br/>
As we know, even for good ideas, it usually takes ~3-5 years for them to be implemented (remember: OSG port, Rembrandt, Canvas etc).<br/>
<br/>
<br/>
So I still wouldn't hold my breath. But re-considering the way '''Rembrandt''' is done and integrating it with the '''Canvas''' system would help make it less obscure and more accessible to effects/GLSL developers, especially for times when there are no C++/3D experts around.
So I still wouldn't hold my breath. But re-considering the way Rembrandt is done and integrating it with the Canvas system would help make it less obscure and more accessible to effects/GLSL developers, especially for times when there are no C++/3D experts around.
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
   |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=194296#p194296
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>
     |title=<nowiki>Re: What frame rate (fps) do you have?</nowiki>