diff options
| author | Bastiaan Olij <mux213@gmail.com> | 2023-02-27 14:03:41 +1100 |
|---|---|---|
| committer | Bastiaan Olij <mux213@gmail.com> | 2023-03-09 21:58:55 +1100 |
| commit | a8ec72cf94333c27651a47e3964a8a02c66dc791 (patch) | |
| tree | f02a61e1a9dd94dbfbe108042bc54ecf03765ed3 /servers/rendering/renderer_rd/storage_rd | |
| parent | 0cd148313213e2923004be65bafd6a3781c917ec (diff) | |
| download | redot-engine-a8ec72cf94333c27651a47e3964a8a02c66dc791.tar.gz | |
Move roughness limiter and sort into their own classes
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd')
| -rw-r--r-- | servers/rendering/renderer_rd/storage_rd/particles_storage.cpp | 11 | ||||
| -rw-r--r-- | servers/rendering/renderer_rd/storage_rd/particles_storage.h | 4 |
2 files changed, 14 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp b/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp index 3ed5d7dda8..d8b78de526 100644 --- a/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp +++ b/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp @@ -47,6 +47,10 @@ ParticlesStorage::ParticlesStorage() { MaterialStorage *material_storage = MaterialStorage::get_singleton(); + /* Effects */ + + sort_effects = memnew(SortEffects); + /* Particles */ { @@ -206,6 +210,11 @@ ParticlesStorage::~ParticlesStorage() { material_storage->material_free(particles_shader.default_material); material_storage->shader_free(particles_shader.default_shader); + if (sort_effects) { + memdelete(sort_effects); + sort_effects = nullptr; + } + singleton = nullptr; } @@ -1228,7 +1237,7 @@ void ParticlesStorage::particles_set_view_axis(RID p_particles, const Vector3 &p RD::get_singleton()->compute_list_dispatch_threads(compute_list, particles->amount, 1, 1); RD::get_singleton()->compute_list_end(); - RendererCompositorRD::get_singleton()->get_effects()->sort_buffer(particles->particles_sort_uniform_set, particles->amount); + sort_effects->sort_buffer(particles->particles_sort_uniform_set, particles->amount); } if (particles->trails_enabled && particles->trail_bind_poses.size() > 1) { diff --git a/servers/rendering/renderer_rd/storage_rd/particles_storage.h b/servers/rendering/renderer_rd/storage_rd/particles_storage.h index 9308d3ce9e..4f9253144e 100644 --- a/servers/rendering/renderer_rd/storage_rd/particles_storage.h +++ b/servers/rendering/renderer_rd/storage_rd/particles_storage.h @@ -34,6 +34,7 @@ #include "core/templates/local_vector.h" #include "core/templates/rid_owner.h" #include "core/templates/self_list.h" +#include "servers/rendering/renderer_rd/effects/sort_effects.h" #include "servers/rendering/renderer_rd/shaders/particles.glsl.gen.h" #include "servers/rendering/renderer_rd/shaders/particles_copy.glsl.gen.h" #include "servers/rendering/renderer_rd/storage_rd/material_storage.h" @@ -47,6 +48,9 @@ class ParticlesStorage : public RendererParticlesStorage { private: static ParticlesStorage *singleton; + /* EFFECTS */ + SortEffects *sort_effects = nullptr; + /* PARTICLES */ struct ParticleData { |
