|
@@ -852,52 +852,54 @@ void ParticlesMaterial::set_param_texture(Parameter p_param, const Ref<Texture2D
|
|
|
|
|
|
tex_parameters[p_param] = p_texture;
|
|
|
|
|
|
+ RID tex_rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
|
|
|
+
|
|
|
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, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angular_velocity_texture, tex_rid);
|
|
|
_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, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->orbit_velocity_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, -500, 500);
|
|
|
} break;
|
|
|
case PARAM_LINEAR_ACCEL: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->linear_accel_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->linear_accel_texture, tex_rid);
|
|
|
_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, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->radial_accel_texture, tex_rid);
|
|
|
_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, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->tangent_accel_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, -200, 200);
|
|
|
} break;
|
|
|
case PARAM_DAMPING: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->damping_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->damping_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, 0, 100);
|
|
|
} break;
|
|
|
case PARAM_ANGLE: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angle_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->angle_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, -360, 360);
|
|
|
} break;
|
|
|
case PARAM_SCALE: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->scale_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, 0, 1);
|
|
|
} break;
|
|
|
case PARAM_HUE_VARIATION: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->hue_variation_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->hue_variation_texture, tex_rid);
|
|
|
_adjust_curve_range(p_texture, -1, 1);
|
|
|
} break;
|
|
|
case PARAM_ANIM_SPEED: {
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_speed_texture, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_speed_texture, tex_rid);
|
|
|
_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, p_texture);
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset_texture, tex_rid);
|
|
|
} break;
|
|
|
case PARAM_MAX:
|
|
|
break; // Can't happen, but silences warning
|
|
@@ -923,7 +925,8 @@ Color ParticlesMaterial::get_color() const {
|
|
|
|
|
|
void ParticlesMaterial::set_color_ramp(const Ref<Texture2D> &p_texture) {
|
|
|
color_ramp = p_texture;
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->color_ramp, p_texture);
|
|
|
+ RID tex_rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->color_ramp, tex_rid);
|
|
|
_queue_shader_change();
|
|
|
notify_property_list_changed();
|
|
|
}
|
|
@@ -965,17 +968,20 @@ void ParticlesMaterial::set_emission_box_extents(Vector3 p_extents) {
|
|
|
|
|
|
void ParticlesMaterial::set_emission_point_texture(const Ref<Texture2D> &p_points) {
|
|
|
emission_point_texture = p_points;
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_points, p_points);
|
|
|
+ RID tex_rid = p_points.is_valid() ? p_points->get_rid() : RID();
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_points, tex_rid);
|
|
|
}
|
|
|
|
|
|
void ParticlesMaterial::set_emission_normal_texture(const Ref<Texture2D> &p_normals) {
|
|
|
emission_normal_texture = p_normals;
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_normal, p_normals);
|
|
|
+ RID tex_rid = p_normals.is_valid() ? p_normals->get_rid() : RID();
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_normal, tex_rid);
|
|
|
}
|
|
|
|
|
|
void ParticlesMaterial::set_emission_color_texture(const Ref<Texture2D> &p_colors) {
|
|
|
emission_color_texture = p_colors;
|
|
|
- RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_color, p_colors);
|
|
|
+ RID tex_rid = p_colors.is_valid() ? p_colors->get_rid() : RID();
|
|
|
+ RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_color, tex_rid);
|
|
|
_queue_shader_change();
|
|
|
}
|
|
|
|