|
Blender
V2.93
|
#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.
Variables | |
| struct { | |
| GPUTexture * depth_src | |
| GPUTexture * dummy_zero | |
| GPUTexture * dummy_one | |
| GPUTexture * dummy_flame | |
| GPUTexture * dummy_scatter | |
| GPUTexture * dummy_transmit | |
| ListBase smoke_domains | |
| } | e_data = {NULL} |
Volumetric effects rendering using frostbite approach.
Definition in file eevee_volumes.c.
|
static |
Definition at line 66 of file eevee_volumes.c.
References DRW_TEX_WRAP, DRW_texture_create_3d(), e_data, GPU_R8, and GPU_RGBA8.
Referenced by EEVEE_volumes_cache_init().
|
static |
Definition at line 78 of file eevee_volumes.c.
References e_data, GPU_VOLUME_DEFAULT_0, and GPU_VOLUME_DEFAULT_1.
Referenced by eevee_volume_object_grids_init(), eevee_volume_object_mesh_init(), and EEVEE_volumes_cache_init().
|
static |
Definition at line 325 of file eevee_volumes.c.
References BKE_volume_boundbox_get(), BKE_volume_density_scale(), BKE_volume_grid_find_for_read(), BKE_volume_load(), DRWVolumeGrid::bounds_to_texture, copy_v3_v3(), Object::data, DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_vec3_copy(), DRW_volume_batch_cache_get_grid(), e_data, eevee_volume_default_texture(), equals_m4m4(), G, invert_m4_m4(), LISTBASE_FOREACH, mul_m4_m4m4(), Node::name, NULL, DRWVolumeGrid::object_to_bounds, DRWVolumeGrid::object_to_texture, Object::obmat, size_to_mat4(), sub_v3_v3v3(), DRWVolumeGrid::texture, and BoundBox::vec.
Referenced by EEVEE_volumes_cache_object_add().
|
static |
Definition at line 415 of file eevee_volumes.c.
References FluidDomainSettings::active_color, FluidDomainSettings::active_fields, BKE_mesh_texspace_get_reference(), BKE_modifier_is_enabled(), BKE_modifiers_findby_type(), BLI_addtail(), BLI_genericNodeN(), Object::data, DEG_get_ctime(), DRWContextState::depsgraph, FluidModifierData::domain, DRW_context_state_get(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec2(), DRW_shgroup_uniform_vec3(), DRW_smoke_ensure(), e_data, eevee_volume_default_texture(), eModifierMode_Realtime, eModifierType_Fluid, FluidDomainSettings::flags, FluidDomainSettings::flame_ignition, FluidDomainSettings::fluid, FLUID_DOMAIN_ACTIVE_COLOR_SET, FLUID_DOMAIN_ACTIVE_COLORS, FLUID_DOMAIN_TYPE_GAS, FLUID_DOMAIN_USE_NOISE, LISTBASE_FOREACH, NULL, FluidDomainSettings::point_cache, scene, PointCache::startframe, STR_ELEM, STREQ, FluidDomainSettings::tex_color, FluidDomainSettings::tex_density, FluidDomainSettings::tex_flame, and FluidDomainSettings::type.
Referenced by EEVEE_volumes_cache_object_add().
| void EEVEE_volumes_cache_finish | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 564 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, 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().
| void EEVEE_volumes_cache_init | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 234 of file eevee_volumes.c.
References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, DRW_context_state_get(), DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_material_create(), DRW_shgroup_uniform_block(), DRW_shgroup_uniform_texture(), DRW_STATE_BLEND_ADD, DRW_STATE_WRITE_COLOR, e_data, eevee_create_textures_volumes(), EEVEE_material_get(), EEVEE_shaders_volumes_clear_sh_get(), eevee_volume_default_texture(), EFFECT_POST_BUFFER, EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, GPU_material_has_volume_output(), GPU_material_volume_grids(), EEVEE_ViewLayerData::grid_ubo, EEVEE_ViewLayerData::light_ubo, LISTBASE_FOREACH, LOOK_DEV_STUDIO_LIGHT_ENABLED, World::nodetree, NULL, EEVEE_ViewLayerData::planar_ubo, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, scene, DRWContextState::scene, EEVEE_ViewLayerData::shadow_ubo, EEVEE_Data::stl, World::use_nodes, DRWContextState::v3d, VAR_MAT_VOLUME, EEVEE_CommonUniformBuffer::vol_tex_size, EEVEE_PassList::volumetric_objects_ps, EEVEE_PassList::volumetric_world_ps, and Scene::world.
Referenced by eevee_cache_init(), eevee_lightbake_cache_create(), and EEVEE_render_cache_init().
| void EEVEE_volumes_cache_object_add | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata, | ||
| Scene * | scene, | ||
| Object * | ob | ||
| ) |
Definition at line 499 of file eevee_volumes.c.
References BKE_material_default_volume(), BKE_object_material_get(), EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_data, EEVEE_ViewLayerData::common_ubo, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_material_create(), DRW_shgroup_uniform_block(), EEVEE_material_get(), eevee_volume_object_grids_init(), eevee_volume_object_mesh_init(), EFFECT_POST_BUFFER, EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, blender::robust_pred::epsilon, GPU_MAT_SUCCESS, GPU_material_status(), GPU_material_volume_grids(), EEVEE_ViewLayerData::grid_ubo, EEVEE_ViewLayerData::light_ubo, GPUMaterial::ma, mat4_to_size(), NULL, OB_VOLUME, Object::obmat, EEVEE_ViewLayerData::planar_ubo, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, scene, EEVEE_ViewLayerData::shadow_ubo, size(), GPUMaterial::status, EEVEE_Data::stl, Object::type, VAR_MAT_MESH, VAR_MAT_VOLUME, EEVEE_CommonUniformBuffer::vol_tex_size, and EEVEE_PassList::volumetric_objects_ps.
Referenced by EEVEE_cache_populate(), EEVEE_materials_cache_populate(), and EEVEE_render_cache().
| void EEVEE_volumes_compute | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 701 of file eevee_volumes.c.
References DRW_draw_pass(), DRW_stats_group_end(), DRW_stats_group_start(), EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), GPU_texture_compare_mode(), EEVEE_FramebufferList::main_fb, EEVEE_Data::psl, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_Data::stl, SWAP, EEVEE_Data::txl, USE_VOLUME_OPTI, EEVEE_TextureList::volume_scatter, EEVEE_EffectsInfo::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_EffectsInfo::volume_transmit, EEVEE_TextureList::volume_transmit_history, EEVEE_FramebufferList::volumetric_fb, EEVEE_FramebufferList::volumetric_integ_fb, EEVEE_PassList::volumetric_integration_ps, EEVEE_PassList::volumetric_objects_ps, EEVEE_FramebufferList::volumetric_scat_fb, EEVEE_PassList::volumetric_scatter_ps, and EEVEE_PassList::volumetric_world_ps.
Referenced by eevee_draw_scene(), and EEVEE_render_draw().
| void EEVEE_volumes_draw_init | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 628 of file eevee_volumes.c.
References EEVEE_ViewLayerData::common_data, DRW_TEX_FILTER, DRW_texture_create_3d(), DRW_TEXTURE_FREE_SAFE, e_data, EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_FRAMEBUFFER_FREE_SAFE, GPU_R11F_G11F_B10F, GPU_RG16F, NULL, EEVEE_Data::stl, EEVEE_Data::txl, EEVEE_CommonUniformBuffer::vol_tex_size, 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_EffectsInfo::volume_scatter, EEVEE_TextureList::volume_scatter_history, EEVEE_TextureList::volume_transmit, EEVEE_EffectsInfo::volume_transmit, EEVEE_TextureList::volume_transmit_history, EEVEE_FramebufferList::volumetric_fb, EEVEE_FramebufferList::volumetric_integ_fb, and EEVEE_FramebufferList::volumetric_scat_fb.
Referenced by eevee_cache_finish(), eevee_lightbake_cache_create(), and eevee_render_to_image().
| void EEVEE_volumes_free | ( | void | ) |
Definition at line 781 of file eevee_volumes.c.
References DRW_TEXTURE_FREE_SAFE, and e_data.
Referenced by eevee_engine_free().
| void EEVEE_volumes_free_smoke_textures | ( | void | ) |
Definition at line 771 of file eevee_volumes.c.
References BLI_freelistN(), DRW_smoke_free(), e_data, and LISTBASE_FOREACH.
Referenced by eevee_draw_scene(), EEVEE_lightbake_job(), and eevee_render_to_image().
| void EEVEE_volumes_init | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 105 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_FRAMEBUFFER_FREE_SAFE, 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().
| void EEVEE_volumes_output_accumulate | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 834 of file eevee_volumes.c.
References clear(), DRW_draw_pass(), EEVEE_StorageList::effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), EEVEE_FramebufferList::main_fb, NULL, EEVEE_Data::psl, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, EEVEE_FramebufferList::volumetric_accum_fb, and EEVEE_PassList::volumetric_accum_ps.
| void EEVEE_volumes_output_init | ( | EEVEE_ViewLayerData * | sldata, |
| EEVEE_Data * | vedata, | ||
| uint | tot_samples | ||
| ) |
Definition at line 795 of file eevee_volumes.c.
References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, DRW_cache_fullscreen_quad_get(), DRW_PASS_CREATE, DRW_shgroup_call, DRW_shgroup_create(), DRW_shgroup_uniform_block(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_BLEND_ADD_FULL, DRW_STATE_WRITE_COLOR, DRW_texture_ensure_fullscreen_2d(), e_data, EEVEE_shaders_volumes_accum_sh_get(), EEVEE_shaders_volumes_resolve_sh_get(), EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_RGBA16F, GPU_RGBA32F, NULL, EEVEE_Data::psl, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_Data::stl, EEVEE_Data::txl, EEVEE_TextureList::volume_scatter, EEVEE_TextureList::volume_scatter_accum, EEVEE_TextureList::volume_transmit, EEVEE_TextureList::volume_transmittance_accum, EEVEE_FramebufferList::volumetric_accum_fb, and EEVEE_PassList::volumetric_accum_ps.
Referenced by EEVEE_renderpasses_output_init().
| void EEVEE_volumes_resolve | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
| EEVEE_Data * | vedata | ||
| ) |
Definition at line 747 of file eevee_volumes.c.
References DefaultTextureList::depth, DRW_draw_pass(), DRW_viewport_texture_list_get(), e_data, EFFECT_VOLUMETRIC, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_BARRIER_TEXTURE_FETCH, GPU_framebuffer_bind(), GPU_memory_barrier(), EEVEE_FramebufferList::main_color_fb, EEVEE_FramebufferList::main_fb, EEVEE_Data::psl, EEVEE_Data::stl, USE_VOLUME_OPTI, and EEVEE_PassList::volumetric_resolve_ps.
| void EEVEE_volumes_set_jitter | ( | EEVEE_ViewLayerData * | sldata, |
| uint | current_sample | ||
| ) |
Definition at line 90 of file eevee_volumes.c.
References BLI_halton_3d(), EEVEE_ViewLayerData::common_data, float(), and EEVEE_CommonUniformBuffer::vol_jitter.
Referenced by eevee_draw_scene(), EEVEE_render_draw(), and EEVEE_volumes_init().
| GPUTexture* depth_src |
Definition at line 53 of file eevee_volumes.c.
| GPUTexture* dummy_flame |
Definition at line 57 of file eevee_volumes.c.
| GPUTexture* dummy_one |
Definition at line 56 of file eevee_volumes.c.
| GPUTexture* dummy_scatter |
Definition at line 59 of file eevee_volumes.c.
| GPUTexture* dummy_transmit |
Definition at line 60 of file eevee_volumes.c.
| GPUTexture* dummy_zero |
Definition at line 55 of file eevee_volumes.c.
| struct { ... } e_data |
Referenced by eevee_create_textures_volumes(), eevee_volume_default_texture(), eevee_volume_object_grids_init(), eevee_volume_object_mesh_init(), EEVEE_volumes_cache_finish(), EEVEE_volumes_cache_init(), EEVEE_volumes_draw_init(), EEVEE_volumes_free(), EEVEE_volumes_free_smoke_textures(), EEVEE_volumes_init(), EEVEE_volumes_output_init(), and EEVEE_volumes_resolve().
| ListBase smoke_domains |
Definition at line 63 of file eevee_volumes.c.