[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40446] trunk/blender/source/blender: addendum to prev bugfix on texture space bump

Morten Mikkelsen mikkelsen7 at gmail.com
Thu Sep 22 07:36:54 CEST 2011


Revision: 40446
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40446
Author:   mmikkelsen
Date:     2011-09-22 05:36:52 +0000 (Thu, 22 Sep 2011)
Log Message:
-----------
addendum to prev bugfix on texture space bump

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/render/intern/source/render_texture.c

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c	2011-09-22 05:05:26 UTC (rev 40445)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c	2011-09-22 05:36:52 UTC (rev 40446)
@@ -1091,6 +1091,9 @@
 						float ima_x, ima_y;
 						float hScale = 0.1f; // compatibility adjustment factor for all bumpspace types
 						float hScaleTex = 13.0f; // factor for scaling texspace bumps
+
+						float imag_tspace_dimension_x = 1024.0f;		// only used for texture space variant
+						float aspect = 1.0f;
 						
 						GPUNodeLink *surf_pos = GPU_builtin(GPU_VIEW_POSITION);
 						GPUNodeLink *vR1, *vR2;
@@ -1154,6 +1157,7 @@
 							if(ibuf) {
 								ima_x= ibuf->x;
 								ima_y= ibuf->y;
+								aspect = ((float) ima_y) / ima_x;
 							}
 						}
 						
@@ -1174,10 +1178,11 @@
 						
 						
 						if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) {
-							
+							float imag_tspace_dimension_y = aspect*imag_tspace_dimension_x;
 							GPU_link( mat, "mtex_bump_apply_texspace",
 							          fDet, dBs, dBt, vR1, vR2, 
-							          GPU_image(tex->ima, &tex->iuser), texco, GPU_uniform(&ima_x), GPU_uniform(&ima_y), vNacc,
+							          GPU_image(tex->ima, &tex->iuser), texco,
+									  GPU_uniform(&imag_tspace_dimension_x), GPU_uniform(&imag_tspace_dimension_y), vNacc,
 							          &vNacc, &shi->vn );
 						} else
 							GPU_link( mat, "mtex_bump_apply",

Modified: trunk/blender/source/blender/render/intern/source/render_texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/render_texture.c	2011-09-22 05:05:26 UTC (rev 40445)
+++ trunk/blender/source/blender/render/intern/source/render_texture.c	2011-09-22 05:36:52 UTC (rev 40446)
@@ -1906,6 +1906,8 @@
 	const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0));
 	float Hscale = Tnor*mtex->norfac;
 	int dimx=512, dimy=512;
+	const int imag_tspace_dimension_x = 1024;		// only used for texture space variant
+	float aspect = 1.0f;
 
 	// 2 channels for 2D texture and 3 for 3D textures.
 	const int nr_channels = (mtex->texco == TEXCO_UV)? 2 : 3;
@@ -1938,6 +1940,7 @@
 		if (ibuf) {
 			dimx = ibuf->x;
 			dimy = ibuf->y;
+			aspect = ((float) dimy) / dimx;
 		}
 	}
 	
@@ -2111,12 +2114,13 @@
 		if(tex->ima) {
 			// crazy hack solution that gives results similar to normal mapping - part 2
 			float vec[2];
+			const float imag_tspace_dimension_y = aspect*imag_tspace_dimension_x;
 			
-			vec[0] = dimx*dxt[0];
-			vec[1] = dimy*dxt[1];
+			vec[0] = imag_tspace_dimension_x*dxt[0];
+			vec[1] = imag_tspace_dimension_y*dxt[1];
 			dHdx *= 1.0f/len_v2(vec);
-			vec[0] = dimx*dyt[0];
-			vec[1] = dimy*dyt[1];
+			vec[0] = imag_tspace_dimension_x*dyt[0];
+			vec[1] = imag_tspace_dimension_y*dyt[1];
 			dHdy *= 1.0f/len_v2(vec);
 		}
 	}




More information about the Bf-blender-cvs mailing list