[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34551] trunk/blender/source/blender/gpu/ intern: Fixes for GLSL bump code; it was using calls not supported for
Ton Roosendaal
ton at blender.org
Sat Jan 29 17:13:15 CET 2011
Revision: 34551
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34551
Author: ton
Date: 2011-01-29 16:13:15 +0000 (Sat, 29 Jan 2011)
Log Message:
-----------
Fixes for GLSL bump code; it was using calls not supported for
older GLSL versions (< 1.3)
Thanks Matthew M:
- adding mat3 from ma4 function
- removal of transpose()
And I've hacked in myself a textureSize() replacement, the image
size gets passed on to function now.
Modified Paths:
--------------
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/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-01-29 12:09:11 UTC (rev 34550)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-01-29 16:13:15 UTC (rev 34551)
@@ -40,6 +40,8 @@
#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"
@@ -48,6 +50,7 @@
#include "BKE_colortools.h"
#include "BKE_DerivedMesh.h"
#include "BKE_global.h"
+#include "BKE_image.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_scene.h"
@@ -1066,10 +1069,18 @@
texco, GPU_image(tex->ima, &tex->iuser), GPU_uniform(&hScale),
&dBs, &dBt );
- if( mtex->texflag & MTEX_BUMP_TEXTURESPACE )
+ 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) {
+ 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),
- &tnor );
+ 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),
Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl 2011-01-29 12:09:11 UTC (rev 34550)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl 2011-01-29 16:13:15 UTC (rev 34551)
@@ -1114,16 +1114,26 @@
fDet = dot ( vSigmaS , vR1 );
}
+/** helper method to extract the upper left 3x3 matrix from a 4x4 matrix */
+mat3 to_mat3(mat4 m4)
+{
+ mat3 m3;
+ m3[0] = m4[0].xyz;
+ m3[1] = m4[1].xyz;
+ m3[2] = m4[2].xyz;
+ return m3;
+}
+
void mtex_bump_init_objspace( vec3 surf_pos, vec3 surf_norm,
mat4 mView, mat4 mViewInv, mat4 mObj, mat4 mObjInv,
out vec3 vR1, out vec3 vR2, out float fDet, out vec3 vN )
{
- mat3 obj2view = mat3(mView * mObj);
- mat3 view2obj = mat3(mObjInv * mViewInv);
+ mat3 obj2view = to_mat3(mView * mObj);
+ mat3 view2obj = to_mat3(mObjInv * mViewInv);
vec3 vSigmaS = view2obj * dFdx( surf_pos );
vec3 vSigmaT = view2obj * dFdy( surf_pos );
- vN = normalize( transpose(obj2view) * surf_norm );
+ vN = normalize( surf_norm * obj2view );
vR1 = cross( vSigmaT , vN );
vR2 = cross( vN , vSigmaS ) ;
@@ -1183,21 +1193,20 @@
vec3 vSurfGrad = sign(fDet) * ( dBs * vR1in + dBt * vR2in );
perturbed_norm = normalize( abs(fDet) * vNin - vSurfGrad );
/* tranform back */
- mat3 view2obj = mat3(mObjInv * mViewInv);
- vR1 = transpose(view2obj) * vR1in;
- vR2 = transpose(view2obj) * vR2in;
- vN = transpose(view2obj) * vNin;
+ mat3 view2obj = to_mat3(mObjInv * mViewInv);
+ vR1 = vR1in * view2obj;
+ vR2 = vR2in * view2obj;
+ vN = vNin * view2obj;
}
void mtex_bump_apply_texspace( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN,
- sampler2D ima, vec3 texco, float scale, out vec3 perturbed_norm )
+ sampler2D ima, vec3 texco, float scale, float ima_x, float ima_y, out vec3 perturbed_norm )
{
vec2 TexDx = dFdx(texco.xy);
vec2 TexDy = dFdy(texco.xy);
- ivec2 ts = textureSize( ima, 0 );
vec3 vSurfGrad = sign(fDet) * scale * (
- dBs / length( vec2(ts.x*TexDx.x, ts.y*TexDx.y) ) * normalize(vR1) +
- dBt / length( vec2(ts.x*TexDy.x, ts.y*TexDy.y) ) * normalize(vR2) );
+ dBs / length( vec2(ima_x*TexDx.x, ima_y*TexDx.y) ) * normalize(vR1) +
+ dBt / length( vec2(ima_x*TexDy.x, ima_y*TexDy.y) ) * normalize(vR2) );
perturbed_norm = normalize( vN - vSurfGrad );
}
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-29 12:09:11 UTC (rev 34550)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c 2011-01-29 16:13:15 UTC (rev 34551)
@@ -1,828 +1,833 @@
/* DataToC output of file <gpu_shader_material_glsl> */
-int datatoc_gpu_shader_material_glsl_size= 37727;
+int datatoc_gpu_shader_material_glsl_size= 37872;
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, 59, 10, 9, 9,113, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41,
- 59, 10, 9, 9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, 45,102, 41, 41, 41, 59, 10, 9, 9, 10,
- 9, 9,105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44,
- 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,
-118,101, 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50,
- 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, 41, 59, 10, 9, 9,101,108,115,101, 32,
-105,102, 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118,
- 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101,
- 99, 51, 40,116, 44, 32,112, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118,
- 44, 32,112, 44, 32,113, 41, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44,
- 32,104,115,118, 46,119, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,
-114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10,
- 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46,
- 48, 47, 49, 50, 46, 57, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32,112,111,119, 40, 40, 99, 32,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list