]> git.tdb.fi Git - libs/vr.git/blobdiff - source/oculusriftcombiner.h
Compensate for chromatic aberration in the Oculus Rift combiner
[libs/vr.git] / source / oculusriftcombiner.h
index ede2fe91e481585de3e72bb165a8b4481a96b44f..afb5573453b99345edf9900b7c245dc03215122f 100644 (file)
@@ -1,13 +1,13 @@
-#ifndef MSP_GL_OCULUSRIFTCOMBINER_H_
-#define MSP_GL_OCULUSRIFTCOMBINER_H_
+#ifndef MSP_VR_OCULUSRIFTCOMBINER_H_
+#define MSP_VR_OCULUSRIFTCOMBINER_H_
 
-#include "mesh.h"
-#include "program.h"
-#include "programdata.h"
+#include <msp/gl/mesh.h>
+#include <msp/gl/program.h>
+#include <msp/gl/programdata.h>
 #include "stereocombiner.h"
 
 namespace Msp {
-namespace GL {
+namespace VR {
 
 /**
 Presents a stereo view in a way suitable for an Oculus Rift HMD.  All distances
@@ -16,14 +16,15 @@ are specified in multiples of the screen width.
 class OculusRiftCombiner: public StereoCombiner
 {
 private:
-       Mesh mesh;
-       Program shprog;
-       ProgramData left_shdata;
-       ProgramData right_shdata;
+       GL::Mesh mesh;
+       GL::Program shprog;
+       GL::ProgramData left_shdata;
+       GL::ProgramData right_shdata;
        float view_distance;
        float lens_separation;
        float eye_separation;
        float distortion[4];
+       float chromatic[4];
        float fill_factor;
 
 public:
@@ -33,6 +34,8 @@ public:
        void set_lens_separation(float);
        void set_eye_separation(float);
        void set_distortion(float = 1.0f, float = 0.0f, float = 0.0f, float = 0.0f);
+       void set_red_aberration(float = 1.0f, float = 0.0f);
+       void set_blue_aberration(float = 1.0f, float = 0.0f);
        void set_fill_factor(float);
 private:
        void update_parameters();
@@ -41,10 +44,10 @@ private:
        float undistort(float) const;
 
 public:
-       virtual void render(const Texture2D &, const Texture2D &) const;
+       virtual void render(const GL::Texture2D &, const GL::Texture2D &) const;
 };
 
-} // namespace GL
+} // namespace VR
 } // namespace Msp
 
 #endif