Classic F# renderer: before / after

Requested run complete: 2/2 measured trials succeeded. Warmups are separate and never enter statistics.

Comparison contract. “legacy-port” is the frozen renderer with documented Linux/headless adaptations on this modern .NET runtime, not historical Windows/.NET Framework performance. Corrected CPU/GPU images intentionally differ from legacy defects. Wall-time ratios describe the whole modernization, not a pure algorithm speedup. No CPU fallback or copied image is used for an unavailable GPU.

Cold = isolated subprocess wall time, including startup, JIT, loading, acceleration, GPU compilation/transfers/synchronization, tracing, encoding, cleanup and process exit. Trace is a synchronized phase, not GPU end-to-end latency. Each repeat starts a new process: separate warmups warm OS/device caches, not the measured process’s JIT. Null/unexecuted phases are unavailable, never zero-valued observations. Median, IQR, full min/max and MAD retain every successful measured repeat; failed/slow/timeout cases remain visible.

Phase boundaries are coarse public-API boundaries: mkPLY may include mesh acceleration in load; legacy trace also includes scene-tree construction and original per-pixel display conversion. Consult each worker’s capability/phase notes. Do not treat unlike build/trace subdivisions as pure-speed measurements; cold wall time includes all of them.

Linear comparisons use retained RGB PFM (little-endian float32 storage, unclamped linear radiance, bottom-up on disk). Render arithmetic precision is listed separately. Difference previews are sqrt(4 × absolute linear error), clipped only for display; MAE/RMSE/max are computed before display clipping. Legacy differences are diagnostic, not a global correctness test. Images select the lowest successful repeat, not the prettiest or fastest trial. Every repetition is retained below.

Run manifest · All trial JSON · Trial CSV · Summary CSV · Linear differences

