EEVEE-Next: Register render passes for compositor.
EEVEE-Next passes were rendered to the render result, but didn't appear in the compositor. Reasoning is that when a render engine has the update render passes callback registered it would not register any default render passes. This callback is used to update the Render Layer node. This patch implements the callback for EEVEE-Next with the render passes that are already available. In the future the callback should be extended. Note that AO/SHADOW render passes have been disabled for now as they need to be converted to color buffers.
This commit is contained in:
parent
a65676e6e9
commit
d2c0d86a38
|
@ -172,7 +172,51 @@ static void eevee_render_update_passes(RenderEngine *engine, Scene *scene, ViewL
|
|||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
UNUSED_VARS(engine, scene, 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const DrawEngineDataSize eevee_data_size = DRW_VIEWPORT_DATA_SIZE(EEVEE_Data);
|
||||
|
|
Loading…
Reference in New Issue