summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Puchert <simonpuchert@alice.de>2019-07-06 20:05:43 +0200
committerSimon Puchert <simonpuchert@alice.de>2019-07-06 20:05:43 +0200
commit5fc8691176f97e9fdeb609012b0061fbb4de8eb4 (patch)
tree174ba9a6b2544d2d2cd5c99dbc080c2af0766907
parent18ba1bc824fd4739a34ad78a3c95df1fb552ff1b (diff)
particles: Return uniform density spheres.
This matches the previous change for cpu_particles.
-rw-r--r--scene/resources/particles_material.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/scene/resources/particles_material.cpp b/scene/resources/particles_material.cpp
index edca9e5171..b4818755b4 100644
--- a/scene/resources/particles_material.cpp
+++ b/scene/resources/particles_material.cpp
@@ -332,7 +332,10 @@ void ParticlesMaterial::_update_shader() {
//do none
} break;
case EMISSION_SHAPE_SPHERE: {
- code += " TRANSFORM[3].xyz = normalize(vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0 - 1.0)) * emission_sphere_radius;\n";
+ code += " float s = rand_from_seed(alt_seed) * 2.0 - 1.0;\n";
+ code += " float t = rand_from_seed(alt_seed) * 2.0 * pi;\n";
+ code += " float radius = emission_sphere_radius * sqrt(1.0 - s * s);\n";
+ code += " TRANSFORM[3].xyz = vec3(radius * cos(t), radius * sin(t), emission_sphere_radius * s);\n";
} break;
case EMISSION_SHAPE_BOX: {
code += " TRANSFORM[3].xyz = vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0 - 1.0) * emission_box_extents;\n";