Fix for [#31848] "BGE: Commit r47628 breaks custom GLSL material shaders" reported...
authorMitchell Stokes <mogurijin@gmail.com>
Sun, 17 Jun 2012 07:59:22 +0000 (07:59 +0000)
committerMitchell Stokes <mogurijin@gmail.com>
Sun, 17 Jun 2012 07:59:22 +0000 (07:59 +0000)
Custom shaders is a case where the BGE can be using GLSL materials and still need to upload textures without bf_gpu. I tweaked some logic to handle this special case and added more comments.

source/gameengine/Ketsji/KX_BlenderMaterial.cpp

index 939f069..5459ebe 100644 (file)
@@ -176,7 +176,8 @@ void KX_BlenderMaterial::OnConstruction(int layer)
                                                 mMaterial->matname<< ", image will not be available");
                } 
                // If we're using glsl materials, the textures are handled by bf_gpu, so don't load them twice!
-               else if (!mMaterial->glslmat) {
+               // However, if we're using a custom shader, then we still need to load the textures ourselves.
+               else if (!mMaterial->glslmat || mBlenderShader) {
                        if ( mMaterial->img[i] ) {
                                if ( ! mTextures[i].InitFromImage(i, mMaterial->img[i], (mMaterial->flag[i] &MIPMAP)!=0 ))
                                        spit("unable to initialize image("<<i<<") in "<<