diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-09 11:07:13 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-09 11:07:13 +0200 |
| commit | 082cfd501a9f7140ec521cec6d875dfcb57c7f2e (patch) | |
| tree | 2a0b47595d49842754975cf82d2e848a9d59c176 | |
| parent | fd2f33942b537da2e333f6ff0a3da4c13b0a1dd1 (diff) | |
| parent | 353a4e1e0935f8323be68b26fb9853fbe0b2425f (diff) | |
| download | redot-engine-082cfd501a9f7140ec521cec6d875dfcb57c7f2e.tar.gz | |
Merge pull request #78021 from clayjohn/Particles-size-rot-reset
Correctly reset particle size and rotation in ParticlesProcessMaterial
| -rw-r--r-- | scene/resources/particle_process_material.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/scene/resources/particle_process_material.cpp b/scene/resources/particle_process_material.cpp index afac6460dd..39351b0513 100644 --- a/scene/resources/particle_process_material.cpp +++ b/scene/resources/particle_process_material.cpp @@ -497,14 +497,20 @@ void ParticleProcessMaterial::_update_shader() { code += " CUSTOM.x = base_angle * degree_to_rad;\n"; // angle code += " CUSTOM.y = 0.0;\n"; // phase code += " CUSTOM.w = (1.0 - lifetime_randomness * rand_from_seed(alt_seed));\n"; - code += " CUSTOM.z = (tex_anim_offset) * mix(anim_offset_min, anim_offset_max, anim_offset_rand);\n"; // animation offset (0-1) + code += " CUSTOM.z = (tex_anim_offset) * mix(anim_offset_min, anim_offset_max, anim_offset_rand);\n\n"; // animation offset (0-1) + + code += " if (RESTART_ROT_SCALE) {\n"; + code += " TRANSFORM[0].xyz = vec3(1.0, 0.0, 0.0);\n"; + code += " TRANSFORM[1].xyz = vec3(0.0, 1.0, 0.0);\n"; + code += " TRANSFORM[2].xyz = vec3(0.0, 0.0, 1.0);\n"; + code += " }\n\n"; code += " if (RESTART_POSITION) {\n"; switch (emission_shape) { case EMISSION_SHAPE_POINT: { //do none, identity (will later be multiplied by emission transform) - code += " TRANSFORM = mat4(vec4(1,0,0,0),vec4(0,1,0,0),vec4(0,0,1,0),vec4(0,0,0,1));\n"; + code += " TRANSFORM[3].xyz = vec3(0.0, 0.0, 0.0);\n"; } break; case EMISSION_SHAPE_SPHERE: { code += " float s = rand_from_seed(alt_seed) * 2.0 - 1.0;\n"; |
