[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42544] trunk/blender/source: verify existence of dm

Morten Mikkelsen mikkelsen7 at gmail.com
Sat Dec 10 02:00:17 CET 2011


Revision: 42544
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42544
Author:   mmikkelsen
Date:     2011-12-10 01:00:12 +0000 (Sat, 10 Dec 2011)
Log Message:
-----------
verify existence of dm

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/intern/gpu_draw.c
    trunk/blender/source/blender/render/intern/source/render_texture.c
    trunk/blender/source/gameengine/Ketsji/BL_BlenderShader.cpp

Modified: trunk/blender/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_draw.c	2011-12-09 23:26:06 UTC (rev 42543)
+++ trunk/blender/source/blender/gpu/intern/gpu_draw.c	2011-12-10 01:00:12 UTC (rev 42544)
@@ -1156,11 +1156,14 @@
 		if(gattribs && GMS.gmatbuf[nr]) {
 			/* bind glsl material and get attributes */
 			Material *mat = GMS.gmatbuf[nr];
+			float auto_bump_scale;
 
 			gpumat = GPU_material_from_blender(GMS.gscene, mat);
 			GPU_material_vertex_attributes(gpumat, gattribs);
 			GPU_material_bind(gpumat, GMS.gob->lay, GMS.glay, 1.0, !(GMS.gob->mode & OB_MODE_TEXTURE_PAINT));
-			GPU_material_bind_uniforms(gpumat, GMS.gob->obmat, GMS.gviewmat, GMS.gviewinv, GMS.gob->col, GMS.gob->derivedFinal->auto_bump_scale);
+
+			auto_bump_scale = GMS.gob->derivedFinal!=0 ? GMS.gob->derivedFinal->auto_bump_scale : 1.0f;
+			GPU_material_bind_uniforms(gpumat, GMS.gob->obmat, GMS.gviewmat, GMS.gviewinv, GMS.gob->col, auto_bump_scale);
 			GMS.gboundmat= mat;
 
 			/* for glsl use alpha blend mode, unless it's set to solid and

Modified: trunk/blender/source/blender/render/intern/source/render_texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/render_texture.c	2011-12-09 23:26:06 UTC (rev 42543)
+++ trunk/blender/source/blender/render/intern/source/render_texture.c	2011-12-10 01:00:12 UTC (rev 42544)
@@ -1960,13 +1960,16 @@
 	}
 	
 	if(found_deriv_map) {
-		float dBdu, dBdv, auto_bump;
+		float dBdu, dBdv, auto_bump = 1.0f;
 		float s = 1;		// negate this if flipped texture coordinate
 		texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt);
 		rgbnor = multitex_mtex(shi, mtex, texvec, dxt, dyt, texres);
 
-		auto_bump = shi->obr->ob->derivedFinal->auto_bump_scale;
-		auto_bump /= sqrtf((float) (dimx*dimy));
+		if(shi->obr->ob->derivedFinal)
+		{
+			auto_bump = shi->obr->ob->derivedFinal->auto_bump_scale;
+			auto_bump /= sqrtf((float) (dimx*dimy));
+		}
 		
 		// this variant using a derivative map is described here
 		// http://mmikkelsen3d.blogspot.com/2011/07/derivative-maps.html

Modified: trunk/blender/source/gameengine/Ketsji/BL_BlenderShader.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/BL_BlenderShader.cpp	2011-12-09 23:26:06 UTC (rev 42543)
+++ trunk/blender/source/gameengine/Ketsji/BL_BlenderShader.cpp	2011-12-10 01:00:12 UTC (rev 42544)
@@ -147,7 +147,8 @@
 	else
 		obcol[0]= obcol[1]= obcol[2]= obcol[3]= 1.0f;
 
-	GPU_material_bind_uniforms(gpumat, obmat, viewmat, viewinvmat, obcol, ms.m_pDerivedMesh->auto_bump_scale);
+	float auto_bump_scale = ms.m_pDerivedMesh!=0 ? ms.m_pDerivedMesh->auto_bump_scale : 1.0f;
+	GPU_material_bind_uniforms(gpumat, obmat, viewmat, viewinvmat, obcol, auto_bump_scale);
 
 	mAlphaBlend = GPU_material_alpha_blend(gpumat, obcol);
 }




More information about the Bf-blender-cvs mailing list