Commit: 3824f08ce7257520744966180c2e95bbd400b728
Author: Stefan Werner
Date:   Tue Jun 20 13:33:34 2017 +0200
Branches: temp_cryptomatte
https://developer.blender.org/rB3824f08ce7257520744966180c2e95bbd400b728

Merge branch 'master' of git.blender.org:blender into temp-cryptomatte

# Conflicts:
#       intern/cycles/blender/blender_session.cpp
#       intern/cycles/blender/blender_sync.cpp
#       intern/cycles/blender/blender_sync.h

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



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

diff --cc intern/cycles/blender/addon/ui.py
index 453626fe85e,38a39e19003..43bec8ae073
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@@ -566,33 -531,18 +566,33 @@@ class CyclesRender_PT_layer_passes(Cycl
          col.prop(rl, "use_pass_environment")
  
          if context.scene.cycles.feature_set == 'EXPERIMENTAL':
-            col.separator()
-            sub = col.column()
-            sub.active = crl.use_denoising
-            sub.prop(crl, "denoising_store_passes", text="Denoising")
+             col.separator()
+             sub = col.column()
+             sub.active = crl.use_denoising
+             sub.prop(crl, "denoising_store_passes", text="Denoising")
  
          if _cycles.with_cycles_debug:
-           col = layout.column()
-           col.prop(crl, "pass_debug_bvh_traversed_nodes")
-           col.prop(crl, "pass_debug_bvh_traversed_instances")
-           col.prop(crl, "pass_debug_bvh_intersections")
-           col.prop(crl, "pass_debug_ray_bounces")
+             col = layout.column()
+             col.prop(crl, "pass_debug_bvh_traversed_nodes")
+             col.prop(crl, "pass_debug_bvh_traversed_instances")
+             col.prop(crl, "pass_debug_bvh_intersections")
+             col.prop(crl, "pass_debug_ray_bounces")
  
 +        crl = rl.cycles
 +        layout.label("Cryptomatte:")
 +        row = layout.row(align=True)
 +        row.prop(crl, "use_pass_crypto_object", text="Object", toggle=True)
 +        row.prop(crl, "use_pass_crypto_material", text="Material", 
toggle=True)
 +        row = layout.row(align=True)
 +        row.prop(crl, "pass_crypto_depth")
 +
 +        layout.label("AOVs:")
 +        row = layout.row()
 +        row.template_list("CyclesAOVList", "", crl, "aovs", crl, "active_aov")
 +        sub = row.column(align=True)
 +        sub.operator("scenerenderlayer.aov_add", icon='ZOOMIN', text="")
 +        sub.operator("scenerenderlayer.aov_delete", icon='ZOOMOUT', text="")
 +              
  
  class CyclesRender_PT_views(CyclesButtonsPanel, Panel):
      bl_label = "Views"
diff --cc intern/cycles/blender/blender_session.cpp
index 9d142578fe8,2b5dd5eadea..a9709587ee7
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@@ -398,9 -398,9 +398,8 @@@ void BlenderSession::render(
  
                BL::RenderLayer b_rlay = *b_single_rlay;
  
-               sync->sync_film(b_rlay, *b_layer_iter, 
session_params.device.advanced_shading);
- 
 -              /* add passes */
 -              array<Pass> passes = sync->sync_render_passes(b_rlay, 
*b_layer_iter, session_params);
 -              buffer_params.passes = passes;
++              sync->sync_film(b_rlay, *b_layer_iter, session_params);
 +              buffer_params.passes = scene->film->passes;
  
                PointerRNA crl = RNA_pointer_get(&b_layer_iter->ptr, "cycles");
                bool use_denoising = !session_params.progressive_refine && 
get_boolean(crl, "use_denoising");
diff --cc intern/cycles/blender/blender_sync.cpp
index 47c87a3b76f,3a00384458a..dae50a5138b
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@@ -552,115 -552,65 +552,116 @@@ int BlenderSync::get_denoising_pass(BL:
        return -1;
  }
  
 -array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
 -                                            BL::SceneRenderLayer& b_srlay,
 -                                            const SessionParams 
&session_params)
 +void BlenderSync::sync_film(BL::RenderLayer& b_rlay,
 +                              BL::SceneRenderLayer& b_srlay,
-                               bool advanced_shading)
++                             const SessionParams &session_params)
  {
 -      array<Pass> passes;
 -      Pass::add(PASS_COMBINED, passes);
 -
 -      if(!session_params.device.advanced_shading) {
 -              return passes;
 -      }
 +      PassSettings passes;
-       
-       PointerRNA crl = RNA_pointer_get(&b_srlay.ptr, "cycles");
++      PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
  
-       if(advanced_shading) {
 -      /* loop over passes */
 -      BL::RenderLayer::passes_iterator b_pass_iter;
++      if(session_params.device.advanced_shading) {
 +              /* loop over passes */
 +              BL::RenderLayer::passes_iterator b_pass_iter;
  
 -      for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != 
b_rlay.passes.end(); ++b_pass_iter) {
 -              BL::RenderPass b_pass(*b_pass_iter);
 -              PassType pass_type = get_pass_type(b_pass);
 +              for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != 
b_rlay.passes.end(); ++b_pass_iter) {
 +                      BL::RenderPass b_pass(*b_pass_iter);
 +                      PassType pass_type = get_pass_type(b_pass);
  
 -              if(pass_type == PASS_MOTION && scene->integrator->motion_blur)
 -                      continue;
 -              if(pass_type != PASS_NONE)
 -                      Pass::add(pass_type, passes);
 -      }
 +                      if(pass_type == PASS_MOTION && 
scene->integrator->motion_blur)
 +                              continue;
 +                      if(pass_type != PASS_NONE)
 +                              passes.add(pass_type);
 +              }
  
 -      PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
 -      if(get_boolean(crp, "denoising_store_passes") &&
 -         get_boolean(crp, "use_denoising") &&
 -         !session_params.progressive_refine) {
 -              b_engine.add_pass("Denoising Normal",          3, "XYZ", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Normal Variance", 3, "XYZ", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Albedo",          3, "RGB", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Albedo Variance", 3, "RGB", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Depth",           1, "Z",   
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Depth Variance",  1, "Z",   
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Shadow A",        3, "XYV", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Shadow B",        3, "XYV", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Image",           3, "RGB", 
b_srlay.name().c_str());
 -              b_engine.add_pass("Denoising Image Variance",  3, "RGB", 
b_srlay.name().c_str());
 -      }
 +              /* make Crypto passes appear before user defined AOVs
-                * that way, their indices are known */
++                      * that way, their indices are known */
 +              
-               int crypto_depth = std::min(16, get_int(crl, 
"pass_crypto_depth")) / 2;
++              int crypto_depth = std::min(16, get_int(crp, 
"pass_crypto_depth")) / 2;
 +              scene->film->use_cryptomatte = crypto_depth;
-       
-               if(get_boolean(crl, "use_pass_crypto_object")) {
++
++              if(get_boolean(crp, "use_pass_crypto_object")) {
 +                      for(int i = 0; i < crypto_depth; ++i) {
 +                              string passname = 
string_printf("uCryptoObject%02d", i);
 +                              AOV aov = {ustring(passname), 9999, 
AOV_CRYPTOMATTE};
 +                              passes.add(aov);
 +                              passname = "AOV " + passname;
 +                              b_engine.add_pass(passname.c_str(), 4, "RGBA", 
b_srlay.name().c_str());
 +                      }
 +                      scene->film->use_cryptomatte |= CRYPT_OBJECT;
 +              }
 +              
-               if(get_boolean(crl, "use_pass_crypto_material")) {
++              if(get_boolean(crp, "use_pass_crypto_material")) {
 +                      for(int i = 0; i < crypto_depth; ++i) {
 +                              string passname = 
string_printf("uCryptoMaterial%02d", i);
 +                              AOV aov = {ustring(passname), 9999, 
AOV_CRYPTOMATTE};
 +                              passes.add(aov);
 +                              passname = "AOV " + passname;
 +                              b_engine.add_pass(passname.c_str(), 4, "RGBA", 
b_srlay.name().c_str());
 +                      }
 +                      scene->film->use_cryptomatte |= CRYPT_MATERIAL;
 +              }
 +              
-               RNA_BEGIN(&crl, b_aov, "aovs") {
++              RNA_BEGIN(&crp, b_aov, "aovs") {
 +                      bool is_color = RNA_enum_get(&b_aov, "type");
 +                      string name = get_string(b_aov, "name");
 +                      AOV aov = {ustring(name), 9999, is_color ? AOV_RGB : 
AOV_FLOAT};
 +                      passes.add(aov);
 +                      string passname = string_printf("AOV %s", name.c_str());
 +                      b_engine.add_pass(passname.c_str(), is_color ? 3 : 1, 
is_color ? "RGB" : "X", b_srlay.name().c_str());
 +              } RNA_END
 +
-               if(get_boolean(crl, "denoising_store_passes")) {
++              if(get_boolean(crp, "denoising_store_passes") &&
++                 get_boolean(crp, "use_denoising") &&
++                 !session_params.progressive_refine) {
 +                      b_engine.add_pass("Denoising Normal",          3, 
"XYZ", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Normal Variance", 3, 
"XYZ", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Albedo",          3, 
"RGB", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Albedo Variance", 3, 
"RGB", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Depth",           1, "Z",  
 b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Depth Variance",  1, "Z",  
 b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Shadow A",        3, 
"XYV", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Shadow B",        3, 
"XYV", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Image",           3, 
"RGB", b_srlay.name().c_str());
 +                      b_engine.add_pass("Denoising Image Variance",  3, 
"RGB", b_srlay.name().c_str());
 +              }
  #ifdef __KERNEL_DEBUG__
 -      if(get_boolean(crp, "pass_debug_bvh_traversed_nodes")) {
 -              b_engine.add_pass("Debug BVH Traversed Nodes", 1, "X", 
b_srlay.name().c_str());
 -              Pass::add(PASS_BVH_TRAVERSED_NODES, passes);
 -      }
 -      if(get_boolean(crp, "pass_debug_bvh_traversed_instances")) {
 -              b_engine.add_pass("Debug BVH Traversed Instances", 1, "X", 
b_srlay.name().c_str());
 -              Pass::add(PASS_BVH_TRAVERSED_INSTANCES, passes);
 -      }
 -      if(get_boolean(crp, "pass_debug_bvh_intersections")) {
 -              b_engine.add_pass("Debug BVH Intersections", 1, "X", 
b_srlay.name().c_str());
 -              Pass::add(PASS_BVH_INTERSECTIONS, passes);
 -      }
 -      if(get_boolean(crp, "pass_debug_ray_bounces")) {
 -              b_engine.add_pass("Debug Ray Bounces", 1, "X", 
b_srlay.name().c_str());
 -              Pass::add(PASS_RAY_BOUNCES, passes);
 -      }
 +              if(get_boolean(crp, "pass_debug_bvh_traversed_nodes")) {
 +                      b_engine.add_pass("Debug BVH Traversed Nodes", 1, "X", 
b_srlay.name().c_str());
-                       Pass::add(PASS_BVH_TRAVERSED_NODES, passes);
++                      passes.add(PASS_BVH_TRAVERSED_NODES);
 +              }
 +              if(get_boolean(crp, "pass_debug_bvh_traversed_instances")) {
 +                      b_engine.add_pass("Debug BVH Traversed Instances", 1, 
"X", b_srlay.name().c_str());
-                       Pass::add(PASS_BVH_TRAVERSED_INSTANCES, passes);
++                      Pass::add(PASS_BVH_TRAVERSED_INSTANCES);
 +              }
 +              if(get_boolean(crp, "pass_debug_bvh_intersections")) {
 +                      b_engine.add_pass("Debug BVH Intersections", 1, "X", 
b_srlay.name().c_str());
-                       Pass::add(PASS_BVH_INTERSECTIONS, passes);
++                      pas

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