Revision: 16273
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16273
Author:   blendix
Date:     2008-08-27 21:12:08 +0200 (Wed, 27 Aug 2008)

Log Message:
-----------
Apricot Branch: bugfix for crash in shadow buffer rendering
combined with the shadow option for texfaces.

Modified Paths:
--------------
    branches/apricot/source/gameengine/Converter/BL_ArmatureObject.cpp
    branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.cpp
    branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.h
    branches/apricot/source/gameengine/Ketsji/KX_KetsjiEngine.cpp

Modified: branches/apricot/source/gameengine/Converter/BL_ArmatureObject.cpp
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_ArmatureObject.cpp  
2008-08-27 14:18:52 UTC (rev 16272)
+++ branches/apricot/source/gameengine/Converter/BL_ArmatureObject.cpp  
2008-08-27 19:12:08 UTC (rev 16273)
@@ -63,6 +63,7 @@
        /* we make a copy of blender object's pose, and then always swap it with
         * the original pose before calling into blender functions, to deal with
         * replica's or other objects using the same blender object */
+       m_pose = NULL;
        copy_pose(&m_pose, m_objArma->pose, 1 /* copy_constraint_channels_hack 
*/);
 }
 

Modified: branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.cpp
===================================================================
--- branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.cpp      
2008-08-27 14:18:52 UTC (rev 16272)
+++ branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.cpp      
2008-08-27 19:12:08 UTC (rev 16273)
@@ -20,16 +20,13 @@
 :
        mScene(scene),
        mMat(ma),
-       mGPUMat(NULL),
        mLightLayer(lightlayer)
 {
        mBlenderScene = scene->GetBlenderScene(); 
//GetSceneForName(scene->GetName());
        mBlendMode = GPU_BLEND_SOLID;
 
-       if(mMat) {
+       if(mMat)
                GPU_material_from_blender(mBlenderScene, mMat);
-               mGPUMat = mMat->gpumaterial;
-       }
 }
 
 BL_BlenderShader::~BL_BlenderShader()
@@ -55,9 +52,9 @@
 {
        if(VerifyShader()) {
                if(enable)
-                       GPU_material_bind(mGPUMat, mLightLayer, time);
+                       GPU_material_bind(mMat->gpumaterial, mLightLayer, time);
                else
-                       GPU_material_unbind(mGPUMat);
+                       GPU_material_unbind(mMat->gpumaterial);
        }
 }
 
@@ -69,7 +66,7 @@
        if(!VerifyShader())
                return enabled;
 
-       GPU_material_vertex_attributes(mGPUMat, &attribs);
+       GPU_material_vertex_attributes(mMat->gpumaterial, &attribs);
 
     for(i = 0; i < attribs.totlayer; i++)
                if(attribs.layer[i].glindex+1 > enabled)
@@ -92,7 +89,7 @@
                return;
 
        if(ras->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED) {
-               GPU_material_vertex_attributes(mGPUMat, &attribs);
+               GPU_material_vertex_attributes(mMat->gpumaterial, &attribs);
                attrib_num = GetAttribNum();
 
                ras->SetTexCoordNum(0);
@@ -132,7 +129,7 @@
 
        VerifyShader();
 
-       if(!mGPUMat || !GPU_material_bound(mGPUMat))
+       if(!mMat->gpumaterial || !GPU_material_bound(mMat->gpumaterial))
                return;
 
        MT_Matrix4x4 model;
@@ -150,9 +147,9 @@
        else
                obcol[0]= obcol[1]= obcol[2]= obcol[3]= 1.0f;
 
-       GPU_material_bind_uniforms(mGPUMat, obmat, viewmat, viewinvmat, obcol);
+       GPU_material_bind_uniforms(mMat->gpumaterial, obmat, viewmat, 
viewinvmat, obcol);
 
-       mBlendMode = GPU_material_blend_mode(mGPUMat, obcol);
+       mBlendMode = GPU_material_blend_mode(mMat->gpumaterial, obcol);
 }
 
 int BL_BlenderShader::GetBlendMode()
@@ -163,7 +160,7 @@
 bool BL_BlenderShader::Equals(BL_BlenderShader *blshader)
 {
        /* to avoid unneeded state switches */
-       return (blshader && mGPUMat == blshader->mGPUMat && mLightLayer == 
blshader->mLightLayer);
+       return (blshader && mMat == blshader->mMat && mLightLayer == 
blshader->mLightLayer);
 }
 
 // eof

Modified: branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.h
===================================================================
--- branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.h        
2008-08-27 14:18:52 UTC (rev 16272)
+++ branches/apricot/source/gameengine/Ketsji/BL_BlenderShader.h        
2008-08-27 19:12:08 UTC (rev 16273)
@@ -30,7 +30,6 @@
        KX_Scene                *mScene;
        struct Scene    *mBlenderScene;
        struct Material *mMat;
-       GPUMaterial             *mGPUMat;
        int                             mLightLayer;
        int                             mBlendMode;
 

Modified: branches/apricot/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- branches/apricot/source/gameengine/Ketsji/KX_KetsjiEngine.cpp       
2008-08-27 14:18:52 UTC (rev 16272)
+++ branches/apricot/source/gameengine/Ketsji/KX_KetsjiEngine.cpp       
2008-08-27 19:12:08 UTC (rev 16273)
@@ -905,6 +905,8 @@
        CListValue *objectlist = scene->GetObjectList();
        int i, drawmode;
 
+       m_rendertools->SetAuxilaryClientInfo(scene);
+
        for(i=0; i<objectlist->GetCount(); i++) {
                KX_GameObject *gameobj = 
(KX_GameObject*)objectlist->GetValue(i);
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to