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. @@

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

Reply via email to