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