Blender
V3.3
|
#include <eevee_velocity.hh>
Classes | |
struct | VelocityGeometryData |
struct | VelocityObjectData |
Public Member Functions | |
VelocityModule (Instance &inst) | |
~VelocityModule () | |
Public Attributes | |
Map< ObjectKey, VelocityObjectData > | velocity_map |
Map< ID *, VelocityGeometryData > | geometry_map |
std::array< VelocityObjectBuf *, 3 > | object_steps |
std::array< VelocityGeometryBuf *, 3 > | geometry_steps |
int3 | object_steps_usage = int3(0) |
VelocityIndexBuf | indirection_buf |
std::array< CameraDataBuf *, 3 > | camera_steps |
VelocityModule | |
void | init () |
void | step_camera_sync () |
void | step_sync (eVelocityStep step, float time) |
bool | step_object_sync (Object *ob, ObjectKey &object_key, int recalc=0) |
void | step_swap () |
void | begin_sync () |
void | end_sync () |
void | bind_resources (DRWShadingGroup *grp) |
bool | camera_has_motion () const |
Container for scene velocity data.
Definition at line 29 of file eevee_velocity.hh.
|
inline |
Definition at line 71 of file eevee_velocity.hh.
References camera_steps, geometry_steps, and object_steps.
|
inline |
Definition at line 85 of file eevee_velocity.hh.
References camera_steps, geometry_steps, and object_steps.
void blender::eevee::VelocityModule::begin_sync | ( | ) |
Definition at line 239 of file eevee_velocity.cc.
References blender::eevee::Instance::is_viewport(), object_steps_usage, and step_camera_sync().
Referenced by blender::eevee::Instance::begin_sync().
void blender::eevee::VelocityModule::bind_resources | ( | DRWShadingGroup * | grp | ) |
Definition at line 337 of file eevee_velocity.cc.
References camera_steps, DRW_shgroup_storage_block_ref, DRW_shgroup_uniform_block_ref, geometry_steps, indirection_buf, blender::eevee::Instance::is_viewport(), next, and object_steps.
Referenced by blender::eevee::ForwardPipeline::prepass_opaque_add().
bool blender::eevee::VelocityModule::camera_has_motion | ( | ) | const |
Definition at line 352 of file eevee_velocity.cc.
References camera_steps, and blender::eevee::Instance::is_viewport().
Referenced by end_sync(), and blender::eevee::ShadingView::render().
void blender::eevee::VelocityModule::end_sync | ( | ) |
Definition at line 250 of file eevee_velocity.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), camera_has_motion(), camera_steps, geometry_map, GPU_vertbuf_get_vertex_len(), indirection_buf, blender::eevee::Instance::is_viewport(), max_uu(), object_steps, power_of_2_max_u(), blender::eevee::Sampling::reset(), blender::eevee::Instance::sampling, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), and velocity_map.
Referenced by blender::eevee::Instance::end_sync().
void blender::eevee::VelocityModule::init | ( | ) |
Definition at line 33 of file eevee_velocity.cc.
References RenderData::cfra, EEVEE_RENDER_PASS_VECTOR, blender::eevee::Film::enabled_passes_get(), blender::eevee::Instance::film, Scene::r, blender::eevee::Instance::render, scene, blender::eevee::Instance::scene, step_sync(), and RenderData::subframe.
void blender::eevee::VelocityModule::step_camera_sync | ( | ) |
Definition at line 63 of file eevee_velocity.cc.
References blender::eevee::Instance::camera, camera_steps, CameraData, blender::eevee::Camera::data_get(), initialized, and blender::eevee::Camera::sync().
Referenced by begin_sync(), and step_sync().
bool blender::eevee::VelocityModule::step_object_sync | ( | Object * | ob, |
ObjectKey & | object_key, | ||
int | recalc = 0 |
||
) |
Definition at line 74 of file eevee_velocity.cc.
References data, Object::data, DRW_cache_object_pos_vertbuf_get(), DRW_curves_pos_buffer_get(), DRW_object_resource_id_get(), geometry_map, blender::eevee::VelocityModule::VelocityObjectData::id, Object::id, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, if(), blender::eevee::Instance::is_viewport(), ID::name, OB_CURVES, object_steps, object_steps_usage, Object::obmat, blender::eevee::Sampling::reset(), blender::eevee::Instance::sampling, Object::type, and velocity_map.
Referenced by blender::eevee::SyncModule::sync_curves(), and blender::eevee::SyncModule::sync_mesh().
void blender::eevee::VelocityModule::step_swap | ( | ) |
Moves next frame data to previous frame data. Nullify next frame data. IMPORTANT: This runs AFTER drawing in the viewport (so after begin_sync()
) but BEFORE drawing in render mode (so before begin_sync()
). In viewport the data will be used the next frame.
Definition at line 174 of file eevee_velocity.cc.
References camera_steps, geometry_map, geometry_steps, GPU_storagebuf_copy_sub_from_vertbuf(), GPU_vertbuf_get_vertex_len(), blender::eevee::Instance::is_viewport(), blender::eevee::VelocityModule::VelocityGeometryData::len, max_ii(), object_steps, blender::eevee::VelocityModule::VelocityGeometryData::ofs, SWAP, and velocity_map.
Referenced by blender::eevee::Instance::draw_viewport().
Definition at line 54 of file eevee_velocity.cc.
References blender::eevee::Instance::depsgraph, DRW_render_object_iter(), object_steps_usage, blender::eevee::Instance::render, step_camera_sync(), blender::eevee::step_object_sync_render(), and time.
Referenced by init().
std::array<CameraDataBuf *, 3> blender::eevee::VelocityModule::camera_steps |
Copies of camera data. One for previous and one for next time step.
Definition at line 63 of file eevee_velocity.hh.
Referenced by bind_resources(), camera_has_motion(), end_sync(), step_camera_sync(), step_swap(), blender::eevee::Film::sync(), VelocityModule(), and ~VelocityModule().
Map<ID *, VelocityGeometryData> blender::eevee::VelocityModule::geometry_map |
Geometry to be copied to VelocityGeometryBuf. Indexed by evaluated ID *. Empty after
Definition at line 50 of file eevee_velocity.hh.
Referenced by end_sync(), step_object_sync(), and step_swap().
std::array<VelocityGeometryBuf *, 3> blender::eevee::VelocityModule::geometry_steps |
Contains all Geometry steps from deforming objects for each time step.
Definition at line 54 of file eevee_velocity.hh.
Referenced by bind_resources(), step_swap(), VelocityModule(), and ~VelocityModule().
VelocityIndexBuf blender::eevee::VelocityModule::indirection_buf |
Buffer of all VelocityIndex used in this frame. Indexed by draw manager resource id.
Definition at line 58 of file eevee_velocity.hh.
Referenced by bind_resources(), and end_sync().
std::array<VelocityObjectBuf *, 3> blender::eevee::VelocityModule::object_steps |
Contains all objects matrices for each time step.
Definition at line 52 of file eevee_velocity.hh.
Referenced by bind_resources(), end_sync(), step_object_sync(), step_swap(), VelocityModule(), and ~VelocityModule().
Number of occupied slot in each object_steps
.
Definition at line 56 of file eevee_velocity.hh.
Referenced by begin_sync(), step_object_sync(), and step_sync().
Map<ObjectKey, VelocityObjectData> blender::eevee::VelocityModule::velocity_map |
The map contains indirection indices to the obmat and geometry in each step buffer. Note that each object component gets its own resource id so one component correspond to one geometry offset.
Definition at line 48 of file eevee_velocity.hh.
Referenced by end_sync(), step_object_sync(), and step_swap().