Blender
V3.3
|
#include "DRW_render.h"
#include "BLI_string_utils.h"
#include "DEG_depsgraph_query.h"
#include "BKE_global.h"
#include "eevee_private.h"
#include "GPU_capabilities.h"
#include "GPU_platform.h"
#include "GPU_state.h"
Go to the source code of this file.
Functions | |
int | EEVEE_occlusion_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) |
void | EEVEE_occlusion_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples) |
void | EEVEE_occlusion_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) |
void | EEVEE_occlusion_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) |
void | EEVEE_occlusion_draw_debug (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
void | EEVEE_occlusion_output_accumulate (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) |
void | EEVEE_occlusion_free (void) |
Variables | |
struct { | |
struct GPUTexture * dummy_horizon_tx | |
} | e_data = {NULL} |
Implementation of the screen space Ground Truth Ambient Occlusion.
Definition in file eevee_occlusion.c.
void EEVEE_occlusion_cache_init | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
Occlusion Algorithm Overview:
We separate the computation into 2 steps.
Definition at line 130 of file eevee_occlusion.c.
References EEVEE_PassList::ao_horizon_debug, EEVEE_PassList::ao_horizon_search, EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, DefaultTextureList::depth, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_WRITE_COLOR, DRW_viewport_texture_list_get(), EEVEE_materials_get_util_tex(), EEVEE_shaders_effect_ambient_occlusion_debug_sh_get(), EEVEE_shaders_effect_ambient_occlusion_sh_get(), EFFECT_GTAO, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, G, EEVEE_EffectsInfo::gtao_horizons_renderpass, EEVEE_TextureList::maxzbuffer, NULL, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_Data::stl, and EEVEE_Data::txl.
Referenced by eevee_cache_init(), and EEVEE_render_cache_init().
void EEVEE_occlusion_compute | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
NOTE(fclem): Kind of fragile. We need this to make sure everything lines up nicely during planar reflection.
Definition at line 176 of file eevee_occlusion.c.
References EEVEE_PassList::ao_horizon_search, EEVEE_ViewLayerData::common_data, DRW_draw_pass(), DRW_stats_group_end(), DRW_stats_group_start(), DRW_viewport_size_get(), EEVEE_RAY_GLOSSY, EFFECT_GTAO, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_BACKEND_OPENGL, GPU_DEVICE_INTEL_UHD, GPU_DRIVER_ANY, GPU_flush(), GPU_framebuffer_bind(), GPU_framebuffer_viewport_reset(), GPU_framebuffer_viewport_set(), GPU_mip_render_workaround(), GPU_OS_WIN, GPU_type_matches_ex(), EEVEE_FramebufferList::gtao_fb, EEVEE_FramebufferList::main_fb, EEVEE_Data::psl, EEVEE_CommonUniformBuffer::ray_type, EEVEE_Data::stl, and UNPACK2.
Referenced by eevee_draw_scene(), EEVEE_occlusion_output_accumulate(), EEVEE_render_draw(), and lightbake_render_scene_reflected().
void EEVEE_occlusion_draw_debug | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 216 of file eevee_occlusion.c.
References EEVEE_PassList::ao_horizon_debug, DRW_draw_pass(), DRW_stats_group_end(), DRW_stats_group_start(), EFFECT_GTAO, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, G, GPU_framebuffer_bind(), EEVEE_FramebufferList::gtao_debug_fb, EEVEE_FramebufferList::main_fb, EEVEE_Data::psl, and EEVEE_Data::stl.
Referenced by eevee_draw_scene().
Definition at line 264 of file eevee_occlusion.c.
References DRW_TEXTURE_FREE_SAFE, and e_data.
Referenced by eevee_engine_free().
int EEVEE_occlusion_init | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 28 of file eevee_occlusion.c.
References EEVEE_CommonUniformBuffer::ao_bounce_fac, EEVEE_CommonUniformBuffer::ao_dist, EEVEE_CommonUniformBuffer::ao_factor, EEVEE_CommonUniformBuffer::ao_quality, EEVEE_CommonUniformBuffer::ao_settings, EEVEE_ViewLayerData::common_data, DEG_get_evaluated_scene(), DRWContextState::depsgraph, draw_engine_eevee_type, DRW_context_state_get(), DRW_TEX_WRAP, DRW_texture_create_2d(), DRW_texture_pool_query_2d(), DRW_viewport_size_get(), e_data, Scene::eevee, EEVEE_RENDER_PASS_AO, EFFECT_GTAO, EFFECT_NORMAL_BUFFER, EEVEE_StorageList::effects, EEVEE_Data::fbl, SceneEEVEE::flag, G, EEVEE_StorageList::g_data, GPU_RGBA8, EEVEE_FramebufferList::gtao_debug_fb, SceneEEVEE::gtao_distance, SceneEEVEE::gtao_factor, EEVEE_FramebufferList::gtao_fb, EEVEE_EffectsInfo::gtao_horizons, EEVEE_EffectsInfo::gtao_horizons_debug, EEVEE_EffectsInfo::gtao_horizons_renderpass, SceneEEVEE::gtao_quality, EEVEE_EffectsInfo::hiz_size, max_ff(), NULL, EEVEE_PrivateData::render_passes, SCE_EEVEE_GTAO_BENT_NORMALS, SCE_EEVEE_GTAO_BOUNCE, SCE_EEVEE_GTAO_ENABLED, EEVEE_Data::stl, and UNPACK2.
Referenced by EEVEE_effects_init().
void EEVEE_occlusion_output_accumulate | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 236 of file eevee_occlusion.c.
References EEVEE_FramebufferList::ao_accum_fb, EEVEE_PassList::ao_accum_ps, clear(), DefaultTextureList::depth, DRW_draw_pass(), DRW_viewport_texture_list_get(), EEVEE_create_minmax_buffer(), EEVEE_occlusion_compute(), EEVEE_StorageList::effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), EEVEE_FramebufferList::main_fb, NULL, EEVEE_Data::psl, EEVEE_Data::stl, and EEVEE_EffectsInfo::taa_current_sample.
Referenced by EEVEE_renderpasses_output_accumulate().
void EEVEE_occlusion_output_init | ( | EEVEE_ViewLayerData * | sldata, |
EEVEE_Data * | vedata, | ||
uint | tot_samples | ||
) |
Definition at line 97 of file eevee_occlusion.c.
References EEVEE_TextureList::ao_accum, EEVEE_FramebufferList::ao_accum_fb, EEVEE_PassList::ao_accum_ps, 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, DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_BLEND_ADD, DRW_STATE_WRITE_COLOR, DRW_texture_ensure_fullscreen_2d(), DRW_viewport_texture_list_get(), EEVEE_materials_get_util_tex(), EEVEE_shaders_effect_ambient_occlusion_debug_sh_get(), EEVEE_StorageList::effects, EEVEE_Data::fbl, GPU_R16F, GPU_R32F, EEVEE_EffectsInfo::gtao_horizons_renderpass, EEVEE_TextureList::maxzbuffer, NULL, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_EffectsInfo::ssr_normal_input, state, EEVEE_Data::stl, and EEVEE_Data::txl.
Referenced by EEVEE_renderpasses_output_init().
struct GPUTexture* dummy_horizon_tx |
Definition at line 25 of file eevee_occlusion.c.
struct { ... } e_data |
Referenced by EEVEE_occlusion_free(), and EEVEE_occlusion_init().