Blender  V3.3
Macros | Typedefs | Enumerations | Functions
eevee_renderpasses.c File Reference
#include "DRW_engine.h"
#include "DRW_render.h"
#include "draw_color_management.h"
#include "BKE_global.h"
#include "BLI_hash.h"
#include "BLI_string_utils.h"
#include "DEG_depsgraph_query.h"
#include "eevee_private.h"

Go to the source code of this file.

Macros

#define EEVEE_RENDERPASSES_WITH_POST_PROCESSING
 
#define EEVEE_RENDERPASSES_ALL    (EEVEE_RENDERPASSES_WITH_POST_PROCESSING | EEVEE_RENDER_PASS_COMBINED)
 
#define EEVEE_RENDERPASSES_POST_PROCESS_ON_FIRST_SAMPLE    (EEVEE_RENDER_PASS_Z | EEVEE_RENDER_PASS_NORMAL)
 
#define EEVEE_RENDERPASSES_COLOR_PASS
 
#define EEVEE_RENDERPASSES_LIGHT_PASS    (EEVEE_RENDER_PASS_DIFFUSE_LIGHT | EEVEE_RENDER_PASS_SPECULAR_LIGHT)
 
#define EEVEE_RENDERPASSES_USES_TRANSMITTANCE
 
#define ENABLE_FROM_LEGACY(name_legacy, name_eevee)
 

Typedefs

typedef enum eRenderPassPostProcessType eRenderPassPostProcessType
 

Enumerations

enum  eRenderPassPostProcessType {
  PASS_POST_UNDEFINED = 0 , PASS_POST_ACCUMULATED_COLOR = 1 , PASS_POST_ACCUMULATED_COLOR_ALPHA = 2 , PASS_POST_ACCUMULATED_LIGHT = 3 ,
  PASS_POST_ACCUMULATED_VALUE = 4 , PASS_POST_DEPTH = 5 , PASS_POST_AO = 6 , PASS_POST_NORMAL = 7 ,
  PASS_POST_TWO_LIGHT_BUFFERS = 8 , PASS_POST_ACCUMULATED_TRANSMITTANCE_COLOR = 9
}
 

Functions

bool EEVEE_renderpasses_only_first_sample_pass_active (EEVEE_Data *vedata)
 
uint EEVEE_renderpasses_aov_hash (const ViewLayerAOV *aov)
 
void EEVEE_renderpasses_init (EEVEE_Data *vedata)
 
BLI_INLINE bool eevee_renderpasses_volumetric_active (const EEVEE_EffectsInfo *effects, const EEVEE_PrivateData *g_data)
 
void EEVEE_renderpasses_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_renderpasses_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_renderpasses_postprocess (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, eViewLayerEEVEEPassType renderpass_type, int aov_index)
 
void EEVEE_renderpasses_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, bool post_effect)
 
void EEVEE_renderpasses_draw (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_renderpasses_draw_debug (EEVEE_Data *vedata)
 

Macro Definition Documentation

◆ EEVEE_RENDERPASSES_ALL

Definition at line 41 of file eevee_renderpasses.c.

◆ EEVEE_RENDERPASSES_COLOR_PASS

#define EEVEE_RENDERPASSES_COLOR_PASS
Value:
EEVEE_RENDER_PASS_BLOOM)
@ EEVEE_RENDER_PASS_DIFFUSE_COLOR
@ EEVEE_RENDER_PASS_SPECULAR_COLOR
@ EEVEE_RENDER_PASS_EMIT

Definition at line 47 of file eevee_renderpasses.c.

◆ EEVEE_RENDERPASSES_LIGHT_PASS

Definition at line 50 of file eevee_renderpasses.c.

◆ EEVEE_RENDERPASSES_POST_PROCESS_ON_FIRST_SAMPLE

#define EEVEE_RENDERPASSES_POST_PROCESS_ON_FIRST_SAMPLE    (EEVEE_RENDER_PASS_Z | EEVEE_RENDER_PASS_NORMAL)

Definition at line 44 of file eevee_renderpasses.c.

◆ EEVEE_RENDERPASSES_USES_TRANSMITTANCE

#define EEVEE_RENDERPASSES_USES_TRANSMITTANCE
Value:

Definition at line 53 of file eevee_renderpasses.c.

◆ EEVEE_RENDERPASSES_WITH_POST_PROCESSING

#define EEVEE_RENDERPASSES_WITH_POST_PROCESSING
Value:
EEVEE_RENDER_PASS_SHADOW | EEVEE_RENDERPASSES_MATERIAL)
@ EEVEE_RENDER_PASS_NORMAL
@ EEVEE_RENDER_PASS_VOLUME_LIGHT
@ EEVEE_RENDER_PASS_BLOOM
@ EEVEE_RENDER_PASS_Z
@ EEVEE_RENDER_PASS_MIST
#define EEVEE_RENDERPASSES_MATERIAL

Definition at line 36 of file eevee_renderpasses.c.

◆ ENABLE_FROM_LEGACY

