]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/CameraGroup.hxx
Restore splash screen for the Rembrandt renderer
[flightgear.git] / src / Main / CameraGroup.hxx
index 75ff12ac570fa9c8b9f11faca41d3cc6e5cc2104..606bfc3477355d3335cb20e1bdb43a54d1300ce2 100644 (file)
@@ -27,6 +27,7 @@
 #include <osg/Node>
 #include <osg/TextureRectangle>
 #include <osg/Texture2D>
+#include <osg/TexGen>
 #include <osgUtil/RenderBin>
 
 // For osgUtil::LineSegmentIntersector::Intersections, which is a typedef.
@@ -54,7 +55,8 @@ struct RenderBufferInfo {
                NORMAL_BUFFER,
                DIFFUSE_BUFFER,
                SPEC_EMIS_BUFFER,
-               LIGHTING_BUFFER
+               LIGHTING_BUFFER,
+        SHADOW_BUFFER
        };
 
        RenderBufferInfo(osg::Texture2D* t = 0, float s = 1.0 ) : texture(t), scaleFactor(s) {}
@@ -123,11 +125,31 @@ struct CameraInfo : public osg::Referenced
     /** Properties of the camera. @see CameraGroup::Flags.
      */
     unsigned flags;
+
+    /** Viewport parameters.
+     */
+    double x;
+    double y;
+    double width;
+    double height;
+    /** Physical size parameters.
+     */
+    double physicalWidth;
+    double physicalHeight;
+    double bezelHeightTop;
+    double bezelHeightBottom;
+    double bezelWidthLeft;
+    double bezelWidthRight;
+    /** The parent camera for relative camera configurations.
+     */
+    unsigned relativeCameraParent;
+
     /** the camera objects
      */
        CameraMap cameras;
        void addCamera( CameraKind k, osg::Camera* c, int si = -1, bool fs = false ) { cameras[k].camera = c; cameras[k].slaveIndex = si; cameras[k].fullscreen = fs; }
        void addCamera( CameraKind k, osg::Camera* c, bool fs ) { cameras[k].camera = c; cameras[k].fullscreen = fs; }
+       void addCamera( CameraKind k, osg::Camera* c, float s ) { cameras[k].camera = c; cameras[k].scaleFactor = s; }
        osg::Camera* getCamera(CameraKind k) const;
        int getMainSlaveIndex() const;
        RenderStageInfo& getRenderStageInfo( CameraKind k ) { return cameras[k]; }
@@ -136,37 +158,21 @@ struct CameraInfo : public osg::Referenced
         */
        RenderBufferMap buffers;
        void addBuffer(RenderBufferInfo::Kind k, osg::Texture2D* tex, float scale = 1.0 ) { buffers[k] = RenderBufferInfo(tex,scale); }
-       osg::Texture2D* getBuffer(RenderBufferInfo::Kind k) { return buffers[k].texture.get(); }
+       osg::Texture2D* getBuffer(RenderBufferInfo::Kind k) const;
+
+    osg::ref_ptr<osg::TexGen> shadowTexGen[4];
 
     osg::ref_ptr<osg::Uniform> bufferSize;
     //osg::ref_ptr<osg::Uniform> bloomOffset[2];
     osg::ref_ptr<osg::Uniform> projInverse;
     osg::ref_ptr<osg::Uniform> viewInverse;
+    osg::ref_ptr<osg::Uniform> view;
     osg::ref_ptr<osg::Uniform> du;
     osg::ref_ptr<osg::Uniform> dv;
-    osg::ref_ptr<osg::Uniform> view;
 
        void setMatrices( osg::Camera* c );
 
        osgUtil::RenderBin::RenderBinList savedTransparentBins;
-
-    /** Viewport parameters.
-     */
-    double x;
-    double y;
-    double width;
-    double height;
-    /** Physical size parameters.
-     */
-    double physicalWidth;
-    double physicalHeight;
-    double bezelHeightTop;
-    double bezelHeightBottom;
-    double bezelWidthLeft;
-    double bezelWidthRight;
-    /** The parent camera for relative camera configurations.
-     */
-    unsigned relativeCameraParent;
     /** The reference points in the parents projection space.
      */
     osg::Vec2d parentReference[2];