git.iko.soy/metal-metaballs
on master help sign in
Removed black dot on the middle of metaballs.
commit1b318193735ce15c57c5beadde23489303677eb7 authorvinivendra <vinivendra@gmail.com> dateThu 25 Feb 2016, 15:22 (11 years ago) parentf680eb3
1 file changed+8−4
PixelImage/shaders.metal+8−4
PixelImage/shaders.metal+8−4
@@ -35,7 +35,8 @@ kernel void
3535 float2 metaballPosition = float2(metaball.x, metaball.y);
3636 float2 vector
3737 = float2(metaballPosition.x - gid.x, metaballPosition.y - gid.y);
38− float squaredDistance = dot(vector, vector);
38+ float dotProduct = dot(vector, vector);
39+ float squaredDistance = dotProduct > 0 ? dotProduct : 1;
3940 float realDistance = sqrt(squaredDistance);
4041 metaballDistances[x - 1] = squaredDistance;
4142 metaballDirections[x - 1] = vector / realDistance;
@@ -48,7 +49,7 @@ kernel void
4849
4950 for (x = 0; x < numberOfMetaballs; x += 1) {
5051 float distance1 = metaballDistances[x];
51− float value1 = 2048 / (distance1 + 1);
52+ float value1 = 2048 / distance1;
5253 float2 direction1 = metaballDirections[x];
5354
5455 float colorContribution = 1 / distance1;
@@ -57,7 +58,7 @@ kernel void
5758
5859 for (y = x + 1; y < numberOfMetaballs; y += 1) {
5960 float distance2 = metaballDistances[y];
60− float value2 = 2048 / (distance2 + 1);
61+ float value2 = 2048 / distance2;
6162 float2 direction2 = metaballDirections[y];
6263
6364 float v = value1 + value2;
@@ -109,8 +110,11 @@ kernel void
109110 colorSum = colorSumLink;
110111 }
111112
112−
113113 colorSum *= result;
114114
115+ if (colorSum.r == 0 && colorSum.g == 0 && colorSum.b == 0) {
116+ colorSum = float3(1, 1, 1);
117+ }
118+
115119 outTexture.write(float4(colorSum.bgr, 1), gid);
116120}