[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