Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMal Duffin <malachyduffin@gmail.com>2007-09-29 22:51:01 +0400
committerMal Duffin <malachyduffin@gmail.com>2007-09-29 22:51:01 +0400
commit51b56a4d3f17e8cea35ba02132af0c2b893e1ff2 (patch)
tree721c5d1d3e015cb4432e22d4bf23f75d93319ad9 /source/gameengine/Rasterizer
parentae40a1d86e5917dbd23ac4bcdcbeca07a3505e0d (diff)
GE Patch by Hamed Zaghaghi - Adding Motion Blur to the Game Engine.
I reviewed the code, suggested an update ( initialising accumulation buffer ), and tested the resulting update successfully. It's great to see more GE developers!GE Patch by Hamed Zaghaghi to add motion blur to the GE ( using the accumulation buffer ). I reviewed code and tested, gave some feedback ( initialising accumulation buffer ) which was implemented straight away, and re-reviewed. It's great to have another GE coder on the team!
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r--source/gameengine/Rasterizer/RAS_IRasterizer.h9
-rw-r--r--source/gameengine/Rasterizer/RAS_IRenderTools.h5
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp16
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h20
4 files changed, 47 insertions, 3 deletions
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index 8ecc9e7ad05..560c6741260 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -48,7 +48,6 @@ class RAS_IPolyMaterial;
*/
class RAS_IRasterizer
{
-
public:
RAS_IRasterizer(RAS_ICanvas* canv){};
@@ -398,7 +397,15 @@ public:
virtual bool QueryLists(){return false;}
virtual bool QueryArrays(){return false;}
+
+ virtual void EnableMotionBlur(float motionblurvalue)=0;
+ virtual void DisableMotionBlur()=0;
+
+ virtual float GetMotionBlurValue()=0;
+ virtual int GetMotionBlurState()=0;
+ virtual void SetMotionBlurState(int newstate)=0;
};
#endif //__RAS_IRASTERIZER
+
diff --git a/source/gameengine/Rasterizer/RAS_IRenderTools.h b/source/gameengine/Rasterizer/RAS_IRenderTools.h
index fa3c777553d..114783b9a47 100644
--- a/source/gameengine/Rasterizer/RAS_IRenderTools.h
+++ b/source/gameengine/Rasterizer/RAS_IRenderTools.h
@@ -174,6 +174,10 @@ public:
struct RAS_LightObject* lightobject
);
+ virtual
+ void
+ MotionBlur(RAS_IRasterizer* rasterizer)=0;
+
virtual
class RAS_IPolyMaterial*
CreateBlenderPolyMaterial(
@@ -195,3 +199,4 @@ public:
#endif //__RAS_IRENDERTOOLS
+
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 53ec7a02e6f..85250fcd552 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -82,7 +82,9 @@ RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas)
m_setfocallength(false),
m_noOfScanlines(32),
m_useTang(false),
- m_materialCachingInfo(0)
+ m_materialCachingInfo(0),
+ m_motionblur(0),
+ m_motionblurvalue(-1.0)
{
m_viewmatrix.Identity();
@@ -1979,3 +1981,15 @@ void RAS_OpenGLRasterizer::SetPolygonOffset(float mult, float add)
else
glDisable(mode);
}
+
+void RAS_OpenGLRasterizer::EnableMotionBlur(float motionblurvalue)
+{
+ m_motionblur = 1;
+ m_motionblurvalue = motionblurvalue;
+}
+
+void RAS_OpenGLRasterizer::DisableMotionBlur()
+{
+ m_motionblur = 0;
+ m_motionblurvalue = -1.0;
+}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
index d95ced658ce..6728905aa57 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
@@ -91,6 +91,10 @@ class RAS_OpenGLRasterizer : public RAS_IRasterizer
int m_noOfScanlines;
bool InterlacedStereo() const;
+ //motion blur
+ int m_motionblur;
+ float m_motionblurvalue;
+
protected:
int m_drawingmode;
TexCoGen m_texco[RAS_MAX];
@@ -293,8 +297,22 @@ public:
const RAS_TexVert& v2,
const RAS_TexVert& v3,
const MT_Vector3 &no);
-
+
+ virtual void EnableMotionBlur(float motionblurvalue);
+ virtual void DisableMotionBlur();
+ virtual float GetMotionBlurValue(){return m_motionblurvalue;};
+ virtual int GetMotionBlurState(){return m_motionblur;};
+ virtual void SetMotionBlurState(int newstate)
+ {
+ if(newstate<0)
+ m_motionblur = 0;
+ else if(newstate>2)
+ m_motionblur = 2;
+ else
+ m_motionblur = newstate;
+ };
};
#endif //__RAS_OPENGLRASTERIZER
+