diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-03-10 14:02:14 +0100 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-03-10 14:02:14 +0100 |
| commit | 0511da260fe1c5873de005427f8c9a113226b935 (patch) | |
| tree | 42d4df462b013fd6140db0e63ed8d5b9b0a05e53 /servers/rendering/renderer_rd/storage_rd | |
| parent | c1128e911ccd6f1e8c35646df804d894652a58f1 (diff) | |
| parent | a8ec72cf94333c27651a47e3964a8a02c66dc791 (diff) | |
| download | redot-engine-0511da260fe1c5873de005427f8c9a113226b935.tar.gz | |
Merge pull request #74019 from BastiaanOlij/split_last_effects
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 { |
