namespace XFEEDToolBox.Core.Rendering;
/// Rejects flat empty cubes and sharp scene geometry in original environment-map candidates.
public static class SkyboxPixels
{
public readonly record struct Metrics(double Mean,int LongestEdge,int LargestEdgeComponent);
public static Metrics Inspect(byte[] bgra,int width,int height)
{
if(width<8||height<8||bgra.Length!=(long)width*height*4)throw new ArgumentException("Invalid skybox inspection pixels.");
var luminance=new float[width*height];var edges=new bool[luminance.Length];double sum=0;
for(var i=0;i.035f;
edges[i]=vertical||Math.Abs(luminance[i]-luminance[i-1])>.035f;
run=vertical?run+1:0;longest=Math.Max(longest,run);
}
}
for(var x=1;x.035f?run+1:0;longest=Math.Max(longest,run);}
}
var queue=new int[luminance.Length];var largest=0;
for(var i=0;i0)Visit(pixel-1);if(pixel%width=width)Visit(pixel-width);if(pixel+width