diff options
author | Ton Roosendaal <ton@blender.org> | 2006-02-08 20:30:28 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-02-08 20:30:28 +0300 |
commit | 919411a32b3ac0f5ffc5851dbeaf48e6c78644b7 (patch) | |
tree | 0083bb4218507cf5316d3dba411479fa4dc699dd /source | |
parent | a3d0d456ac84279beffb08da2056a718448639a2 (diff) |
Three fixes;
- Composit cache now gets fully freed on a render. Each output socket of a
node stores the entire image... and while render that's a waste of memory
- Sky 'paper' render was using wrong texture coordinates
- Found missing test_break() in ztransp rendering.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_node.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 18 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 3 | ||||
-rw-r--r-- | source/blender/render/intern/source/pixelshading.c | 5 | ||||
-rw-r--r-- | source/blender/render/intern/source/zbuf.c | 5 |
5 files changed, 25 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 22796782f1e..27ddc005a37 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -107,6 +107,7 @@ void ntreeCompositExecTree(struct bNodeTree *ntree, struct RenderData *rd, int void ntreeEndExecTree(struct bNodeTree *ntree); void ntreeInitPreview(struct bNodeTree *, int xsize, int ysize); +void ntreeFreeCache(struct bNodeTree *ntree); /* ************** GENERIC API, NODES *************** */ diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 68507f6b8a7..7150e99e932 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -975,13 +975,15 @@ static void node_unlink_node(bNodeTree *ntree, bNode *node) } } -static void composit_free_sockets(bNode *node) +static void composit_free_node_cache(bNode *node) { bNodeSocket *sock; for(sock= node->outputs.first; sock; sock= sock->next) { - if(sock->ns.data) + if(sock->ns.data) { free_compbuf(sock->ns.data); + sock->ns.data= NULL; + } } } @@ -994,7 +996,7 @@ void nodeFreeNode(bNodeTree *ntree, bNode *node) node->id->us--; if(ntree->type==NTREE_COMPOSIT) - composit_free_sockets(node); + composit_free_node_cache(node); BLI_freelistN(&node->inputs); BLI_freelistN(&node->outputs); @@ -1046,6 +1048,16 @@ void ntreeFreeTree(bNodeTree *ntree) } } +void ntreeFreeCache(bNodeTree *ntree) +{ + bNode *node; + + if(ntree==NULL) return; + + if(ntree->type==NTREE_COMPOSIT) + for(node= ntree->nodes.first; node; node= node->next) + composit_free_node_cache(node); +} void ntreeMakeLocal(bNodeTree *ntree) { diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index c6b14ad0037..76b2a5acc34 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -954,6 +954,9 @@ static void do_render_final(Render *re) else { if(composite_needs_render(re->scene)) { + /* save memory... free all cached images */ + ntreeFreeCache(re->scene->nodetree); + /* now use renderdata and camera to set viewplane */ RE_SetCamera(re, re->scene->camera); diff --git a/source/blender/render/intern/source/pixelshading.c b/source/blender/render/intern/source/pixelshading.c index 934d6e0bbb9..ce5d0a98f8c 100644 --- a/source/blender/render/intern/source/pixelshading.c +++ b/source/blender/render/intern/source/pixelshading.c @@ -507,10 +507,9 @@ void shadeSkyPixel(float *collector, float fx, float fy, float *rco) */ /* This one true because of the context of this routine */ -/* if(rect[3] < 254) { */ if(R.wrld.skytype & WO_SKYPAPER) { - view[0]= (fx/(float)R.winx); - view[1]= (fy/(float)R.winy); + view[0]= -1.0f + 2.0f*(fx/(float)R.winx); + view[1]= -1.0f + 2.0f*(fy/(float)R.winy); view[2]= 0.0; dxyview[0]= 1.0f/(float)R.winx; diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index bc77813d59a..98e953d97e2 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -2650,7 +2650,10 @@ void zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pass) pass= passrect; ap= aprect; od= offs; - + + if(R.test_break()) + break; + for(x=pa->disprect.xmin+crop; x<pa->disprect.xmax-crop; x++, ap++, pass+=4, od++) { if(ap->p[0]==NULL) { |