[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34570] trunk/blender/source/blender: bugfix #25867

M.G. Kishalmi lmg at kishalmi.net
Sun Jan 30 17:24:24 CET 2011


Revision: 34570
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34570
Author:   lmg
Date:     2011-01-30 16:24:23 +0000 (Sun, 30 Jan 2011)
Log Message:
-----------
bugfix #25867

fix for objectspace bumpmapping

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c

Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c	2011-01-30 16:19:08 UTC (rev 34569)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c	2011-01-30 16:24:23 UTC (rev 34570)
@@ -630,8 +630,7 @@
 	mtex->size[1]= 1.0;
 	mtex->size[2]= 1.0;
 	mtex->tex= 0;
-	mtex->texflag= MTEX_3TAP_BUMP;
-	mtex->texflag= MTEX_BUMP_OBJECTSPACE;
+	mtex->texflag= MTEX_3TAP_BUMP | MTEX_BUMP_OBJECTSPACE;
 	mtex->colormodel= 0;
 	mtex->r= 1.0;
 	mtex->g= 0.0;

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2011-01-30 16:19:08 UTC (rev 34569)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2011-01-30 16:24:23 UTC (rev 34570)
@@ -40,8 +40,6 @@
 #include "DNA_scene_types.h"
 #include "DNA_world_types.h"
 
-#include "IMB_imbuf_types.h"
-
 #include "BLI_math.h"
 #include "BLI_blenlib.h"
 #include "BLI_utildefines.h"
@@ -56,6 +54,7 @@
 #include "BKE_scene.h"
 #include "BKE_texture.h"
 
+#include "IMB_imbuf_types.h"
 
 #include "GPU_extensions.h"
 #include "GPU_material.h"
@@ -1041,6 +1040,19 @@
 							newnor = tnor;
 						
 						norfac = MIN2(fabsf(mtex->norfac), 1.0);
+						
+						if(norfac == 1.0f && !GPU_link_changed(stencil)) {
+							shi->vn = newnor;
+						}
+						else {
+							tnorfac = GPU_uniform(&norfac);
+	
+							if(GPU_link_changed(stencil))
+								GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac);
+	
+							GPU_link(mat, "mtex_blend_normal", tnorfac, shi->vn, newnor, &shi->vn);
+						}
+						
 					} else if( mtex->texflag & (MTEX_3TAP_BUMP|MTEX_5TAP_BUMP)) {
 						/* ntap bumpmap image */
 						float hScale = 0.1f; // compatibility adjustment factor for all bumpspace types
@@ -1050,6 +1062,12 @@
 						GPUNodeLink *vR1, *vR2, *fDet;
 						GPUNodeLink *dBs, *dBt, *vN;
 						
+						norfac = hScale * mtex->norfac;
+						tnorfac = GPU_uniform(&norfac);
+						
+						if(GPU_link_changed(stencil))
+							GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac);
+						
 						if( mtex->texflag & MTEX_BUMP_OBJECTSPACE )
 							GPU_link( mat, "mtex_bump_init_objspace",
 									  surf_pos, shi->vn, 
@@ -1062,53 +1080,28 @@
 						
 						if( mtex->texflag & MTEX_3TAP_BUMP )
 							GPU_link( mat, "mtex_bump_tap3", 
-							          texco, GPU_image(tex->ima, &tex->iuser), GPU_uniform(&hScale),
+							          texco, GPU_image(tex->ima, &tex->iuser), tnorfac,
 							          &dBs, &dBt );
 						else
 							GPU_link( mat, "mtex_bump_tap5", 
-							          texco, GPU_image(tex->ima, &tex->iuser), GPU_uniform(&hScale),
+							          texco, GPU_image(tex->ima, &tex->iuser), tnorfac,
 							          &dBs, &dBt );
 						
 						if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) {
 							float ima_x= 512.0f, ima_y= 512.f;		// prevent calling textureSize, glsl 1.3 only
 							ImBuf *ibuf= BKE_image_get_ibuf(tex->ima, &tex->iuser);
-							
-							if(ibuf) {
+							if(ibuf) 
 								ima_x= ibuf->x; ima_y= ibuf->y;
-							}
 							
 							GPU_link( mat, "mtex_bump_apply_texspace",
 							          fDet, dBs, dBt, vR1, vR2, vN, GPU_image(tex->ima, &tex->iuser), texco, GPU_uniform(&fScaleTex),
-									  GPU_uniform(&ima_x), GPU_uniform(&ima_y), &tnor );
-						}
-						else if( mtex->texflag & MTEX_BUMP_OBJECTSPACE )
-							GPU_link( mat, "mtex_bump_apply_objspace",
-							          fDet, dBs, dBt, vR1, vR2, vN, GPU_builtin(GPU_INVERSE_VIEW_MATRIX), GPU_builtin(GPU_INVERSE_OBJECT_MATRIX), 
-							          &tnor, &vR1, &vR2, &vN );
-						else
-							GPU_link( mat, "mtex_bump_apply_viewspace",
+							          GPU_uniform(&ima_x), GPU_uniform(&ima_y), &shi->vn );
+						} else
+							GPU_link( mat, "mtex_bump_apply",
 							          fDet, dBs, dBt, vR1, vR2, vN,
-							          &tnor );
+							          &shi->vn );
 						
