[Bf-blender-cvs] [81c0dbdcc8] temp-cycles-denoising: Cycles Denoising: Remove post-processing denoising code from the Render API
Lukas Stockner
noreply at git.blender.org
Mon Feb 13 02:05:48 CET 2017
Commit: 81c0dbdcc8861eb79663dba7a36d5cb0592aede0
Author: Lukas Stockner
Date: Sat Feb 11 22:32:00 2017 +0100
Branches: temp-cycles-denoising
https://developer.blender.org/rB81c0dbdcc8861eb79663dba7a36d5cb0592aede0
Cycles Denoising: Remove post-processing denoising code from the Render API
This reverts commits e001dbbcc479, 94fa941f7f65, e7bf6c67b432, e549000b3914, 58619096a5cd, 3bcafb6dc48d, 0d78ac4199d9, c167e5d72378.
===================================================================
M intern/cycles/blender/addon/__init__.py
M intern/cycles/blender/addon/engine.py
M intern/cycles/blender/blender_session.h
M intern/cycles/device/device_cpu.cpp
M release/scripts/startup/bl_ui/space_image.py
M source/blender/blenkernel/BKE_scene.h
M source/blender/blenkernel/intern/scene.c
M source/blender/editors/interface/interface_templates.c
M source/blender/editors/render/render_intern.h
M source/blender/editors/render/render_internal.c
M source/blender/editors/render/render_opengl.c
M source/blender/editors/space_image/image_intern.h
M source/blender/editors/space_image/image_ops.c
M source/blender/editors/space_image/space_image.c
M source/blender/makesrna/intern/rna_render.c
M source/blender/makesrna/intern/rna_scene.c
M source/blender/render/extern/include/RE_engine.h
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
M source/blender/windowmanager/WM_api.h
===================================================================
diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index 4593f590b0..0a9d7c5775 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -107,7 +107,7 @@ class CyclesRender(bpy.types.RenderEngine):
return engine.can_postprocess(result)
def postprocess(self, scene, result):
- engine.postprocess(self, scene, result);
+ engine.postprocess(scene, result);
def engine_exit():
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index a56b0df26c..4b32b53ac5 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -194,5 +194,5 @@ def system_info():
def can_postprocess(result):
return False
-def postprocess(engine, scene, result):
+def postprocess(scene, result):
return
diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h
index 7c302f3bfa..d2e8cdd4cc 100644
--- a/intern/cycles/blender/blender_session.h
+++ b/intern/cycles/blender/blender_session.h
@@ -57,9 +57,6 @@ public:
void reset_session(BL::BlendData& b_data,
BL::Scene& b_scene);
- /* denoising */
- void denoise(BL::RenderResult& b_rr);
-
/* offline render */
void render();
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index dc2fc49123..de98f616fd 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -576,7 +576,6 @@ public:
denoising.tiles_from_rendertiles(rtiles);
denoising.init_from_devicetask(task);
-
denoising.functions.construct_transform = function_bind(&CPUDevice::denoising_construct_transform, this, &denoising);
denoising.functions.reconstruct = function_bind(&CPUDevice::denoising_reconstruct, this, _1, _2, _3, _4, _5, &denoising);
denoising.functions.divide_shadow = function_bind(&CPUDevice::denoising_divide_shadow, this, _1, _2, _3, _4, _5, &denoising);
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index c35a86edb4..04b4cef951 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -1231,26 +1231,6 @@ class IMAGE_PT_tools_grease_pencil_edit(GreasePencilStrokeEditPanel, Panel):
class IMAGE_PT_tools_grease_pencil_sculpt(GreasePencilStrokeSculptPanel, Panel):
bl_space_type = 'IMAGE_EDITOR'
-class IMAGE_PT_tools_post_process(Panel):
- bl_space_type = 'IMAGE_EDITOR'
- bl_region_type = 'UI'
- bl_label = "Post-processing"
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- sima = context.space_data
-
- return (sima.image.type in {'MULTILAYER', 'RENDER_RESULT'}) and rd.use_result_postprocess
-
- def draw(self, context):
- layout = self.layout
-
- sima = context.space_data
- ima = sima.image
-
- layout.operator("image.postprocess");
-
# Grease Pencil drawing brushes
class IMAGE_PT_tools_grease_pencil_brush(GreasePencilBrushPanel, Panel):
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 3e4444e91d..d2152950bf 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -140,7 +140,6 @@ bool BKE_scene_use_new_shading_nodes(const struct Scene *scene);
bool BKE_scene_use_shading_nodes_custom(struct Scene *scene);
bool BKE_scene_use_world_space_shading(struct Scene *scene);
bool BKE_scene_use_spherical_stereo(struct Scene *scene);
-bool BKE_scene_use_result_postprocess(struct Scene *scene);
bool BKE_scene_uses_blender_internal(const struct Scene *scene);
bool BKE_scene_uses_blender_game(const struct Scene *scene);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index d9439328c8..c4eef7f229 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -2214,12 +2214,6 @@ bool BKE_scene_use_spherical_stereo(Scene *scene)
return (type && type->flag & RE_USE_SPHERICAL_STEREO);
}
-bool BKE_scene_use_result_postprocess(Scene *scene)
-{
- RenderEngineType *type = RE_engines_find(scene->r.engine);
- return (type && type->flag & RE_USE_RESULT_POSTPROCESS);
-}
-
bool BKE_scene_uses_blender_internal(const Scene *scene)
{
return STREQ(scene->r.engine, RE_engine_id_BLENDER_RENDER);
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 550a7b5292..4db1c845c2 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -3492,8 +3492,7 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C)
Scene *scene;
/* another scene can be rendering too, for example via compositor */
for (scene = CTX_data_main(C)->scene.first; scene; scene = scene->id.next) {
- if (WM_jobs_test(wm, scene, WM_JOB_TYPE_RENDER) ||
- WM_jobs_test(wm, scene, WM_JOB_TYPE_POSTPROCESS)) {
+ if (WM_jobs_test(wm, scene, WM_JOB_TYPE_RENDER)) {
handle_event = B_STOPRENDER;
icon = ICON_SCENE;
break;
diff --git a/source/blender/editors/render/render_intern.h b/source/blender/editors/render/render_intern.h
index 0edfb3eb60..fb07b03c28 100644
--- a/source/blender/editors/render/render_intern.h
+++ b/source/blender/editors/render/render_intern.h
@@ -102,9 +102,5 @@ void RENDER_OT_view_cancel(struct wmOperatorType *ot);
/* render_opengl.c */
void RENDER_OT_opengl(struct wmOperatorType *ot);
-/* space_image */
-void image_buffer_rect_update(struct Scene *scene, struct RenderResult *rr, struct ImBuf *ibuf, struct ImageUser *iuser, volatile rcti *renrect, const char *viewname,
- struct ColorManagedViewSettings *view_settings, struct ColorManagedDisplaySettings *display_settings);
-
#endif /* __RENDER_INTERN_H__ */
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 11bebf9874..7c580bbd89 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -119,6 +119,133 @@ typedef struct RenderJob {
bool interface_locked;
} RenderJob;
+/* called inside thread! */
+static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibuf, ImageUser *iuser, volatile rcti *renrect, const char *viewname)
+{
+ Scene *scene = rj->scene;
+ const float *rectf = NULL;
+ int ymin, ymax, xmin, xmax;
+ int rymin, rxmin;
+ int linear_stride, linear_offset_x, linear_offset_y;
+ ColorManagedViewSettings *view_settings;
+ ColorManagedDisplaySettings *display_settings;
+
+ /* Exception for exr tiles -- display buffer conversion happens here,
+ * NOT in the color management pipeline.
+ */
+ if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID &&
+ rr->do_exr_tile == false)
+ {
+ /* The whole image buffer it so be color managed again anyway. */
+ return;
+ }
+
+ /* if renrect argument, we only refresh scanlines */
+ if (renrect) {
+ /* if (ymax == recty), rendering of layer is ready, we should not draw, other things happen... */
+ if (rr->renlay == NULL || renrect->ymax >= rr->recty)
+ return;
+
+ /* xmin here is first subrect x coord, xmax defines subrect width */
+ xmin = renrect->xmin + rr->crop;
+ xmax = renrect->xmax - xmin + rr->crop;
+ if (xmax < 2)
+ return;
+
+ ymin = renrect->ymin + rr->crop;
+ ymax = renrect->ymax - ymin + rr->crop;
+ if (ymax < 2)
+ return;
+ renrect->ymin = renrect->ymax;
+
+ }
+ else {
+ xmin = ymin = rr->crop;
+ xmax = rr->rectx - 2 * rr->crop;
+ ymax = rr->recty - 2 * rr->crop;
+ }
+
+ /* xmin ymin is in tile coords. transform to ibuf */
+ rxmin = rr->tilerect.xmin + xmin;
+ if (rxmin >= ibuf->x) return;
+ rymin = rr->tilerect.ymin + ymin;
+ if (rymin >= ibuf->y) return;
+
+ if (rxmin + xmax > ibuf->x)
+ xmax = ibuf->x - rxmin;
+ if (rymin + ymax > ibuf->y)
+ ymax = ibuf->y - rymin;
+
+ if (xmax < 1 || ymax < 1) return;
+
+ /* The thing here is, the logic below (which was default behavior
+ * of how rectf is acquiring since forever) gives float buffer for
+ * composite output only. This buffer can not be used for other
+ * passes obviously.
+ *
+ * We might try finding corresponding for pass buffer in render result
+ * (which is actually missing when rendering with Cycles, who only
+ * writes all the passes when the tile is finished) or use float
+ * buffer from image buffer as reference, which is easier to use and
+ * contains all the data we need anyway.
+ * - sergey -
+ */
+ /* TODO(sergey): Need to check has_combined here? */
+ if (iuser->pass == 0) {
+ RenderView *rv;
+ const int view_id = BKE_scene_multiview_view_id_get(&scene->r, viewname);
+ rv = RE_RenderViewGetById(rr, view_id);
+
+ /* find current float rect for display, first case is after composite... still weak */
+ if (rv->rectf)
+ rectf = rv->rectf;
+ else {
+ if (rv->rect32) {
+ /* special case, currently only happens with sequencer rendering,
+ * which updates the whole frame, so we can only mark display buffer
+ * as invalid here (sergey)
+ */
+ ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
+ return;
+ }
+ else {
+ if (rr->renlay == NULL) return;
+ rectf = RE_RenderLayerGetPass(rr->renlay, RE_PASSNAME_COMBINED, viewname);
+ }
+ }
+ if (rectf == NULL) return;
+
+ rectf += 4 * (rr->rectx * ymin + xmin);
+ linear_stride = rr->rectx;
+ linear_offset_x = rxmin;
+ linear_offset_y = rymin;
+ }
+ else {
+ rectf = ibuf->rect_float;
+ linear_stride = ibuf->x;
+ linear_offset_x = 0;
+ linear_offset_y = 0;
+ }
+
+ if (rr->do_exr_tile) {
+ /* We don't support changing color management settings during rendering
+ * when using Save Buffers option.
+ */
+ view_settings = &rj->view_settings;
+ display_settings = &rj->display_settings;
+ }
+ else {
+ view_settings = &scene->view_settings;
+ display_settings = &scene->display_settings;
+ }
+
+ IMB_partial_display_buffer_update(ibuf, rectf, NULL,
+ linear_stride, linear_offs
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list