[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12315] branches/qdune/blender: Orco coordinates work somewhat better now, there was a bug in the parse

Alfredo de Greef eeshlo at yahoo.com
Sun Oct 21 04:14:23 CEST 2007


Revision: 12315
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12315
Author:   eeshlo
Date:     2007-10-21 04:14:21 +0200 (Sun, 21 Oct 2007)

Log Message:
-----------
Orco coordinates work somewhat better now, there was a bug in the parse
code for declared variables, which created incorrect variable names.
UV coords too didn't quite work correctly, they're still not quite
correct, but 'might' work sometimes.. if you're lucky... ;)

Modified Paths:
--------------
    branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp
    branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp
    branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h
    branches/qdune/blender/extern/qdune/primitives/Polygons.cpp
    branches/qdune/blender/extern/qdune/primitives/Primitive.cpp
    branches/qdune/blender/extern/qdune/ribparse/decparam.cpp
    branches/qdune/blender/extern/qdune/ribparse/ri.cpp
    branches/qdune/blender/source/blender/render/intern/source/qdinterface.c

Modified: branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -4,7 +4,10 @@
 #include "MicroPolygonGrid.h"
 #include "Mathutil.h"
 #include "State.h"
+#include "Primitive.h"
 
+//#include <iostream>
+
 /* blender includes for structs only, no function calls */
 extern "C" {
 #include "RE_shader_ext.h"
@@ -58,6 +61,8 @@
 	dv = grid->get_dv();
 	xdim = grid->get_xdim();
 	ydim = grid->get_ydim();
+	float uvl[4];
+	grid->getParent()->get_uvlim(uvl);
 
 	P = (RtPoint*)grid->findVariable("P");
 	N = (RtNormal*)grid->findVariable("N");
@@ -83,6 +88,7 @@
 	if(shi.passflag & SCE_PASS_UV)
 		texco |= (NEED_UV|TEXCO_UV);
 
+
 	/* get texture coordinate variables */
 	if(texco & TEXCO_ORCO) {
 		orco = (float(*)[3])grid->findVariable("orco");
@@ -259,7 +265,7 @@
 
 					shi.totuv++;
 					suv->name= "";
-					
+
 					suv->uv[0]= -1.0f + 2.0f*uv[a][i][0];
 					suv->uv[1]= -1.0f + 2.0f*uv[a][i][1];
 					suv->uv[2]= 0.0f;
@@ -283,8 +289,8 @@
 				u= (i % (xdim+1))/(float)xdim;
 				v= (i / (xdim+1))/(float)ydim;
 
-				suv->uv[0]= 2.0f*(u+.5f);
-				suv->uv[1]= 2.0f*(v+.5f);
+				suv->uv[1]= 2.f - 2.f*((uvl[0] + u*(uvl[1] - uvl[0])) + 0.5f);
+				suv->uv[0]= 2.f*((uvl[2] + v*(uvl[3] - uvl[2])) + 0.5f);
 				suv->uv[2]= 0.0f;
 				
 				if(mode & MA_FACETEXTURE) {

Modified: branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -590,6 +590,18 @@
 	}
 }
 
+
+void MicroPolygonGrid::printVars()
+{
+	float** fg = vertexvars.first();
+	printf("All current variables on grid:\n");
+	while (fg) {
+		printf("%s\n", vertexvars.getName());
+		fg = vertexvars.next();
+	}
+	printf("\n");
+}
+
 void MicroPolygonGrid::shade()
 {
 	RtPoint* P_grid = (RtPoint*)findVariable("P");

Modified: branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h
===================================================================
--- branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h	2007-10-21 02:14:21 UTC (rev 12315)
@@ -39,6 +39,8 @@
 
 	void initVars(unsigned int varbits);
 
+	void printVars();
+
 	bool isBackfacing();
 
 	bool trim();

Modified: branches/qdune/blender/extern/qdune/primitives/Polygons.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/primitives/Polygons.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/primitives/Polygons.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -15,7 +15,7 @@
 
 // helper function, splits convex n-gon into a set of bilinear patches
 static void splitPolygon(const Primitive& p, const Framework &f, RtPoint* pts,
-				int num_verts, int uni_idx, int* idx_ofs = NULL, int fvary_idx_ofs = 0)
+                         int num_verts, int uni_idx, int* idx_ofs = NULL, int fvary_idx_ofs = 0)
 {
 	const int lastpoint = num_verts-1;
 	int sta = 1, end = MIN2(3, lastpoint);
@@ -207,7 +207,7 @@
 // Polygon
 
 Polygon::Polygon(RtInt nverts, RtInt n, RtToken tokens[], RtPointer parms[])
-				: pts(NULL), num_verts(nverts)
+                : pts(NULL), num_verts(nverts)
 {
 	for (int i=0; i<n; ++i) {
 		if (!strcmp(tokens[i], RI_P)) {
@@ -250,8 +250,8 @@
 // PointsPolygons
 
 PointsPolygons::PointsPolygons(RtInt npolys, RtInt nverts[], RtInt verts[],
-															RtInt n, RtToken tokens[], RtPointer parms[])
-															: pts(NULL), num_faces(npolys)
+                               RtInt n, RtToken tokens[], RtPointer parms[])
+                              : pts(NULL), num_faces(npolys)
 {
 	// sum of verts ( == max possible vertex index == sizeof verts[] array)
 	int sum_faceverts = 0;

Modified: branches/qdune/blender/extern/qdune/primitives/Primitive.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/primitives/Primitive.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/primitives/Primitive.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -53,7 +53,7 @@
 }
 
 void Primitive::initPrimVars(RtInt n, RtToken tokens[], RtPointer parms[],
-				int uniformMax, int varyingMax, int vertexMax, int faceVaryingMax)
+                             int uniformMax, int varyingMax, int vertexMax, int faceVaryingMax)
 {
 	if (n == 0) return; // no params
 	// current transform, not known yet (this function is only called from geom.ctor's)

Modified: branches/qdune/blender/extern/qdune/ribparse/decparam.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/ribparse/decparam.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/ribparse/decparam.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -116,9 +116,11 @@
 		while (isalnum(*s) || (*s=='_')) s++;
 		const int len = (int)(s - s2);
 		// 256 chars max
-		if (len > 256) return false; // no more than 256 chars
+		if (len > 255) return false; // no more than 255 chars
 		if (len < 1) return false; // empty string? (or no alpha chars anyway)
 		strncpy(inline_name, s2, len);
+		// bug was here: forgot string terminator
+		inline_name[len] = 0;
 	}
 
 	// warn if anything trailing the string other than whitespace

Modified: branches/qdune/blender/extern/qdune/ribparse/ri.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/ribparse/ri.cpp	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/ribparse/ri.cpp	2007-10-21 02:14:21 UTC (rev 12315)
@@ -2045,7 +2045,15 @@
 //------------------------------------------------------------------------------
 // Blender Interface
 
-RtVoid RiBlenderFuncs(RtBlenderBucketAdd bucketaddfunc, RtBlenderBucketBegin bucketbeginfunc, RtBlenderBucketUpdate bucketupdatefunc, RtBlenderBucketEnd bucketendfunc, RtBlenderTestBreak testbreakfunc, RtBlenderShadeInit shadeinitfunc, RtBlenderShade shadefunc, RtBlenderShadeDisplacement displacefunc, RtBlenderShadeBackground backgroundfunc)
+RtVoid RiBlenderFuncs(RtBlenderBucketAdd bucketaddfunc,
+                      RtBlenderBucketBegin bucketbeginfunc,
+                      RtBlenderBucketUpdate bucketupdatefunc,
+                      RtBlenderBucketEnd bucketendfunc,
+                      RtBlenderTestBreak testbreakfunc,
+                      RtBlenderShadeInit shadeinitfunc,
+                      RtBlenderShade shadefunc,
+                      RtBlenderShadeDisplacement displacefunc,
+                      RtBlenderShadeBackground backgroundfunc)
 {
 	if (!mbCheck()) return;
 	Options& options = State::Instance()->topOptions();

Modified: branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
===================================================================
--- branches/qdune/blender/source/blender/render/intern/source/qdinterface.c	2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/source/blender/render/intern/source/qdinterface.c	2007-10-21 02:14:21 UTC (rev 12315)
@@ -347,6 +347,7 @@
 			n++;
 		}
 
+		// 'color' is used here instead of point/vector/normal to avoid a transform to camera space
 		if(ppoly->orco) {
 			tokens[n]= "vertex color orco";
 			params[n]= ppoly->orco;





More information about the Bf-blender-cvs mailing list