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:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-07 15:01:31 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-07 15:01:31 +0400
commitb468bf726c50d3126fac2664164e1be0d6e209c5 (patch)
tree777c7beb1094a652dd75548904abeb6f39073a00 /source/gameengine/Rasterizer
parent7d840a256e0094c159b2fc60bc3395b79f29e0cf (diff)
Lighting updates:
Added specular after texture. Added Light properties: Negative, No Diffuse, No Specular, Quad, Quad2
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r--source/gameengine/Rasterizer/RAS_LightObject.h5
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp32
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h7
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp5
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/mkglext.py8
5 files changed, 50 insertions, 7 deletions
diff --git a/source/gameengine/Rasterizer/RAS_LightObject.h b/source/gameengine/Rasterizer/RAS_LightObject.h
index 0c313df80c8..2c22a588d76 100644
--- a/source/gameengine/Rasterizer/RAS_LightObject.h
+++ b/source/gameengine/Rasterizer/RAS_LightObject.h
@@ -42,7 +42,7 @@ struct RAS_LightObject
LIGHT_NORMAL
};
bool m_modified;
- int m_layer;
+ int m_layer;
float m_energy;
float m_distance;
@@ -52,12 +52,15 @@ struct RAS_LightObject
float m_blue;
float m_att1;
+ float m_att2;
float m_spotsize;
float m_spotblend;
LightType m_type;
MT_CmMatrix4x4* m_worldmatrix;
+ bool m_nodiffuse;
+ bool m_nospecular;
};
#endif //__RAS_LIGHTOBJECT_H
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
index 2c7112e2e3c..26727b1d1e4 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
@@ -265,7 +265,10 @@ bool QueryVersion(int major, int minor)
if (gl_major == 0)
{
- STR_String gl_version = STR_String((const char *) glGetString(GL_VERSION));
+ const char *gl_version_str = (const char *) glGetString(GL_VERSION);
+ if (!gl_version_str)
+ return false;
+ STR_String gl_version = STR_String(gl_version_str);
int i = gl_version.Find('.');
gl_major = gl_version.Left(i).ToInt();
gl_minor = gl_version.Mid(i+1, gl_version.FindOneOf(". ", i+1) - i - 1).ToInt();
@@ -308,6 +311,11 @@ to their source. Cunning like a weasel.
******************************************************************************/
+#if defined(GL_ATI_pn_triangles)
+PFNGLPNTRIANGLESIATIPROC glPNTrianglesiATI;
+PFNGLPNTRIANGLESFATIPROC glPNTrianglesfATI;
+#endif
+
} // namespace bgl
@@ -327,6 +335,28 @@ static void LinkExtensions()
static bool doDebugMessages = m_debug;
extensions = STR_String((const char *) glGetString(GL_EXTENSIONS)).Explode(' ');
+#if defined(GL_ATI_pn_triangles)
+ if (QueryExtension("GL_ATI_pn_triangles"))
+ {
+ glPNTrianglesiATI = reinterpret_cast<PFNGLPNTRIANGLESIATIPROC>(bglGetProcAddress((const GLubyte *) "glPNTrianglesiATI"));
+ glPNTrianglesfATI = reinterpret_cast<PFNGLPNTRIANGLESFATIPROC>(bglGetProcAddress((const GLubyte *) "glPNTrianglesfATI"));
+ if (glPNTrianglesiATI && glPNTrianglesfATI) {
+ EnableExtension(_GL_ATI_pn_triangles);
+ if (doDebugMessages)
+ std::cout << "Enabled GL_ATI_pn_triangles" << std::endl;
+ } else {
+ std::cout << "ERROR: GL_ATI_pn_triangles implementation is broken!" << std::endl;
+ }
+ }
+#endif
+
+ if (QueryExtension("GL_EXT_separate_specular_color"))
+ {
+ EnableExtension(_GL_EXT_separate_specular_color);
+ if (doDebugMessages)
+ std::cout << "Detected GL_EXT_separate_specular_color" << std::endl;
+ }
+
doDebugMessages = false;
}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
index 50a67ee7d6b..e43912ec2a5 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
@@ -38,6 +38,7 @@
#include <GL/gl.h>
#endif
+#include "EXT_separate_specular_color.h"
namespace bgl
{
@@ -363,8 +364,12 @@ namespace bgl
*/
void InitExtensions(int debug);
-
+#if defined(GL_ATI_pn_triangles)
+extern PFNGLPNTRIANGLESIATIPROC glPNTrianglesiATI;
+extern PFNGLPNTRIANGLESFATIPROC glPNTrianglesfATI;
+#endif
} /* namespace bgl */
+
#endif /* __RAS_GLEXTENSIONMANAGER_H__ */
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 3e93a7a74b9..4cf930072c5 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -48,6 +48,8 @@
#include "MT_CmMatrix4x4.h"
#include "RAS_IRenderTools.h" // rendering text
+#include "RAS_GLExtensionManager.h"
+
RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas)
:RAS_IRasterizer(canvas),
@@ -126,6 +128,7 @@ static void Myinit_gl_stuff(void)
}
glPolygonStipple(patc);
+
}
@@ -264,6 +267,8 @@ void RAS_OpenGLRasterizer::Exit()
glBlendFunc(GL_ONE, GL_ZERO);
glDisable(GL_LIGHTING);
+ if (bgl::QueryExtension(bgl::_GL_EXT_separate_specular_color) || bgl::QueryVersion(1, 2))
+ glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
EndFrame();
}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/mkglext.py b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/mkglext.py
index 912b4785da1..8e64ecd1741 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/mkglext.py
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/mkglext.py
@@ -468,7 +468,7 @@ for i in glext_h:
fns = []
fnlist = []
if (ext != ""):
- line = re.search('.*(gl.*) \(.*\);', i)
+ line = re.search('.* (gl.*) \(.*\);', i)
if (line):
fns += [line.group(1)]
line = re.search('.*PFN(.*)PROC.*', i)
@@ -501,7 +501,7 @@ for i in glext_h:
fns = []
fnlist = []
if (ext != ""):
- line = re.search('.*(gl.*) \(.*\);', i)
+ line = re.search('.* (gl.*) \(.*\);', i)
if (line):
fns += [line.group(1)]
line = re.search('.*PFN(.*)PROC.*', i)
@@ -534,7 +534,7 @@ for i in glext_h:
fns = []
fnlist = []
if (ext != ""):
- line = re.search('.*(gl.*) \(.*\);', i)
+ line = re.search('.* (gl.*) \(.*\);', i)
if (line):
fns += [line.group(1)]
line = re.search('.*PFN(.*)PROC.*', i)
@@ -578,7 +578,7 @@ for i in glext_h:
if (line):
defines += [(line.group(1), line.group(2))]
- line = re.search('(.*)(gl.*)(\(.*\));', i) # GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
+ line = re.search('(.* )(gl.*)(\(.*\));', i) # GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
if (line):
fns += [(line.group(1), line.group(2), line.group(3))]