Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2006-02-08 20:30:28 +0300
committerTon Roosendaal <ton@blender.org>2006-02-08 20:30:28 +0300
commit919411a32b3ac0f5ffc5851dbeaf48e6c78644b7 (patch)
tree0083bb4218507cf5316d3dba411479fa4dc699dd /source
parenta3d0d456ac84279beffb08da2056a718448639a2 (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.h1
-rw-r--r--source/blender/blenkernel/intern/node.c18
-rw-r--r--source/blender/render/intern/source/pipeline.c3
-rw-r--r--source/blender/render/intern/source/pixelshading.c5
-rw-r--r--source/blender/render/intern/source/zbuf.c5
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) {