summaryrefslogtreecommitdiff
path: root/drivers/gles3/rasterizer_storage_gles3.h
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2022-04-04 14:59:16 +0200
committerGitHub <noreply@github.com>2022-04-04 14:59:16 +0200
commite7c1888d20fdbe854ce282b6d2f42f5087bf7450 (patch)
treefa868bc6c94f5225fa094cf6a1b829c2bd7f4cdd /drivers/gles3/rasterizer_storage_gles3.h
parent338b23d57224ecd04eaff4763a7ba493ffa6cb3d (diff)
parentb8be7903f3be669415295281222c52065e0ff621 (diff)
Merge pull request #59807 from BastiaanOlij/mesh_storage
Diffstat (limited to 'drivers/gles3/rasterizer_storage_gles3.h')
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h140
1 files changed, 2 insertions, 138 deletions
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index b9022142dd..105529ee3d 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -132,143 +132,6 @@ public:
RID sky_create();
void sky_set_texture(RID p_sky, RID p_panorama, int p_radiance_size);
- /* MESH API */
-
- RID mesh_allocate() override;
- void mesh_initialize(RID p_rid) override;
- void mesh_set_blend_shape_count(RID p_mesh, int p_blend_shape_count) override;
- bool mesh_needs_instance(RID p_mesh, bool p_has_skeleton) override;
- RID mesh_instance_create(RID p_base) override;
- void mesh_instance_set_skeleton(RID p_mesh_instance, RID p_skeleton) override;
- void mesh_instance_set_blend_shape_weight(RID p_mesh_instance, int p_shape, float p_weight) override;
- void mesh_instance_check_for_update(RID p_mesh_instance) override;
- void update_mesh_instances() override;
- void reflection_probe_set_mesh_lod_threshold(RID p_probe, float p_ratio) override;
- float reflection_probe_get_mesh_lod_threshold(RID p_probe) const override;
-
- void mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_surface) override;
-
- int mesh_get_blend_shape_count(RID p_mesh) const override;
-
- void mesh_set_blend_shape_mode(RID p_mesh, RS::BlendShapeMode p_mode) override;
- RS::BlendShapeMode mesh_get_blend_shape_mode(RID p_mesh) const override;
-
- void mesh_surface_update_vertex_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
- void mesh_surface_update_attribute_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
- void mesh_surface_update_skin_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
-
- void mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material) override;
- RID mesh_surface_get_material(RID p_mesh, int p_surface) const override;
-
- RS::SurfaceData mesh_get_surface(RID p_mesh, int p_surface) const override;
- int mesh_get_surface_count(RID p_mesh) const override;
-
- void mesh_set_custom_aabb(RID p_mesh, const AABB &p_aabb) override;
- AABB mesh_get_custom_aabb(RID p_mesh) const override;
-
- AABB mesh_get_aabb(RID p_mesh, RID p_skeleton = RID()) override;
- void mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) override;
- void mesh_clear(RID p_mesh) override;
-
- /* MULTIMESH API */
-
- struct MultiMesh {
- RID mesh;
- int instances = 0;
- RS::MultimeshTransformFormat xform_format = RS::MULTIMESH_TRANSFORM_3D;
- bool uses_colors = false;
- bool uses_custom_data = false;
- int visible_instances = -1;
- AABB aabb;
- bool aabb_dirty = false;
- bool buffer_set = false;
- uint32_t stride_cache = 0;
- uint32_t color_offset_cache = 0;
- uint32_t custom_data_offset_cache = 0;
-
- Vector<float> data_cache; //used if individual setting is used
- bool *data_cache_dirty_regions = nullptr;
- uint32_t data_cache_used_dirty_regions = 0;
-
- RID buffer; //storage buffer
- RID uniform_set_3d;
- RID uniform_set_2d;
-
- bool dirty = false;
- MultiMesh *dirty_list = nullptr;
-
- Dependency dependency;
- };
-
- mutable RID_Owner<MultiMesh, true> multimesh_owner;
-
- MultiMesh *multimesh_dirty_list = nullptr;
-
- _FORCE_INLINE_ void _multimesh_make_local(MultiMesh *multimesh) const;
- _FORCE_INLINE_ void _multimesh_mark_dirty(MultiMesh *multimesh, int p_index, bool p_aabb);
- _FORCE_INLINE_ void _multimesh_mark_all_dirty(MultiMesh *multimesh, bool p_data, bool p_aabb);
- _FORCE_INLINE_ void _multimesh_re_create_aabb(MultiMesh *multimesh, const float *p_data, int p_instances);
- void _update_dirty_multimeshes();
-
- RID multimesh_allocate() override;
- void multimesh_initialize(RID p_rid) override;
- 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;
- int multimesh_get_instance_count(RID p_multimesh) const override;
-
- void multimesh_set_mesh(RID p_multimesh, RID p_mesh) override;
- void multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform3D &p_transform) override;
- void multimesh_instance_set_transform_2d(RID p_multimesh, int p_index, const Transform2D &p_transform) override;
- void multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color) override;
- void multimesh_instance_set_custom_data(RID p_multimesh, int p_index, const Color &p_color) override;
-
- RID multimesh_get_mesh(RID p_multimesh) const override;
- AABB multimesh_get_aabb(RID p_multimesh) const override;
-
- Transform3D multimesh_instance_get_transform(RID p_multimesh, int p_index) const override;
- Transform2D multimesh_instance_get_transform_2d(RID p_multimesh, int p_index) const override;
- Color multimesh_instance_get_color(RID p_multimesh, int p_index) const override;
- Color multimesh_instance_get_custom_data(RID p_multimesh, int p_index) const override;
- void multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_buffer) override;
- Vector<float> multimesh_get_buffer(RID p_multimesh) const override;
-
- void multimesh_set_visible_instances(RID p_multimesh, int p_visible) override;
- int multimesh_get_visible_instances(RID p_multimesh) const override;
-
- _FORCE_INLINE_ RS::MultimeshTransformFormat multimesh_get_transform_format(RID p_multimesh) const {
- MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
- return multimesh->xform_format;
- }
-
- _FORCE_INLINE_ bool multimesh_uses_colors(RID p_multimesh) const {
- MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
- return multimesh->uses_colors;
- }
-
- _FORCE_INLINE_ bool multimesh_uses_custom_data(RID p_multimesh) const {
- MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
- return multimesh->uses_custom_data;
- }
-
- _FORCE_INLINE_ uint32_t multimesh_get_instances_to_draw(RID p_multimesh) const {
- MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
- if (multimesh->visible_instances >= 0) {
- return multimesh->visible_instances;
- }
- return multimesh->instances;
- }
-
- /* SKELETON API */
-
- RID skeleton_allocate() override;
- void skeleton_initialize(RID p_rid) override;
- void skeleton_allocate_data(RID p_skeleton, int p_bones, bool p_2d_skeleton = false) override;
- void skeleton_set_base_transform_2d(RID p_skeleton, const Transform2D &p_base_transform) override;
- int skeleton_get_bone_count(RID p_skeleton) const override;
- void skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform3D &p_transform) override;
- Transform3D skeleton_bone_get_transform(RID p_skeleton, int p_bone) const override;
- void skeleton_bone_set_transform_2d(RID p_skeleton, int p_bone, const Transform2D &p_transform) override;
- Transform2D skeleton_bone_get_transform_2d(RID p_skeleton, int p_bone) const override;
-
/* Light API */
RID directional_light_allocate() override;
@@ -328,6 +191,8 @@ public:
void reflection_probe_set_enable_shadows(RID p_probe, bool p_enable) override;
void reflection_probe_set_cull_mask(RID p_probe, uint32_t p_layers) override;
void reflection_probe_set_resolution(RID p_probe, int p_resolution) override;
+ void reflection_probe_set_mesh_lod_threshold(RID p_probe, float p_ratio) override;
+ float reflection_probe_get_mesh_lod_threshold(RID p_probe) const override;
AABB reflection_probe_get_aabb(RID p_probe) const override;
RS::ReflectionProbeUpdateMode reflection_probe_get_update_mode(RID p_probe) const override;
@@ -338,7 +203,6 @@ public:
bool reflection_probe_renders_shadows(RID p_probe) const override;
void base_update_dependency(RID p_base, DependencyTracker *p_instance) override;
- void skeleton_update_dependency(RID p_base, DependencyTracker *p_instance) override;
/* VOXEL GI API */