Blender
V3.3
|
#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.
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) |
#define EEVEE_RENDERPASSES_ALL (EEVEE_RENDERPASSES_WITH_POST_PROCESSING | EEVEE_RENDER_PASS_COMBINED) |
Definition at line 41 of file eevee_renderpasses.c.
#define EEVEE_RENDERPASSES_COLOR_PASS |
Definition at line 47 of file eevee_renderpasses.c.
#define EEVEE_RENDERPASSES_LIGHT_PASS (EEVEE_RENDER_PASS_DIFFUSE_LIGHT | EEVEE_RENDER_PASS_SPECULAR_LIGHT) |
Definition at line 50 of file eevee_renderpasses.c.
#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.
#define EEVEE_RENDERPASSES_USES_TRANSMITTANCE |
Definition at line 53 of file eevee_renderpasses.c.
#define EEVEE_RENDERPASSES_WITH_POST_PROCESSING |
Definition at line 36 of file eevee_renderpasses.c.
#define ENABLE_FROM_LEGACY | ( | name_legacy, | |
name_eevee | |||
) |
typedef enum eRenderPassPostProcessType eRenderPassPostProcessType |
Definition at line 22 of file eevee_renderpasses.c.
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().
void EEVEE_renderpasses_cache_finish | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 212 of file eevee_renderpasses.c.
References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, DefaultTextureList::depth, DRW_cache_fullscreen_quad_get(), DRW_PASS_CREATE, DRW_shgroup_call, DRW_shgroup_create(), DRW_shgroup_uniform_block_ref, DRW_shgroup_uniform_int(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_WRITE_COLOR, DRW_viewport_texture_list_get(), EEVEE_RENDERPASSES_WITH_POST_PROCESSING, EEVEE_shaders_renderpasses_post_process_sh_get(), EEVEE_StorageList::g_data, g_data, NULL, EEVEE_Data::psl, EEVEE_PassList::renderpass_pass, EEVEE_ViewLayerData::renderpass_ubo, and EEVEE_Data::stl.
Referenced by eevee_cache_finish(), and eevee_render_to_image().
void EEVEE_renderpasses_draw | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 408 of file eevee_renderpasses.c.
References DefaultFramebufferList::default_fb, DRW_state_is_opengl_render(), DRW_transform_none(), DRW_viewport_framebuffer_list_get(), EEVEE_RENDER_PASS_BLOOM, EEVEE_RENDERPASSES_ALL, EEVEE_RENDERPASSES_COLOR_PASS, EEVEE_RENDERPASSES_LIGHT_PASS, EEVEE_RENDERPASSES_POST_PROCESS_ON_FIRST_SAMPLE, EEVEE_renderpasses_postprocess(), EFFECT_BLOOM, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, EEVEE_StorageList::g_data, GPU_framebuffer_bind(), is_valid, EEVEE_FramebufferList::main_fb, EEVEE_PrivateData::render_passes, EEVEE_TextureList::renderpass, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, EEVEE_EffectsInfo::taa_total_sample, EEVEE_Data::txl, and UNUSED_VARS.
Referenced by eevee_draw_scene().
void EEVEE_renderpasses_draw_debug | ( | EEVEE_Data * | vedata | ) |
Definition at line 454 of file eevee_renderpasses.c.
References EEVEE_TextureList::color_double_buffer, DRW_transform_none(), EEVEE_StorageList::effects, G, EEVEE_EffectsInfo::gtao_horizons_renderpass, EEVEE_TextureList::maxzbuffer, NULL, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_EffectsInfo::ssr_specrough_input, EEVEE_EffectsInfo::sss_albedo, EEVEE_EffectsInfo::sss_irradiance, EEVEE_EffectsInfo::sss_radius, EEVEE_Data::stl, EEVEE_Data::txl, and EEVEE_EffectsInfo::velocity_tx.
Referenced by eevee_draw_scene().
void EEVEE_renderpasses_init | ( | EEVEE_Data * | vedata | ) |
Definition at line 70 of file eevee_renderpasses.c.
References View3DShading::aov_name, ViewLayer::aovs, BLI_findstring(), BLI_listbase_is_empty(), DRW_context_state_get(), DRW_state_is_image_render(), ViewLayer::eevee, Scene::eevee, EEVEE_AOV_HASH_ALL, EEVEE_cryptomatte_renderpasses_init(), EEVEE_material_renderpasses_init(), EEVEE_RENDER_PASS_AOV, EEVEE_RENDER_PASS_BLOOM, EEVEE_RENDER_PASS_COMBINED, EEVEE_RENDERPASSES_ALL, EEVEE_renderpasses_aov_hash(), ENABLE_FROM_LEGACY, SceneEEVEE::flag, EEVEE_StorageList::g_data, g_data, NORMAL, NULL, View3DShading::render_pass, ViewLayerEEVEE::render_passes, SCE_EEVEE_BLOOM_ENABLED, scene, DRWContextState::scene, View3D::shading, EEVEE_Data::stl, DRWContextState::v3d, DRWContextState::view_layer, and Z.
Referenced by eevee_engine_init(), and EEVEE_render_modules_init().
bool EEVEE_renderpasses_only_first_sample_pass_active | ( | EEVEE_Data * | vedata | ) |
Definition at line 56 of file eevee_renderpasses.c.
References EEVEE_RENDERPASSES_POST_PROCESS_ON_FIRST_SAMPLE, EEVEE_StorageList::g_data, g_data, and EEVEE_Data::stl.
Referenced by EEVEE_temporal_sampling_init().
void EEVEE_renderpasses_output_accumulate | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata, | ||
bool | post_effect | ||
) |
Definition at line 371 of file eevee_renderpasses.c.
References EEVEE_bloom_output_accumulate(), EEVEE_cryptomatte_output_accumulate(), EEVEE_material_output_accumulate(), EEVEE_mist_output_accumulate(), EEVEE_occlusion_output_accumulate(), EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_BLOOM, EEVEE_RENDER_PASS_CRYPTOMATTE, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDERPASSES_MATERIAL, eevee_renderpasses_volumetric_active(), EEVEE_shadow_output_accumulate(), EEVEE_volumes_output_accumulate(), EFFECT_BLOOM, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_StorageList::g_data, g_data, and EEVEE_Data::stl.
Referenced by EEVEE_draw_effects(), eevee_draw_scene(), and EEVEE_render_draw().
void EEVEE_renderpasses_output_init | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata, | ||
uint | tot_samples | ||
) |
Definition at line 148 of file eevee_renderpasses.c.
References EEVEE_TextureList::color, DRW_texture_ensure_fullscreen_2d(), DRW_TEXTURE_FREE_SAFE, EEVEE_bloom_output_init(), EEVEE_cryptomatte_output_init(), EEVEE_material_output_init(), EEVEE_mist_output_init(), EEVEE_occlusion_output_init(), EEVEE_RENDER_PASS_AO, EEVEE_RENDER_PASS_BLOOM, EEVEE_RENDER_PASS_CRYPTOMATTE, EEVEE_RENDER_PASS_MIST, EEVEE_RENDER_PASS_SHADOW, EEVEE_RENDERPASSES_MATERIAL, eevee_renderpasses_volumetric_active(), EEVEE_RENDERPASSES_WITH_POST_PROCESSING, EEVEE_shadow_output_init(), EEVEE_volumes_output_init(), EFFECT_BLOOM, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, EEVEE_StorageList::g_data, g_data, GPU_RGBA16F, EEVEE_TextureList::renderpass, EEVEE_FramebufferList::renderpass_fb, EEVEE_Data::stl, and EEVEE_Data::txl.
Referenced by eevee_cache_finish(), and eevee_render_to_image().
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().
BLI_INLINE bool eevee_renderpasses_volumetric_active | ( | const EEVEE_EffectsInfo * | effects, |
const EEVEE_PrivateData * | g_data | ||
) |
Definition at line 136 of file eevee_renderpasses.c.
References EEVEE_RENDER_PASS_VOLUME_LIGHT, EEVEE_RENDERPASSES_USES_TRANSMITTANCE, EFFECT_VOLUMETRIC, EEVEE_EffectsInfo::enabled_effects, and g_data.
Referenced by EEVEE_renderpasses_output_accumulate(), EEVEE_renderpasses_output_init(), and EEVEE_renderpasses_postprocess().