[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39818] trunk/blender: BGE: Adding two new functions to bge. render to allow users to change the anisotropic filtering level used by textures :
Mitchell Stokes
mogurijin at gmail.com
Wed Aug 31 07:51:52 CEST 2011
Revision: 39818
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39818
Author: moguri
Date: 2011-08-31 05:51:51 +0000 (Wed, 31 Aug 2011)
Log Message:
-----------
BGE: Adding two new functions to bge.render to allow users to change the anisotropic filtering level used by textures:
* setAnisotropicFiltering(level)
* getAnisotropicFiltering()
Modified Paths:
--------------
trunk/blender/doc/python_api/rst/bge.render.rst
trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
Modified: trunk/blender/doc/python_api/rst/bge.render.rst
===================================================================
--- trunk/blender/doc/python_api/rst/bge.render.rst 2011-08-31 05:13:21 UTC (rev 39817)
+++ trunk/blender/doc/python_api/rst/bge.render.rst 2011-08-31 05:51:51 UTC (rev 39818)
@@ -215,7 +215,19 @@
:type setting: string (lights, shaders, shadows, ramps, nodes, extra_textures)
:rtype: boolean
+.. function:: setAnisotropicFiltering(level)
+ Set the anisotropic filtering level for textures.
+
+ :arg level: The new anisotropic filtering level to use
+ :type level: integer (must be one of 1, 2, 4, 8, 16)
+
+.. function:: getAnisotropicFiltering()
+
+ Get the anisotropic filtering level used for textures.
+
+ :rtype: integer (one of 1, 2, 4, 8, 16)
+
.. function:: drawLine(fromVec,toVec,color)
Draw a line in the 3D scene.
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2011-08-31 05:13:21 UTC (rev 39817)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2011-08-31 05:51:51 UTC (rev 39818)
@@ -1208,6 +1208,28 @@
return PyLong_FromSsize_t(flag);
}
+static PyObject* gPySetAnisotropicFiltering(PyObject*, PyObject* args)
+{
+ short level;
+
+ if (!PyArg_ParseTuple(args, "h:setAnisotropicFiltering", &level))
+ return NULL;
+
+ if (level != 1 && level != 2 && level != 4 && level != 8 && level != 16) {
+ PyErr_SetString(PyExc_ValueError, "Rasterizer.setAnisotropicFiltering(level): Expected value of 1, 2, 4, 8, or 16 for value");
+ return NULL;
+ }
+
+ gp_Rasterizer->SetAnisotropicFiltering(level);
+
+ Py_RETURN_NONE;
+}
+
+static PyObject* gPyGetAnisotropicFiltering(PyObject*, PyObject* args)
+{
+ return PyLong_FromLong(gp_Rasterizer->GetAnisotropicFiltering());
+}
+
static PyObject* gPyDrawLine(PyObject*, PyObject* args)
{
PyObject* ob_from;
@@ -1272,6 +1294,10 @@
METH_VARARGS, "set the state of a GLSL material setting"},
{"getGLSLMaterialSetting",(PyCFunction) gPyGetGLSLMaterialSetting,
METH_VARARGS, "get the state of a GLSL material setting"},
+ {"setAnisotropicFiltering", (PyCFunction) gPySetAnisotropicFiltering,
+ METH_VARARGS, "set the anisotropic filtering level (must be one of 1, 2, 4, 8, 16)"},
+ {"getAnisotropicFiltering", (PyCFunction) gPyGetAnisotropicFiltering,
+ METH_VARARGS, "get the anisotropic filtering level"},
{"drawLine", (PyCFunction) gPyDrawLine,
METH_VARARGS, "draw a line on the screen"},
{ NULL, (PyCFunction) NULL, 0, NULL }
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h 2011-08-31 05:13:21 UTC (rev 39817)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h 2011-08-31 05:51:51 UTC (rev 39818)
@@ -417,6 +417,9 @@
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
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp 2011-08-31 05:13:21 UTC (rev 39817)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp 2011-08-31 05:51:51 UTC (rev 39818)
@@ -99,12 +99,16 @@
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 @@
m_last_frontface = ccw;
}
+void RAS_OpenGLRasterizer::SetAnisotropicFiltering(short level)
+{
+ GPU_set_anisotropic((float)level);
+}
+
+short RAS_OpenGLRasterizer::GetAnisotropicFiltering()
+{
+ return (short)GPU_get_anisotropic();
+}
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h 2011-08-31 05:13:21 UTC (rev 39817)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h 2011-08-31 05:51:51 UTC (rev 39818)
@@ -94,6 +94,8 @@
bool m_setfocallength;
int m_noOfScanlines;
+ short m_prevafvalue;
+
//motion blur
int m_motionblur;
float m_motionblurvalue;
@@ -294,7 +296,10 @@
virtual void SetBlendingMode(int blendmode);
virtual void SetFrontFace(bool ccw);
+ virtual void SetAnisotropicFiltering(short level);
+ virtual short GetAnisotropicFiltering();
+
#ifdef WITH_CXX_GUARDEDALLOC
public:
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_OpenGLRasterizer"); }
More information about the Bf-blender-cvs
mailing list