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:
authorMitchell Stokes <mogurijin@gmail.com>2011-08-31 09:51:51 +0400
committerMitchell Stokes <mogurijin@gmail.com>2011-08-31 09:51:51 +0400
commitf63d049adc268bc71ac87c2b781e2f44f60da1f5 (patch)
tree59c19b08cf004d27485a89769662c115fd0c146c /source/gameengine/Rasterizer
parent471c005137540dd4c348c2f8e93146c0dff37a3f (diff)
BGE: Adding two new functions to bge.render to allow users to change the anisotropic filtering level used by textures:
* setAnisotropicFiltering(level) * getAnisotropicFiltering()
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r--source/gameengine/Rasterizer/RAS_IRasterizer.h3
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp13
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h5
3 files changed, 21 insertions, 0 deletions
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index 305e2bca756..c46ebf742a0 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -417,6 +417,9 @@ public:
virtual void SetBlendingMode(int blendmode)=0;
virtual void SetFrontFace(bool ccw)=0;
+
+ virtual void SetAnisotropicFiltering(short level)=0;
+ virtual short GetAnisotropicFiltering()=0;
#ifdef WITH_CXX_GUARDEDALLOC
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 23e0a50ed6f..50d034a5a5a 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -99,12 +99,16 @@ RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas)
hinterlace_mask[i] = (i&1)*0xFFFFFFFF;
}
hinterlace_mask[32] = 0;
+
+ m_prevafvalue = GPU_get_anisotropic();
}
RAS_OpenGLRasterizer::~RAS_OpenGLRasterizer()
{
+ // Restore the previous AF value
+ GPU_set_anisotropic(m_prevafvalue);
}
bool RAS_OpenGLRasterizer::Init()
@@ -1204,3 +1208,12 @@ void RAS_OpenGLRasterizer::SetFrontFace(bool ccw)
m_last_frontface = ccw;
}
+void RAS_OpenGLRasterizer::SetAnisotropicFiltering(short level)
+{
+ GPU_set_anisotropic((float)level);
+}
+
+short RAS_OpenGLRasterizer::GetAnisotropicFiltering()
+{
+ return (short)GPU_get_anisotropic();
+}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
index 54fab906049..61568df91eb 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
@@ -94,6 +94,8 @@ class RAS_OpenGLRasterizer : public RAS_IRasterizer
bool m_setfocallength;
int m_noOfScanlines;
+ short m_prevafvalue;
+
//motion blur
int m_motionblur;
float m_motionblurvalue;
@@ -294,6 +296,9 @@ public:
virtual void SetBlendingMode(int blendmode);
virtual void SetFrontFace(bool ccw);
+ virtual void SetAnisotropicFiltering(short level);
+ virtual short GetAnisotropicFiltering();
+
#ifdef WITH_CXX_GUARDEDALLOC
public: