Compare commits

...

2 Commits

Author SHA1 Message Date
mm00
dfa2cf3f31 added luma threshould 2025-04-03 19:28:26 +02:00
mm00
64b7eb9dcc added SDF normalization 2025-04-03 19:28:20 +02:00
2 changed files with 26 additions and 6 deletions

View File

@@ -63,7 +63,6 @@ public static class Program {
ConsoleUpdateLine($"Creating mask {i}...");
var mask = GetABMask(Images[i].Pixels, Images[i + 1].Pixels);
TransitionMasks.Add(new(mask, Images[i], Images[i + 1]));
if (debug) mask.SaveImage($"Debug/mask{i}.png");
}
//EdgeDetect all masks
@@ -182,6 +181,25 @@ public static class Program {
sw.Start();
kernels.Sdf(mask.Edges.ToArray(), (int)width, (int)height, out var temp);
Console.WriteLine($"\nSDF Generation Time: {sw.Elapsed.TotalSeconds:N4}s ({width * height / sw.Elapsed.TotalSeconds:N0} pixels/s)");
sw.Restart();
var absMax = 0f;
foreach (var pixel in temp) {
if (pixel.X > absMax) absMax = pixel.X;
}
Parallel.For(0, width * height, parallelOptions, (i) =>
{
//convert 1D index to 2D index
var x = (int)(i % width);
var y = (int)(i / width);
temp[x, y] = new(Remap(temp[x, y].X, 0, absMax, MIN, MAX));
});
sw.Stop();
Console.WriteLine(
$"SDF Normalization Time: {sw.Elapsed.TotalSeconds:N4}s ({width*height / sw.Elapsed.TotalSeconds:N0} pixels/s)");
return new(temp);
}

View File

@@ -5,12 +5,14 @@ using ILGPU.Runtime;
namespace SDFMapCreator;
public partial class SdfKernels {
private const float LUMA_THRESHOLD = 0.0f;
static void SelfMaskKernel(Index2D index, ArrayView2D<Vector3, Stride2D.DenseX> input, ArrayView2D<Vector3, Stride2D.DenseX> mask) {
var x = index.X;
var y = index.Y;
var value = input[x, y];
var lumaA = (value.X + value.Y + value.Z) / 3f;
var r = lumaA > 0.99f ? 1f : 0f;
var lumaA = value.X;
var r = lumaA > LUMA_THRESHOLD ? 1f : 0f;
mask[x, y] = new(r, 0f, 0f);
}
@@ -23,9 +25,9 @@ public partial class SdfKernels {
var y = index.Y;
var valueA = A[x, y];
var valueB = B[x, y];
var lumaA = (valueA.X + valueA.Y + valueA.Z) / 3f;
var lumaB = (valueB.X + valueB.Y + valueB.Z) / 3f;
var r = lumaA > 0.99f && lumaB > 0.99f ? 1f : 0f;
var lumaA = valueA.X;
var lumaB = valueB.X;
var r = lumaA > LUMA_THRESHOLD || lumaB > LUMA_THRESHOLD ? 1f : 0f;
mask[x, y] = new(r, 0f, 0f);
}