From 20553d4064e790f42fe707b8b6c5e6451e983eb7 Mon Sep 17 00:00:00 2001 From: "M.G. Kishalmi" Date: Mon, 14 Feb 2011 18:18:46 +0000 Subject: This commit will switch blender to use tangent space generated within the two files mikktspace.h and mikktspace.c. These are standalone files which can be redistributed into any other application and regenerate the same tangent spaces. The implementation is independent of the ordering of faces and the vertex ordering of faces. --- source/blender/blenkernel/intern/cdderivedmesh.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c') diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index abf2257877b..9a04c75db07 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -1066,7 +1066,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo } \ if(attribs.tottang) { \ float *tang = attribs.tang.array[a*4 + vert]; \ - glVertexAttrib3fvARB(attribs.tang.glIndex, tang); \ + glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \ } \ if(smoothnormal) \ glNormal3sv(mvert[index].no); \ @@ -1158,7 +1158,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo } if(attribs.tottang) { datatypes[numdata].index = attribs.tang.glIndex; - datatypes[numdata].size = 3; + datatypes[numdata].size = 4; datatypes[numdata].type = GL_FLOAT; numdata++; } @@ -1248,12 +1248,12 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo } if(attribs.tottang) { float *tang = attribs.tang.array[a*4 + 0]; - VECCOPY((float *)&varray[elementsize*curface*3+offset], tang); + QUATCOPY((float *)&varray[elementsize*curface*3+offset], tang); tang = attribs.tang.array[a*4 + 1]; - VECCOPY((float *)&varray[elementsize*curface*3+offset+elementsize], tang); + QUATCOPY((float *)&varray[elementsize*curface*3+offset+elementsize], tang); tang = attribs.tang.array[a*4 + 2]; - VECCOPY((float *)&varray[elementsize*curface*3+offset+elementsize*2], tang); - offset += sizeof(float)*3; + QUATCOPY((float *)&varray[elementsize*curface*3+offset+elementsize*2], tang); + offset += sizeof(float)*4; } } curface++; @@ -1288,12 +1288,12 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo } if(attribs.tottang) { float *tang = attribs.tang.array[a*4 + 2]; - VECCOPY((float *)&varray[elementsize*curface*3+offset], tang); + QUATCOPY((float *)&varray[elementsize*curface*3+offset], tang); tang = attribs.tang.array[a*4 + 3]; - VECCOPY((float *)&varray[elementsize*curface*3+offset+elementsize], tang); + QUATCOPY((float *)&varray[elementsize*curface*3+offset+elementsize], tang); tang = attribs.tang.array[a*4 + 0]; - VECCOPY((float *)&varray[elementsize*curface*3+offset+elementsize*2], tang); - offset += sizeof(float)*3; + QUATCOPY((float *)&varray[elementsize*curface*3+offset+elementsize*2], tang); + offset += sizeof(float)*4; } } curface++; -- cgit v1.2.3