diff --git a/SDFMapCreator/Program.cs b/SDFMapCreator/Program.cs index 40b6f89..88aab9b 100644 --- a/SDFMapCreator/Program.cs +++ b/SDFMapCreator/Program.cs @@ -94,8 +94,8 @@ public class Program { var stepIncrement = MAX / (Gradients.Count); for (int x = 0; x < width; x++) - for (int y = 0; y < height; y++) - finalImage[x, y] = new Vector3(Images[0].Pixels[x, y].X); + for (int y = 0; y < height; y++) + finalImage[x, y] = new Vector3(Images[0].Pixels[x, y].X); for (var i = 0; i < Gradients.Count; i++) { var mask = ImageMasks[i + 1]; @@ -129,7 +129,7 @@ public class Program { sw.Stop(); Console.WriteLine( - $"\nEdge pixels: {maskData.Edges.Count} | {maskData.Edges.Count / (sw.ElapsedMilliseconds + 1)} pixels/s\n Time: {sw.Elapsed.TotalSeconds:F4}s"); + $"\nEdge pixels: {maskData.Edges.Count} | {width*height / (sw.ElapsedMilliseconds + 1)} pixels/s\n Time: {sw.Elapsed.TotalSeconds:F4}s"); } static Vector3[,] Gradient(TransitionMaskData mask, SDFData sdfA, SDFData sdfB) { @@ -160,9 +160,7 @@ public class Program { });*/ kernels.Gradient(mask.Mask, sdfA.SDF, sdfB.SDF, out var temp); - Console.WriteLine( - $"Gradient Time: {sw.Elapsed.TotalSeconds:N4}s ({iterCount / (float)sw.Elapsed.TotalSeconds:N0} pixels/s)"); - //Console.WriteLine($"Min: {min} | Max: {max}"); + Console.WriteLine($"Gradient Time: {sw.Elapsed.TotalSeconds:N4}s ({width*height / (float)sw.Elapsed.TotalSeconds:N0} pixels/s)"); return temp; } @@ -173,7 +171,7 @@ public class Program { kernels.Sdf(mask.Edges.ToArray(), (int)width, (int)height, out var temp); - Console.WriteLine($"\nSDF Generation Time: {sw.Elapsed.TotalSeconds:N4}s ({iterCount / sw.Elapsed.TotalSeconds:N0} pixels/s)"); + Console.WriteLine($"\nSDF Generation Time: {sw.Elapsed.TotalSeconds:N4}s ({width*height / sw.Elapsed.TotalSeconds:N0} pixels/s)"); return new(temp); } @@ -196,7 +194,7 @@ public class Program { where T : INumber, IMultiplyOperators, IAdditionOperators => a * (1 - t) + b * t; - static T Remap(T value, T min, T max, T newMin, T newMax) + public static T Remap(T value, T min, T max, T newMin, T newMax) where T : INumber, ISubtractionOperators, IMultiplyOperators, IAdditionOperators => (value - min) / (max - min) * (newMax - newMin) + newMin; } \ No newline at end of file diff --git a/SDFMapCreator/SdfKernels.Kernels.cs b/SDFMapCreator/SdfKernels.Kernels.cs index a10f793..a76f6c5 100644 --- a/SDFMapCreator/SdfKernels.Kernels.cs +++ b/SDFMapCreator/SdfKernels.Kernels.cs @@ -76,8 +76,10 @@ public partial class SdfKernels { ArrayView2D sdfb, ArrayView2D gradient ) { //early exit if not on mask - if(mask[index].X == 0f || mask[index].Y == 0f) return; - float a = sdfa[index].X; float b = sdfb[index].X; - gradient[index] = new (a / (a + b)); + if(mask[index].X == 0f || mask[index].Y > 0f) return; + float a = sdfa[index].X; + float b = sdfb[index].X; + float result = a / (a + b); + gradient[index] = new (result); } } diff --git a/SDFMapCreator/SdfKernels.cs b/SDFMapCreator/SdfKernels.cs index 816d535..9c72630 100644 --- a/SDFMapCreator/SdfKernels.cs +++ b/SDFMapCreator/SdfKernels.cs @@ -158,7 +158,7 @@ public partial class SdfKernels { accelerator.Synchronize(); - gradient = bufferMask.GetAsArray2D(); + gradient = bufferGradient.GetAsArray2D(); } private static string GetInfoString(Accelerator a)