diff options
author | Mal Duffin <malachyduffin@gmail.com> | 2007-09-29 22:51:01 +0400 |
---|---|---|
committer | Mal Duffin <malachyduffin@gmail.com> | 2007-09-29 22:51:01 +0400 |
commit | 51b56a4d3f17e8cea35ba02132af0c2b893e1ff2 (patch) | |
tree | 721c5d1d3e015cb4432e22d4bf23f75d93319ad9 /source/gameengine/Rasterizer | |
parent | ae40a1d86e5917dbd23ac4bcdcbeca07a3505e0d (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')
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 + |