Reproducibility: SDK, source/asset/binary hashes, dependencies, device and limitations
{
  "schemaVersion": 1,
  "createdUtc": "2026-09-07T12:06:10.8283354\u002B00:00",
  "repository": "/home/movj/code/dev/Ray_Tracer_FSharp",
  "gitCommit": "066c59eba68d222d63b373b7e25d408796eb1d12",
  "gitStatus": "M RayTracer/API/API.fs\n M RayTracer/API/API.fsi\n M RayTracer/Acceleration/Acceleration.fs\n M RayTracer/Acceleration/BVH.fs\n M RayTracer/Acceleration/KDTree.fs\n M RayTracer/Acceleration/RegularGrids.fs\n M RayTracer/Camera/Camera.fs\n M RayTracer/Camera/PinholeCamera.fs\n M RayTracer/Camera/ThinLensCamera.fs\n M RayTracer/Core/BBox.fs\n M RayTracer/Core/Colour.fs\n M RayTracer/Core/Foundation.fs\n M RayTracer/Core/Point.fs\n M RayTracer/Core/Ray.fs\n M RayTracer/Core/Vector.fs\n M RayTracer/ImplicitSurfaces/ExprParse.fs\n M RayTracer/ImplicitSurfaces/ExprParse.fsi\n M RayTracer/ImplicitSurfaces/ExprToPoly.fs\n M RayTracer/ImplicitSurfaces/ImplicitSurfaces.fs\n M RayTracer/ImplicitSurfaces/ImplicitSurfaces.fsi\n M RayTracer/ImplicitSurfaces/PolyToUnipoly.fs\n M RayTracer/ImplicitSurfaces/PolyToUnipoly.fsi\n M RayTracer/Lights/AreaLight.fs\n M RayTracer/Lights/BasicLight.fs\n M RayTracer/Lights/GlobalLight.fs\n M RayTracer/Materials/Materials.fs\n M RayTracer/Materials/Textures.fs\n M RayTracer/Materials/Textures.fsi\n M RayTracer/RayTracer.fsproj\n M RayTracer/Render.fs\n M RayTracer/Sampling/Sampling.fs\n M RayTracer/Sampling/Sampling.fsi\n M RayTracer/Scene.fs\n M RayTracer/Shapes/BaseShape.fs\n M RayTracer/Shapes/CSG.fs\n M RayTracer/Shapes/Shapes.fs\n M RayTracer/Transformation/Transformation.fs\n M RayTracer/Transformation/Transformation.fsi\n M RayTracer/TriangleMesh/PLYParser.fs\n M RayTracer/TriangleMesh/TriangleMesh.fs\n M TracerTest/Meshes.fs\n M TracerTest/Program.fs\n M TracerTest/TracerTest.fsproj\n M TracerTest/Util.fs\n M UnitTests/Assert.fs\n M UnitTests/BVH/BVHTest.fs\n M UnitTests/ImplicitSurfaces/ExprParseTests.fs\n M UnitTests/ImplicitSurfaces/ExprToPolyTests.fs\n M UnitTests/ImplicitSurfaces/ExprToPolyTests2.fs\n M UnitTests/ImplicitSurfaces/ImplicitSurfacesTests.fs\n M UnitTests/ImplicitSurfaces/PolyToUnipolyTests.fs\n M UnitTests/Program.fs\n M UnitTests/RG/RegularGridsTest.fs\n M UnitTests/SamplingTest.fs\n M UnitTests/ShapeTest.fs\n M UnitTests/TransformationTest.fs\n M UnitTests/UnitTests.fsproj\n?? .geometry-assets.fsx\n?? .geometry-parser-baseline.fsx\n?? .geometry-regression.fsx\n?? .gitignore\n?? .tools/downloads/NuGetScratchmovj/lock/f373c6f8d0dac85905c07dd737cf4418c62803b1\n?? BenchmarkRunner/BenchmarkRunner.fsproj\n?? BenchmarkRunner/Program.fs\n?? BenchmarkRunner/SceneBuilder.fs\n?? BenchmarkRunner/Worker.fs\n?? BenchmarkRunner/packages.lock.json\n?? Directory.Build.props\n?? RayTracer.Gpu/.gitignore\n?? RayTracer.Gpu/CoreComparison.fs\n?? RayTracer.Gpu/CudaRenderer.fs\n?? RayTracer.Gpu/CudaRuntime.fs\n?? RayTracer.Gpu/DeviceGeometry.fs\n?? RayTracer.Gpu/DeviceKernels.fs\n?? RayTracer.Gpu/DeviceMath.fs\n?? RayTracer.Gpu/DeviceTransport.fs\n?? RayTracer.Gpu/DeviceTypes.fs\n?? RayTracer.Gpu/Gate.fs\n?? RayTracer.Gpu/HostScene.fs\n?? RayTracer.Gpu/Program.fs\n?? RayTracer.Gpu/README.md\n?? RayTracer.Gpu/RayTracer.Gpu.fsproj\n?? RayTracer.Gpu/SelfTests.fs\n?? RayTracer.Gpu/THIRD-PARTY-NOTICES.txt\n?? RayTracer.Gpu/Tests/tiny-settings.json\n?? RayTracer.Gpu/Worker.fs\n?? RayTracer.Gpu/packages.lock.json\n?? RayTracer.ImageIO/README.md\n?? RayTracer.ImageIO/RayTracer.ImageIO.fsproj\n?? RayTracer.ImageIO/RgbImage.fs\n?? RayTracer.ImageIO/packages.lock.json\n?? RayTracer.sln\n?? RayTracer/Acceleration/FlatBVH.fs\n?? RayTracer/ClassicIntegrator.fs\n?? RayTracer/packages.lock.json\n?? SceneAssets/CheckLegacyPly.fsx\n?? SceneAssets/Checks.fs\n?? SceneAssets/Geometry.fs\n?? SceneAssets/Meshes.fs\n?? SceneAssets/Program.fs\n?? SceneAssets/README.md\n?? SceneAssets/SceneAssets.fsproj\n?? SceneAssets/Scenes.fs\n?? SceneAssets/Textures.fs\n?? SceneAssets/packages.lock.json\n?? SceneFormat/SceneFormat.fs\n?? SceneFormat/SceneFormat.fsproj\n?? SceneFormat/packages.lock.json\n?? TracerTest/packages.lock.json\n?? UnitTests/AccelerationRegressionTests.fs\n?? UnitTests/GeometryRegressionTests.fs\n?? UnitTests/ImageIOTests.fs\n?? UnitTests/LightingRegressionTests.fs\n?? UnitTests/MeshRegressionTests.fs\n?? UnitTests/NumericalRegressionTests.fs\n?? UnitTests/README.md\n?? UnitTests/packages.lock.json\n?? benchmarks/BENCHMARKS.md\n?? benchmarks/gold-dragon.json\n?? benchmarks/legacy/LegacyRayTracer.fsproj\n?? benchmarks/legacy/README.md\n?? benchmarks/legacy/Runner/LegacyRunner.fsproj\n?? benchmarks/legacy/Runner/packages.lock.json\n?? benchmarks/legacy/adapted/Acceleration/RegularGrids.fs\n?? benchmarks/legacy/adapted/Core/Foundation.fs\n?? benchmarks/legacy/adapted/Core/Vector.fs\n?? benchmarks/legacy/adapted/Render.fs\n?? benchmarks/legacy/adapted/Sampling/Sampling.fs\n?? benchmarks/legacy/adapted/Sampling/Sampling.fsi\n?? benchmarks/legacy/baseline.json\n?? benchmarks/legacy/original/LICENSE\n?? benchmarks/legacy/original/RayTracer/API.fs\n?? benchmarks/legacy/original/RayTracer/API.fsi\n?? benchmarks/legacy/original/RayTracer/API/API.fs\n?? benchmarks/legacy/original/RayTracer/API/API.fsi\n?? benchmarks/legacy/original/RayTracer/Acceleration/Acceleration.fs\n?? benchmarks/legacy/original/RayTracer/Acceleration/BVH.fs\n?? benchmarks/legacy/original/RayTracer/Acceleration/KDTree.fs\n?? benchmarks/legacy/original/RayTracer/Acceleration/RegularGrids.fs\n?? benchmarks/legacy/original/RayTracer/App.config\n?? benchmarks/legacy/original/RayTracer/AssemblyInfo.fs\n?? benchmarks/legacy/original/RayTracer/Camera/Camera.fs\n?? benchmarks/legacy/original/RayTracer/Camera/PinholeCamera.fs\n?? benchmarks/legacy/original/RayTracer/Camera/ThinLensCamera.fs\n?? benchmarks/legacy/original/RayTracer/Core/BBox.fs\n?? benchmarks/legacy/original/RayTracer/Core/Colour.fs\n?? benchmarks/legacy/original/RayTracer/Core/Foundation.fs\n?? benchmarks/legacy/original/RayTracer/Core/Point.fs\n?? benchmarks/legacy/original/RayTracer/Core/Ray.fs\n?? benchmarks/legacy/original/RayTracer/Core/Vector.fs\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprParse.fs\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprParse.fsi\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprToPoly.fs\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprToPoly.fsi\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ImplicitSurfaces.fs\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ImplicitSurfaces.fsi\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/PolyToUnipoly.fs\n?? benchmarks/legacy/original/RayTracer/ImplicitSurfaces/PolyToUnipoly.fsi\n?? benchmarks/legacy/original/RayTracer/Lights/AreaLight.fs\n?? benchmarks/legacy/original/RayTracer/Lights/BasicLight.fs\n?? benchmarks/legacy/original/RayTracer/Lights/GlobalLight.fs\n?? benchmarks/legacy/original/RayTracer/Materials/Materials.fs\n?? benchmarks/legacy/original/RayTracer/Materials/Textures.fs\n?? benchmarks/legacy/original/RayTracer/Materials/Textures.fsi\n?? benchmarks/legacy/original/RayTracer/Program2.fs\n?? benchmarks/legacy/original/RayTracer/RayTracer.fsproj\n?? benchmarks/legacy/original/RayTracer/Render.fs\n?? benchmarks/legacy/original/RayTracer/Sampling/Sampling.fs\n?? benchmarks/legacy/original/RayTracer/Sampling/Sampling.fsi\n?? benchmarks/legacy/original/RayTracer/Scene.fs\n?? benchmarks/legacy/original/RayTracer/Shapes/BaseShape.fs\n?? benchmarks/legacy/original/RayTracer/Shapes/CSG.fs\n?? benchmarks/legacy/original/RayTracer/Shapes/Shapes.fs\n?? benchmarks/legacy/original/RayTracer/Transformation/Transformation.fs\n?? benchmarks/legacy/original/RayTracer/Transformation/Transformation.fsi\n?? benchmarks/legacy/original/RayTracer/TriangleMesh/PLYParser.fs\n?? benchmarks/legacy/original/RayTracer/TriangleMesh/TriangleMesh.fs\n?? benchmarks/legacy/original/RayTracer/TriangleMeshes/PLYParser.fs\n?? benchmarks/legacy/original/RayTracer/TriangleMeshes/TriangleMes.fs\n?? benchmarks/legacy/original/RayTracer/packages.config\n?? benchmarks/legacy/packages.lock.json\n?? benchmarks/legacy/portability.diff\n?? benchmarks/legacy/portability.json\n?? benchmarks/legacy/prepare-port.fsx\n?? benchmarks/legacy/proof.fsx\n?? benchmarks/legacy/source.sha256\n?? benchmarks/scenes/chair.json\n?? benchmarks/scenes/material-lab.json\n?? benchmarks/scenes/provenance.json\n?? benchmarks/scenes/roman-bust.json\n?? benchmarks/scenes/sky-arena.json\n?? benchmarks/scenes/space-sentinel.json\n?? global.json\n?? scripts/BenchmarkData.fs\n?? scripts/BenchmarkReport.fs\n?? scripts/benchmark-builder-tests.fsx\n?? scripts/benchmark-tests.fsx\n?? scripts/benchmark-worker-tests.fsx\n?? scripts/benchmark.fsx\n?? scripts/prepare-gold-dragon.fsx",
  "sourceDigest": "fbee55573e5c91f489d298148af84a4c410868a7ae6352b8658261603cd65ae9",
  "sources": [
    {
      "path": ".geometry-assets.fsx",
      "sha256": "aa7b923858c7df9b981805b977248ae0e65f356c03c2380978cc276a714cccd9",
      "bytes": 865
    },
    {
      "path": ".geometry-parser-baseline.fsx",
      "sha256": "090ce4e38d393e705e1f91aceaadccb89ab3a9a402d116a42218b67b0139f2c4",
      "bytes": 358
    },
    {
      "path": ".geometry-regression.fsx",
      "sha256": "b101533d4d352cf3967bfd06f05e560154e554e2c4a86bbc7ec5de2fd4bebe04",
      "bytes": 820
    },
    {
      "path": "BenchmarkRunner/BenchmarkRunner.fsproj",
      "sha256": "82774cfb2eac763a54573aeba7e00f5106bedd2460cd87340c08c560fc1db741",
      "bytes": 663
    },
    {
      "path": "BenchmarkRunner/Program.fs",
      "sha256": "4bb5cb60b599119d051a3d1cb624c397fd8d086bbfe34dce56754d4865740980",
      "bytes": 3334
    },
    {
      "path": "BenchmarkRunner/SceneBuilder.fs",
      "sha256": "d87f8d38d7a181929d86397c344deeee280908795ce04994189e117655e98fa5",
      "bytes": 13247
    },
    {
      "path": "BenchmarkRunner/Worker.fs",
      "sha256": "7143110be031a7a3b54a9fcf640a4307ba360ec81435216d68049ce5dd87c250",
      "bytes": 15641
    },
    {
      "path": "BenchmarkRunner/packages.lock.json",
      "sha256": "07f8ed76169e1544073b4a47031c7c0fa22ba0facdae215665bc6bf7a0eccbce",
      "bytes": 1571
    },
    {
      "path": "Directory.Build.props",
      "sha256": "bd80f98e6493c2677c5c645c47ca89ecef9f5122d6e5d4cab97278177c69b5d4",
      "bytes": 228
    },
    {
      "path": "README.md",
      "sha256": "beba9229a791f8d5c937ae81263b0d11a9f212fa753fea7b8263f25fc2fe76a6",
      "bytes": 572
    },
    {
      "path": "RayTracer.Gpu/CoreComparison.fs",
      "sha256": "654eddc45537b4030e65568a6b4758e2e65828980c27b4ba2d69adabf9d8d681",
      "bytes": 9216
    },
    {
      "path": "RayTracer.Gpu/CudaRenderer.fs",
      "sha256": "3876494cbde1ffd47b628229bbb5d98cafbc46536f0582e96f74a99ee6777bab",
      "bytes": 13176
    },
    {
      "path": "RayTracer.Gpu/CudaRuntime.fs",
      "sha256": "b28f9034d784ca710e16a6a2aecb52614662269fd2b4ab168adbbf07bc8d0d22",
      "bytes": 918
    },
    {
      "path": "RayTracer.Gpu/DeviceGeometry.fs",
      "sha256": "8ab7d063d98cc9c6097bc850149d31e292131bd27807c8662fb829bed0aa502a",
      "bytes": 7012
    },
    {
      "path": "RayTracer.Gpu/DeviceKernels.fs",
      "sha256": "238cfeea08c620e5a6babdaadd1eb133f53f32b620edf1d02c3065237909990e",
      "bytes": 3705
    },
    {
      "path": "RayTracer.Gpu/DeviceMath.fs",
      "sha256": "86202baee913ebef464dad23383357b7ab1403f0ad8d3955b1231b35f95def38",
      "bytes": 5612
    },
    {
      "path": "RayTracer.Gpu/DeviceTransport.fs",
      "sha256": "fd457ceb7ddd6d8972b83fecb454004d61a93545a8ef6e87ae143d7bc55aa67c",
      "bytes": 16911
    },
    {
      "path": "RayTracer.Gpu/DeviceTypes.fs",
      "sha256": "dea5cb84f842256b0247deac55f0e0ccc098acc074cbac43a8ae7599b6a4e2f1",
      "bytes": 4428
    },
    {
      "path": "RayTracer.Gpu/Gate.fs",
      "sha256": "cc7732fc5fa2e21e091d0e40a7049eb09ebdf82632eea9ebf318f8e5938c8b91",
      "bytes": 9170
    },
    {
      "path": "RayTracer.Gpu/HostScene.fs",
      "sha256": "6bac121d1738bb5b09546d9dcb46944b846b3a8212cf2d1d41bc80937be71138",
      "bytes": 15754
    },
    {
      "path": "RayTracer.Gpu/Program.fs",
      "sha256": "7eb7f70fa3f106583a375aa4336b93fbd0120b87201b7b14787f7fba11036a58",
      "bytes": 946
    },
    {
      "path": "RayTracer.Gpu/README.md",
      "sha256": "5f1effd7777e94e5bbb906c598451f21e1acd1cc1ae303ecbb3ded53a675c227",
      "bytes": 10129
    },
    {
      "path": "RayTracer.Gpu/RayTracer.Gpu.fsproj",
      "sha256": "28ef4f211ea5cfa6755bb11b359fd35b9fd6abddf05f1ca0bb10655adf5e56f6",
      "bytes": 1329
    },
    {
      "path": "RayTracer.Gpu/SelfTests.fs",
      "sha256": "b15336de5a78a37be0265c49680869b0676bf1dd11ef5e0e3113bfacf257ad15",
      "bytes": 12834
    },
    {
      "path": "RayTracer.Gpu/Tests/tiny-settings.json",
      "sha256": "bb864dc5d972d2adcdad7f76d9095d1dafc25305f6dfe0edc2610407dcb472c4",
      "bytes": 241
    },
    {
      "path": "RayTracer.Gpu/Worker.fs",
      "sha256": "0de9fdeed6d8da8f97e34f4024d2f6f8d07106f9a7cf4e8c3b9da9dbcb220dfb",
      "bytes": 9423
    },
    {
      "path": "RayTracer.Gpu/packages.lock.json",
      "sha256": "a8d959448150344cb1fa6f72e54343e559d9e34da76fb43eb464a687efad0061",
      "bytes": 2104
    },
    {
      "path": "RayTracer.ImageIO/README.md",
      "sha256": "90a3f5629eb729271da6bb9a70d329cee48461ca91242754ea2c0cc0b238d681",
      "bytes": 2248
    },
    {
      "path": "RayTracer.ImageIO/RayTracer.ImageIO.fsproj",
      "sha256": "732bb4218c96ffd53dc46007824569dcb46b8a07f53e42cfa5797b10552ecf67",
      "bytes": 492
    },
    {
      "path": "RayTracer.ImageIO/RgbImage.fs",
      "sha256": "dd0fcbae601f606dab5d5ff5cce0092bdd23f6c1c660e09e2981331cd6f640fd",
      "bytes": 4180
    },
    {
      "path": "RayTracer.ImageIO/packages.lock.json",
      "sha256": "9ece3545e2e2b99f550b5f30aca7317642508eeb430c484a878a4af8e8794afc",
      "bytes": 791
    },
    {
      "path": "RayTracer/API.fs",
      "sha256": "97dc6097f629a918cf2f821a9060f37eefa913e8deed17ac671c11064908dca0",
      "bytes": 10044
    },
    {
      "path": "RayTracer/API.fsi",
      "sha256": "62eab4d1c9b3d0e5cebce8d7c72cea9ba2ccb09c8547c3c8a086a8b0f49fe885",
      "bytes": 14359
    },
    {
      "path": "RayTracer/API/API.fs",
      "sha256": "f3b4ddd8e7c7fef37a1a3d73b967f3003c6f4f08597b4cd8a555cf46fb6b72cf",
      "bytes": 10043
    },
    {
      "path": "RayTracer/API/API.fsi",
      "sha256": "286e94a3b0e8e0161eaab1a2c857e558af87a91e95bd3e40aff2bed997fa9700",
      "bytes": 15155
    },
    {
      "path": "RayTracer/Acceleration/Acceleration.fs",
      "sha256": "5ed94f4d0f1f66e1022391c63384cf80c696742a53beb0cf8b20b1438b2ee155",
      "bytes": 6450
    },
    {
      "path": "RayTracer/Acceleration/BVH.fs",
      "sha256": "55f0d1ce2cf76e6b5dbec6f5b911605d39003a64d24a8bb062f96ffa6d95c335",
      "bytes": 6160
    },
    {
      "path": "RayTracer/Acceleration/FlatBVH.fs",
      "sha256": "5390849785ed5188167a39678c6b1866a6a1b7a885a728e5777fdbc5f5f05ff3",
      "bytes": 11318
    },
    {
      "path": "RayTracer/Acceleration/KDTree.fs",
      "sha256": "6279caf8439600c59b5ebf6bb642663024ee8c0f3a724fe8c58ed47fcd5bed23",
      "bytes": 15662
    },
    {
      "path": "RayTracer/Acceleration/RegularGrids.fs",
      "sha256": "3b74af50815bcc1e64db85784e7309f58b617ed17f933634031cb3cc04824d4f",
      "bytes": 9789
    },
    {
      "path": "RayTracer/App.config",
      "sha256": "8173d4d17cb728e6f2c5e2ce8124ce7eb0f459dc62085bcaab786abf1f6b37a7",
      "bytes": 184
    },
    {
      "path": "RayTracer/AssemblyInfo.fs",
      "sha256": "076327f6c028480a9e7bda7ae14cafeb70375cbb6d1c9d6ed74522005d3a78c7",
      "bytes": 1448
    },
    {
      "path": "RayTracer/Camera/Camera.fs",
      "sha256": "d0ddf33242570d834ba463a275a685927299885cd588d52176b336ee13b51ac4",
      "bytes": 2261
    },
    {
      "path": "RayTracer/Camera/PinholeCamera.fs",
      "sha256": "c9aa6fc1f25ae9e14b5b7a86a802e5e0e0ffe481b4972038b8283fdf9ffd6c83",
      "bytes": 907
    },
    {
      "path": "RayTracer/Camera/ThinLensCamera.fs",
      "sha256": "25434be7cc9bbb6189c1ec9077cada513abd82f53bca21ee2e7b31f064ec0690",
      "bytes": 1851
    },
    {
      "path": "RayTracer/ClassicIntegrator.fs",
      "sha256": "227d6c70c20f8425d5f40886610c08f03a204e8774549173f8a53b04aa0617a7",
      "bytes": 11097
    },
    {
      "path": "RayTracer/Core/BBox.fs",
      "sha256": "bc7c5a58cc34e6237a0d5019809ba01235c128f2ece6c61e3b9bd9ebcfac152b",
      "bytes": 3127
    },
    {
      "path": "RayTracer/Core/Colour.fs",
      "sha256": "39e6374c20ed7e6d67598530f87afc63b5bd70c5a5a15b58e251477bdb2325eb",
      "bytes": 3737
    },
    {
      "path": "RayTracer/Core/Foundation.fs",
      "sha256": "431a08cffe62e6887b3d8bba61094ad440ac2ebc01ed6a547388c92a55a27b85",
      "bytes": 7099
    },
    {
      "path": "RayTracer/Core/Point.fs",
      "sha256": "d48f14e15edeb35c5ecae968122fc33fd22ee9cc03a727ecf47091602c373504",
      "bytes": 2467
    },
    {
      "path": "RayTracer/Core/Ray.fs",
      "sha256": "f161f1f70bf160f9176cecd6a0340da6b5442e931e172ff1a3be0ba7429babe0",
      "bytes": 1957
    },
    {
      "path": "RayTracer/Core/Vector.fs",
      "sha256": "343df85f8fe1d2b4483873b38d456c6f776420c89a1a31eaf2298f277f95af49",
      "bytes": 3527
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprParse.fs",
      "sha256": "f2e283ba68107f09fa086b7d528f6a25c6a2201c1a6f10927cede7fa52e2fb5d",
      "bytes": 8509
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprParse.fsi",
      "sha256": "bb605e2bacb9cdadd065f1f9d056cbc0d4808886622df89bf0fd1d5b11b8f2c4",
      "bytes": 697
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprToPoly.fs",
      "sha256": "b5adb8d83aef5b1bdaecab0855394f44987277ce9042f6e5c9e43f1693b4d2de",
      "bytes": 13345
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprToPoly.fsi",
      "sha256": "f81a02ec47a4392c4da91fbc44224f440a06d52178dadc453aa06262e3985f69",
      "bytes": 874
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ImplicitSurfaces.fs",
      "sha256": "7b4b6cc8c00f170bbeebd3ea5e305e8b429a5743e7476be82b34925b9385c06a",
      "bytes": 9258
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ImplicitSurfaces.fsi",
      "sha256": "c1c2417105d04e7c167e57c00ba72d6cecbdcfe53c5d706489d96db15df4bf91",
      "bytes": 1062
    },
    {
      "path": "RayTracer/ImplicitSurfaces/PolyToUnipoly.fs",
      "sha256": "8a0e85c65c57dfa4bdbd03f32e0f3ef5812cdc65ba10bb37b12486b78965342e",
      "bytes": 10846
    },
    {
      "path": "RayTracer/ImplicitSurfaces/PolyToUnipoly.fsi",
      "sha256": "43b9ae0f95ecd8f61525ef26a157bf6671030c507e5ce5dd0ca94ad7b12ca4e1",
      "bytes": 978
    },
    {
      "path": "RayTracer/Lights/AreaLight.fs",
      "sha256": "5b4a7446f839d675e61ea8bf0dd058977310c5b635a3f818e82cce9b3c6871bc",
      "bytes": 9580
    },
    {
      "path": "RayTracer/Lights/BasicLight.fs",
      "sha256": "61db2b36a6e5fa85e4a65e336d93594f927bbb85aad41552393a41efc7b97aa8",
      "bytes": 1523
    },
    {
      "path": "RayTracer/Lights/GlobalLight.fs",
      "sha256": "41d5f1465e960da68d40d425823b2160bb2f6c1b5c911d15df82691670eda4f7",
      "bytes": 2795
    },
    {
      "path": "RayTracer/Materials/Materials.fs",
      "sha256": "46422c250b509f79574bf64c2169df8cd7d6df04a95657c17ed321b1944870d7",
      "bytes": 16547
    },
    {
      "path": "RayTracer/Materials/Textures.fs",
      "sha256": "2ae86bb58e6a2d121540e5d6e537d60f2ff333e84b19dd11a0dffb3bcc5c428a",
      "bytes": 814
    },
    {
      "path": "RayTracer/Materials/Textures.fsi",
      "sha256": "4214063b91d20561614ee88c00fb1f39937c0638a9f9b37f3649b7907cb172b2",
      "bytes": 355
    },
    {
      "path": "RayTracer/Program2.fs",
      "sha256": "f4620ea9b3ab45100cd31701cf757a2dfa8308cf5f152b091e290e5507d8117e",
      "bytes": 5398
    },
    {
      "path": "RayTracer/RayTracer.fsproj",
      "sha256": "f0b095dfdb37c0f006dd45de77c590400b308b2494eb4b1829299d6c3c7213f0",
      "bytes": 2721
    },
    {
      "path": "RayTracer/Render.fs",
      "sha256": "995b3462f240649fb245642c88b24f3a5f9c4116e4cf1c69a095d636e32f8a22",
      "bytes": 5409
    },
    {
      "path": "RayTracer/Sampling/Sampling.fs",
      "sha256": "0f7d12ef5a759a3c78a4a78dcd64937da07a864be9994692fa3437c79ff94967",
      "bytes": 14631
    },
    {
      "path": "RayTracer/Sampling/Sampling.fsi",
      "sha256": "20207e6278cc86bba62ef34c685a33d3e978362f86d2fbb69d2952f3a72317ae",
      "bytes": 873
    },
    {
      "path": "RayTracer/Scene.fs",
      "sha256": "b3b1c59c1ce147244c19e6ac18c519a12b3054718a3c4c40ce41e21d452692ac",
      "bytes": 1770
    },
    {
      "path": "RayTracer/Shapes/BaseShape.fs",
      "sha256": "7643d7cd26c5192edf5e0af2a898bd02ed0b9ecfd609ad5082e7db042829f677",
      "bytes": 1778
    },
    {
      "path": "RayTracer/Shapes/CSG.fs",
      "sha256": "95bf8cfc24996ff3c541737a4dceb22d7459c4553b31084ac298e085924fd3c2",
      "bytes": 7604
    },
    {
      "path": "RayTracer/Shapes/Shapes.fs",
      "sha256": "7dbe1439b7f2fa168f7221d89fb054852e7e9dfba197276700e221637d581acc",
      "bytes": 18964
    },
    {
      "path": "RayTracer/Transformation/Transformation.fs",
      "sha256": "0ac87b1c7323d9b3abd682d91cc23d0f6fe5fa2118d03d88d0d0fc16676f9846",
      "bytes": 9113
    },
    {
      "path": "RayTracer/Transformation/Transformation.fsi",
      "sha256": "f474e8d09f06f2aea53a8ed8b81e19838ebde1d0ba946fe5c325069677425074",
      "bytes": 1285
    },
    {
      "path": "RayTracer/TriangleMesh/PLYParser.fs",
      "sha256": "d8603210aa1b133556a7c1800f1734a82d5031ef607ef9a005df8a3a7ab4b78f",
      "bytes": 15920
    },
    {
      "path": "RayTracer/TriangleMesh/TriangleMesh.fs",
      "sha256": "13496e4e4b3582961857b2749157d8f35522ec66afa3a026adf4382cf0d4142e",
      "bytes": 12762
    },
    {
      "path": "RayTracer/TriangleMeshes/PLYParser.fs",
      "sha256": "ab935fe6ea41f54aa4e60bae203c74bdfbeb3855f3432d52ff2c424aa25f82f9",
      "bytes": 11748
    },
    {
      "path": "RayTracer/TriangleMeshes/TriangleMes.fs",
      "sha256": "97c76e42d47a7842983cd5dbca5e4bb99d1fba3d16f9f3ff4c6fbf0d691a815f",
      "bytes": 5803
    },
    {
      "path": "RayTracer/packages.config",
      "sha256": "8345d499882d0c22eb48754f2ba271b773414459a6d2bdc8fb43b4882b5ba468",
      "bytes": 142
    },
    {
      "path": "RayTracer/packages.lock.json",
      "sha256": "0ff1eeeed5e7286beb426f89e0af6c931b0173b415bb1890c40aee1bcd7aebf3",
      "bytes": 1258
    },
    {
      "path": "SceneAssets/CheckLegacyPly.fsx",
      "sha256": "a1ae2d00cfa9854ce8a4d2f93921b8963e97ecbaaaf29b179389ae883a221cbd",
      "bytes": 2531
    },
    {
      "path": "SceneAssets/Checks.fs",
      "sha256": "6a43e3767b39109dbde97babeb97a28db60692c32e395b7d36aae2ee6777991a",
      "bytes": 4341
    },
    {
      "path": "SceneAssets/Geometry.fs",
      "sha256": "3e9fe6f03f91055efaedbb6244311dbd22059309bf09d1f9599a5be2f9b6a935",
      "bytes": 3382
    },
    {
      "path": "SceneAssets/Meshes.fs",
      "sha256": "1ec55c8835de7fe0260f52b93de79c748bc2647384a3ea815516d2f19137090c",
      "bytes": 31156
    },
    {
      "path": "SceneAssets/Program.fs",
      "sha256": "1de22197c6b0723889d6d7546f16a07bd350d15954973bd93e74167c64d23a0c",
      "bytes": 12320
    },
    {
      "path": "SceneAssets/README.md",
      "sha256": "3172d23feab02cdd95e5aba3742d076b974a39a5f6b0fff43923457654281205",
      "bytes": 9469
    },
    {
      "path": "SceneAssets/SceneAssets.fsproj",
      "sha256": "811600a04d6c06bdacc577d0303ea671cfeabe92b469d3ba6f4ca604f574d40f",
      "bytes": 779
    },
    {
      "path": "SceneAssets/Scenes.fs",
      "sha256": "bbe17aa71f6b623e0050cc7c155aa0054846963b6a3c6f7087b3010d845f1d66",
      "bytes": 33906
    },
    {
      "path": "SceneAssets/Textures.fs",
      "sha256": "5c7099807c20d60b5bc9af4cf3301b42d144db7ea23b68199ec82aaf800d8f90",
      "bytes": 5710
    },
    {
      "path": "SceneAssets/packages.lock.json",
      "sha256": "199c8bc5f22115369e727497a84f5d36eb21d9977c08550d97e50765a2bdacd3",
      "bytes": 1092
    },
    {
      "path": "SceneFormat/SceneFormat.fs",
      "sha256": "2c40dee2ccf30c508287fa53e2dbdd4940d0bee30a1141f794f555d7d0b70c30",
      "bytes": 14906
    },
    {
      "path": "SceneFormat/SceneFormat.fsproj",
      "sha256": "1c3cf567e631a53b7f09a5773669bf0a8a46319fa9e366384b5cf3ab963e28b3",
      "bytes": 263
    },
    {
      "path": "SceneFormat/packages.lock.json",
      "sha256": "5f9ce5f37838c7781cfcfc91dc777595b1e3f2462ec88765cbb802f6c8ed3de8",
      "bytes": 306
    },
    {
      "path": "TracerTest/AffineTransformations.fs",
      "sha256": "35afeb6a3db21d4da4962119389dced136fb702a9167b99b5685b008ad27237e",
      "bytes": 5724
    },
    {
      "path": "TracerTest/AmbientOcclusion.fs",
      "sha256": "1476f1531135620f9f437db2a2b77d7172cf2f96e852019671a7eb2345a126a9",
      "bytes": 1756
    },
    {
      "path": "TracerTest/App.config",
      "sha256": "ae5e7fa8373b273fad07e0486cebfd88c18f9517ba609c2b8e6534f5d9e53dcb",
      "bytes": 189
    },
    {
      "path": "TracerTest/AreaLight.fs",
      "sha256": "80463f3e509037e72723f9fc9f89d2bd11b45dbfde90e5ede69fa0b195789db7",
      "bytes": 5548
    },
    {
      "path": "TracerTest/AssemblyInfo.fs",
      "sha256": "6da8bbc6dc0309f64781f4fdcab2de697ed49b96301498606f81d6371793b7d7",
      "bytes": 1500
    },
    {
      "path": "TracerTest/CSG.fs",
      "sha256": "1460578f91dcdf74f13e897b9a51e08904d41a64b669e9ba67200fd512cd91b4",
      "bytes": 8934
    },
    {
      "path": "TracerTest/ImplicitSurfaces.fs",
      "sha256": "07bc5a09d3ac80edeb17aac307a1c90281c4db95b60b64be7d7ca63d47a45be5",
      "bytes": 6483
    },
    {
      "path": "TracerTest/Light.fs",
      "sha256": "694ad2c9e66089988b28f79f5df0773e73d00e4cc00a3602a728772103863674",
      "bytes": 2924
    },
    {
      "path": "TracerTest/Material.fs",
      "sha256": "8f96aaa69d7c0547b5c59986f15b9af37143859657cf6afa065e0cedbfd5902f",
      "bytes": 8080
    },
    {
      "path": "TracerTest/Meshes.fs",
      "sha256": "2609f018caa2ab943e02085bb1b906dadec56df0e3920e58c8830ee87ec09e5d",
      "bytes": 18602
    },
    {
      "path": "TracerTest/Program.fs",
      "sha256": "d154a26ff8cb0f0f92673f8231c3a98dfdc7a23b5ec633e5913d79d6d278a987",
      "bytes": 5069
    },
    {
      "path": "TracerTest/Shapes.fs",
      "sha256": "d5c101296c6a29fd5ec3ecb6ed9a871fe316f0fc4b1774639e921c86afc83ce9",
      "bytes": 5511
    },
    {
      "path": "TracerTest/Texture.fs",
      "sha256": "b3d1d43ceefad6f8864a93cbf2b83dcdabf6e578fc88a44c7eecc86ec4ee975b",
      "bytes": 10286
    },
    {
      "path": "TracerTest/ThinLens.fs",
      "sha256": "fadc1f53890af1d3d6e8d32770e0de81c048639c7a2fe7a1e69e7f242b603ee4",
      "bytes": 3626
    },
    {
      "path": "TracerTest/TracerTest.fsproj",
      "sha256": "ca185593fe700d69f434c675df6a47fec7a7dedeebd5e9e285f918cb44742f18",
      "bytes": 1230
    },
    {
      "path": "TracerTest/Transparency.fs",
      "sha256": "181c623df92cedf9860bfd5ad6a04440dee1aa8ef338d3de4cb5e4abb8fe9b14",
      "bytes": 18745
    },
    {
      "path": "TracerTest/Util.fs",
      "sha256": "2a027ef9c3bba35c80bf8f1d68d23876d07acd9f05cfcdaf571eb71770079015",
      "bytes": 7887
    },
    {
      "path": "TracerTest/packages.config",
      "sha256": "4932f5463ce34bb3a33df3673c83721cdbbd256599e67066e3debb46b1585fd4",
      "bytes": 145
    },
    {
      "path": "TracerTest/packages.lock.json",
      "sha256": "875be7c920aec172bd8a5c844d2a950e241dca858c2f65635ce389db89bf003f",
      "bytes": 1436
    },
    {
      "path": "UnitTests/AccelerationRegressionTests.fs",
      "sha256": "e703dd9005f0944bb7d0afb98e36961553d16165622896598a2f2160de45ad2a",
      "bytes": 22153
    },
    {
      "path": "UnitTests/App.config",
      "sha256": "8173d4d17cb728e6f2c5e2ce8124ce7eb0f459dc62085bcaab786abf1f6b37a7",
      "bytes": 184
    },
    {
      "path": "UnitTests/AssemblyInfo.fs",
      "sha256": "4e3dcd32d1ee57112d1bced36953200621cf0a015d32bcc756bd0762ab374c11",
      "bytes": 1439
    },
    {
      "path": "UnitTests/Assert.fs",
      "sha256": "b42d5ee616fcfb83c6c844a21db945e6f498c22e0d6a6710e18d16ab1c24b3d5",
      "bytes": 1727
    },
    {
      "path": "UnitTests/BVH/BVHTest.fs",
      "sha256": "541f6bb461bebb85be3a7e979d146de6dafaf736faf5a6e678dc99f5d3242b40",
      "bytes": 4651
    },
    {
      "path": "UnitTests/GeometryRegressionTests.fs",
      "sha256": "9821335217e88806942432ed563d40ced9056974b692d6c1c9d309d86c395927",
      "bytes": 12331
    },
    {
      "path": "UnitTests/ImageIOTests.fs",
      "sha256": "6da7198dfbb449ff40f9d448325cfc1de69604d6f5408b70d9c8c39ad067897c",
      "bytes": 3947
    },
    {
      "path": "UnitTests/ImplicitSurfaces/ExprParseTests.fs",
      "sha256": "0476dd3ec62b5ebb0f9a6e0bfaae74ab2f648df9b92aeb8f4f0bcab43edc2e7c",
      "bytes": 4614
    },
    {
      "path": "UnitTests/ImplicitSurfaces/ExprToPolyTests.fs",
      "sha256": "506baf39c5ccaa4f38608fafb20b6e7a53b39fce26b1f4490a8e0993e20191fe",
      "bytes": 7041
    },
    {
      "path": "UnitTests/ImplicitSurfaces/ExprToPolyTests2.fs",
      "sha256": "c3c3519698c6c4cfe1fb15382d1e8cff0b66b325472da735788901474a505b92",
      "bytes": 4594
    },
    {
      "path": "UnitTests/ImplicitSurfaces/ImplicitSurfacesTests.fs",
      "sha256": "9016a41bc2452ae8a266b6a0953c886041fd715b8beeb9638f9580692b74764b",
      "bytes": 6891
    },
    {
      "path": "UnitTests/ImplicitSurfaces/PolyToUnipolyTests.fs",
      "sha256": "671c59ad91d0d3949518677c50038b641c8b58cdd4883dd69cc4c74212725cf3",
      "bytes": 1574
    },
    {
      "path": "UnitTests/LightingRegressionTests.fs",
      "sha256": "5cff0c2d86e9d9b6bcdd52ce441844feb286af2dda80b9ec1595d2da1469ce3a",
      "bytes": 9394
    },
    {
      "path": "UnitTests/MeshRegressionTests.fs",
      "sha256": "296a41e8b1db178c2c1ed25c6c197ec18c2ecdd9b21b529aeeeaddc8fbeb8712",
      "bytes": 12892
    },
    {
      "path": "UnitTests/NumericalRegressionTests.fs",
      "sha256": "51a6428bc545e9cfa1321853eb46aba8ca4870454031ead72f2f6d6249f5a1d1",
      "bytes": 6095
    },
    {
      "path": "UnitTests/Program.fs",
      "sha256": "d84d19fbb7a155d1ffd7ecc9ab078eda01b1adc52da6ec7355e5be613579acf2",
      "bytes": 3124
    },
    {
      "path": "UnitTests/README.md",
      "sha256": "53c39e7055fdaf572a099430560c51286e18804d2cdcf8930048ca361a553349",
      "bytes": 1248
    },
    {
      "path": "UnitTests/RG/RegularGridsTest.fs",
      "sha256": "9c00f34e12c2df2336bff41b2e6ab93ebc5a1ca09fb0664375ac438b8de1f133",
      "bytes": 1114
    },
    {
      "path": "UnitTests/SamplingTest.fs",
      "sha256": "377508b5f5297dffba216e3a001127383600663ed30390d9bc779cb4d1762ea6",
      "bytes": 5653
    },
    {
      "path": "UnitTests/ShapeTest.fs",
      "sha256": "5d9488ee05408ec814f021f13d87c3c77f745f851fd8c704c6ef97a2ca4a7192",
      "bytes": 19409
    },
    {
      "path": "UnitTests/TransformationTest.fs",
      "sha256": "dd6d3a623dc463b6d67b3a0d12c2c2736eb72e7f79ba55d3d18d4aa5b2148040",
      "bytes": 8182
    },
    {
      "path": "UnitTests/UnitTests.fsproj",
      "sha256": "4c4daabd6d95c57a648df0010abc1dc45a0047210e317b0ea617313c749e6b2e",
      "bytes": 1587
    },
    {
      "path": "UnitTests/packages.config",
      "sha256": "8345d499882d0c22eb48754f2ba271b773414459a6d2bdc8fb43b4882b5ba468",
      "bytes": 142
    },
    {
      "path": "UnitTests/packages.lock.json",
      "sha256": "875be7c920aec172bd8a5c844d2a950e241dca858c2f65635ce389db89bf003f",
      "bytes": 1436
    },
    {
      "path": "benchmarks/BENCHMARKS.md",
      "sha256": "6d843201ed14498f73480f17f969658fcda87e5f7cf47587a739bb77e3ecd772",
      "bytes": 15000
    },
    {
      "path": "benchmarks/gold-dragon.json",
      "sha256": "fc5a7e3962144f45b9d559ac2a0d573eaa3d25dbb70a675444e40e228fbc67b9",
      "bytes": 1344
    },
    {
      "path": "benchmarks/legacy/LegacyRayTracer.fsproj",
      "sha256": "04fa2165384129ddd83b5279956920959e8de5ff2550fec455a14295572de091",
      "bytes": 4965
    },
    {
      "path": "benchmarks/legacy/README.md",
      "sha256": "2af6d4345fd99ecccaa85f3ef59e8574d15288298abca3bcda4dc7312ca99f22",
      "bytes": 3992
    },
    {
      "path": "benchmarks/legacy/Runner/LegacyRunner.fsproj",
      "sha256": "1b82fed7bc33fccad2514048f80f32be3dd45b17dec315f992def5a7f60fac81",
      "bytes": 866
    },
    {
      "path": "benchmarks/legacy/Runner/packages.lock.json",
      "sha256": "cb3479bf5062d82549e852052bf6f384835249c1c34d4dd707707f3c3f369a3a",
      "bytes": 1580
    },
    {
      "path": "benchmarks/legacy/adapted/Acceleration/RegularGrids.fs",
      "sha256": "0030bcdcf4520f711e89971133cd8e34d7cd8ba58a47376e718fb2024ff1b8a8",
      "bytes": 9453
    },
    {
      "path": "benchmarks/legacy/adapted/Core/Foundation.fs",
      "sha256": "47f9b93fab5b165acb1c665f6e0b43d445fb0af71df56b3112d8ec7a2ff318f9",
      "bytes": 4768
    },
    {
      "path": "benchmarks/legacy/adapted/Core/Vector.fs",
      "sha256": "1ace79558b6f799c3f1355d646ad4f6ec83c174c07df86c77656cd3de3ba10dd",
      "bytes": 2710
    },
    {
      "path": "benchmarks/legacy/adapted/Render.fs",
      "sha256": "0040ec8a580e32d9799556af32010024e27bfc46863c49f32e693dffc1cd8394",
      "bytes": 8985
    },
    {
      "path": "benchmarks/legacy/adapted/Sampling/Sampling.fs",
      "sha256": "13bb63faa77e71ed0265e8b4dd1802a5457e06aecbf1313d78e4d1bb0ac662bd",
      "bytes": 15606
    },
    {
      "path": "benchmarks/legacy/adapted/Sampling/Sampling.fsi",
      "sha256": "12ccfa2d685fe85fd07da5485874a05810372e517fe473f6487a44a09a5c9a26",
      "bytes": 603
    },
    {
      "path": "benchmarks/legacy/baseline.json",
      "sha256": "c9b7542c80afbe961d904e61bfbaa842524fdc7446019953154efddf496d9ba0",
      "bytes": 565
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/API.fs",
      "sha256": "97dc6097f629a918cf2f821a9060f37eefa913e8deed17ac671c11064908dca0",
      "bytes": 10044
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/API.fsi",
      "sha256": "62eab4d1c9b3d0e5cebce8d7c72cea9ba2ccb09c8547c3c8a086a8b0f49fe885",
      "bytes": 14359
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/API/API.fs",
      "sha256": "06335940c3bcf7b10095c1b2241c77b7566eb954c76969fe7391de88bf012c47",
      "bytes": 10057
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/API/API.fsi",
      "sha256": "9db49c4c48bcb8550aa5f786df4e70ab032985ebd24602a6b55a5243d5e14e18",
      "bytes": 14387
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Acceleration/Acceleration.fs",
      "sha256": "2749f2a8651e80f56011ebac8610c84a4ecbe8507699806d842ca76c4d34fd41",
      "bytes": 2214
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Acceleration/BVH.fs",
      "sha256": "a83ba4d0fe4ed26eac747a8c7564801114ae0ad611d29c46b6c9339055456594",
      "bytes": 10503
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Acceleration/KDTree.fs",
      "sha256": "d4da8373ba71efcab40633733b48e3fb14d695449af8be751f88ea860b807cbb",
      "bytes": 16188
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Acceleration/RegularGrids.fs",
      "sha256": "184d13d1d2bb46b517c42654f6ef7f2dd69239a34e0d8ccc2720e230b500a09c",
      "bytes": 9449
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/App.config",
      "sha256": "8173d4d17cb728e6f2c5e2ce8124ce7eb0f459dc62085bcaab786abf1f6b37a7",
      "bytes": 184
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/AssemblyInfo.fs",
      "sha256": "076327f6c028480a9e7bda7ae14cafeb70375cbb6d1c9d6ed74522005d3a78c7",
      "bytes": 1448
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Camera/Camera.fs",
      "sha256": "ae7ae69898a1a49b64de0b57572b207f49786120c4bdb1210cc79df2a7f1db71",
      "bytes": 877
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Camera/PinholeCamera.fs",
      "sha256": "b6467decd58d4682e9519607d58ec8c43dfb49bc7150d83db22792fd2f4b64b0",
      "bytes": 773
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Camera/ThinLensCamera.fs",
      "sha256": "39667f841c6032c16660c5070160a3a2427e2373934ebd0d4762d0c9ee6d5925",
      "bytes": 1408
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/BBox.fs",
      "sha256": "157eb519a89fa76650dc084ad25e87f75434efc805badac217907058b662c4db",
      "bytes": 4075
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/Colour.fs",
      "sha256": "ac3a0ae068a72bacfbcd257e15cd088d4eae95766d12a20b2e19bd8e37bb1131",
      "bytes": 2459
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/Foundation.fs",
      "sha256": "82fdb5e1214a695adb343366e9e4aa6b07533ba30a8b854954407180c00d3114",
      "bytes": 4789
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/Point.fs",
      "sha256": "49808bd59e0db631068f8b301bc06ca68593773f1ad5218d9974259d66774e00",
      "bytes": 2949
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/Ray.fs",
      "sha256": "0bfaac6cbdb91e984497ba08b7604c0d43e63974f8dcdeb1f6470fb7320bab71",
      "bytes": 908
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Core/Vector.fs",
      "sha256": "915d797dc8ce3401c9a99fb523c0dc645c4d537b935b6bd3ee6a9c441b531ee4",
      "bytes": 2701
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprParse.fs",
      "sha256": "7f44183929596f3029a05d76c91d3fd05213200f0c5a5e82db6972a4b55cddc3",
      "bytes": 7434
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprParse.fsi",
      "sha256": "a0ecc9a21cc3bd40c62192881a82c4e2b304f4ba34347c7bce763f3ecfbc7c27",
      "bytes": 658
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprToPoly.fs",
      "sha256": "0205831b3bdc58baa0fff89e89a34f4df4a845803cc82e6d506e1410ef989fd4",
      "bytes": 12973
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ExprToPoly.fsi",
      "sha256": "f81a02ec47a4392c4da91fbc44224f440a06d52178dadc453aa06262e3985f69",
      "bytes": 874
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ImplicitSurfaces.fs",
      "sha256": "dcd19ca89049bad1eb74bc2445e8192ccb41aa3ed452f744b807e9f9761e10ea",
      "bytes": 9928
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/ImplicitSurfaces.fsi",
      "sha256": "a5af79c03baf0373dcca3eefe8a9c606e56a8824287f2282de8e54edb51adcca",
      "bytes": 752
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/PolyToUnipoly.fs",
      "sha256": "e8b724f87efaf9d13ca13258062b350b983aa14d387b977cc9988dbc1e322070",
      "bytes": 7839
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/ImplicitSurfaces/PolyToUnipoly.fsi",
      "sha256": "ab96411c7996bf25c2468c4a3301a3b8c1751b96f97def5b20c32eac119a2817",
      "bytes": 874
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Lights/AreaLight.fs",
      "sha256": "5e2a18fd846b802489f5fd0a76cf15e03f271e463b58bbbfe9240b420e79010a",
      "bytes": 6687
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Lights/BasicLight.fs",
      "sha256": "0d176b69b1ab5fa2bc103c03896c0a2b697eb8e9a601cb203ae7afea66cf6bef",
      "bytes": 1274
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Lights/GlobalLight.fs",
      "sha256": "f5fd1cd76bdb20fe2348ec5f1ae50ce9cc54b0dfba9391301425654e8e26b7f3",
      "bytes": 2350
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Materials/Materials.fs",
      "sha256": "633504c0cd6e64b1fef47fbbf61abf47e478043a29207129116a8b78d578b976",
      "bytes": 13925
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Materials/Textures.fs",
      "sha256": "e7971d6e0b3697c7da75e7af97d78b8bee9cdfbbf8f55247a421635b1402b0e2",
      "bytes": 296
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Materials/Textures.fsi",
      "sha256": "a167a98b1eb95cf7e3ed56890c6bd668dd67d1faa3dcd8b48eb428ab181ff71a",
      "bytes": 268
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Program2.fs",
      "sha256": "f4620ea9b3ab45100cd31701cf757a2dfa8308cf5f152b091e290e5507d8117e",
      "bytes": 5398
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/RayTracer.fsproj",
      "sha256": "f2a654e1d895c8c8d298f5867d0e87246ab142874148b6335c9fc0ad0384de50",
      "bytes": 7499
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Render.fs",
      "sha256": "aadd7394df97eedf466e28883620ec755446e0633fa4144ca18b9cd1a5d6ab3a",
      "bytes": 9849
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Sampling/Sampling.fs",
      "sha256": "1dd97552b308fa7d7ca6824dbab59ef081a6508fa2993fad9eaa2fbf8e7d09f7",
      "bytes": 15542
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Sampling/Sampling.fsi",
      "sha256": "12ccfa2d685fe85fd07da5485874a05810372e517fe473f6487a44a09a5c9a26",
      "bytes": 603
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Scene.fs",
      "sha256": "8d9b0b3164c0e343d6468f54c3a3764cb08b6c040f4979360179a05f55d04f8a",
      "bytes": 633
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Shapes/BaseShape.fs",
      "sha256": "4350d846a61ebdfa46a77d8cf648aa0573a23a83fa5c6a844187a915be594eb0",
      "bytes": 1762
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Shapes/CSG.fs",
      "sha256": "d91d28e781ccb89952fedad26102aca5a373565e8ecfcb49a9a5560393c1f336",
      "bytes": 13405
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Shapes/Shapes.fs",
      "sha256": "e8c36d34283a06561c17df2836517617bd663402a3f715d7fb063e4ae7136690",
      "bytes": 29195
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Transformation/Transformation.fs",
      "sha256": "886884b38a6c6bc8f7c789882b9c6a7113fb1ca957f1cdce7c0a3846c73ac63d",
      "bytes": 7252
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/Transformation/Transformation.fsi",
      "sha256": "d806275f5289fa8bb47f033b8e07a64f6b603c20ffb3d0b677e20e5cdf6feb14",
      "bytes": 1034
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/TriangleMesh/PLYParser.fs",
      "sha256": "389a2b72e86df597489bad34c87fff5e4acb3a50e4f3f75419c9b86e23b36099",
      "bytes": 11762
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/TriangleMesh/TriangleMesh.fs",
      "sha256": "8ae87526409ddf043c0f176dc277438c33ba049e7c22f36e179bb98cd8659801",
      "bytes": 5511
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/TriangleMeshes/PLYParser.fs",
      "sha256": "ab935fe6ea41f54aa4e60bae203c74bdfbeb3855f3432d52ff2c424aa25f82f9",
      "bytes": 11748
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/TriangleMeshes/TriangleMes.fs",
      "sha256": "97c76e42d47a7842983cd5dbca5e4bb99d1fba3d16f9f3ff4c6fbf0d691a815f",
      "bytes": 5803
    },
    {
      "path": "benchmarks/legacy/original/RayTracer/packages.config",
      "sha256": "8345d499882d0c22eb48754f2ba271b773414459a6d2bdc8fb43b4882b5ba468",
      "bytes": 142
    },
    {
      "path": "benchmarks/legacy/packages.lock.json",
      "sha256": "0ff1eeeed5e7286beb426f89e0af6c931b0173b415bb1890c40aee1bcd7aebf3",
      "bytes": 1258
    },
    {
      "path": "benchmarks/legacy/portability.json",
      "sha256": "7e45e991da594f03af9d5aa32063a9753303e38d80999baeb7445351b59325d2",
      "bytes": 5668
    },
    {
      "path": "benchmarks/legacy/prepare-port.fsx",
      "sha256": "18084fbba4c26b6345faaddcce9e2e65f978bc180c7875b20a4169d5a86f6e7c",
      "bytes": 10461
    },
    {
      "path": "benchmarks/legacy/proof.fsx",
      "sha256": "403586f706f5b80870ed236c5e0337f35a4d522d6a5f9dfa7400a5cefaed03f5",
      "bytes": 4209
    },
    {
      "path": "benchmarks/legacy/source.sha256",
      "sha256": "e16be33a22219bf6a61a41b10eb407db9601b02e8ec37bbb5dce49574beb20fa",
      "bytes": 6205
    },
    {
      "path": "benchmarks/scenes/chair.json",
      "sha256": "ce33b5f08b535ff21d44640557c93e295fcae9af1679cafb5cf84391f010ff4b",
      "bytes": 28262
    },
    {
      "path": "benchmarks/scenes/material-lab.json",
      "sha256": "bf764d906f1812d17924bb2df0e8c8d46eed43ec1a7400ff44cb4100c2d1f051",
      "bytes": 13119
    },
    {
      "path": "benchmarks/scenes/provenance.json",
      "sha256": "6ff0822cf0253c50fe4a09c607fcf5e65c264ebeea06a308e0951d65adeb9dbe",
      "bytes": 38990
    },
    {
      "path": "benchmarks/scenes/roman-bust.json",
      "sha256": "b8074042499dcf0f3dd1b601a179ba33ff316ccbf6409d74c3f4ef38e5da3f8c",
      "bytes": 50954
    },
    {
      "path": "benchmarks/scenes/sky-arena.json",
      "sha256": "6bc23ff6ec29a955201bf492a5b7660415e64d0e7a27a2e75d960576e7b57805",
      "bytes": 59686
    },
    {
      "path": "benchmarks/scenes/space-sentinel.json",
      "sha256": "8036b0353a9d002df6fe71b8751a794c88eaa5167b43534cef550cf29a16d65e",
      "bytes": 31942
    },
    {
      "path": "global.json",
      "sha256": "c39786ab1a147662bbe4db015f900165178875ec4a872ddae53bc0c90771ac34",
      "bytes": 105
    },
    {
      "path": "scripts/BenchmarkData.fs",
      "sha256": "dcfb59f72b28231c561c734a2da36c49ac08dad3ab168c963c1c78f1f5e0faa2",
      "bytes": 20668
    },
    {
      "path": "scripts/BenchmarkReport.fs",
      "sha256": "d26acc52abbc439d17b22e4e4088a717853b16be3604b657a7a7b1b97ab8602a",
      "bytes": 20745
    },
    {
      "path": "scripts/benchmark-builder-tests.fsx",
      "sha256": "e9f82ae19bb962f9ea751ba51f214d835e5a902f753335847c3b3cffc18d106a",
      "bytes": 3181
    },
    {
      "path": "scripts/benchmark-tests.fsx",
      "sha256": "eb1462bedf5da1a63570f7c56b11814be65e73da5c8016d583397e45eb496d4f",
      "bytes": 9579
    },
    {
      "path": "scripts/benchmark-worker-tests.fsx",
      "sha256": "7e3ab422431b8cf99ac6afff9a8ecb222395e9738cc4e37ed96fdeeb2c1c4738",
      "bytes": 14416
    },
    {
      "path": "scripts/benchmark.fsx",
      "sha256": "4881bab3cad699cdedbeb30d27f4b1fbf0f0e288e6953b6fb785ebc4e72c3a4f",
      "bytes": 38997
    },
    {
      "path": "scripts/prepare-gold-dragon.fsx",
      "sha256": "29904b83e01ffce200f6fd15635b39369a63592b8109bf008a7a2f1eb4d70894",
      "bytes": 4427
    }
  ],
  "dotnet": "/home/movj/.dotnet/dotnet",
  "sdk": ".NET SDK:\n Version:           10.0.400\n Commit:            14fbf8d527\n Workload version:  10.0.400-manifests.330ea142\n MSBuild version:   18.9.6\u002B14fbf8d52\n\nRuntime Environment:\n OS Name:     ubuntu\n OS Version:  24.04\n OS Platform: Linux\n RID:         linux-x64\n Base Path:   /home/movj/.dotnet/sdk/10.0.400/\n\n.NET workloads installed:\nThere are no installed workloads to display.\nConfigured to use workload sets when installing new manifests.\nNo workload sets are installed. Run \u0022dotnet workload restore\u0022 to install a workload set.\n\nHost:\n  Version:      10.0.11\n  Architecture: x64\n  Commit:       e2f47b0110\n\n.NET SDKs installed:\n  10.0.400 [/home/movj/.dotnet/sdk]\n\n.NET runtimes installed:\n  Microsoft.AspNetCore.App 10.0.11 [/home/movj/.dotnet/shared/Microsoft.AspNetCore.App]\n  Microsoft.NETCore.App 10.0.11 [/home/movj/.dotnet/shared/Microsoft.NETCore.App]\n\nOther architectures found:\n  None\n\nEnvironment variables:\n  Not set\n\nglobal.json file:\n  /home/movj/code/dev/Ray_Tracer_FSharp/global.json\n\nLearn more:\n  https://aka.ms/dotnet/info\n\nDownload .NET:\n  https://aka.ms/dotnet/download",
  "operatingSystem": "Ubuntu 24.04.2 LTS",
  "architecture": "X64",
  "cpu": "model name\t: Intel(R) Core(TM) Ultra 9 185H",
  "gpuProbe": "NVIDIA RTX 3000 Ada Generation Laptop GPU, GPU-4acd4a56-4d85-7590-4669-043d3263a13b, 596.47, 8188 MiB",
  "runtimeEnvironment": [
    "DOTNET_TieredCompilation=\u003Cunset\u003E",
    "DOTNET_TC_QuickJit=\u003Cunset\u003E",
    "DOTNET_TC_QuickJitForLoops=\u003Cunset\u003E",
    "DOTNET_ReadyToRun=\u003Cunset\u003E",
    "DOTNET_gcServer=\u003Cunset\u003E",
    "DOTNET_GCHeapHardLimit=\u003Cunset\u003E",
    "DOTNET_PROCESSOR_COUNT=\u003Cunset\u003E",
    "COMPlus_TieredCompilation=\u003Cunset\u003E",
    "COMPlus_ReadyToRun=\u003Cunset\u003E",
    "COMPlus_gcServer=\u003Cunset\u003E",
    "CUDA_VISIBLE_DEVICES=\u003Cunset\u003E"
  ],
  "dependencies": [
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/Basics.dll",
      "sha256": "cab9d8e5adb635c3e0ae04de69cbe62fc76ab1af6e69796b6da5eb453309704e",
      "bytes": 401408
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/BenchmarkRunner.deps.json",
      "sha256": "0dbbaa70c4dbb918c318fd1aa5525e9bb5933f016b61763572a47dd790c41729",
      "bytes": 5818
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/BenchmarkRunner.dll",
      "sha256": "c14faf6b33925e5185a82c7f449dadd755f1a6538cd2cdb71458ff31cf6ea65a",
      "bytes": 57856
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/BenchmarkRunner.runtimeconfig.json",
      "sha256": "9950d4583cfc9a106857c0d5b8a75b53e8774852b57b80bc3823a74d44a4d87f",
      "bytes": 330
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/FParsec.dll",
      "sha256": "147154cd8e33699c1458cd7653b78d6c93c2ea272e9aeb3f838af95af2a82b23",
      "bytes": 241152
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/FParsecCS.dll",
      "sha256": "1822de41fcf78bf92de841f03e9a5c78db7fb1eb19cf699f78e06f064e0d4013",
      "bytes": 104448
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/FSharp.Core.dll",
      "sha256": "63797dea63b00ca2081d71827cecbb5425956886b4c3b06947e7ae561a43e366",
      "bytes": 2405672
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/RayTracer.ImageIO.dll",
      "sha256": "449f305e2c3411ec46225eaf1a3b72bc9edbe2492a8c8d74acc376972b98521d",
      "bytes": 10752
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/SceneFormat.dll",
      "sha256": "76b5d3eb851e95ccacd3c52f595c3384061a0b5a6089f83718e18a3ce9a57242",
      "bytes": 69120
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/StbImageSharp.dll",
      "sha256": "0ff268f51876e7924192c70a164bac8da402ed0a3ca30e9d2a2840e7f0deda84",
      "bytes": 77312
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/BenchmarkRunner/bin/Release/net10.0/StbImageWriteSharp.dll",
      "sha256": "70921000beb9ca762a8acdb93ac6f6c39db8a351a6fa12aca3eddbc652855f04",
      "bytes": 37376
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/FParsec.dll",
      "sha256": "147154cd8e33699c1458cd7653b78d6c93c2ea272e9aeb3f838af95af2a82b23",
      "bytes": 241152
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/FParsecCS.dll",
      "sha256": "1822de41fcf78bf92de841f03e9a5c78db7fb1eb19cf699f78e06f064e0d4013",
      "bytes": 104448
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/FSharp.Core.dll",
      "sha256": "63797dea63b00ca2081d71827cecbb5425956886b4c3b06947e7ae561a43e366",
      "bytes": 2405672
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/LegacyRayTracer.dll",
      "sha256": "8c2a2648ba2515892e817cd1707750ac4b66ec00f179804bade0be0f1f220c87",
      "bytes": 279040
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/LegacyRunner.deps.json",
      "sha256": "075759d775d58a242a3afbb1d21f66fe1979c0fb66f1762dfff3bbca312a5b2c",
      "bytes": 5538
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/LegacyRunner.dll",
      "sha256": "605cea80c5242cb81bfc9b56e0b65ee92956ada719ecbf0dafdcf4fe25d6de06",
      "bytes": 58880
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/LegacyRunner.runtimeconfig.json",
      "sha256": "9950d4583cfc9a106857c0d5b8a75b53e8774852b57b80bc3823a74d44a4d87f",
      "bytes": 330
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/RayTracer.ImageIO.dll",
      "sha256": "449f305e2c3411ec46225eaf1a3b72bc9edbe2492a8c8d74acc376972b98521d",
      "bytes": 10752
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/SceneFormat.dll",
      "sha256": "76b5d3eb851e95ccacd3c52f595c3384061a0b5a6089f83718e18a3ce9a57242",
      "bytes": 69120
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/StbImageSharp.dll",
      "sha256": "0ff268f51876e7924192c70a164bac8da402ed0a3ca30e9d2a2840e7f0deda84",
      "bytes": 77312
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/benchmarks/legacy/Runner/bin/Release/net10.0/StbImageWriteSharp.dll",
      "sha256": "70921000beb9ca762a8acdb93ac6f6c39db8a351a6fa12aca3eddbc652855f04",
      "bytes": 37376
    }
  ],
  "dependencyDescriptions": [
    "{\n  \u0022runtimeTarget\u0022: {\n    \u0022name\u0022: \u0022.NETCoreApp,Version=v10.0\u0022,\n    \u0022signature\u0022: \u0022\u0022\n  },\n  \u0022compilationOptions\u0022: {},\n  \u0022targets\u0022: {\n    \u0022.NETCoreApp,Version=v10.0\u0022: {\n      \u0022BenchmarkRunner/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022Basics\u0022: \u00221.0.0\u0022,\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022RayTracer.ImageIO\u0022: \u00221.0.0\u0022,\n          \u0022SceneFormat\u0022: \u00221.0.0\u0022,\n          \u0022Basics.Reference\u0022: \u00221.0.0.0\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022BenchmarkRunner.dll\u0022: {}\n        }\n      },\n      \u0022FParsec/1.1.1\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.0/FParsec.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.1.1.0\u0022,\n            \u0022fileVersion\u0022: \u00221.1.1.0\u0022\n          },\n          \u0022lib/netstandard2.0/FParsecCS.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.1.1.0\u0022,\n            \u0022fileVersion\u0022: \u00221.1.1.0\u0022\n          }\n        }\n      },\n      \u0022FSharp.Core/10.1.400\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.1/FSharp.Core.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u002210.1.0.0\u0022,\n            \u0022fileVersion\u0022: \u002210.104.26.38015\u0022\n          }\n        },\n        \u0022resources\u0022: {\n          \u0022lib/netstandard2.1/cs/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022cs\u0022\n          },\n          \u0022lib/netstandard2.1/de/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022de\u0022\n          },\n          \u0022lib/netstandard2.1/es/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022es\u0022\n          },\n          \u0022lib/netstandard2.1/fr/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022fr\u0022\n          },\n          \u0022lib/netstandard2.1/it/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022it\u0022\n          },\n          \u0022lib/netstandard2.1/ja/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ja\u0022\n          },\n          \u0022lib/netstandard2.1/ko/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ko\u0022\n          },\n          \u0022lib/netstandard2.1/pl/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022pl\u0022\n          },\n          \u0022lib/netstandard2.1/pt-BR/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022pt-BR\u0022\n          },\n          \u0022lib/netstandard2.1/ru/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ru\u0022\n          },\n          \u0022lib/netstandard2.1/tr/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022tr\u0022\n          },\n          \u0022lib/netstandard2.1/zh-Hans/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022zh-Hans\u0022\n          },\n          \u0022lib/netstandard2.1/zh-Hant/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022zh-Hant\u0022\n          }\n        }\n      },\n      \u0022StbImageSharp/2.30.16\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/net8.0/StbImageSharp.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00222.30.16.0\u0022,\n            \u0022fileVersion\u0022: \u00222.30.16.0\u0022\n          }\n        }\n      },\n      \u0022StbImageWriteSharp/1.16.7\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.0/StbImageWriteSharp.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.16.7.0\u0022,\n            \u0022fileVersion\u0022: \u00221.16.7.0\u0022\n          }\n        }\n      },\n      \u0022Basics/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FParsec\u0022: \u00221.1.1\u0022,\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022RayTracer.ImageIO\u0022: \u00221.0.0\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022Basics.dll\u0022: {\n            \u0022fileVersion\u0022: \u00220.0.0.0\u0022\n          }\n        }\n      },\n      \u0022RayTracer.ImageIO/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022StbImageSharp\u0022: \u00222.30.16\u0022,\n          \u0022StbImageWriteSharp\u0022: \u00221.16.7\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022RayTracer.ImageIO.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      },\n      \u0022SceneFormat/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022SceneFormat.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      },\n      \u0022Basics.Reference/1.0.0.0\u0022: {\n        \u0022runtime\u0022: {\n          \u0022Basics.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      }\n    }\n  },\n  \u0022libraries\u0022: {\n    \u0022BenchmarkRunner/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022FParsec/1.1.1\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-Wdjf/gCNLEwd\u002B0nUCDh9jAIIcKGwfhRramySTnTcVVgNC6i4Vp5aJklUJJfvFkEZMYNZEDGcI8pCa36/TmwmSg==\u0022,\n      \u0022path\u0022: \u0022fparsec/1.1.1\u0022,\n      \u0022hashPath\u0022: \u0022fparsec.1.1.1.nupkg.sha512\u0022\n    },\n    \u0022FSharp.Core/10.1.400\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-mxCkXuBt4wyRMmHf4boZXm30zZZsjBt3\u002B9ISzXB8wFvJJAACrPPh9vj85Kqtxj/2FvDxAQnnRnJpNcJSXElhgA==\u0022,\n      \u0022path\u0022: \u0022fsharp.core/10.1.400\u0022,\n      \u0022hashPath\u0022: \u0022fsharp.core.10.1.400.nupkg.sha512\u0022\n    },\n    \u0022StbImageSharp/2.30.16\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-qg1i\u002BNHihXVKLKYacGKrauhSQIGL31eBWcTC4Vc7jnGmBFj87LkRuCdXB5aDZisWMRnB6x2mcfwYXQxMWEG/lw==\u0022,\n      \u0022path\u0022: \u0022stbimagesharp/2.30.16\u0022,\n      \u0022hashPath\u0022: \u0022stbimagesharp.2.30.16.nupkg.sha512\u0022\n    },\n    \u0022StbImageWriteSharp/1.16.7\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-NF9kOxi0iS9VunklnRKgOpAWC2knCGKRjdy7RT6XAqYNyb7LQfyPHPdl4l1fJw7TFYKrGQzQOmK1XpBONC2MoA==\u0022,\n      \u0022path\u0022: \u0022stbimagewritesharp/1.16.7\u0022,\n      \u0022hashPath\u0022: \u0022stbimagewritesharp.1.16.7.nupkg.sha512\u0022\n    },\n    \u0022Basics/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022RayTracer.ImageIO/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022SceneFormat/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022Basics.Reference/1.0.0.0\u0022: {\n      \u0022type\u0022: \u0022reference\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    }\n  }\n}",
    "{\n  \u0022runtimeTarget\u0022: {\n    \u0022name\u0022: \u0022.NETCoreApp,Version=v10.0\u0022,\n    \u0022signature\u0022: \u0022\u0022\n  },\n  \u0022compilationOptions\u0022: {},\n  \u0022targets\u0022: {\n    \u0022.NETCoreApp,Version=v10.0\u0022: {\n      \u0022LegacyRunner/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022LegacyRayTracer\u0022: \u00221.0.0\u0022,\n          \u0022RayTracer.ImageIO\u0022: \u00221.0.0\u0022,\n          \u0022SceneFormat\u0022: \u00221.0.0\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022LegacyRunner.dll\u0022: {}\n        }\n      },\n      \u0022FParsec/1.1.1\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.0/FParsec.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.1.1.0\u0022,\n            \u0022fileVersion\u0022: \u00221.1.1.0\u0022\n          },\n          \u0022lib/netstandard2.0/FParsecCS.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.1.1.0\u0022,\n            \u0022fileVersion\u0022: \u00221.1.1.0\u0022\n          }\n        }\n      },\n      \u0022FSharp.Core/10.1.400\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.1/FSharp.Core.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u002210.1.0.0\u0022,\n            \u0022fileVersion\u0022: \u002210.104.26.38015\u0022\n          }\n        },\n        \u0022resources\u0022: {\n          \u0022lib/netstandard2.1/cs/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022cs\u0022\n          },\n          \u0022lib/netstandard2.1/de/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022de\u0022\n          },\n          \u0022lib/netstandard2.1/es/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022es\u0022\n          },\n          \u0022lib/netstandard2.1/fr/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022fr\u0022\n          },\n          \u0022lib/netstandard2.1/it/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022it\u0022\n          },\n          \u0022lib/netstandard2.1/ja/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ja\u0022\n          },\n          \u0022lib/netstandard2.1/ko/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ko\u0022\n          },\n          \u0022lib/netstandard2.1/pl/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022pl\u0022\n          },\n          \u0022lib/netstandard2.1/pt-BR/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022pt-BR\u0022\n          },\n          \u0022lib/netstandard2.1/ru/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022ru\u0022\n          },\n          \u0022lib/netstandard2.1/tr/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022tr\u0022\n          },\n          \u0022lib/netstandard2.1/zh-Hans/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022zh-Hans\u0022\n          },\n          \u0022lib/netstandard2.1/zh-Hant/FSharp.Core.resources.dll\u0022: {\n            \u0022locale\u0022: \u0022zh-Hant\u0022\n          }\n        }\n      },\n      \u0022StbImageSharp/2.30.16\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/net8.0/StbImageSharp.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00222.30.16.0\u0022,\n            \u0022fileVersion\u0022: \u00222.30.16.0\u0022\n          }\n        }\n      },\n      \u0022StbImageWriteSharp/1.16.7\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/netstandard2.0/StbImageWriteSharp.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.16.7.0\u0022,\n            \u0022fileVersion\u0022: \u00221.16.7.0\u0022\n          }\n        }\n      },\n      \u0022LegacyRayTracer/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FParsec\u0022: \u00221.1.1\u0022,\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022RayTracer.ImageIO\u0022: \u00221.0.0\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022LegacyRayTracer.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      },\n      \u0022RayTracer.ImageIO/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022StbImageSharp\u0022: \u00222.30.16\u0022,\n          \u0022StbImageWriteSharp\u0022: \u00221.16.7\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022RayTracer.ImageIO.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      },\n      \u0022SceneFormat/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022SceneFormat.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.0.0.0\u0022,\n            \u0022fileVersion\u0022: \u00221.0.0.0\u0022\n          }\n        }\n      }\n    }\n  },\n  \u0022libraries\u0022: {\n    \u0022LegacyRunner/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022FParsec/1.1.1\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-Wdjf/gCNLEwd\u002B0nUCDh9jAIIcKGwfhRramySTnTcVVgNC6i4Vp5aJklUJJfvFkEZMYNZEDGcI8pCa36/TmwmSg==\u0022,\n      \u0022path\u0022: \u0022fparsec/1.1.1\u0022,\n      \u0022hashPath\u0022: \u0022fparsec.1.1.1.nupkg.sha512\u0022\n    },\n    \u0022FSharp.Core/10.1.400\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-mxCkXuBt4wyRMmHf4boZXm30zZZsjBt3\u002B9ISzXB8wFvJJAACrPPh9vj85Kqtxj/2FvDxAQnnRnJpNcJSXElhgA==\u0022,\n      \u0022path\u0022: \u0022fsharp.core/10.1.400\u0022,\n      \u0022hashPath\u0022: \u0022fsharp.core.10.1.400.nupkg.sha512\u0022\n    },\n    \u0022StbImageSharp/2.30.16\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-qg1i\u002BNHihXVKLKYacGKrauhSQIGL31eBWcTC4Vc7jnGmBFj87LkRuCdXB5aDZisWMRnB6x2mcfwYXQxMWEG/lw==\u0022,\n      \u0022path\u0022: \u0022stbimagesharp/2.30.16\u0022,\n      \u0022hashPath\u0022: \u0022stbimagesharp.2.30.16.nupkg.sha512\u0022\n    },\n    \u0022StbImageWriteSharp/1.16.7\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-NF9kOxi0iS9VunklnRKgOpAWC2knCGKRjdy7RT6XAqYNyb7LQfyPHPdl4l1fJw7TFYKrGQzQOmK1XpBONC2MoA==\u0022,\n      \u0022path\u0022: \u0022stbimagewritesharp/1.16.7\u0022,\n      \u0022hashPath\u0022: \u0022stbimagewritesharp.1.16.7.nupkg.sha512\u0022\n    },\n    \u0022LegacyRayTracer/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022RayTracer.ImageIO/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    },\n    \u0022SceneFormat/1.0.0\u0022: {\n      \u0022type\u0022: \u0022project\u0022,\n      \u0022serviceable\u0022: false,\n      \u0022sha512\u0022: \u0022\u0022\n    }\n  }\n}"
  ],
  "notes": [
    "All worker processes execute serially. Each measured repeat is a fresh process; separate warmups do not remove measured JIT/startup cost.",
    "legacy-port retains the ineffective legacy random seeding, schedule-dependent samples, shared triangle barycentric races, original transport and forced cleanup GC.",
    "DOTNET_PROCESSOR_COUNT is set to requested threads for every worker. Legacy keeps its original Parallel.For scheduling; this is not a per-OS-thread hard cap.",
    "Renderer precision and PFM float32 storage precision differ. PFM retains unclamped linear HDR values, not gamma-encoded PNG values.",
    "Source digest hashes tracked and nonignored untracked working-tree source, including dirty file contents and missing tracked files; not merely the git SHA.",
    "Worker phases marked unavailable are not observations. Failure metrics are retained verbatim but never included as zero-valued timings.",
    "Existing/override assemblies were explicitly requested: binary hashes are retained, but this invocation did not establish source-to-binary build correspondence."
  ]
}