-						newnor = tnor;
-						norfac = mtex->norfac;
-					} else {
-						/* original or compatible bump - don't have shaders */
-						newnor = shi->vn;
-						norfac = mtex->norfac;
 					}
-					
-					if(norfac == 1.0f && !GPU_link_changed(stencil)) {
-						shi->vn = newnor;
-					}
-					else {
-						tnorfac = GPU_uniform(&norfac);
-
-						if(GPU_link_changed(stencil))
-							GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac);
-
-						GPU_link(mat, "mtex_blend_normal", tnorfac, shi->vn, newnor, &shi->vn);
-					}
 				}
 				
 				GPU_link(mat, "vec_math_negate", shi->vn, &orn);

Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl	2011-01-30 16:19:08 UTC (rev 34569)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl	2011-01-30 16:24:23 UTC (rev 34570)
@@ -1185,24 +1185,13 @@
 	dBt = hScale * (Hu - Hd);
 }
 
-void mtex_bump_apply_viewspace( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN,
+void mtex_bump_apply( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN,
                       out vec3 perturbed_norm ) 
 {
 	vec3 vSurfGrad = sign(fDet) * ( dBs * vR1 + dBt * vR2 );
 	perturbed_norm = normalize( abs(fDet) * vN - vSurfGrad );
 	
 }
-void mtex_bump_apply_objspace( float fDet, float dBs, float dBt, vec3 vR1in, vec3 vR2in, vec3 vNin,
-                                mat4 mViewInv, mat4 mObjInv,
-                      out vec3 perturbed_norm, out vec3 vR1, out vec3 vR2, out vec3 vN ) 
-{
-	vec3 vSurfGrad = sign(fDet) * ( dBs * vR1in + dBt * vR2in );
-	perturbed_norm = normalize( abs(fDet) * vNin - vSurfGrad );	
-	
-	vR1= vR1in;
-	vR2= vR2in;
-	vN= vNin;
-}
 
 void mtex_bump_apply_texspace( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN,
                                sampler2D ima, vec3 texco, float scale, float ima_x, float ima_y, out vec3 perturbed_norm ) 

Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c	2011-01-30 16:19:08 UTC (rev 34569)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c	2011-01-30 16:24:23 UTC (rev 34570)
@@ -1,819 +1,805 @@
 /* DataToC output of file <gpu_shader_material_glsl> */
 
-int datatoc_gpu_shader_material_glsl_size= 37866;
+int datatoc_gpu_shader_material_glsl_size= 37438;
 char datatoc_gpu_shader_material_glsl[]= {
- 10,102,108,111, 97,116, 32,101,120,112,
- 95, 98,108,101,110,100,101,114, 40,102,108,111, 97,116, 32,102, 41, 10,123, 10,  9,114,101,116,117,114,110, 32,112,111,119, 40,
- 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98, 95,116,
-111, 95,104,115,118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41,
- 10,123, 10,  9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, 99,
-100,101,108,116, 97, 59, 10,  9,118,101, 99, 51, 32, 99, 59, 10, 10,  9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, 98,
- 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10,  9, 99,109,105,110,
- 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50,
- 93, 41, 41, 59, 10,  9, 99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10,  9,118, 32, 61, 32,
- 99,109, 97,120, 59, 10,  9,105,102, 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10,  9,  9,115, 32, 61, 32, 99,100,101,108,
-116, 97, 47, 99,109, 97,120, 59, 10,  9,101,108,115,101, 32,123, 10,  9,  9,115, 32, 61, 32, 48, 46, 48, 59, 10,  9,  9,104, 32,
- 61, 32, 48, 46, 48, 59, 10,  9,125, 10, 10,  9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,104, 32,
- 61, 32, 48, 46, 48, 59, 10,  9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109,
- 97,120, 44, 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116,
- 97, 59, 10, 10,  9,  9,105,102, 32, 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32,
- 45, 32, 99, 91, 49, 93, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,
-104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10,  9,  9,101,108,115,101, 32,104,
- 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10,  9,  9,104, 32, 47, 61, 32, 54, 46,
- 48, 59, 10, 10,  9,  9,105,102, 32, 40,104, 60, 48, 46, 48, 41, 10,  9,  9,  9,104, 32, 43, 61, 32, 49, 46, 48, 59, 10,  9,125,
- 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, 41,
- 59, 10,125, 10, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,
-117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32,112,
- 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 10,  9,118,101, 99, 51, 32,114,103, 98, 59, 10, 10,  9,104, 32,
- 61, 32,104,115,118, 91, 48, 93, 59, 10,  9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10,  9,118, 32, 61, 32,104,115,118, 91,
- 50, 93, 59, 10, 10,  9,105,102, 40,115, 61, 61, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,
-118, 44, 32,118, 44, 32,118, 41, 59, 10,  9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9,105,102, 40,104, 61, 61, 49, 46, 48,
- 41, 10,  9,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,  9, 10,  9,  9,104, 32, 42, 61, 32, 54, 46, 48, 59, 10,  9,  9,105,
- 32, 61, 32,102,108,111,111,114, 40,104, 41, 59, 10,  9,  9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10,  9,  9,114,103, 98, 32,
- 61, 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,102, 41, 59, 10,  9,  9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list