From 925e4c9989374eb9658daf04d1027fab83978b0f Mon Sep 17 00:00:00 2001 From: Samuele Lorefice Date: Thu, 3 Apr 2025 18:48:50 +0200 Subject: [PATCH] Fixed gradient, more cleanup --- SDFMapCreator/Program.cs | 14 ++++++-------- SDFMapCreator/SdfKernels.Kernels.cs | 8 +++++--- SDFMapCreator/SdfKernels.cs | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) 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)