diff options
author | Ricardo Buring <ricardo.buring@gmail.com> | 2024-05-11 01:22:50 +0200 |
---|---|---|
committer | Ricardo Buring <ricardo.buring@gmail.com> | 2024-08-18 17:14:59 +0200 |
commit | 1728f80e7cd6d8ed4dd5068f7bd5da64b9c6edfa (patch) | |
tree | 1746729a8905252460f43a4392b4265b134c147e /servers/rendering/renderer_rd/storage_rd/mesh_storage.h | |
parent | a7598679cff6daffbec8f16314b853d87268fff5 (diff) | |
download | redot-engine-1728f80e7cd6d8ed4dd5068f7bd5da64b9c6edfa.tar.gz |
Fixed Timestep Interpolation: MultiMesh
Adds fixed timestep interpolation to multimeshes.
Co-authored-by: lawnjelly <lawnjelly@gmail.com>
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd/mesh_storage.h')
-rw-r--r-- | servers/rendering/renderer_rd/storage_rd/mesh_storage.h | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/mesh_storage.h b/servers/rendering/renderer_rd/storage_rd/mesh_storage.h index 5491f637bc..4344db783d 100644 --- a/servers/rendering/renderer_rd/storage_rd/mesh_storage.h +++ b/servers/rendering/renderer_rd/storage_rd/mesh_storage.h @@ -244,6 +244,8 @@ private: bool dirty = false; MultiMesh *dirty_list = nullptr; + RendererMeshStorage::MultiMeshInterpolator interpolator; + Dependency dependency; }; @@ -621,36 +623,38 @@ public: bool owns_multimesh(RID p_rid) { return multimesh_owner.owns(p_rid); }; - virtual RID multimesh_allocate() override; - virtual void multimesh_initialize(RID p_multimesh) override; - virtual void multimesh_free(RID p_rid) override; + virtual RID _multimesh_allocate() override; + virtual void _multimesh_initialize(RID p_multimesh) override; + virtual void _multimesh_free(RID p_rid) override; + + virtual void _multimesh_allocate_data(RID p_multimesh, int p_instances, RS::MultimeshTransformFormat p_transform_format, bool p_use_colors = false, bool p_use_custom_data = false) override; + virtual int _multimesh_get_instance_count(RID p_multimesh) const override; - virtual void multimesh_allocate_data(RID p_multimesh, int p_instances, RS::MultimeshTransformFormat p_transform_format, bool p_use_colors = false, bool p_use_custom_data = false) override; - virtual int multimesh_get_instance_count(RID p_multimesh) const override; + virtual void _multimesh_set_mesh(RID p_multimesh, RID p_mesh) override; + virtual void _multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform3D &p_transform) override; + virtual void _multimesh_instance_set_transform_2d(RID p_multimesh, int p_index, const Transform2D &p_transform) override; + virtual void _multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color) override; + virtual void _multimesh_instance_set_custom_data(RID p_multimesh, int p_index, const Color &p_color) override; - virtual void multimesh_set_mesh(RID p_multimesh, RID p_mesh) override; - virtual void multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform3D &p_transform) override; - virtual void multimesh_instance_set_transform_2d(RID p_multimesh, int p_index, const Transform2D &p_transform) override; - virtual void multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color) override; - virtual void multimesh_instance_set_custom_data(RID p_multimesh, int p_index, const Color &p_color) override; + virtual RID _multimesh_get_mesh(RID p_multimesh) const override; - virtual RID multimesh_get_mesh(RID p_multimesh) const override; + virtual Transform3D _multimesh_instance_get_transform(RID p_multimesh, int p_index) const override; + virtual Transform2D _multimesh_instance_get_transform_2d(RID p_multimesh, int p_index) const override; + virtual Color _multimesh_instance_get_color(RID p_multimesh, int p_index) const override; + virtual Color _multimesh_instance_get_custom_data(RID p_multimesh, int p_index) const override; - virtual Transform3D multimesh_instance_get_transform(RID p_multimesh, int p_index) const override; - virtual Transform2D multimesh_instance_get_transform_2d(RID p_multimesh, int p_index) const override; - virtual Color multimesh_instance_get_color(RID p_multimesh, int p_index) const override; - virtual Color multimesh_instance_get_custom_data(RID p_multimesh, int p_index) const override; + virtual void _multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_buffer) override; + virtual Vector<float> _multimesh_get_buffer(RID p_multimesh) const override; - virtual void multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_buffer) override; - virtual Vector<float> multimesh_get_buffer(RID p_multimesh) const override; + virtual void _multimesh_set_visible_instances(RID p_multimesh, int p_visible) override; + virtual int _multimesh_get_visible_instances(RID p_multimesh) const override; - virtual void multimesh_set_visible_instances(RID p_multimesh, int p_visible) override; - virtual int multimesh_get_visible_instances(RID p_multimesh) const override; + virtual void _multimesh_set_custom_aabb(RID p_multimesh, const AABB &p_aabb) override; + virtual AABB _multimesh_get_custom_aabb(RID p_multimesh) const override; - virtual void multimesh_set_custom_aabb(RID p_multimesh, const AABB &p_aabb) override; - virtual AABB multimesh_get_custom_aabb(RID p_multimesh) const override; + virtual AABB _multimesh_get_aabb(RID p_multimesh) const override; - virtual AABB multimesh_get_aabb(RID p_multimesh) const override; + virtual MultiMeshInterpolator *_multimesh_get_interpolator(RID p_multimesh) const override; void _update_dirty_multimeshes(); void _multimesh_get_motion_vectors_offsets(RID p_multimesh, uint32_t &r_current_offset, uint32_t &r_prev_offset); |