Commit: e549000b3914c365d97e9c61a2db8d1fa9068758
Author: Lukas Stockner
Date:   Thu Nov 24 13:47:25 2016 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBe549000b3914c365d97e9c61a2db8d1fa9068758

Render API: Use RE_InitState for postprocessing operator

===================================================================

M       source/blender/editors/render/render_internal.c
M       source/blender/editors/render/render_opengl.c
M       source/blender/render/extern/include/RE_pipeline.h
M       source/blender/render/intern/source/envmap.c
M       source/blender/render/intern/source/external_engine.c
M       source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/editors/render/render_internal.c 
b/source/blender/editors/render/render_internal.c
index 6af1626..11bebf9 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -1124,10 +1124,10 @@ static void render_view3d_startjob(void *customdata, 
short *stop, short *do_upda
                /* initalize always */
                if (use_border) {
                        rdata.mode |= R_BORDER;
-                       RE_InitState(re, NULL, &rdata, NULL, rp->ar->winx, 
rp->ar->winy, &cliprct);
+                       RE_InitState(re, NULL, &rdata, NULL, NULL, 
rp->ar->winx, rp->ar->winy, &cliprct);
                }
                else
-                       RE_InitState(re, NULL, &rdata, NULL, rp->ar->winx, 
rp->ar->winy, NULL);
+                       RE_InitState(re, NULL, &rdata, NULL, NULL, 
rp->ar->winx, rp->ar->winy, NULL);
        }
 
        if (orth)
diff --git a/source/blender/editors/render/render_opengl.c 
b/source/blender/editors/render/render_opengl.c
index 9097432..49b7464 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -695,7 +695,7 @@ static bool screen_opengl_render_init(bContext *C, 
wmOperator *op)
        oglrender->iuser.ok = 1;
 
        /* create render result */
-       RE_InitState(oglrender->re, NULL, &scene->r, NULL, sizex, sizey, NULL);
+       RE_InitState(oglrender->re, NULL, &scene->r, NULL, NULL, sizex, sizey, 
NULL);
 
        /* create render views */
        screen_opengl_views_setup(oglrender);
