diff --git a/doc/classes/SoftBody3D.xml b/doc/classes/SoftBody3D.xml
index 75834c3052..5502a0edcc 100644
--- a/doc/classes/SoftBody3D.xml
+++ b/doc/classes/SoftBody3D.xml
@@ -165,6 +165,7 @@
The SoftBody3D's mass.
+ [b]Note:[/b] When using Jolt Physics, the default value of this property will instead be [code]0.0[/code], which will cause the body to automatically calculate the mass to 1 kg per point. This is a bug, which will be fixed in Godot 4.7.
diff --git a/editor/animation/animation_player_editor_plugin.cpp b/editor/animation/animation_player_editor_plugin.cpp
index 409b1b5ef9..302fdfeddf 100644
--- a/editor/animation/animation_player_editor_plugin.cpp
+++ b/editor/animation/animation_player_editor_plugin.cpp
@@ -2473,9 +2473,6 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin() {
}
AnimationPlayerEditorPlugin::~AnimationPlayerEditorPlugin() {
- if (dummy_player) {
- memdelete(dummy_player);
- }
}
// AnimationTrackKeyEditEditorPlugin
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp
index c4e7f03894..c897a5b700 100644
--- a/scene/2d/cpu_particles_2d.cpp
+++ b/scene/2d/cpu_particles_2d.cpp
@@ -396,25 +396,42 @@ void CPUParticles2D::set_param_curve(Parameter p_param, const Ref &p_curv
curve_parameters[p_param] = p_curve;
switch (p_param) {
- case PARAM_ANGULAR_VELOCITY:
- case PARAM_ORBIT_VELOCITY:
- case PARAM_LINEAR_ACCEL:
- case PARAM_RADIAL_ACCEL:
- case PARAM_TANGENTIAL_ACCEL:
- case PARAM_ANGLE:
+ case PARAM_INITIAL_LINEAR_VELOCITY: {
+ //do none for this one
+ } break;
+ case PARAM_ANGULAR_VELOCITY: {
+ _adjust_curve_range(p_curve, -360, 360);
+ } break;
+ case PARAM_ORBIT_VELOCITY: {
+ _adjust_curve_range(p_curve, -500, 500);
+ } break;
+ case PARAM_LINEAR_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_RADIAL_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_TANGENTIAL_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_DAMPING: {
+ _adjust_curve_range(p_curve, 0, 100);
+ } break;
+ case PARAM_ANGLE: {
+ _adjust_curve_range(p_curve, -360, 360);
+ } break;
+ case PARAM_SCALE: {
+ } break;
case PARAM_HUE_VARIATION: {
_adjust_curve_range(p_curve, -1, 1);
} break;
- case PARAM_DAMPING:
- case PARAM_SCALE:
- case PARAM_ANIM_SPEED:
+ case PARAM_ANIM_SPEED: {
+ _adjust_curve_range(p_curve, 0, 200);
+ } break;
case PARAM_ANIM_OFFSET: {
- _adjust_curve_range(p_curve, 0, 1);
- } break;
- case PARAM_INITIAL_LINEAR_VELOCITY:
- case PARAM_MAX: {
- // No curve available.
} break;
+ default: {
+ }
}
update_configuration_warnings();
diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp
index 62cfb2169c..d8f158a2d3 100644
--- a/scene/3d/cpu_particles_3d.cpp
+++ b/scene/3d/cpu_particles_3d.cpp
@@ -336,25 +336,42 @@ void CPUParticles3D::set_param_curve(Parameter p_param, const Ref &p_curv
curve_parameters[p_param] = p_curve;
switch (p_param) {
- case PARAM_ANGULAR_VELOCITY:
- case PARAM_ORBIT_VELOCITY:
- case PARAM_LINEAR_ACCEL:
- case PARAM_RADIAL_ACCEL:
- case PARAM_TANGENTIAL_ACCEL:
- case PARAM_ANGLE:
+ case PARAM_INITIAL_LINEAR_VELOCITY: {
+ //do none for this one
+ } break;
+ case PARAM_ANGULAR_VELOCITY: {
+ _adjust_curve_range(p_curve, -360, 360);
+ } break;
+ case PARAM_ORBIT_VELOCITY: {
+ _adjust_curve_range(p_curve, -500, 500);
+ } break;
+ case PARAM_LINEAR_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_RADIAL_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_TANGENTIAL_ACCEL: {
+ _adjust_curve_range(p_curve, -200, 200);
+ } break;
+ case PARAM_DAMPING: {
+ _adjust_curve_range(p_curve, 0, 100);
+ } break;
+ case PARAM_ANGLE: {
+ _adjust_curve_range(p_curve, -360, 360);
+ } break;
+ case PARAM_SCALE: {
+ } break;
case PARAM_HUE_VARIATION: {
_adjust_curve_range(p_curve, -1, 1);
} break;
- case PARAM_DAMPING:
- case PARAM_SCALE:
- case PARAM_ANIM_SPEED:
+ case PARAM_ANIM_SPEED: {
+ _adjust_curve_range(p_curve, 0, 200);
+ } break;
case PARAM_ANIM_OFFSET: {
- _adjust_curve_range(p_curve, 0, 1);
- } break;
- case PARAM_INITIAL_LINEAR_VELOCITY:
- case PARAM_MAX: {
- // No curve available.
} break;
+ default: {
+ }
}
update_configuration_warnings();
diff --git a/scene/3d/physics/soft_body_3d.cpp b/scene/3d/physics/soft_body_3d.cpp
index 0c7ad59010..3c596dda5e 100644
--- a/scene/3d/physics/soft_body_3d.cpp
+++ b/scene/3d/physics/soft_body_3d.cpp
@@ -383,7 +383,7 @@ void SoftBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "parent_collision_ignore", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject3D"), "set_parent_collision_ignore", "get_parent_collision_ignore");
ADD_PROPERTY(PropertyInfo(Variant::INT, "simulation_precision", PROPERTY_HINT_RANGE, "1,100,1"), "set_simulation_precision", "get_simulation_precision");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "total_mass", PROPERTY_HINT_RANGE, "0.001,1000,0.001,or_greater,exp,suffix:kg"), "set_total_mass", "get_total_mass");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "total_mass", PROPERTY_HINT_RANGE, "0,1000,0.001,or_greater,exp,suffix:kg"), "set_total_mass", "get_total_mass");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_stiffness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_linear_stiffness", "get_linear_stiffness");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "shrinking_factor", PROPERTY_HINT_RANGE, "-1,1,0.01,or_less,or_greater"), "set_shrinking_factor", "get_shrinking_factor");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pressure_coefficient"), "set_pressure_coefficient", "get_pressure_coefficient");
diff --git a/scene/resources/particle_process_material.cpp b/scene/resources/particle_process_material.cpp
index 580f3caca5..d87b7a9f2b 100644
--- a/scene/resources/particle_process_material.cpp
+++ b/scene/resources/particle_process_material.cpp
@@ -1461,34 +1461,37 @@ void ParticleProcessMaterial::set_param_texture(Parameter p_param, const Refget_rid()) : Variant();
switch (p_param) {
+ case PARAM_INITIAL_LINEAR_VELOCITY: {
+ //do none for this one
+ } break;
case PARAM_ANGULAR_VELOCITY: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angular_velocity_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -360, 360);
} break;
case PARAM_ORBIT_VELOCITY: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->orbit_velocity_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -2, 2);
notify_property_list_changed();
} break;
case PARAM_LINEAR_ACCEL: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->linear_accel_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -200, 200);
} break;
case PARAM_RADIAL_ACCEL: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->radial_accel_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -200, 200);
} break;
case PARAM_TANGENTIAL_ACCEL: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->tangent_accel_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -200, 200);
} break;
case PARAM_DAMPING: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->damping_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
+ _adjust_curve_range(p_texture, 0, 100);
} break;
case PARAM_ANGLE: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angle_texture, tex_rid);
- _adjust_curve_range(p_texture, -1, 1);
+ _adjust_curve_range(p_texture, -360, 360);
} break;
case PARAM_SCALE: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_texture, tex_rid);
@@ -1500,36 +1503,35 @@ void ParticleProcessMaterial::set_param_texture(Parameter p_param, const Refmaterial_set_param(_get_material(), shader_names->anim_speed_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
+ _adjust_curve_range(p_texture, 0, 200);
} break;
case PARAM_ANIM_OFFSET: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
} break;
case PARAM_TURB_INFLUENCE_OVER_LIFE: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->turbulence_influence_over_life, tex_rid);
_adjust_curve_range(p_texture, 0, 1);
} break;
+ case PARAM_TURB_VEL_INFLUENCE: {
+ // Can't happen, but silences warning
+ } break;
+ case PARAM_TURB_INIT_DISPLACEMENT: {
+ // Can't happen, but silences warning
+ } break;
case PARAM_RADIAL_VELOCITY: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->radial_velocity_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
} break;
case PARAM_SCALE_OVER_VELOCITY: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_over_velocity_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
+ _adjust_curve_range(p_texture, 0, 3);
notify_property_list_changed();
} break;
case PARAM_DIRECTIONAL_VELOCITY: {
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->directional_velocity_texture, tex_rid);
- _adjust_curve_range(p_texture, 0, 1);
notify_property_list_changed();
} break;
- case PARAM_INITIAL_LINEAR_VELOCITY:
- case PARAM_TURB_VEL_INFLUENCE:
- case PARAM_TURB_INIT_DISPLACEMENT:
- case PARAM_MAX: {
- // No curve available.
- } break;
+ case PARAM_MAX:
+ break; // Can't happen, but silences warning
}
_queue_shader_change();
diff --git a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl
index 30f7c6fa29..2a5f6350c1 100644
--- a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl
@@ -1079,7 +1079,7 @@ layout(location = 2) out vec2 motion_vector;
vec4 volumetric_fog_process(vec2 screen_uv, float z) {
vec3 fog_pos = vec3(screen_uv, z * implementation_data.volumetric_fog_inv_length);
if (fog_pos.z < 0.0) {
- return vec4(0.0);
+ return vec4(0.0, 0.0, 0.0, 1.0);
} else if (fog_pos.z < 1.0) {
fog_pos.z = pow(fog_pos.z, implementation_data.volumetric_fog_detail_spread);
}