summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-08-16 09:16:14 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-08-16 09:16:14 +0200
commited1180a97e5e1bd333895e7e3937c83622674c34 (patch)
tree1da30766c52520d138bada0da57f7e734cb4fac1
parent1d852cb75ea004054621fe7976c44adc63d572b3 (diff)
parentcb7400d67ac37667ad32beca64c463e9eb784e5d (diff)
downloadredot-engine-ed1180a97e5e1bd333895e7e3937c83622674c34.tar.gz
Merge pull request #80638 from sepTN/fix-particle-shader-rand
Fix particle shader deterministic random values
-rw-r--r--scene/resources/particle_process_material.cpp6
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]) {