[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