#define ENABLE_FROM_LEGACY (   name_legacy,
  name_eevee 
)
Value:
SET_FLAG_FROM_TEST(enabled_render_passes, \
(view_layer->passflag & SCE_PASS_##name_legacy) != 0, \
EEVEE_RENDER_PASS_##name_eevee);
#define SET_FLAG_FROM_TEST(value, test, flag)

Typedef Documentation

◆ eRenderPassPostProcessType

Enumeration Type Documentation

◆ eRenderPassPostProcessType

Enumerator
PASS_POST_UNDEFINED 
PASS_POST_ACCUMULATED_COLOR 
PASS_POST_ACCUMULATED_COLOR_ALPHA 
PASS_POST_ACCUMULATED_LIGHT 
PASS_POST_ACCUMULATED_VALUE 
PASS_POST_DEPTH 
PASS_POST_AO 
PASS_POST_NORMAL 
PASS_POST_TWO_LIGHT_BUFFERS 
PASS_POST_ACCUMULATED_TRANSMITTANCE_COLOR 

Definition at line 22 of file eevee_renderpasses.c.

Function Documentation

◆ EEVEE_renderpasses_aov_hash()

uint EEVEE_renderpasses_aov_hash ( const ViewLayerAOV aov)

Calculate the hash for an AOV. The least significant bit is used to store the AOV type the rest of the bits are used for the name hash.

Definition at line 63 of file eevee_renderpasses.c.

References AOV_TYPE_COLOR, BLI_hash_string(), EEVEE_AOV_HASH_COLOR_TYPE_MASK, hash, ViewLayerAOV::name, SET_FLAG_FROM_TEST, and ViewLayerAOV::type.

Referenced by EEVEE_materials_init(), and EEVEE_renderpasses_init().

◆ EEVEE_renderpasses_cache_finish()

void EEVEE_renderpasses_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_renderpasses_draw()

void EEVEE_renderpasses_draw ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_renderpasses_draw_debug()

void EEVEE_renderpasses_draw_debug ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_init()

void EEVEE_renderpasses_init ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_only_first_sample_pass_active()

bool EEVEE_renderpasses_only_first_sample_pass_active ( EEVEE_Data vedata)

◆ EEVEE_renderpasses_output_accumulate()

void EEVEE_renderpasses_output_accumulate ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
bool  post_effect 
)

◆ EEVEE_renderpasses_output_init()

void EEVEE_renderpasses_output_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
uint  tot_samples 
)

◆ EEVEE_renderpasses_postprocess()

void EEVEE_renderpasses_postprocess ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata,
eViewLayerEEVEEPassType  renderpass_type,
int  aov_index 
)

Definition at line 243 of file eevee_renderpasses.c.

References EEVEE_TextureList::ao_accum, EEVEE_TextureList::aov_surface_accum, EEVEE_TextureList::bloom_accum, EEVEE_TextureList::color, EEVEE_TextureList::diff_color_accum, EEVEE_TextureList::diff_light_accum, DRW_draw_pass(), DRW_state_is_image_render(), EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_AOV, EEVEE_RENDER_PASS_BLOOM, EEVEE_RENDER_PASS_DIFFUSE_COLOR, EEVEE_RENDER_PASS_DIFFUSE_LIGHT, EEVEE_RENDER_PASS_EMIT, EEVEE_RENDER_PASS_ENVIRONMENT, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_NORMAL, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDER_PASS_SPECULAR_COLOR, EEVEE_RENDER_PASS_SPECULAR_LIGHT, EEVEE_RENDER_PASS_VOLUME_LIGHT, EEVEE_RENDER_PASS_Z, eevee_renderpasses_volumetric_active(), EFFECT_SSR, EFFECT_SSS, EEVEE_StorageList::effects, EEVEE_TextureList::emit_accum, EEVEE_EffectsInfo::enabled_effects, EEVEE_TextureList::env_accum, EEVEE_Data::fbl, EEVEE_StorageList::g_data, g_data, GPU_framebuffer_bind(), EEVEE_TextureList::mist_accum, PASS_POST_ACCUMULATED_COLOR, PASS_POST_ACCUMULATED_COLOR_ALPHA, PASS_POST_ACCUMULATED_LIGHT, PASS_POST_ACCUMULATED_TRANSMITTANCE_COLOR, PASS_POST_ACCUMULATED_VALUE, PASS_POST_AO, PASS_POST_DEPTH, PASS_POST_NORMAL, PASS_POST_TWO_LIGHT_BUFFERS, PASS_POST_UNDEFINED, EEVEE_Data::psl, EEVEE_FramebufferList::renderpass_fb, EEVEE_PassList::renderpass_pass, EEVEE_TextureList::shadow_accum, EEVEE_TextureList::spec_color_accum, EEVEE_TextureList::spec_light_accum, EEVEE_TextureList::ssr_accum, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_TextureList::sss_accum, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, EEVEE_Data::txl, EEVEE_TextureList::volume_scatter_accum, and EEVEE_TextureList::volume_transmittance_accum.

Referenced by EEVEE_renderpasses_draw().

◆ eevee_renderpasses_volumetric_active()

BLI_INLINE bool eevee_renderpasses_volumetric_active ( const EEVEE_EffectsInfo effects,
const EEVEE_PrivateData g_data 
)