diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-04-11 09:57:30 +0400 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-04-11 09:57:30 +0400 |
commit | 8dbe14b70b427ff449e1f4a7bb4cff989100f629 (patch) | |
tree | 3b3269edd4aa45acf07bf3fdb75ffcac9f2bb3ab /source/gameengine/Rasterizer | |
parent | e9d4518c3aae5850ec6c3ae925411c903daee431 (diff) |
applied Charlies patch, reverted some GLSL shader stuff, improved penetration depth estimate.
Diffstat (limited to 'source/gameengine/Rasterizer')
8 files changed, 19 insertions, 9 deletions
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp index 091e78c7b28..999a79546a1 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp +++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp @@ -142,7 +142,8 @@ void RAS_BucketManager::Renderbuckets( for (bucket = m_MaterialBuckets.begin(); bucket != m_MaterialBuckets.end(); ++bucket) { - if((*bucket)->GetPolyMaterial()->IsZSort()) + RAS_IPolyMaterial *tmp = (*bucket)->GetPolyMaterial(); + if(tmp->IsZSort() || tmp->GetFlag() &RAS_FORCEALPHA ) rasty->SetAlphaTest(true); else rasty->SetAlphaTest(false); diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h index 6eef1647167..c02ff7c3566 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h @@ -54,7 +54,8 @@ enum MaterialProps RAS_GLSHADER =64, RAS_AUTOGEN =128, RAS_NORMAL =256, - RAS_DEFMULTI =512 + RAS_DEFMULTI =512, + RAS_FORCEALPHA =1024 }; /** diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h index 66e0fe0678d..98a4c15b740 100644 --- a/source/gameengine/Rasterizer/RAS_IRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h @@ -392,6 +392,7 @@ public: virtual void DrawDebugLine(const MT_Vector3& from,const MT_Vector3& to,const MT_Vector3& color)=0; virtual void SetTexCoords(TexCoGen coords, int unit) = 0; + virtual void SetAttrib(int type) = 0; virtual void GetViewMatrix(MT_Matrix4x4 &mat) const = 0; virtual bool QueryLists(){return false;} diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp index 9e06fcda299..aba20e1a37b 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp @@ -406,7 +406,6 @@ PFNGLGETACTIVEATTRIBARBPROC blGetActiveAttribARB; PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB; #endif -#if 0 // TODO: GL_ARB_vertex/fragment_program support #ifdef GL_ARB_vertex_program PFNGLVERTEXATTRIB1FARBPROC blVertexAttrib1fARB; PFNGLVERTEXATTRIB1FVARBPROC blVertexAttrib1fvARB; @@ -421,7 +420,6 @@ PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB; PFNGLGETVERTEXATTRIBFVARBPROC blGetVertexAttribfvARB; PFNGLGETVERTEXATTRIBIVARBPROC blGetVertexAttribivARB; #endif -#endif #ifdef GL_EXT_compiled_vertex_array PFNGLLOCKARRAYSEXTPROC blLockArraysEXT; @@ -612,7 +610,6 @@ static void LinkExtensions() } #endif -#if 0 // TODO: GL_ARB_vertex/fragment_program support #if defined(GL_ARB_vertex_program) if (QueryExtension("GL_ARB_vertex_program")) { @@ -637,7 +634,6 @@ static void LinkExtensions() } } #endif -#endif #ifdef GL_ARB_depth_texture diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h index 9e6df30708a..ff1be63f174 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h @@ -510,7 +510,6 @@ extern PFNGLGETACTIVEATTRIBARBPROC blGetActiveAttribARB; extern PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB; #endif -#if 0 // TODO: GL_ARB_vertex/fragment_program support #ifdef GL_ARB_vertex_program extern PFNGLVERTEXATTRIB1FARBPROC blVertexAttrib1fARB; extern PFNGLVERTEXATTRIB1FVARBPROC blVertexAttrib1fvARB; @@ -525,7 +524,6 @@ extern PFNGLGETVERTEXATTRIBDVARBPROC blGetVertexAttribdvARB; extern PFNGLGETVERTEXATTRIBFVARBPROC blGetVertexAttribfvARB; extern PFNGLGETVERTEXATTRIBIVARBPROC blGetVertexAttribivARB; #endif -#endif #ifdef GL_EXT_compiled_vertex_array extern PFNGLLOCKARRAYSEXTPROC blLockArraysEXT; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index 8f7876f66a1..5006506688a 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -81,6 +81,7 @@ RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas) m_focallength(0.0), m_setfocallength(false), m_noOfScanlines(32), + m_useTang(false), m_materialCachingInfo(0) { m_viewmatrix.Identity(); @@ -1208,6 +1209,10 @@ void RAS_OpenGLRasterizer::SetTexCoords(TexCoGen coords,int unit) m_texco[unit] = coords; } +void RAS_OpenGLRasterizer::SetAttrib(int type) +{ + if(type == RAS_TEXTANGENT) m_useTang=true; +} void RAS_OpenGLRasterizer::TexCoord(const RAS_TexVert &tv, int enabled) { @@ -1242,6 +1247,12 @@ void RAS_OpenGLRasterizer::TexCoord(const RAS_TexVert &tv, int enabled) } } #endif + +#ifdef GL_ARB_vertex_program + if(m_useTang && bgl::RAS_EXT_support._ARB_vertex_program) + bgl::blVertexAttrib4fvARB(1/*tangent*/, tv.getTangent()); +#endif + } void RAS_OpenGLRasterizer::Tangent( const RAS_TexVert& v1, const RAS_TexVert& v2, diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h index b00832b9738..d95ced658ce 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h @@ -94,6 +94,7 @@ class RAS_OpenGLRasterizer : public RAS_IRasterizer protected: int m_drawingmode; TexCoGen m_texco[RAS_MAX]; + bool m_useTang; /** Stores the caching information for the last material activated. */ RAS_IPolyMaterial::TCachingInfo m_materialCachingInfo; @@ -284,6 +285,7 @@ public: std::vector <OglDebugLine> m_debugLines; virtual void SetTexCoords(TexCoGen coords,int enabled); + virtual void SetAttrib(int type); void TexCoord(const RAS_TexVert &tv, int unit); virtual void GetViewMatrix(MT_Matrix4x4 &mat) const; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript index 580897f307c..039bc3db8df 100755 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript @@ -1,7 +1,7 @@ #!/usr/bin/python Import ('env') -sources = env.Glob('*.cpp') #'RAS_GLExtensionManager.cpp RAS_OpenGLRasterizer.cpp RAS_VAOpenGLRasterizer.cpp' +sources = env.Glob('*.cpp') #'RAS_GLExtensionManager.cpp RAS_ListRasterizer.cpp RAS_OpenGLRasterizer.cpp RAS_VAOpenGLRasterizer.cpp' incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/Rasterizer' incs += ' ' + env['BF_OPENGL_INC'] |