Blender  V3.3
Functions | Variables
eevee_volumes.c File Reference
#include "DRW_render.h"
#include "BLI_listbase.h"
#include "BLI_rand.h"
#include "BLI_string_utils.h"
#include "DNA_fluid_types.h"
#include "DNA_object_force_types.h"
#include "DNA_volume_types.h"
#include "DNA_world_types.h"
#include "BKE_fluid.h"
#include "BKE_global.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_volume.h"
#include "BKE_volume_render.h"
#include "ED_screen.h"
#include "DEG_depsgraph_query.h"
#include "GPU_capabilities.h"
#include "GPU_material.h"
#include "GPU_texture.h"
#include "eevee_private.h"

Go to the source code of this file.

Functions

void EEVEE_volumes_set_jitter (EEVEE_ViewLayerData *sldata, uint current_sample)
 
void EEVEE_volumes_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_cache_object_add (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Scene *scene, Object *ob)
 
void EEVEE_volumes_cache_finish (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_draw_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_compute (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_volumes_resolve (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
 
void EEVEE_volumes_free (void)
 
Render Passes
void EEVEE_volumes_output_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_volumes_output_accumulate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
 

Variables

struct {
   GPUTexture *   depth_src
 
   GPUTexture *   dummy_zero
 
   GPUTexture *   dummy_one
 
   GPUTexture *   dummy_flame
 
   GPUTexture *   dummy_scatter
 
   GPUTexture *   dummy_transmit
 
e_data = {NULL}
 

Detailed Description

Volumetric effects rendering using frostbite approach.

Definition in file eevee_volumes.c.

Function Documentation

◆ EEVEE_volumes_cache_finish()

void EEVEE_volumes_cache_finish ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 341 of file eevee_volumes.c.

References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_image_ref(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, e_data, EEVEE_shaders_volumes_integration_sh_get(), EEVEE_shaders_volumes_resolve_sh_get(), EEVEE_shaders_volumes_scatter_sh_get(), EEVEE_shaders_volumes_scatter_with_lights_sh_get(), EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_StorageList::g_data, LightCache::grid_tx, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, NULL, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, sh, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_ViewLayerData::shadow_ubo, EEVEE_Data::stl, LightCacheTexture::tex, EEVEE_Data::txl, USE_VOLUME_OPTI, EEVEE_CommonUniformBuffer::vol_tex_size, EEVEE_CommonUniformBuffer::vol_use_lights, EEVEE_TextureList::volume_prop_emission, EEVEE_TextureList::volume_prop_extinction, EEVEE_TextureList::volume_prop_phase, EEVEE_TextureList::volume_prop_scattering, EEVEE_TextureList::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_TextureList::volume_transmit_history, EEVEE_PassList::volumetric_integration_ps, EEVEE_PassList::volumetric_resolve_ps, and EEVEE_PassList::volumetric_scatter_ps.

Referenced by eevee_cache_finish(), eevee_lightbake_cache_create(), and eevee_render_to_image().

◆ EEVEE_volumes_cache_init()

void EEVEE_volumes_cache_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_cache_object_add()

void EEVEE_volumes_cache_object_add ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata,
Scene scene,
Object ob 
)

◆ EEVEE_volumes_compute()

void EEVEE_volumes_compute ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_draw_init()

void EEVEE_volumes_draw_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_free()

void EEVEE_volumes_free ( void  )

Definition at line 549 of file eevee_volumes.c.

References DRW_TEXTURE_FREE_SAFE, and e_data.

Referenced by eevee_engine_free().

◆ EEVEE_volumes_init()

void EEVEE_volumes_init ( EEVEE_ViewLayerData sldata,
EEVEE_Data vedata 
)

Definition at line 63 of file eevee_volumes.c.

References ceilf, EEVEE_ViewLayerData::common_data, copy_v3_v3_int(), CTX_wm_manager(), DEG_get_evaluated_scene(), DRWContextState::depsgraph, DRW_context_state_get(), DRW_state_is_image_render(), DRW_TEX_WRAP, DRW_texture_create_3d(), DRW_TEXTURE_FREE_SAFE, DRW_view_far_distance_get(), DRW_view_is_persp_get(), DRW_view_near_distance_get(), DRW_viewport_request_redraw(), DRW_viewport_size_get(), e_data, ED_screen_animation_no_scrub(), Scene::eevee, EEVEE_volumes_set_jitter(), EFFECT_TAA, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, DRWContextState::evil_C, EEVEE_Data::fbl, SceneEEVEE::flag, float(), fmaxf, GPU_RGBA8, if(), max_ff(), max_ii(), min_ff(), NULL, SCE_EEVEE_SHADOW_SOFT, SCE_EEVEE_VOLUMETRIC_LIGHTS, SCE_EEVEE_VOLUMETRIC_SHADOWS, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, EEVEE_Data::txl, EEVEE_CommonUniformBuffer::vol_coord_scale, EEVEE_CommonUniformBuffer::vol_depth_param, EEVEE_CommonUniformBuffer::vol_history_alpha, EEVEE_CommonUniformBuffer::vol_inv_tex_size, EEVEE_CommonUniformBuffer::vol_shadow_steps, EEVEE_CommonUniformBuffer::vol_tex_size, EEVEE_CommonUniformBuffer::vol_use_lights, EEVEE_CommonUniformBuffer::vol_use_soft_shadows, EEVEE_EffectsInfo::volume_current_sample, EEVEE_EffectsInfo::volume_light_clamp, EEVEE_TextureList::volume_prop_emission, EEVEE_TextureList::volume_prop_extinction, EEVEE_TextureList::volume_prop_phase, EEVEE_TextureList::volume_prop_scattering, EEVEE_TextureList::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_TextureList::volume_transmit_history, SceneEEVEE::volumetric_end, EEVEE_FramebufferList::volumetric_fb, EEVEE_FramebufferList::volumetric_integ_fb, SceneEEVEE::volumetric_light_clamp, SceneEEVEE::volumetric_sample_distribution, SceneEEVEE::volumetric_samples, EEVEE_FramebufferList::volumetric_scat_fb, SceneEEVEE::volumetric_shadow_samples, SceneEEVEE::volumetric_start, and SceneEEVEE::volumetric_tile_size.

Referenced by EEVEE_effects_init().

◆ EEVEE_volumes_output_accumulate()

void EEVEE_volumes_output_accumulate ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_output_init()

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

◆ EEVEE_volumes_resolve()

void EEVEE_volumes_resolve ( EEVEE_ViewLayerData UNUSEDsldata,
EEVEE_Data vedata 
)

◆ EEVEE_volumes_set_jitter()

void EEVEE_volumes_set_jitter ( EEVEE_ViewLayerData sldata,
uint  current_sample 
)

Variable Documentation

◆ depth_src

GPUTexture* depth_src

Definition at line 38 of file eevee_volumes.c.

◆ dummy_flame

GPUTexture* dummy_flame

Definition at line 42 of file eevee_volumes.c.

◆ dummy_one

GPUTexture* dummy_one

Definition at line 41 of file eevee_volumes.c.

◆ dummy_scatter

GPUTexture* dummy_scatter

Definition at line 44 of file eevee_volumes.c.

◆ dummy_transmit

GPUTexture* dummy_transmit

Definition at line 45 of file eevee_volumes.c.

◆ dummy_zero

GPUTexture* dummy_zero

Definition at line 40 of file eevee_volumes.c.

◆ 

struct { ... } e_data