summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_scene_cull.cpp
diff options
context:
space:
mode:
authorreduz <reduzio@gmail.com>2022-02-14 13:27:10 +0100
committerreduz <reduzio@gmail.com>2022-02-15 19:20:31 +0100
commit4f73d3beb44ff63e7dff9ff272ecc548a7185bc1 (patch)
tree907cfb942af1d8e8e3f073bc587377847e2756e4 /servers/rendering/renderer_scene_cull.cpp
parent171021145d49ffdda9110869d35ee63a946af9f8 (diff)
downloadredot-engine-4f73d3beb44ff63e7dff9ff272ecc548a7185bc1.tar.gz
Add Particle Shader Userdata
* Adds optional vec4 USERDATA1 .. USERDATA6 to particles, allowing to store custom data. * This data is allocated on demand, so shaders that do not use it do not cost more.
Diffstat (limited to 'servers/rendering/renderer_scene_cull.cpp')
-rw-r--r--servers/rendering/renderer_scene_cull.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 5b2be8e174..5bdc7ce600 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -3683,6 +3683,15 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
_instance_update_mesh_instance(p_instance);
}
+ if (p_instance->base_type == RS::INSTANCE_PARTICLES) {
+ // update the process material dependency
+
+ RID particle_material = RSG::storage->particles_get_process_material(p_instance->base);
+ if (particle_material.is_valid()) {
+ RSG::storage->material_update_dependency(particle_material, &p_instance->dependency_tracker);
+ }
+ }
+
if ((1 << p_instance->base_type) & RS::INSTANCE_GEOMETRY_MASK) {
InstanceGeometryData *geom = static_cast<InstanceGeometryData *>(p_instance->base_data);