Blender  V3.3
Functions | Variables
eevee_bloom.c File Reference
#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 DRWShadingGroupeevee_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
 

Detailed Description

Eevee's bloom shader.

Definition in file eevee_bloom.c.

Function Documentation

◆ EEVEE_bloom_cache_init()

void EEVEE_bloom_cache_init ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata 
)

Bloom Algorithm

Overview:

  • Down-sample the color buffer doing a small blur during each step.
  • Accumulate bloom color using previously down-sampled color buffers and do an up-sample blur for each new accumulated layer.
  • 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().

◆ EEVEE_bloom_draw()

void EEVEE_bloom_draw ( EEVEE_Data vedata)

◆ EEVEE_bloom_init()

int EEVEE_bloom_init ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata 
)

◆ EEVEE_bloom_output_accumulate()

void EEVEE_bloom_output_accumulate ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata 
)

◆ EEVEE_bloom_output_init()

void EEVEE_bloom_output_init ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata,
uint   UNUSEDtot_samples 
)

◆ eevee_create_bloom_pass()

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 
)
static

Variable Documentation

◆ use_highres

const bool use_highres = true
static

Definition at line 18 of file eevee_bloom.c.

Referenced by EEVEE_bloom_cache_init(), and EEVEE_bloom_output_init().