[Bf-blender-cvs] [62e0efacbb4] temp-eevee-next-cryptomatte: Merge branch 'master' into temp-eevee-next-cryptomatte

Jeroen Bakker noreply at git.blender.org
Fri Sep 2 08:33:12 CEST 2022


Commit: 62e0efacbb4bb9304c5ffe3f12eb76fe0e78620c
Author: Jeroen Bakker
Date:   Tue Aug 30 10:34:30 2022 +0200
Branches: temp-eevee-next-cryptomatte
https://developer.blender.org/rB62e0efacbb4bb9304c5ffe3f12eb76fe0e78620c

Merge branch 'master' into temp-eevee-next-cryptomatte

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



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

diff --cc source/blender/draw/engines/eevee_next/eevee_instance.cc
index 43ba48a4b6e,d28eb55c3b1..1a22c6c6f6d
--- a/source/blender/draw/engines/eevee_next/eevee_instance.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_instance.cc
@@@ -320,23 -308,6 +320,68 @@@ void Instance::draw_viewport(DefaultFra
    }
  }
  
 +void Instance::update_passes(RenderEngine *engine, Scene *scene, ViewLayer *view_layer)
 +{
++  RE_engine_register_pass(engine, scene, view_layer, RE_PASSNAME_COMBINED, 4, "RGBA", SOCK_RGBA);
++
++#define CHECK_PASS_LEGACY(name, type, channels, chanid) \
++  if (view_layer->passflag & (SCE_PASS_##name)) { \
++    RE_engine_register_pass( \
++        engine, scene, view_layer, RE_PASSNAME_##name, channels, chanid, type); \
++  } \
++  ((void)0)
++#define CHECK_PASS_EEVEE(name, type, channels, chanid) \
++  if (view_layer->eevee.render_passes & (EEVEE_RENDER_PASS_##name)) { \
++    RE_engine_register_pass( \
++        engine, scene, view_layer, RE_PASSNAME_##name, channels, chanid, type); \
++  } \
++  ((void)0)
++
++  CHECK_PASS_LEGACY(Z, SOCK_FLOAT, 1, "Z");
++  CHECK_PASS_LEGACY(MIST, SOCK_FLOAT, 1, "Z");
++  CHECK_PASS_LEGACY(NORMAL, SOCK_VECTOR, 3, "XYZ");
++  CHECK_PASS_LEGACY(DIFFUSE_DIRECT, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_LEGACY(DIFFUSE_COLOR, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_LEGACY(GLOSSY_DIRECT, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_LEGACY(GLOSSY_COLOR, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_EEVEE(VOLUME_LIGHT, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_LEGACY(EMIT, SOCK_RGBA, 3, "RGB");
++  CHECK_PASS_LEGACY(ENVIRONMENT, SOCK_RGBA, 3, "RGB");
++  /* TODO: CHECK_PASS_LEGACY(SHADOW, SOCK_RGBA, 3, "RGB");
++   * CHECK_PASS_LEGACY(AO, SOCK_RGBA, 3, "RGB");
++   * When available they should be converted from Value textures to RGB. */
++
++  LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
++    if ((aov->flag & AOV_CONFLICT) != 0) {
++      continue;
++    }
++    switch (aov->type) {
++      case AOV_TYPE_COLOR:
++        RE_engine_register_pass(engine, scene, view_layer, aov->name, 4, "RGBA", SOCK_RGBA);
++        break;
++      case AOV_TYPE_VALUE:
++        RE_engine_register_pass(engine, scene, view_layer, aov->name, 1, "X", SOCK_FLOAT);
++        break;
++      default:
++        break;
++    }
++  }
++
 +  auto register_cryptomatte_passes = [&](eViewLayerCryptomatteFlags cryptomatte_layer,
 +                                         eViewLayerEEVEEPassType eevee_pass) {
 +    if (view_layer->cryptomatte_flag & cryptomatte_layer) {
 +      for (std::string pass_name : Film::pass_to_render_pass_names(eevee_pass, view_layer)) {
 +        RE_engine_register_pass(
 +            engine, scene, view_layer, pass_name.c_str(), 4, "RGBA", SOCK_RGBA);
 +      }
 +    }
 +  };
 +  register_cryptomatte_passes(VIEW_LAYER_CRYPTOMATTE_OBJECT, EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT);
 +  register_cryptomatte_passes(VIEW_LAYER_CRYPTOMATTE_ASSET, EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET);
 +  register_cryptomatte_passes(VIEW_LAYER_CRYPTOMATTE_MATERIAL,
 +                              EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL);
 +}
 +
  /** \} */
  
  }  // namespace blender::eevee



More information about the Bf-blender-cvs mailing list