[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12785] trunk/blender/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Dec 4 18:53:03 CET 2007


Revision: 12785
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12785
Author:   blendix
Date:     2007-12-04 18:53:03 +0100 (Tue, 04 Dec 2007)

Log Message:
-----------

Strand render bugfixes:
- Fix compile error.
- Some changes to bucketing.
- Tweak acceleration button increase size.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/strand.c
    trunk/blender/source/blender/src/buttons_object.c

Modified: trunk/blender/source/blender/render/intern/source/strand.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/strand.c	2007-12-04 17:19:30 UTC (rev 12784)
+++ trunk/blender/source/blender/render/intern/source/strand.c	2007-12-04 17:53:03 UTC (rev 12785)
@@ -203,11 +203,15 @@
 }
 
 typedef struct RenderPrimitiveIterator {
+	Render *re;
 	RenderBuckets *buckets;
 	ListBase *list[6];
 	int listindex, totlist;
 	BucketPrims *bpr;
 	int bprindex;
+
+	StrandRen *strand;
+	int index, tot;
 } RenderPrimitiveIterator;
 
 RenderPrimitiveIterator *init_primitive_iterator(Render *re, RenderBuckets *buckets, RenderPart *pa)
@@ -216,39 +220,61 @@
 	int nr, x, y, width;
 
 	iter= MEM_callocN(sizeof(RenderPrimitiveIterator), "RenderPrimitiveIterator");
-	iter->buckets= buckets;
+	iter->re= re;
 
-	nr= BLI_findindex(&re->parts, pa);
-	width= buckets->x - 1;
-	x= (nr % width) + 1;
-	y= (nr / width) + 1;
+	if(buckets) {
+		iter->buckets= buckets;
 
-	iter->list[iter->totlist++]= &buckets->all;
-	iter->list[iter->totlist++]= &buckets->inside[y*buckets->x + x];
-	iter->list[iter->totlist++]= &buckets->overlap[y*buckets->x + x];
-	iter->list[iter->totlist++]= &buckets->overlap[y*buckets->x + (x-1)];
-	iter->list[iter->totlist++]= &buckets->overlap[(y-1)*buckets->x + (x-1)];
-	iter->list[iter->totlist++]= &buckets->overlap[(y-1)*buckets->x + x];
+		nr= BLI_findindex(&re->parts, pa);
+		width= buckets->x - 1;
+		x= (nr % width) + 1;
+		y= (nr / width) + 1;
 
+		iter->list[iter->totlist++]= &buckets->all;
+		iter->list[iter->totlist++]= &buckets->inside[y*buckets->x + x];
+		iter->list[iter->totlist++]= &buckets->overlap[y*buckets->x + x];
+		iter->list[iter->totlist++]= &buckets->overlap[y*buckets->x + (x-1)];
+		iter->list[iter->totlist++]= &buckets->overlap[(y-1)*buckets->x + (x-1)];
+		iter->list[iter->totlist++]= &buckets->overlap[(y-1)*buckets->x + x];
+	}
+	else {
+		iter->index= 0;
+		iter->tot= re->totstrand;
+	}
+
 	return iter;
 }
 
 void *next_primitive_iterator(RenderPrimitiveIterator *iter)
 {
-	if(iter->bpr && iter->bprindex >= iter->bpr->totprim) {
-		iter->bpr= iter->bpr->next;
-		iter->bprindex= 0;
+	if(iter->buckets) {
+		if(iter->bpr && iter->bprindex >= iter->bpr->totprim) {
+			iter->bpr= iter->bpr->next;
+			iter->bprindex= 0;
+		}
+
+		while(iter->bpr == NULL) {
+			if(iter->listindex == iter->totlist)
+				return NULL;
+
+			iter->bpr= iter->list[iter->listindex++]->first;
+			iter->bprindex= 0;
+		}
+
+		return iter->bpr->prim[iter->bprindex++];
 	}
+	else {
+		if(iter->index < iter->tot) {
+			if((iter->index & 255)==0)
+				iter->strand= iter->re->strandnodes[iter->index>>8].strand;
+			else
+				iter->strand++;
 
-	while(iter->bpr == NULL) {
-		if(iter->listindex == iter->totlist)
+			return iter->strand;
+		}
+		else
 			return NULL;
-
-		iter->bpr= iter->list[iter->listindex++]->first;
-		iter->bprindex= 0;
 	}
-
-	return iter->bpr->prim[iter->bprindex++];
 }
 
 void free_primitive_iterator(RenderPrimitiveIterator *iter)
@@ -611,7 +637,7 @@
 	memset(&vlr, 0, sizeof(vlr));
 	vlr.flag= R_SMOOTH|R_VISIBLE;
 	vlr.lay= sseg->strand->buffer->lay;
-	vlr.ob= sseg->strand->ob;
+	vlr.ob= sseg->strand->buffer->ob;
 	if(sseg->buffer->ma->mode & MA_TANGENT_STR)
 		vlr.flag |= R_TANGENT;
 	shi->vlr= &vlr;

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2007-12-04 17:19:30 UTC (rev 12784)
+++ trunk/blender/source/blender/src/buttons_object.c	2007-12-04 17:53:03 UTC (rev 12785)
@@ -4105,9 +4105,9 @@
 
 			butw=103;
 			uiBlockBeginAlign(block);
-			uiDefButF(block, NUM, B_PART_RECALC, "AccX:",		butx,(buty-=buth),butw,buth, part->acc, -200.0, 200.0, 100, 0, "Specify a constant acceleration along the X-axis");
-			uiDefButF(block, NUM, B_PART_RECALC, "AccY:",		butx+butw,buty,butw,buth, part->acc+1,-200.0, 200.0, 100, 0, "Specify a constant acceleration along the Y-axis");
-			uiDefButF(block, NUM, B_PART_RECALC, "AccZ:",		butx+2*butw,buty,butw+1,buth, part->acc+2, -200.0, 200.0, 100, 0, "Specify a constant acceleration along the Z-axis");
+			uiDefButF(block, NUM, B_PART_RECALC, "AccX:",		butx,(buty-=buth),butw,buth, part->acc, -200.0, 200.0, 10, 0, "Specify a constant acceleration along the X-axis");
+			uiDefButF(block, NUM, B_PART_RECALC, "AccY:",		butx+butw,buty,butw,buth, part->acc+1,-200.0, 200.0, 10, 0, "Specify a constant acceleration along the Y-axis");
+			uiDefButF(block, NUM, B_PART_RECALC, "AccZ:",		butx+2*butw,buty,butw+1,buth, part->acc+2, -200.0, 200.0, 10, 0, "Specify a constant acceleration along the Z-axis");
 
 			uiDefButF(block, NUM, B_PART_RECALC, "Drag:",		butx,(buty-=buth),butw,buth, &part->dragfac, 0.0, 1.0, 1, 0, "Specify the amount of air-drag");
 			uiDefButF(block, NUM, B_PART_RECALC, "Brown:",		butx+butw,buty,butw,buth, &part->brownfac, 0.0, 200.0, 1, 0, "Specify the amount of brownian motion");





More information about the Bf-blender-cvs mailing list