Eevee: Render: Make render passes appear in compositor.
This commit is contained in:
parent
7049bcf76e
commit
44c4d62092
|
@ -497,7 +497,8 @@ DrawEngineType draw_engine_eevee_type = {
|
|||
RenderEngineType DRW_engine_viewport_eevee_type = {
|
||||
NULL, NULL,
|
||||
EEVEE_ENGINE, N_("Eevee"), RE_INTERNAL | RE_USE_SHADING_NODES,
|
||||
NULL, &DRW_render_to_image, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, &DRW_render_to_image, NULL, NULL, NULL, NULL,
|
||||
&EEVEE_render_update_passes,
|
||||
&eevee_layer_collection_settings_create,
|
||||
&eevee_view_layer_settings_create,
|
||||
&draw_engine_eevee_type,
|
||||
|
|
|
@ -875,10 +875,11 @@ void EEVEE_effects_do_gtao(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata);
|
|||
void EEVEE_draw_effects(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata);
|
||||
void EEVEE_effects_free(void);
|
||||
|
||||
/* eevee_ */
|
||||
/* eevee_render.c */
|
||||
void EEVEE_render_init(EEVEE_Data *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph);
|
||||
void EEVEE_render_cache(void *vedata, struct Object *ob, struct RenderEngine *engine, struct Depsgraph *depsgraph);
|
||||
void EEVEE_render_draw(EEVEE_Data *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph);
|
||||
void EEVEE_render_update_passes(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer);
|
||||
|
||||
/* Shadow Matrix */
|
||||
static const float texcomat[4][4] = { /* From NDC to TexCo */
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include "DRW_engine.h"
|
||||
#include "DRW_render.h"
|
||||
|
||||
#include "DNA_node_types.h"
|
||||
|
||||
#include "BLI_rand.h"
|
||||
|
||||
#include "DEG_depsgraph_query.h"
|
||||
|
@ -416,3 +418,26 @@ void EEVEE_render_draw(EEVEE_Data *vedata, struct RenderEngine *engine, struct D
|
|||
|
||||
RE_engine_end_result(engine, rr, false, false, false);
|
||||
}
|
||||
|
||||
void EEVEE_render_update_passes(RenderEngine *engine, Scene *scene, ViewLayer *view_layer)
|
||||
{
|
||||
int type;
|
||||
|
||||
RE_engine_register_pass(engine, scene, view_layer, RE_PASSNAME_COMBINED, 4, "RGBA", SOCK_RGBA);
|
||||
|
||||
#define CHECK_PASS(name, channels, chanid) \
|
||||
if (view_layer->passflag & (SCE_PASS_ ## name)) { \
|
||||
if (channels == 4) type = SOCK_RGBA; \
|
||||
else if (channels == 3) type = SOCK_VECTOR; \
|
||||
else type = SOCK_FLOAT; \
|
||||
RE_engine_register_pass(engine, scene, view_layer, RE_PASSNAME_ ## name, channels, chanid, type); \
|
||||
}
|
||||
|
||||
CHECK_PASS(Z, 1, "Z");
|
||||
CHECK_PASS(MIST, 1, "Z");
|
||||
CHECK_PASS(NORMAL, 3, "XYZ");
|
||||
CHECK_PASS(SUBSURFACE_COLOR, 3, "RGB");
|
||||
CHECK_PASS(SUBSURFACE_DIRECT, 3, "RGB");
|
||||
|
||||
#undef CHECK_PASS
|
||||
}
|
Loading…
Reference in New Issue