private (float[], float[]) GetProvinceEdgePixels(float[] _searchColFloat4) { getEdgePixelsBuffer.SetCounterValue(0); getProvinceEdgePixelsCS.SetFloats("SearchColor", _searchColFloat4); getProvinceEdgePixelsCS.SetTexture(0, "ProvinceMap", ProvinceIdTex); getProvinceEdgePixelsCS.Dispatch(0, ProvinceIdTex.width / 32, ProvinceIdTex.height / 32, 1); int[] args = new int[] { 0, 1, 0, 0 }; getEdgePixelsArgBuffer.SetData(args); ComputeBuffer.CopyCount(getEdgePixelsBuffer, getEdgePixelsArgBuffer, 0); getEdgePixelsArgBuffer.GetData(args); float2[] result = new float2[args[0]]; getEdgePixelsBuffer.GetData(result, 0, 0, args[0]); float[] resultX = result.AsParallel().Select((val) => val.x).ToArray(); float[] resultY = result.AsParallel().Select((val) => val.y).ToArray(); return(resultX, resultY); }