diff options
author | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-06-07 15:01:31 +0400 |
---|---|---|
committer | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-06-07 15:01:31 +0400 |
commit | b468bf726c50d3126fac2664164e1be0d6e209c5 (patch) | |
tree | 777c7beb1094a652dd75548904abeb6f39073a00 /source/gameengine/Rasterizer | |
parent | 7d840a256e0094c159b2fc60bc3395b79f29e0cf (diff) |
Lighting updates:
Added specular after texture.
Added Light properties: Negative, No Diffuse, No Specular, Quad, Quad2
Diffstat (limited to 'source/gameengine/Rasterizer')
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))] |