Преглед изворни кода

Merge pull request #62158 from MightiestGoat/particles-material-patch

Adding emission_tex_ofs calculation in process()
Rémi Verschelde пре 3 година
родитељ
комит
ff9a66067b
1 измењених фајлова са 6 додато и 0 уклоњено
  1. 6 0
      scene/resources/particles_material.cpp

+ 6 - 0
scene/resources/particles_material.cpp

@@ -488,6 +488,12 @@ void ParticlesMaterial::_update_shader() {
 	code += "	float degree_to_rad = pi / 180.0;\n";
 	code += "	float degree_to_rad = pi / 180.0;\n";
 	code += "\n";
 	code += "\n";
 
 
+	if (emission_shape == EMISSION_SHAPE_POINTS || emission_shape == EMISSION_SHAPE_DIRECTED_POINTS) {
+		code += "	int point = min(emission_texture_point_count - 1, int(rand_from_seed(alt_seed) * float(emission_texture_point_count)));\n";
+		code += "	ivec2 emission_tex_size = textureSize(emission_texture_points, 0);\n";
+		code += "	ivec2 emission_tex_ofs = ivec2(point % emission_tex_size.x, point / emission_tex_size.x);\n";
+	}
+
 	code += "	CUSTOM.y += DELTA / LIFETIME;\n";
 	code += "	CUSTOM.y += DELTA / LIFETIME;\n";
 	code += "	float tv = CUSTOM.y / CUSTOM.w;\n";
 	code += "	float tv = CUSTOM.y / CUSTOM.w;\n";
 	if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid()) {
 	if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid()) {