63 const int tx_size[2] = {
73 GPU_ATTACHMENT_TEXTURE(effects->velocity_tiles_x_tx),
81 GPU_ATTACHMENT_TEXTURE(effects->velocity_tiles_tx),
121 const int tx_size[2] = {
152 for (
int i = 0; i < 2; i++) {
289 if (mb_data ==
NULL) {
350 const bool object_moves =
true;
355 if (!(object_moves || is_deform)) {
404 else if (is_deform) {
465 for (
int i = 0; i < mb_hair->
psys_len; i++) {
473 (
void ***)&step_data_cache_ptr)) {
482 *step_data_cache_ptr = new_step_data;
492 for (
int i = 0; i <
MB_CURR; i++) {
524 (
void ***)&vbo_cache_ptr)) {
527 *vbo_cache_ptr = duplicated_vbo;
533 mb_geom->
vbo[mb_step] = vbo = *vbo_cache_ptr;
595 if (mb_hair !=
NULL) {
596 for (
int i = 0; i < mb_hair->
psys_len; i++) {
605 if (mb_geom !=
NULL) {
Camera data-block and utility functions.
General operations, lookup, etc. for blender objects.
int BKE_object_is_deform_modified(struct Scene *scene, struct Object *ob)
bool BKE_object_moves_in_time(const struct Object *object, bool recurse_parent)
void BLI_ghashIterator_step(GHashIterator *ghi)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
void(* GHashValFreeFP)(void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh)
bool BLI_ghash_ensure_p(GHash *gh, void *key, void ***r_val) ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_ghashIterator_done(const GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
bool equals_m4m4(const float mat1[4][4], const float mat2[4][4])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool is_zero_m4(const float mat[4][4])
Types and defines for representing Rigid Body entities.
@ SCE_EEVEE_MOTION_BLUR_ENABLED
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_call(shgroup, geom, ob)
int GPU_batch_vertbuf_add_ex(GPUBatch *, GPUVertBuf *, bool own_vbo)
#define GPU_BATCH_VBO_MAX_LEN
bool GPU_batch_vertbuf_has(GPUBatch *, GPUVertBuf *)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
struct GPUShader GPUShader
int GPU_texture_height(const GPUTexture *tex)
struct GPUTexture GPUTexture
GPUTexture * GPU_texture_create_from_vertbuf(const char *name, struct GPUVertBuf *vert)
int GPU_texture_width(const GPUTexture *tex)
const GPUVertFormat * GPU_vertbuf_get_format(const GPUVertBuf *verts)
uint GPU_vertbuf_get_vertex_len(const GPUVertBuf *verts)
void GPU_vertbuf_discard(GPUVertBuf *)
struct GPUVertBuf GPUVertBuf
GPUVertBuf * GPU_vertbuf_duplicate(GPUVertBuf *verts)
void GPU_vertbuf_use(GPUVertBuf *)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
GPUVertBuf * DRW_cache_object_pos_vertbuf_get(Object *ob)
GPUBatch * DRW_cache_object_surface_get(Object *ob)
void DRW_hair_duplimat_get(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, float(*dupli_mat)[4])
struct DRWShadingGroup * DRW_shgroup_curves_create_sub(struct Object *object, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
void DRW_curves_update(void)
struct GPUVertBuf * DRW_curves_pos_buffer_get(struct Object *object)
struct GPUVertBuf * DRW_hair_pos_buffer_get(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md)
struct DRWShadingGroup * DRW_shgroup_hair_create_sub(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
void DRW_render_instance_buffer_finish(void)
const DRWContextState * DRW_context_state_get(void)
void DRW_cache_restart(void)
const float * DRW_viewport_size_get(void)
const float * DRW_viewport_invert_size_get(void)
bool DRW_state_is_scene_render(void)
DefaultTextureList * DRW_viewport_texture_list_get(void)
float DRW_view_near_distance_get(const DRWView *view)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, const float value)
void DRW_view_persmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void DRW_shgroup_uniform_ivec2_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_pass_link(DRWPass *first, DRWPass *second)
bool DRW_view_is_persp_get(const DRWView *view)
void DRW_shgroup_uniform_texture_ref_ex(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex, eGPUSamplerState sampler_state)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
float DRW_view_far_distance_get(const DRWView *view)
void DRW_shgroup_uniform_bool_copy(DRWShadingGroup *shgroup, const char *name, const bool value)
void DRW_shgroup_uniform_mat4(DRWShadingGroup *shgroup, const char *name, const float(*value)[4])
void DRW_shgroup_uniform_vec2(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_draw_pass(DRWPass *pass)
GPUTexture * DRW_texture_pool_query_2d(int w, int h, eGPUTextureFormat format, DrawEngineType *engine_type)
void EEVEE_motion_blur_data_init(EEVEE_MotionBlurData *mb)
EEVEE_GeometryMotionData * EEVEE_motion_blur_geometry_data_get(EEVEE_ObjectMotionData *mb_data)
void EEVEE_motion_hair_step_free(EEVEE_HairMotionStepData *step_data)
EEVEE_HairMotionData * EEVEE_motion_blur_curves_data_get(EEVEE_ObjectMotionData *mb_data)
EEVEE_HairMotionData * EEVEE_motion_blur_hair_data_get(EEVEE_ObjectMotionData *mb_data, Object *ob)
EEVEE_ObjectMotionData * EEVEE_motion_blur_object_data_get(EEVEE_MotionBlurData *mb, Object *ob, bool is_psys)
DrawEngineType draw_engine_eevee_type
struct GPUTexture * EEVEE_materials_get_util_tex(void)
void EEVEE_motion_blur_cache_finish(EEVEE_Data *vedata)
static void eevee_motion_blur_sync_camera(EEVEE_Data *vedata)
void EEVEE_motion_blur_swap_data(EEVEE_Data *vedata)
void EEVEE_motion_blur_cache_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
static void motion_blur_remove_vbo_reference_from_batch(GPUBatch *batch, GPUVertBuf *vbo1, GPUVertBuf *vbo2)
void EEVEE_motion_blur_step_set(EEVEE_Data *vedata, int step)
void EEVEE_motion_blur_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob)
void EEVEE_motion_blur_draw(EEVEE_Data *vedata)
int EEVEE_motion_blur_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
void EEVEE_motion_blur_curves_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob)
void EEVEE_motion_blur_hair_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *ob, ParticleSystem *psys, ModifierData *md)
struct GPUShader * EEVEE_shaders_effect_motion_blur_sh_get(void)
#define EEVEE_VELOCITY_TILE_SIZE
struct GPUShader * EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get(void)
struct GPUShader * EEVEE_shaders_effect_motion_blur_hair_sh_get(void)
struct GPUShader * EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get(void)
struct GPUShader * EEVEE_shaders_effect_motion_blur_object_sh_get(void)
void GPU_framebuffer_viewport_reset(GPUFrameBuffer *gpu_fb)
void GPU_framebuffer_viewport_set(GPUFrameBuffer *gpu_fb, int x, int y, int width, int height)
ccl_gpu_kernel_postfix ccl_global float int int int int sh
void *(* MEM_callocN)(size_t len, const char *str)
struct GPUTexture * depth
EEVEE_FramebufferList * fbl
struct GPUTexture * source_buffer
float motion_blur_near_far[2]
struct GPUTexture * velocity_tiles_x_tx
struct GPUFrameBuffer * target_buffer
struct GPUTexture * velocity_tiles_tx
EEVEE_EffectsFlag enabled_effects
struct GPUTexture * velocity_tx
struct EEVEE_MotionBlurData motion_blur
struct GPUFrameBuffer * main_fb
struct GPUFrameBuffer * velocity_tiles_fb[2]
struct GPUVertBuf * vbo[2]
EEVEE_HairMotionStepData step_data[2]
struct EEVEE_HairMotionData::@209 psys[0]
struct GPUTexture * hair_pos_tx
struct GPUVertBuf * hair_pos
struct GHash * hair_motion_step_cache[2]
struct EEVEE_MotionBlurData::@208 camera[3]
struct GHash * position_vbo_cache[2]
DRWShadingGroup * hair_grp
EEVEE_GeometryMotionData * geometry_data
EEVEE_HairMotionData * hair_data
struct DRWPass * velocity_object
struct DRWPass * velocity_tiles
struct DRWPass * motion_blur
struct DRWPass * velocity_tiles_expand[2]
struct DRWPass * velocity_tiles_x
struct DRWPass * velocity_hair
struct EEVEE_EffectsInfo * effects
struct RigidBodyOb * rigidbody_object
float motion_blur_depth_scale