diff --git a/source/blender/render/extern/include/RE_pipeline.h 
b/source/blender/render/extern/include/RE_pipeline.h
index 141d3e1..f3279ba 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -244,7 +244,7 @@ struct RenderPass *RE_create_gp_pass(struct RenderResult 
*rr, const char *layern
 
 /* obligatory initialize call, disprect is optional */
 void RE_InitState(struct Render *re, struct Render *source, struct RenderData 
*rd,
-                  struct SceneRenderLayer *srl,
+                  struct SceneRenderLayer *srl, struct RenderResult *rr,
                   int winx, int winy, rcti *disprect);
 void RE_ChangeResolution(struct Render *re, int winx, int winy, rcti 
*disprect);
 void RE_ChangeModeFlag(struct Render *re, int flag, bool clear);
diff --git a/source/blender/render/intern/source/envmap.c 
b/source/blender/render/intern/source/envmap.c
index d97e18d..5b41bde 100644
--- a/source/blender/render/intern/source/envmap.c
+++ b/source/blender/render/intern/source/envmap.c
@@ -150,7 +150,7 @@ static Render *envmap_render_copy(Render *re, EnvMap *env)
        envre->r.size = 100;
        envre->r.yasp = envre->r.xasp = 1;
        
-       RE_InitState(envre, NULL, &envre->r, NULL, cuberes, cuberes, NULL);
+       RE_InitState(envre, NULL, &envre->r, NULL, NULL, cuberes, cuberes, 
NULL);
        envre->main = re->main;
        envre->scene = re->scene;    /* unsure about this... */
        envre->scene_color_manage = re->scene_color_manage;
diff --git a/source/blender/render/intern/source/external_engine.c 
b/source/blender/render/intern/source/external_engine.c
index 0c243d1..9561f2e 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -604,15 +604,9 @@ void RE_engine_postprocess(Scene *scene, Render *re, 
RenderResult *rr)
        RenderEngine *engine = RE_engine_create(type);
 
        engine->re = re;
-       engine->re->result = rr;
-       engine->re->r = scene->r;
-       engine->re->rectx = rr->rectx;
-       engine->re->recty = rr->recty;
-       engine->re->disprect.xmin = 0;
-       engine->re->disprect.xmin = 0;
-       engine->re->disprect.xmax = rr->rectx;
-       engine->re->disprect.xmax = rr->recty;
        RE_parts_init(engine->re, false);
+
+       RE_InitState(engine->re, NULL, &scene->r, NULL, rr, rr->rectx, 
rr->recty, NULL);
        engine->tile_x = engine->re->partx;
        engine->tile_y = engine->re->party;
 
diff --git a/source/blender/render/intern/source/pipeline.c 
b/source/blender/render/intern/source/pipeline.c
index 20e462d..98cd95e 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -699,7 +699,7 @@ void render_copy_renderdata(RenderData *to, RenderData 
*from)
 /* what doesn't change during entire render sequence */
 /* disprect is optional, if NULL it assumes full window render */
 void RE_InitState(Render *re, Render *source, RenderData *rd,
-                  SceneRenderLayer *srl,
+                  SceneRenderLayer *srl, RenderResult *rr,
                   int winx, int winy, rcti *disprect)
 {
        bool had_freestyle = (re->r.mode & R_EDGE_FRS) != 0;
@@ -770,9 +770,12 @@ void RE_InitState(Render *re, Render *source, RenderData 
*rd,
        make_sample_tables(re);
        
        /* if preview render, we try to keep old result */
-       BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
+       if (!rr) BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 
-       if (re->r.scemode & (R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW)) {
+       if (rr) {
+               re->result = rr;
+       }
+       else if (re->r.scemode & (R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW)) {
                if (had_freestyle || (re->r.mode & R_EDGE_FRS)) {
                        /* freestyle manipulates render layers so always have 
to free */
                        render_result_free(re->result);
@@ -818,7 +821,7 @@ void RE_InitState(Render *re, Render *source, RenderData 
*rd,
        /* ensure renderdatabase can use part settings correct */
        RE_parts_clamp(re);
 
-       BLI_rw_mutex_unlock(&re->resultmutex);
+       if (!rr) BLI_rw_mutex_unlock(&re->resultmutex);
        
        re->mblur_offs = re->field_offs = 0.f;
        
@@ -1925,7 +1928,7 @@ static void render_scene(Render *re, Scene *sce, int cfra)
        }
        
        /* initial setup */
-       RE_InitState(resc, re, &sce->r, NULL, winx, winy, &re->disprect);
+       RE_InitState(resc, re, &sce->r, NULL, NULL, winx, winy, &re->disprect);
 
        /* We still want to use 'rendercache' setting from org (main) scene... 
*/
        resc->r.scemode = (resc->r.scemode & ~R_EXR_CACHE_FILE) | 
(re->r.scemode & R_EXR_CACHE_FILE);
@@ -3179,7 +3182,7 @@ static int render_initialize_from_main(Render *re, 
RenderData *rd, Main *bmain,
                BLI_rw_mutex_unlock(&re->resultmutex);
        }
        
-       RE_InitState(re, NULL, &scene->r, srl, winx, winy, &disprect);
+       RE_InitState(re, NULL, &scene->r, srl, NULL, winx, winy, &disprect);
        if (!re->ok)  /* if an error was printed, abort */
                return 0;
        
@@ -3805,7 +3808,7 @@ void RE_PreviewRender(Render *re, Main *bmain, Scene *sce)
        winx = (sce->r.size * sce->r.xsch) / 100;
        winy = (sce->r.size * sce->r.ysch) / 100;
 
-       RE_InitState(re, NULL, &sce->r, NULL, winx, winy, NULL);
+       RE_InitState(re, NULL, &sce->r, NULL, NULL, winx, winy, NULL);
 
        re->pool = BKE_image_pool_new();
 
@@ -3858,7 +3861,7 @@ bool RE_ReadRenderResult(Scene *scene, Scene *scenode)
        re = RE_GetRender(scene->id.name);
        if (re == NULL)
                re = RE_NewRender(scene->id.name);
-       RE_InitState(re, NULL, &scene->r, NULL, winx, winy, &disprect);
+       RE_InitState(re, NULL, &scene->r, NULL, NULL, winx, winy, &disprect);
        re->scene = scene;
        re->scene_color_manage = 
BKE_scene_check_color_management_enabled(scene);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to