@@ -762,8 +762,11 @@ void ParticleProcessMaterial::_update_shader() {
762
762
763
763
code += " }\n " ;
764
764
765
- code += " vec3 process_radial_displacement(DynamicsParameters param, float lifetime, inout uint alt_seed, mat4 transform, mat4 emission_transform){\n " ;
765
+ code += " vec3 process_radial_displacement(DynamicsParameters param, float lifetime, inout uint alt_seed, mat4 transform, mat4 emission_transform, float delta ){\n " ;
766
766
code += " vec3 radial_displacement = vec3(0.0);\n " ;
767
+ code += " if (delta < 0.001){\n " ;
768
+ code += " return radial_displacement;\n " ;
769
+ code += " }\n " ;
767
770
code += " float radial_displacement_multiplier = 1.0;\n " ;
768
771
if (tex_parameters[PARAM_RADIAL_VELOCITY].is_valid ()) {
769
772
code += " radial_displacement_multiplier = texture(radial_velocity_curve, vec2(lifetime)).r;\n " ;
@@ -774,7 +777,7 @@ void ParticleProcessMaterial::_update_shader() {
774
777
code += " }else{radial_displacement = get_random_direction_from_spread(alt_seed, 360.0)* param.radial_velocity;} \n " ;
775
778
code += " if (radial_displacement_multiplier * param.radial_velocity < 0.0){\n // Prevent inwards velocity to flicker once the point is reached." ;
776
779
code += " if (length(radial_displacement) > 0.01){\n " ;
777
- code += " radial_displacement = normalize(radial_displacement) * min(abs((radial_displacement_multiplier * param.radial_velocity)), length(transform[3].xyz - global_pivot));\n " ;
780
+ code += " radial_displacement = normalize(radial_displacement) * min(abs((radial_displacement_multiplier * param.radial_velocity)), length(transform[3].xyz - global_pivot) / delta );\n " ;
778
781
code += " }\n " ;
779
782
code += " \n " ;
780
783
code += " return radial_displacement;\n " ;
@@ -923,7 +926,7 @@ void ParticleProcessMaterial::_update_shader() {
923
926
}
924
927
code += " // calculate all velocity\n " ;
925
928
code += " \n " ;
926
- code += " controlled_displacement += process_radial_displacement(dynamic_params, lifetime_percent, alt_seed, TRANSFORM, EMISSION_TRANSFORM);\n " ;
929
+ code += " controlled_displacement += process_radial_displacement(dynamic_params, lifetime_percent, alt_seed, TRANSFORM, EMISSION_TRANSFORM, DELTA );\n " ;
927
930
code += " \n " ;
928
931
if (tex_parameters[PARAM_DIRECTIONAL_VELOCITY].is_valid ()) {
929
932
code += " controlled_displacement += process_directional_displacement(dynamic_params, lifetime_percent, TRANSFORM, EMISSION_TRANSFORM);\n " ;
0 commit comments