[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15823] branches/soc-2007-joeedh/source/ blender/render/intern: more strand improvements

Joseph Eagar joeedh at gmail.com
Sun Jul 27 23:14:18 CEST 2008


Revision: 15823
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15823
Author:   joeedh
Date:     2008-07-27 23:14:18 +0200 (Sun, 27 Jul 2008)

Log Message:
-----------
more strand improvements

Modified Paths:
--------------
    branches/soc-2007-joeedh/source/blender/render/intern/include/render_types.h
    branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c

Modified: branches/soc-2007-joeedh/source/blender/render/intern/include/render_types.h
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/include/render_types.h	2008-07-27 20:31:38 UTC (rev 15822)
+++ branches/soc-2007-joeedh/source/blender/render/intern/include/render_types.h	2008-07-27 21:14:18 UTC (rev 15823)
@@ -388,7 +388,8 @@
 	int flag, maxdepth;
 	float adaptcos, minwidth, widthfade;
 
-	float winmat[4][4];
+	float (*winmat)[4];
+	float stored_winmat[4][4];
 	int winx, winy;
 } StrandBuffer;
 

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c	2008-07-27 20:31:38 UTC (rev 15822)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c	2008-07-27 21:14:18 UTC (rev 15823)
@@ -1708,7 +1708,8 @@
 				strandbuf= RE_addStrandBuffer(obr, (totpart+totchild)*(path_nbr+1));
 				strandbuf->ma= ma;
 				strandbuf->lay= ob->lay;
-				Mat4CpyMat4(strandbuf->winmat, re->winmat);
+				Mat4CpyMat4(strandbuf->stored_winmat, re->winmat);
+				strandbuf->winmat = strandbuf->stored_winmat;
 				strandbuf->winx= re->winx;
 				strandbuf->winy= re->winy;
 				strandbuf->maxdepth= 2;

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-07-27 20:31:38 UTC (rev 15822)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-07-27 21:14:18 UTC (rev 15823)
@@ -317,7 +317,7 @@
 		}
 	}
 
-	printf("maxsamples: %d %d %d\n", maxsamples[0], maxsamples[1], maxsamples[2]);
+	//printf("maxsamples: %d %d %d\n", maxsamples[0], maxsamples[1], maxsamples[2]);
 
 	for (x=0; x<buf->sizex; x++) {
 		for (y=0; y<buf->sizey; y++) {

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c	2008-07-27 20:31:38 UTC (rev 15822)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c	2008-07-27 21:14:18 UTC (rev 15823)
@@ -3808,8 +3808,8 @@
 					maxx /= tilesizex; maxy /= tilesizey;
 
 					//printf("bounds: [%f, %f, %f, %f]\n", minx, miny, maxx, maxy);
-					for (x=minx; x<maxx; x++) {
-						for (y=miny; y<maxy; y++) {
+					for (x=minx; x<=maxx; x++) {
+						for (y=miny; y<=maxy; y++) {
 							tile = TCS_GetAndLockTile((TCS_TileBuffer*)bucketbuf, x, y, 0);
 							BUCKET_ADD(tile, (tile->ventries), (tile->lastv), zvlnr, i, (tile->totv));
 							TCS_UnlockTile(tile);
@@ -3882,11 +3882,18 @@
 				if (sminy < 0) sminy = 0;
 				if (smaxx >= rectx) smaxx = rectx-1;
 				if (smaxy >= recty) smaxy = recty-1;
+
+				if (G.rt == 98) {
+					sminx = sminy = 0;
+					smaxx = rectx-1;
+					smaxy = recty-1;
+				}
+
 				sminx /= tilesizex; sminy /= tilesizey;
 				smaxx /= tilesizex; smaxy /= tilesizey;
 				
-				for (x=sminx; x<smaxx; x++) {
-					for (y=sminy; y<smaxy; y++) {
+				for (x=sminx; x<=smaxx; x++) {
+					for (y=sminy; y<=smaxy; y++) {
 						tile = TCS_GetAndLockTile((TCS_TileBuffer*)bucketbuf, x, y, 0);
 						BUCKET_ADD(tile, (tile->sentries), (tile->lasts), strand->index, i, (tile->tots));
 						TCS_UnlockTile(tile);
@@ -3921,7 +3928,7 @@
 	VertRen *v1, *v2, *v3, *v4;
 	float vec[3], hoco[4], mul, zval, fval;
 	float bounds[4], ho1[4], ho2[4], ho3[4], ho4[4]={0};
-	int b=0, i, zvlnr, c1, c2, c3, c4=0, dofill= 0;
+	int b=0, i, zvlnr, c1, c2, c3, c4=0, dofill= 0, oldwinx, oldwiny;
 	int zsample, samples, polygon_offset, *arectz;
 	RE_BucketEntry *entry;
 
@@ -4141,6 +4148,12 @@
 					sseg.v[3]= (b < strand->totvert-2)? svert+2: svert+1;
 					sseg.shaded = 0;
 
+					oldwinx = strand->buffer->winx;
+					oldwiny = strand->buffer->winy;
+					strand->buffer->winx = re->winx;
+					strand->buffer->winy = re->winy;
+					strand->buffer->winmat = re->winmat;
+
 					c1= zbuf_part_project(cache, sseg.v[0]-strand->vert, obwinmat, bounds, sseg.v[0]->co, ho1);
 					c2= zbuf_part_project(cache, sseg.v[1]-strand->vert, obwinmat, bounds, sseg.v[1]->co, ho2);
 					c3= zbuf_part_project(cache, sseg.v[2]-strand->vert, obwinmat, bounds, sseg.v[2]->co, ho3);
@@ -4155,6 +4168,9 @@
 						}
 						render_strand_segment(re, winmat, &spart, zspans, samples, &sseg);	
 					}
+					strand->buffer->winx = oldwinx;
+					strand->buffer->winy = oldwiny;
+					strand->buffer->winmat = strand->buffer->stored_winmat;
 				}
 			}
 





More information about the Bf-blender-cvs mailing list