[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