Measured phase and memory summaries

Cells: median and interquartile range. Hover for min/max, median absolute deviation and number of observations. Allocation is process-wide managed allocation; memory peaks are not interchangeable with allocations.

CaseEngine / completion cold worker-total load build compile upload trace-synchronized download encode cleanup allocated peak-working-set peak-device
quick / chair / authored256×256, camera 4, light 1, glossy 1, depth 2; 22 threads, tile 16; float64, regular, gamma2cpu1/1 successful 2440.442 msIQR 2440.442–2440.442 2387.169 msIQR 2387.169–2387.169 280.096 msIQR 280.096–280.096 57.957 msIQR 57.957–57.957 unavailable unavailable 1950.484 msIQR 1950.484–1950.484 unavailable 77.718 msIQR 77.718–77.718 0.02 msIQR 0.02–0.02 7357.5 MiBIQR 7357.5–7357.5 92.961 MiBIQR 92.961–92.961 unavailable
quick / chair / authored256×256, camera 4, light 1, glossy 1, depth 2; 22 threads, tile 16; float64, regular, gamma2legacy-port1/1 successful 24740.369 msIQR 24740.369–24740.369 24668.17 msIQR 24668.17–24668.17 266.05 msIQR 266.05–266.05 180.639 msIQR 180.639–180.639 unavailable unavailable 24107.133 msIQR 24107.133–24107.133 unavailable 77.87 msIQR 77.87–77.87 17.078 msIQR 17.078–17.078 105679.319 MiBIQR 105679.319–105679.319 103.465 MiBIQR 103.465–103.465 unavailable

Before / after gallery

quick / chair / authored

cpu: cold median 2440.442 ms

legacy-port: cold median 24740.369 ms

Matched cold end-to-end median ratio legacy-port/cpu: 10.138× (whole-render comparison, not kernel-only throughput).

Every trial, including failures and separate warmups

Case / engineRepeatStatusCold wallRetained artifactsDiagnostic
quick / chair / authored / legacy-portmeasured 1attempt 1success24740.369 ms PNG PFM metrics trial capabilities stdout stderr
quick / chair / authored / cpumeasured 1attempt 1success2440.442 ms PNG PFM metrics trial capabilities stdout stderr