#include "viewer.hxx"
#include "viewmgr.hxx"
#include "splash.hxx"
+#include "renderingpipeline.hxx"
#include "renderer.hxx"
#include "CameraGroup.hxx"
#include "FGEventHandler.hxx"
_useColorForDepth = fgGetBool( "/sim/rendering/use-color-for-depth", false );
_depthInColor->set( _useColorForDepth );
+ _renderer = fgGetString("/sim/rendering/renderer", "");
+ if (!_classicalRenderer && !_renderer.empty())
+ _pipeline = makeRenderingPipeline(_renderer, 0);
_scenery_loaded = fgGetNode("/sim/sceneryloaded", true);
_scenery_override = fgGetNode("/sim/sceneryloaded-override", true);
_panel_hotspots = fgGetNode("/sim/panel-hotspots", true);
class FGDeferredRenderingCameraCullCallback : public osg::NodeCallback {
public:
- FGDeferredRenderingCameraCullCallback( flightgear::CameraKind k, CameraInfo* i ) : kind( k ), info( i ) {}
+ FGDeferredRenderingCameraCullCallback( const std::string& k, CameraInfo* i ) : kind( k ), info( i ) {}
virtual void operator()( osg::Node *n, osg::NodeVisitor *nv) {
simgear::EffectCullVisitor* cv = dynamic_cast<simgear::EffectCullVisitor*>(nv);
osg::Camera* camera = static_cast<osg::Camera*>(n);
}
private:
- flightgear::CameraKind kind;
+ std::string kind;
CameraInfo* info;
};
info->getBuffer("shadow")->setTextureSize(shadowMapSize,shadowMapSize);
}
-void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, flightgear::CameraKind ck, const std::string& bk )
+void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, const std::string& ck, const std::string& bk )
{
camera->attach( c, info->getBuffer(bk) );
info->getRenderStageInfo(ck).buffers.insert( std::make_pair( c, bk ) );
const osg::Matrix& view,
const osg::Matrix& projection,
osg::GraphicsContext* gc)
+{
+ if (_renderer.empty() || !_pipeline.valid())
+ return buildDefaultDeferredPipeline(cgroup, flags, camera, view, projection, gc);
+ return _pipeline->buildCamera(cgroup, flags, camera, view, projection, gc);
+}
+
+flightgear::CameraInfo*
+FGRenderer::buildDefaultDeferredPipeline(flightgear::CameraGroup* cgroup, unsigned flags, osg::Camera* camera,
+ const osg::Matrix& view,
+ const osg::Matrix& projection,
+ osg::GraphicsContext* gc)
{
CameraInfo* info = new CameraInfo(flags);
buildDeferredBuffers(info, _shadowMapSize, _useColorForDepth);