[Bf-blender-cvs] [e549000] soc-2016-cycles_denoising: Render API: Use RE_InitState for postprocessing operator
Lukas Stockner
noreply at git.blender.org
Sat Nov 26 04:21:36 CET 2016
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);
More information about the Bf-blender-cvs
mailing list