Blender
V3.3
|
#include "DRW_render.h"
#include "GPU_texture.h"
#include "DEG_depsgraph_query.h"
#include "eevee_private.h"
Go to the source code of this file.
Functions | |
int | EEVEE_bloom_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
static DRWShadingGroup * | eevee_create_bloom_pass (const char *name, EEVEE_EffectsInfo *effects, struct GPUShader *sh, DRWPass **pass, bool upsample, bool resolve, bool resolve_add_base) |
void | EEVEE_bloom_cache_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
void | EEVEE_bloom_draw (EEVEE_Data *vedata) |
void | EEVEE_bloom_output_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, uint UNUSED(tot_samples)) |
void | EEVEE_bloom_output_accumulate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
Variables | |
static const bool | use_highres = true |
Eevee's bloom shader.
Definition in file eevee_bloom.c.
void EEVEE_bloom_cache_init | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Bloom Algorithm
Overview:
Finally add accumulation buffer onto the source color buffer.
[1/1] is original copy resolution (can be half or quarter res for performance)
[DOWNSAMPLE CHAIN] [UPSAMPLE CHAIN] Source Color ─ [Blit] ─> Bright Color Extract [1/1] Final Color | Λ [Downsample First] Source Color ─> + [Resolve] v | Color Downsampled [1/2] ────────────> + Accumulation Buffer [1/2] | Λ ─── ─── Repeat Repeat ─── ─── v | Color Downsampled [1/N-1] ──────────> + Accumulation Buffer [1/N-1] | Λ [Downsample] [Upsample] v | Color Downsampled [1/N] ─────────────────────────┘
Definition at line 151 of file eevee_bloom.c.
References EEVEE_PassList::bloom_accum_ps, EEVEE_PassList::bloom_blit, EEVEE_EffectsInfo::bloom_clamp, EEVEE_EffectsInfo::bloom_curve_threshold, EEVEE_PassList::bloom_downsample, EEVEE_PassList::bloom_downsample_first, EEVEE_PassList::bloom_resolve, EEVEE_PassList::bloom_upsample, DRW_shgroup_uniform_float(), DRW_shgroup_uniform_vec4(), eevee_create_bloom_pass(), EEVEE_shaders_bloom_blit_get(), EEVEE_shaders_bloom_downsample_get(), EEVEE_shaders_bloom_resolve_get(), EEVEE_shaders_bloom_upsample_get(), EFFECT_BLOOM, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, NULL, EEVEE_Data::psl, EEVEE_Data::stl, and use_highres.
Referenced by eevee_cache_init(), and EEVEE_render_cache_init().
void EEVEE_bloom_draw | ( | EEVEE_Data * | vedata | ) |
Definition at line 234 of file eevee_bloom.c.
References EEVEE_EffectsInfo::blit_texel_size, EEVEE_FramebufferList::bloom_accum_fb, EEVEE_PassList::bloom_blit, EEVEE_EffectsInfo::bloom_blit, EEVEE_FramebufferList::bloom_blit_fb, EEVEE_FramebufferList::bloom_down_fb, EEVEE_PassList::bloom_downsample, EEVEE_EffectsInfo::bloom_downsample, EEVEE_PassList::bloom_downsample_first, EEVEE_EffectsInfo::bloom_iteration_len, EEVEE_PassList::bloom_resolve, EEVEE_PassList::bloom_upsample, EEVEE_EffectsInfo::bloom_upsample, copy_v2_v2(), EEVEE_EffectsInfo::downsamp_texel_size, DRW_draw_pass(), EFFECT_BLOOM, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), EEVEE_Data::psl, EEVEE_EffectsInfo::source_buffer, EEVEE_EffectsInfo::source_texel_size, EEVEE_Data::stl, SWAP_BUFFERS, EEVEE_EffectsInfo::target_buffer, EEVEE_Data::txl, EEVEE_EffectsInfo::unf_base_buffer, EEVEE_EffectsInfo::unf_source_buffer, and EEVEE_EffectsInfo::unf_source_texel_size.
Referenced by EEVEE_draw_effects().
int EEVEE_bloom_init | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 20 of file eevee_bloom.c.
References EEVEE_EffectsInfo::blit_texel_size, EEVEE_FramebufferList::bloom_accum_fb, EEVEE_EffectsInfo::bloom_blit, EEVEE_FramebufferList::bloom_blit_fb, EEVEE_EffectsInfo::bloom_clamp, SceneEEVEE::bloom_clamp, EEVEE_EffectsInfo::bloom_color, SceneEEVEE::bloom_color, EEVEE_EffectsInfo::bloom_curve_threshold, EEVEE_FramebufferList::bloom_down_fb, EEVEE_EffectsInfo::bloom_downsample, SceneEEVEE::bloom_intensity, EEVEE_EffectsInfo::bloom_iteration_len, SceneEEVEE::bloom_knee, SceneEEVEE::bloom_radius, EEVEE_EffectsInfo::bloom_sample_scale, SceneEEVEE::bloom_threshold, EEVEE_EffectsInfo::bloom_upsample, CLAMP, color, copy_v2_v2_int(), DEG_get_evaluated_scene(), DRWContextState::depsgraph, EEVEE_EffectsInfo::downsamp_texel_size, draw_engine_eevee_type, DRW_context_state_get(), DRW_texture_pool_query_2d(), DRW_viewport_size_get(), Scene::eevee, EFFECT_BLOOM, EFFECT_POST_BUFFER, EEVEE_StorageList::effects, EEVEE_Data::fbl, SceneEEVEE::flag, float(), GPU_R11F_G11F_B10F, log(), MAX2, MAX_BLOOM_STEP, max_ff(), MIN2, mul_v3_v3fl(), SCE_EEVEE_BLOOM_ENABLED, EEVEE_EffectsInfo::source_texel_size, EEVEE_Data::stl, and threshold.
Referenced by EEVEE_effects_init().
void EEVEE_bloom_output_accumulate | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 322 of file eevee_bloom.c.
References EEVEE_PassList::bloom_accum_ps, EEVEE_FramebufferList::bloom_pass_accum_fb, DRW_draw_pass(), EEVEE_RENDER_PASS_BLOOM, EEVEE_Data::fbl, EEVEE_StorageList::g_data, GPU_framebuffer_bind(), EEVEE_FramebufferList::main_fb, EEVEE_Data::psl, EEVEE_PrivateData::render_passes, and EEVEE_Data::stl.
Referenced by EEVEE_renderpasses_output_accumulate().
void EEVEE_bloom_output_init | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata, | ||
uint | UNUSEDtot_samples | ||
) |
Definition at line 296 of file eevee_bloom.c.
References EEVEE_TextureList::bloom_accum, EEVEE_PassList::bloom_accum_ps, EEVEE_FramebufferList::bloom_pass_accum_fb, DRW_texture_ensure_fullscreen_2d(), eevee_create_bloom_pass(), EEVEE_shaders_bloom_resolve_get(), EEVEE_StorageList::effects, EEVEE_Data::fbl, GPU_R11F_G11F_B10F, EEVEE_Data::psl, EEVEE_Data::stl, EEVEE_Data::txl, and use_highres.
Referenced by EEVEE_renderpasses_output_init().
|
static |
Definition at line 123 of file eevee_bloom.c.
References EEVEE_EffectsInfo::bloom_color, EEVEE_EffectsInfo::bloom_sample_scale, DRW_cache_fullscreen_quad_get(), DRW_pass_create(), DRW_shgroup_call, DRW_shgroup_create(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec2(), DRW_shgroup_uniform_vec3(), DRW_STATE_WRITE_COLOR, GPUBatch, NULL, quad, sh, EEVEE_EffectsInfo::unf_base_buffer, EEVEE_EffectsInfo::unf_source_buffer, and EEVEE_EffectsInfo::unf_source_texel_size.
Referenced by EEVEE_bloom_cache_init(), and EEVEE_bloom_output_init().
|
static |
Definition at line 18 of file eevee_bloom.c.
Referenced by EEVEE_bloom_cache_init(), and EEVEE_bloom_output_init().