]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
save old Model&ProjView
authorPeter Schaefer <schaeferpm@gmail.com>
Wed, 15 Jun 2016 09:52:32 +0000 (11:52 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Wed, 15 Jun 2016 09:52:32 +0000 (11:52 +0200)
Weave/Graphix/Graphix.h
Weave/Scene/Camera.cpp
Weave/Scene/Camera.h
Weave/Scene/Scene.cpp
Weave/Scene/SceneObject.cpp
Weave/Scene/SceneObject.h
Weave/Scene/Timestamp.cpp
Weave/Scene/Timestamp.h

index a004d980dc748dcc3b30b0cda671a6e23b5c9348..5311c91ce158d2a631c94ff9cbc3c789f06c424b 100644 (file)
@@ -8,11 +8,12 @@
 #define BIT(x) (1<<(x))
 
 enum Effects {
-       EF_NOTHING = 0,
+       EF_NONE = 0,
        EF_MOTION_BLUR_ACC = BIT(1),
        EF_TRANSPARENCY = BIT(2),
        EF_BLOOM = BIT(3),
-       EF_FRUSTUM_CULLING = BIT(4)
+       EF_FRUSTUM_CULLING = BIT(4),
+       EF_MOTION_BLUR = BIT(5)
 };
 
 class Graphix
index e091d77f413a19ef32e9cdb2bc9430f25d155a65..c297a02a25b91fbd8a25c0800e5e7aae583ee63b 100644 (file)
@@ -50,6 +50,11 @@ void Camera::useProjection() const
        Shader::getShader(SH_ACTIVE)->setUniformLocation("uInvProjection", glm::inverse(projection));
 }
 
