Blender
V3.3
|
#include "DRW_render.h"
#include "BLI_rand.h"
#include "BLI_string_utils.h"
#include "BKE_animsys.h"
#include "BKE_camera.h"
#include "BKE_duplilist.h"
#include "BKE_object.h"
#include "BKE_screen.h"
#include "DNA_anim_types.h"
#include "DNA_camera_types.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
#include "DNA_particle_types.h"
#include "DNA_rigidbody_types.h"
#include "DNA_screen_types.h"
#include "ED_screen.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "GPU_batch.h"
#include "GPU_texture.h"
#include "eevee_private.h"
Go to the source code of this file.
Functions | |
int | EEVEE_motion_blur_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
void | EEVEE_motion_blur_step_set (EEVEE_Data *vedata, int step) |
static void | eevee_motion_blur_sync_camera (EEVEE_Data *vedata) |
void | EEVEE_motion_blur_cache_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |
void | EEVEE_motion_blur_hair_cache_populate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob, ParticleSystem *psys, ModifierData *md) |
void | EEVEE_motion_blur_curves_cache_populate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob) |
void | EEVEE_motion_blur_cache_populate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob) |
static void | motion_blur_remove_vbo_reference_from_batch (GPUBatch *batch, GPUVertBuf *vbo1, GPUVertBuf *vbo2) |
void | EEVEE_motion_blur_cache_finish (EEVEE_Data *vedata) |
void | EEVEE_motion_blur_swap_data (EEVEE_Data *vedata) |
void | EEVEE_motion_blur_draw (EEVEE_Data *vedata) |
Gather all screen space effects technique such as Bloom, Motion Blur, DoF, SSAO, SSR, ...
Definition in file eevee_motion_blur.c.
void EEVEE_motion_blur_cache_finish | ( | EEVEE_Data * | vedata | ) |
Definition at line 429 of file eevee_motion_blur.c.
References EEVEE_GeometryMotionData::batch, batch, BLI_ghash_ensure_p(), BLI_ghashIterator_done(), BLI_ghashIterator_getValue(), BLI_ghashIterator_init(), BLI_ghashIterator_step(), DRW_cache_restart(), DRW_curves_update(), DRW_render_instance_buffer_finish(), EFFECT_MOTION_BLUR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, EEVEE_ObjectMotionData::geometry_data, GPU_batch_vertbuf_add_ex(), GPU_batch_vertbuf_has(), GPU_framebuffer_bind(), GPU_texture_create_from_vertbuf(), GPU_vertbuf_duplicate(), GPU_vertbuf_get_format(), GPU_vertbuf_get_vertex_len(), GPU_vertbuf_use(), GPU_vertformat_attr_id_get(), GPU_vertformat_attr_rename(), GPUBatch, EEVEE_ObjectMotionData::hair_data, EEVEE_MotionBlurData::hair_motion_step_cache, EEVEE_HairMotionStepData::hair_pos, EEVEE_HairMotionStepData::hair_pos_tx, EEVEE_FramebufferList::main_fb, MB_CURR, MB_NEXT, MB_PREV, MEM_callocN, EEVEE_EffectsInfo::motion_blur, motion_blur_remove_vbo_reference_from_batch(), EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_MotionBlurData::object, EEVEE_MotionBlurData::position_vbo_cache, EEVEE_HairMotionData::psys, EEVEE_HairMotionData::psys_len, EEVEE_HairMotionData::step_data, EEVEE_Data::stl, EEVEE_HairMotionData::use_deform, EEVEE_GeometryMotionData::use_deform, and EEVEE_GeometryMotionData::vbo.
Referenced by eevee_render_to_image().
void EEVEE_motion_blur_cache_init | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 109 of file eevee_motion_blur.c.
References EEVEE_MotionBlurData::camera, DefaultTextureList::depth, DRW_context_state_get(), DRW_PASS_CREATE, DRW_pass_link(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_ivec2_copy(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref_ex(), DRW_shgroup_uniform_vec2(), DRW_STATE_DEPTH_EQUAL, DRW_STATE_WRITE_COLOR, DRW_view_is_persp_get(), DRW_viewport_invert_size_get(), DRW_viewport_size_get(), DRW_viewport_texture_list_get(), Scene::eevee, EEVEE_materials_get_util_tex(), EEVEE_motion_blur_data_init(), eevee_motion_blur_sync_camera(), EEVEE_shaders_effect_motion_blur_hair_sh_get(), EEVEE_shaders_effect_motion_blur_object_sh_get(), EEVEE_shaders_effect_motion_blur_sh_get(), EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get(), EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get(), EEVEE_VELOCITY_TILE_SIZE, EFFECT_MOTION_BLUR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, GPU_texture_height(), GPU_texture_width(), EEVEE_MotionBlurData::hair_grp, max_ii(), MB_CURR, MB_NEXT, MB_PREV, EEVEE_PassList::motion_blur, EEVEE_EffectsInfo::motion_blur, SceneEEVEE::motion_blur_depth_scale, EEVEE_EffectsInfo::motion_blur_max, EEVEE_EffectsInfo::motion_blur_near_far, NULL, EEVEE_MotionBlurData::persmat, EEVEE_Data::psl, scene, DRWContextState::scene, sh, EEVEE_EffectsInfo::source_buffer, state, EEVEE_Data::stl, EEVEE_PassList::velocity_hair, EEVEE_PassList::velocity_object, EEVEE_PassList::velocity_tiles, EEVEE_PassList::velocity_tiles_expand, EEVEE_EffectsInfo::velocity_tiles_tx, EEVEE_PassList::velocity_tiles_x, EEVEE_EffectsInfo::velocity_tiles_x_tx, and EEVEE_EffectsInfo::velocity_tx.
Referenced by eevee_cache_init(), and EEVEE_render_cache_init().
void EEVEE_motion_blur_cache_populate | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata, | ||
Object * | ob | ||
) |
Definition at line 326 of file eevee_motion_blur.c.
References Object::base_flag, BASE_FROM_DUPLI, EEVEE_GeometryMotionData::batch, batch, BKE_object_is_deform_modified(), BKE_object_moves_in_time(), copy_m4_m4(), DRW_cache_object_pos_vertbuf_get(), DRW_cache_object_surface_get(), DRW_context_state_get(), DRW_shgroup_call, DRW_shgroup_create(), DRW_shgroup_uniform_bool(), DRW_shgroup_uniform_mat4(), DRW_state_is_scene_render(), EEVEE_motion_blur_geometry_data_get(), EEVEE_motion_blur_object_data_get(), EEVEE_shaders_effect_motion_blur_object_sh_get(), EEVEE_StorageList::effects, equals_m4m4(), RigidBodyOb::flag, GPUBatch, is_zero_m4(), MB_CURR, MB_NEXT, MB_PREV, EEVEE_EffectsInfo::motion_blur, EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_ObjectMotionData::obmat, Object::obmat, EEVEE_Data::psl, RBO_FLAG_USE_DEFORM, RBO_TYPE_ACTIVE, Object::rigidbody_object, scene, EEVEE_Data::stl, RigidBodyOb::type, EEVEE_GeometryMotionData::use_deform, EEVEE_GeometryMotionData::vbo, and EEVEE_PassList::velocity_object.
Referenced by EEVEE_materials_cache_populate().
void EEVEE_motion_blur_curves_cache_populate | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata, | ||
Object * | ob | ||
) |
Definition at line 274 of file eevee_motion_blur.c.
References copy_m4_m4(), DRW_curves_pos_buffer_get(), DRW_shgroup_curves_create_sub(), DRW_shgroup_uniform_bool(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture(), DRW_state_is_scene_render(), EEVEE_motion_blur_curves_data_get(), EEVEE_motion_blur_object_data_get(), EEVEE_StorageList::effects, EEVEE_MotionBlurData::hair_grp, EEVEE_HairMotionStepData::hair_pos, EEVEE_HairMotionStepData::hair_pos_tx, is_zero_m4(), MB_CURR, MB_NEXT, MB_PREV, EEVEE_EffectsInfo::motion_blur, EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_ObjectMotionData::obmat, Object::obmat, EEVEE_Data::psl, EEVEE_HairMotionData::psys, EEVEE_HairMotionData::step_data, EEVEE_Data::stl, EEVEE_HairMotionData::use_deform, and EEVEE_PassList::velocity_hair.
Referenced by EEVEE_object_curves_cache_populate().
void EEVEE_motion_blur_draw | ( | EEVEE_Data * | vedata | ) |
Definition at line 616 of file eevee_motion_blur.c.
References DRW_draw_pass(), EEVEE_VELOCITY_TILE_SIZE, EFFECT_MOTION_BLUR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_Data::fbl, GPU_framebuffer_bind(), GPU_framebuffer_viewport_reset(), GPU_framebuffer_viewport_set(), GPU_texture_height(), GPU_texture_width(), EEVEE_PassList::motion_blur, EEVEE_EffectsInfo::motion_blur_max, EEVEE_Data::psl, EEVEE_Data::stl, SWAP_BUFFERS, EEVEE_EffectsInfo::target_buffer, EEVEE_Data::txl, EEVEE_PassList::velocity_tiles, EEVEE_PassList::velocity_tiles_expand, EEVEE_FramebufferList::velocity_tiles_fb, EEVEE_EffectsInfo::velocity_tiles_tx, EEVEE_PassList::velocity_tiles_x, and w().
Referenced by EEVEE_draw_effects().
void EEVEE_motion_blur_hair_cache_populate | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata, | ||
Object * | ob, | ||
ParticleSystem * | psys, | ||
ModifierData * | md | ||
) |
Definition at line 213 of file eevee_motion_blur.c.
References BLI_assert, BLI_findindex(), copy_m4_m4(), DRW_hair_duplimat_get(), DRW_hair_pos_buffer_get(), DRW_shgroup_hair_create_sub(), DRW_shgroup_uniform_bool(), DRW_shgroup_uniform_mat4(), DRW_shgroup_uniform_texture(), DRW_state_is_scene_render(), EEVEE_motion_blur_hair_data_get(), EEVEE_motion_blur_object_data_get(), EEVEE_StorageList::effects, EEVEE_MotionBlurData::hair_grp, EEVEE_HairMotionStepData::hair_pos, EEVEE_HairMotionStepData::hair_pos_tx, is_zero_m4(), MB_CURR, MB_NEXT, MB_PREV, Object::modifiers, EEVEE_EffectsInfo::motion_blur, EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_ObjectMotionData::obmat, EEVEE_Data::psl, EEVEE_HairMotionData::psys, EEVEE_HairMotionData::psys_len, EEVEE_HairMotionData::step_data, EEVEE_Data::stl, EEVEE_HairMotionData::use_deform, and EEVEE_PassList::velocity_hair.
Referenced by EEVEE_particle_hair_cache_populate().
int EEVEE_motion_blur_init | ( | EEVEE_ViewLayerData * | UNUSEDsldata, |
EEVEE_Data * | vedata | ||
) |
Definition at line 38 of file eevee_motion_blur.c.
References EEVEE_MotionBlurData::camera, draw_engine_eevee_type, DRW_context_state_get(), DRW_state_is_scene_render(), DRW_texture_pool_query_2d(), DRW_view_persmat_get(), DRW_view_viewmat_get(), DRW_viewport_size_get(), Scene::eevee, EEVEE_VELOCITY_TILE_SIZE, EFFECT_MOTION_BLUR, EFFECT_POST_BUFFER, EFFECT_VELOCITY_BUFFER, EEVEE_StorageList::effects, EEVEE_Data::fbl, SceneEEVEE::flag, GPU_RGBA16, max_ii(), EEVEE_EffectsInfo::motion_blur, EEVEE_EffectsInfo::motion_blur_max, SceneEEVEE::motion_blur_max, EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_MotionBlurData::persinv, EEVEE_MotionBlurData::persmat, SCE_EEVEE_MOTION_BLUR_ENABLED, scene, DRWContextState::scene, EEVEE_Data::stl, EEVEE_FramebufferList::velocity_tiles_fb, EEVEE_EffectsInfo::velocity_tiles_tx, EEVEE_EffectsInfo::velocity_tiles_x_tx, and EEVEE_MotionBlurData::viewmat.
Referenced by EEVEE_effects_init().
void EEVEE_motion_blur_step_set | ( | EEVEE_Data * | vedata, |
int | step | ||
) |
Definition at line 89 of file eevee_motion_blur.c.
References BLI_assert, EEVEE_StorageList::effects, EEVEE_EffectsInfo::motion_blur_step, and EEVEE_Data::stl.
Referenced by eevee_render_to_image().
void EEVEE_motion_blur_swap_data | ( | EEVEE_Data * | vedata | ) |
Definition at line 544 of file eevee_motion_blur.c.
References EEVEE_GeometryMotionData::batch, BLI_assert, BLI_ghash_free(), BLI_ghashIterator_done(), BLI_ghashIterator_getValue(), BLI_ghashIterator_init(), BLI_ghashIterator_step(), EEVEE_MotionBlurData::camera, copy_m4_m4(), EEVEE_motion_hair_step_free(), EFFECT_MOTION_BLUR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_ObjectMotionData::geometry_data, GPU_vertbuf_discard(), GPU_vertbuf_get_format(), GPU_vertformat_attr_id_get(), GPU_vertformat_attr_rename(), EEVEE_ObjectMotionData::hair_data, EEVEE_MotionBlurData::hair_motion_step_cache, EEVEE_HairMotionStepData::hair_pos, EEVEE_HairMotionStepData::hair_pos_tx, MB_NEXT, MB_PREV, EEVEE_EffectsInfo::motion_blur, motion_blur_remove_vbo_reference_from_batch(), NULL, EEVEE_MotionBlurData::object, EEVEE_ObjectMotionData::obmat, EEVEE_MotionBlurData::position_vbo_cache, EEVEE_HairMotionData::psys, EEVEE_HairMotionData::psys_len, EEVEE_HairMotionData::step_data, EEVEE_Data::stl, and EEVEE_GeometryMotionData::vbo.
Referenced by eevee_render_to_image().
|
static |
Definition at line 95 of file eevee_motion_blur.c.
References EEVEE_MotionBlurData::camera, DRW_state_is_scene_render(), DRW_view_far_distance_get(), DRW_view_near_distance_get(), DRW_view_persmat_get(), DRW_view_viewmat_get(), EEVEE_StorageList::effects, fabsf, EEVEE_EffectsInfo::motion_blur, EEVEE_EffectsInfo::motion_blur_near_far, EEVEE_EffectsInfo::motion_blur_step, NULL, EEVEE_MotionBlurData::persinv, EEVEE_MotionBlurData::persmat, EEVEE_Data::stl, and EEVEE_MotionBlurData::viewmat.
Referenced by EEVEE_motion_blur_cache_init().
|
static |
Definition at line 416 of file eevee_motion_blur.c.
References batch, ELEM, GPU_BATCH_VBO_MAX_LEN, and NULL.
Referenced by EEVEE_motion_blur_cache_finish(), and EEVEE_motion_blur_swap_data().