diff options
author | Septian <septgsk@gmail.com> | 2023-08-15 04:39:57 +0700 |
---|---|---|
committer | Septian <septgsk@gmail.com> | 2023-08-15 15:06:37 +0700 |
commit | cb7400d67ac37667ad32beca64c463e9eb784e5d (patch) | |
tree | 6c7400ae8a1ceaafbb5d2422aa35cec8fde5f2de | |
parent | 013e8e3afb982d4b230f0039b6dc248b48794ab9 (diff) | |
download | redot-engine-cb7400d67ac37667ad32beca64c463e9eb784e5d.tar.gz |
Fix particle shader deterministic random values
-rw-r--r-- | scene/resources/particle_process_material.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scene/resources/particle_process_material.cpp b/scene/resources/particle_process_material.cpp index 745c71626c..72d38ec8ce 100644 --- a/scene/resources/particle_process_material.cpp +++ b/scene/resources/particle_process_material.cpp @@ -683,11 +683,13 @@ void ParticleProcessMaterial::_update_shader() { code += " pos.z = 0.0;\n"; } code += " // apply linear acceleration\n"; - code += " force += length(VELOCITY) > 0.0 ? normalize(VELOCITY) * tex_linear_accel * mix(linear_accel_min, linear_accel_max, rand_from_seed(alt_seed)) : vec3(0.0);\n"; + code += " float linear_accel_rand = rand_from_seed(alt_seed);\n"; + code += " force += length(VELOCITY) > 0.0 ? normalize(VELOCITY) * tex_linear_accel * mix(linear_accel_min, linear_accel_max, linear_accel_rand) : vec3(0.0);\n"; code += " // apply radial acceleration\n"; code += " vec3 org = EMISSION_TRANSFORM[3].xyz;\n"; code += " vec3 diff = pos - org;\n"; - code += " force += length(diff) > 0.0 ? normalize(diff) * tex_radial_accel * mix(radial_accel_min, radial_accel_max, rand_from_seed(alt_seed)) : vec3(0.0);\n"; + code += " float radial_accel_rand = rand_from_seed(alt_seed);\n"; + code += " force += length(diff) > 0.0 ? normalize(diff) * tex_radial_accel * mix(radial_accel_min, radial_accel_max, radial_accel_rand) : vec3(0.0);\n"; code += " // apply tangential acceleration;\n"; code += " float tangent_accel_val = tex_tangent_accel * mix(tangent_accel_min, tangent_accel_max, rand_from_seed(alt_seed));\n"; if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) { |