+void Camera::useOldInvProjView() const
+{
+       Shader::getShader(SH_ACTIVE)->setUniformLocation("uOldInvProjView", oldInvProjView);
+}
+
 void Camera::updateView(const vec3& _target)
 {
 
@@ -118,6 +123,12 @@ void Camera::updateProjection(float _yFov, float _xyRatio, float _zNear, float _
        projection = perspective(yFov * (float)M_D2R, xyRatio, zNear, zFar);
 }
 
+
+void Camera::saveInvProjView()
+{
+       oldInvProjView = glm::inverse(projection*lookAt(cCenter, cPosition, cUpVector));
+}
+
 Camera::FC_stat Camera::frustum_sphere(vec3 _center, float _radius) const
 {
        FC_stat result = FC_INSIDE;
index cb046b0c58526f028842b7a60ecafefe7db43f64..e29231d764786d6965fe38d447b4f20c57c6fd19 100644 (file)
@@ -10,13 +10,11 @@ public:
        Camera(float yFov, float xyRatio, float zNear, float zFar);
        ~Camera();
 
-       
-
-       /*use Camera (bind View&Projection at current Shader) if unchanged*/
        void useCamera() const;
 
        void useView() const;
        void useProjection() const;
+       void useOldInvProjView() const;
 
        void updateView(const vec3& target);
        void updateView_pitch(float);
@@ -25,6 +23,8 @@ public:
        void updateProjection(float xyRatio);
        void updateProjection(float yFov, float xyRatio, float zNear, float zFar);
 
+       void saveInvProjView();
+
        vec3 getDirection() { return cFront;}
        vec3 getRight() { return cRight; }
 
@@ -52,6 +52,9 @@ protected:
        float pitch, yaw;
        float dist;
 
+       /*old Projektion * View -> invers */
+       mat4 oldInvProjView = mat4(1.f);
+
        /*Frustum*/
        float tan_alphaY;
        float Icos_alphaX, Icos_alphaY;
index 322122899049858a7897014e513fef3d1bb4759d..5f202c8cddad43bcd0687fd78b24dc2d47f515e4 100644 (file)
@@ -51,7 +51,7 @@ lookat(_lookat)
 
        currenttime = 0.0f;
        if (lookat != nullptr)
-               timestamps.push(Timestamp(0.0f, _lookat->getModelMat(), lookat->ySpeed));
+               timestamps.push(Timestamp(0.0f, _lookat->gModelMat(), lookat->ySpeed));
 
        bt_collision_configuration = new btDefaultCollisionConfiguration();
        bt_dispatcher = new btCollisionDispatcher(bt_collision_configuration);
@@ -156,7 +156,7 @@ void Scene::update(float deltaT)
 
                if (ceil((currenttime + deltaT) / timestep) > ceil(currenttime / timestep))
                {
-                       timestamps.push(Timestamp(currenttime, lookat->getModelMat(), lookat->ySpeed));
+                       timestamps.push(Timestamp(currenttime, lookat->gModelMat(), lookat->ySpeed));
                }
                currenttime += deltaT;
 
index f1684d2c1de3f3efa00bf43ecd44f119593e9fd5..b8d0ab52e93e0cf6c121664382f72dab82a2e7d7 100644 (file)
@@ -256,6 +256,7 @@ void SceneObject::draw(drawTarget _target) const
        
 }
 
+
 void SceneObject::bindShader(const Shader* _shader)
 {
        model->bindShader(_shader);
@@ -300,13 +301,19 @@ const Model * SceneObject::gModel() const
        return model;
 }
 
-vec3 SceneObject::getPosition() const
+const mat4& SceneObject::gModelMat() const
 {
-       return vec3(modelMat[3]);
+       return modelMat;
 }
 
-mat4 SceneObject::getModelMat(){
-       return modelMat;
+void SceneObject::saveModelMat()
+{
+       oldModelMat = modelMat;
+}
+
+vec3 SceneObject::getPosition() const
+{
+       return vec3(modelMat[3]);
 }
 
 void SceneObject::setModel(mat4& _modelMat){
index 4ab3f50353de8206085bff590e61bbfdc82419a7..2c59533825b6c79e96a609048e07f0b6b5d08018 100644 (file)
@@ -50,7 +50,6 @@ public:
 
        virtual vec3 getPosition() const;
 
-       virtual mat4 getModelMat();
        __declspec(deprecated)
        virtual void setModel(mat4&);
        __declspec(deprecated)
@@ -60,16 +59,16 @@ public:
 
        void setMargin(btScalar margin);
 
-       //virtual bool operator==(SceneObject);
-
        __declspec(deprecated)
        void setMainScene(Scene *);
 
        void setCollision(bool);
 
-       //const Shader * gShader() const;
        const Texture * gTexture() const;
        const Model * gModel() const;
+       const mat4 & gModelMat() const;
+
+       void saveModelMat();
 
        __declspec(deprecated)
        void setEnemy(bool isenemy);
@@ -94,7 +93,7 @@ public:
 protected:
 
        mat4 modelMat;
-       
+       mat4 oldModelMat;
 
        //const Shader * shader;
        Texture* texture;
index 974861bfea7e33201992ee663c91b52a7552d5e7..7e069d4617b407665a956bbd7266b85b2941a599 100644 (file)
@@ -1,6 +1,6 @@
 #include "Timestamp.h"
 
-Timestamp::Timestamp(float _time, mat4& _Playermodel, float _ySpeed) :
+Timestamp::Timestamp(float _time, const mat4& _Playermodel, float _ySpeed) :
 time(_time),
 Playermodel(_Playermodel),
 //CameraX(x),
index 26753e7c187e4abadbc81dc02e130defeb1c8abc..048027ba0fdb74615eb2f07f4559cec090d653ab 100644 (file)
@@ -5,7 +5,7 @@
 class Timestamp
 {
 public:
-       Timestamp(float _time, mat4& _Playermodel, float ySpeed);
+       Timestamp(float _time, const mat4& _Playermodel, float ySpeed);
 
        virtual ~Timestamp();