Fixed gradient, more cleanup
This commit is contained in:
@@ -94,8 +94,8 @@ public class Program {
|
|||||||
var stepIncrement = MAX / (Gradients.Count);
|
var stepIncrement = MAX / (Gradients.Count);
|
||||||
|
|
||||||
for (int x = 0; x < width; x++)
|
for (int x = 0; x < width; x++)
|
||||||
for (int y = 0; y < height; y++)
|
for (int y = 0; y < height; y++)
|
||||||
finalImage[x, y] = new Vector3(Images[0].Pixels[x, y].X);
|
finalImage[x, y] = new Vector3(Images[0].Pixels[x, y].X);
|
||||||
|
|
||||||
for (var i = 0; i < Gradients.Count; i++) {
|
for (var i = 0; i < Gradients.Count; i++) {
|
||||||
var mask = ImageMasks[i + 1];
|
var mask = ImageMasks[i + 1];
|
||||||
@@ -129,7 +129,7 @@ public class Program {
|
|||||||
|
|
||||||
sw.Stop();
|
sw.Stop();
|
||||||
Console.WriteLine(
|
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) {
|
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);
|
kernels.Gradient(mask.Mask, sdfA.SDF, sdfB.SDF, out var temp);
|
||||||
Console.WriteLine(
|
Console.WriteLine($"Gradient Time: {sw.Elapsed.TotalSeconds:N4}s ({width*height / (float)sw.Elapsed.TotalSeconds:N0} pixels/s)");
|
||||||
$"Gradient Time: {sw.Elapsed.TotalSeconds:N4}s ({iterCount / (float)sw.Elapsed.TotalSeconds:N0} pixels/s)");
|
|
||||||
//Console.WriteLine($"Min: {min} | Max: {max}");
|
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +171,7 @@ public class Program {
|
|||||||
|
|
||||||
kernels.Sdf(mask.Edges.ToArray(), (int)width, (int)height, out var temp);
|
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);
|
return new(temp);
|
||||||
}
|
}
|
||||||
@@ -196,7 +194,7 @@ public class Program {
|
|||||||
where T : INumber<T>, IMultiplyOperators<T, float, T>, IAdditionOperators<T, T, T>
|
where T : INumber<T>, IMultiplyOperators<T, float, T>, IAdditionOperators<T, T, T>
|
||||||
=> a * (1 - t) + b * t;
|
=> a * (1 - t) + b * t;
|
||||||
|
|
||||||
static T Remap<T>(T value, T min, T max, T newMin, T newMax)
|
public static T Remap<T>(T value, T min, T max, T newMin, T newMax)
|
||||||
where T : INumber<T>, ISubtractionOperators<T, T, T>, IMultiplyOperators<T, T, T>, IAdditionOperators<T, T, T>
|
where T : INumber<T>, ISubtractionOperators<T, T, T>, IMultiplyOperators<T, T, T>, IAdditionOperators<T, T, T>
|
||||||
=> (value - min) / (max - min) * (newMax - newMin) + newMin;
|
=> (value - min) / (max - min) * (newMax - newMin) + newMin;
|
||||||
}
|
}
|
||||||
@@ -76,8 +76,10 @@ public partial class SdfKernels {
|
|||||||
ArrayView2D<Vector3, Stride2D.DenseX> sdfb,
|
ArrayView2D<Vector3, Stride2D.DenseX> sdfb,
|
||||||
ArrayView2D<Vector3, Stride2D.DenseX> gradient
|
ArrayView2D<Vector3, Stride2D.DenseX> gradient
|
||||||
) { //early exit if not on mask
|
) { //early exit if not on mask
|
||||||
if(mask[index].X == 0f || mask[index].Y == 0f) return;
|
if(mask[index].X == 0f || mask[index].Y > 0f) return;
|
||||||
float a = sdfa[index].X; float b = sdfb[index].X;
|
float a = sdfa[index].X;
|
||||||
gradient[index] = new (a / (a + b));
|
float b = sdfb[index].X;
|
||||||
|
float result = a / (a + b);
|
||||||
|
gradient[index] = new (result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ public partial class SdfKernels {
|
|||||||
|
|
||||||
accelerator.Synchronize();
|
accelerator.Synchronize();
|
||||||
|
|
||||||
gradient = bufferMask.GetAsArray2D();
|
gradient = bufferGradient.GetAsArray2D();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetInfoString(Accelerator a)
|
private static string GetInfoString(Accelerator a)
|
||||||
|
|||||||
Reference in New Issue
Block a user