diff options
author | clayjohn <claynjohn@gmail.com> | 2022-12-22 12:04:34 -0700 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2022-12-22 12:04:34 -0700 |
commit | 41021b07be6d4b570c81d2fb0c4d71d90e9d9ed2 (patch) | |
tree | 43a83c52ae3ba3ba20b61188517775745fc53a6e /servers/rendering/renderer_rd/storage_rd | |
parent | c547c4ef5908b9d591497e40217200ecb12e0ebd (diff) |
Avoid updating particles during 2D rendering
In 2D the particle uniform set isn't obtained until the render pass. So in 2D just avoid rendering if not updated yet.
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd')
-rw-r--r-- | servers/rendering/renderer_rd/storage_rd/particles_storage.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/particles_storage.h b/servers/rendering/renderer_rd/storage_rd/particles_storage.h index 2dc61fb992..0701dc95dd 100644 --- a/servers/rendering/renderer_rd/storage_rd/particles_storage.h +++ b/servers/rendering/renderer_rd/storage_rd/particles_storage.h @@ -455,6 +455,12 @@ public: return particles->mode; } + _FORCE_INLINE_ uint32_t particles_get_frame_counter(RID p_particles) { + Particles *particles = particles_owner.get_or_null(p_particles); + ERR_FAIL_COND_V(!particles, false); + return particles->frame_counter; + } + _FORCE_INLINE_ uint32_t particles_get_amount(RID p_particles, uint32_t &r_trail_divisor) { Particles *particles = particles_owner.get_or_null(p_particles); ERR_FAIL_COND_V(!particles, 0); @@ -487,7 +493,6 @@ public: ERR_FAIL_COND_V(!particles, RID()); if (particles->particles_transforms_buffer_uniform_set.is_null() || !RD::get_singleton()->uniform_set_is_valid(particles->particles_transforms_buffer_uniform_set)) { _particles_update_buffers(particles); - update_particles(); Vector<RD::Uniform> uniforms; { |