Classic F# renderer: before / after

Requested run complete: 4/4 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-07T17:55:33.3943727\u002B00:00",
  "repository": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907",
  "gitCommit": "066c59eba68d222d63b373b7e25d408796eb1d12",
  "gitStatus": "M README.md\n 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?? .github/workflows/ci.yml\n?? .github/workflows/gpu-manual.yml\n?? .gitignore\n?? BenchmarkRunner/BenchmarkRunner.fsproj\n?? BenchmarkRunner/Program.fs\n?? BenchmarkRunner/SceneBuilder.fs\n?? BenchmarkRunner/ScenePolicy.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/batching-settings.json\n?? RayTracer.Gpu/Tests/closed-cube.ply\n?? RayTracer.Gpu/Tests/gold-preview-settings.json\n?? RayTracer.Gpu/Tests/multi-jittered-settings.json\n?? RayTracer.Gpu/Tests/nested-glass-scene.json\n?? RayTracer.Gpu/Tests/odd-settings.json\n?? RayTracer.Gpu/Tests/parity-settings.json\n?? RayTracer.Gpu/Tests/sampled-lights-mesh.ply\n?? RayTracer.Gpu/Tests/sampled-lights-scene.json\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/GoldDragon.fsx\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/PERFORMANCE.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/adapted/Transformation/Transformation.fs\n?? benchmarks/legacy/adapted/Transformation/Transformation.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/gold-dragon.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-selection-tests.fsx\n?? scripts/benchmark-tests.fsx\n?? scripts/benchmark-worker-tests.fsx\n?? scripts/benchmark.fsx\n?? scripts/prepare-gold-dragon.fsx\n?? scripts/tune-cpu.fsx",
  "sourceDigest": "e261cf8f332dc49b84940b6519e923d67056175433da48c3e0bf9742214b2f1a",
  "sources": [
    {
      "path": ".github/workflows/ci.yml",
      "sha256": "ecf01e31cd105cad9c10804843e33d395ff2321ad6789635ef1a5427a2499b35",
      "bytes": 1525
    },
    {
      "path": ".github/workflows/gpu-manual.yml",
      "sha256": "fc9bade9de0108ec4b649ed21b9f1e2fc19c623d1b4186cd789e2113cb216982",
      "bytes": 939
    },
    {
      "path": "BenchmarkRunner/BenchmarkRunner.fsproj",
      "sha256": "76d2f25a3d728aa9fa908ff66b460a718adcc0c6b41c6fcea508ab967618fb3a",
      "bytes": 704
    },
    {
      "path": "BenchmarkRunner/Program.fs",
      "sha256": "b0bbdb640291d7a0adf7a62efeaf02f49c475ed03c14bb55b48128b640a3626a",
      "bytes": 3599
    },
    {
      "path": "BenchmarkRunner/SceneBuilder.fs",
      "sha256": "538ae75e08b4e736529b1d9e87435cc6d0689ac16009704df0d8452356cb32f8",
      "bytes": 14016
    },
    {
      "path": "BenchmarkRunner/ScenePolicy.fs",
      "sha256": "0e28c6d1d9c3a87718967798d73e8f45b674348585d92b7f2f8f26bc1140b6a2",
      "bytes": 1142
    },
    {
      "path": "BenchmarkRunner/Worker.fs",
      "sha256": "fdebc85130b7915787e23e0fc54da092358f9fd712a8289a0f915b865892fc4b",
      "bytes": 16790
    },
    {
      "path": "BenchmarkRunner/packages.lock.json",
      "sha256": "07f8ed76169e1544073b4a47031c7c0fa22ba0facdae215665bc6bf7a0eccbce",
      "bytes": 1571
    },
    {
      "path": "Directory.Build.props",
      "sha256": "bd80f98e6493c2677c5c645c47ca89ecef9f5122d6e5d4cab97278177c69b5d4",
      "bytes": 228
    },
    {
      "path": "README.md",
      "sha256": "d6f38e45aeb2f6e256c5f3f2fd54ced9d65dca11c14f9ef20055bd254bbcbafe",
      "bytes": 7088
    },
    {
      "path": "RayTracer.Gpu/CoreComparison.fs",
      "sha256": "3796667e9a9c717b33ae95badbaf946d86a56077ae30ad295713648c84dad8e9",
      "bytes": 12152
    },
    {
      "path": "RayTracer.Gpu/CudaRenderer.fs",
      "sha256": "8f534fd297f84e4fcada3e75480e87a4a89e24536581e4c6d5cbf60329f2dfa7",
      "bytes": 14387
    },
    {
      "path": "RayTracer.Gpu/CudaRuntime.fs",
      "sha256": "acc7f9a02aae27153f7746ccdf0aa4adc41ae11d786e3c5be874e1cce8e0f2b6",
      "bytes": 950
    },
    {
      "path": "RayTracer.Gpu/DeviceGeometry.fs",
      "sha256": "6c303eb4e55adbdb91dd64f6daa3deec45d7ba38ed7552391bd75cadf251487f",
      "bytes": 7575
    },
    {
      "path": "RayTracer.Gpu/DeviceKernels.fs",
      "sha256": "238cfeea08c620e5a6babdaadd1eb133f53f32b620edf1d02c3065237909990e",
      "bytes": 3705
    },
    {
      "path": "RayTracer.Gpu/DeviceMath.fs",
      "sha256": "a67085a0623575f76e25614cfa91b77a62e6eedaea473df8da3981a7e30f7589",
      "bytes": 6323
    },
    {
      "path": "RayTracer.Gpu/DeviceTransport.fs",
      "sha256": "28c069be368b3979de376e975ecbcf35a87bee9454582d3018d9a43673c9c804",
      "bytes": 17208
    },
    {
      "path": "RayTracer.Gpu/DeviceTypes.fs",
      "sha256": "188d31087e2225db18f4cd1d933e80327c4d169219eead2ecdc93a2ed6e9de44",
      "bytes": 4643
    },
    {
      "path": "RayTracer.Gpu/Gate.fs",
      "sha256": "cc7732fc5fa2e21e091d0e40a7049eb09ebdf82632eea9ebf318f8e5938c8b91",
      "bytes": 9170
    },
    {
      "path": "RayTracer.Gpu/HostScene.fs",
      "sha256": "e1ce96d9cb4da1a46e1d79e873f43039eeb24bdb94f9e8d939990316edbf87ff",
      "bytes": 19941
    },
    {
      "path": "RayTracer.Gpu/Program.fs",
      "sha256": "7eb7f70fa3f106583a375aa4336b93fbd0120b87201b7b14787f7fba11036a58",
      "bytes": 946
    },
    {
      "path": "RayTracer.Gpu/README.md",
      "sha256": "a29fc2d9eb5ba44d6d60cba68e5bb2aa77620c62921b80db7e12c7188fa93d37",
      "bytes": 22211
    },
    {
      "path": "RayTracer.Gpu/RayTracer.Gpu.fsproj",
      "sha256": "b206bcdedd8521043872af3398c0b112a8c308394fd1e56a025de04a2a4c64f3",
      "bytes": 1333
    },
    {
      "path": "RayTracer.Gpu/SelfTests.fs",
      "sha256": "e4a9e441edf169c1c733c26870ce5511fda1719698197ec5111a593914c3816f",
      "bytes": 19623
    },
    {
      "path": "RayTracer.Gpu/Tests/batching-settings.json",
      "sha256": "5cfc46a28bd1bebc601294dff46048172fa292b036c1011276d16b309c597a43",
      "bytes": 242
    },
    {
      "path": "RayTracer.Gpu/Tests/gold-preview-settings.json",
      "sha256": "ba312eae6dc755018c3d2bcdcbf407c4c601c299b2683b21622aa29f692751cc",
      "bytes": 253
    },
    {
      "path": "RayTracer.Gpu/Tests/multi-jittered-settings.json",
      "sha256": "646982277c02e3f305154b3aba1a70f492df3ebbf4bcb32b3cd003a31ac1a41a",
      "bytes": 251
    },
    {
      "path": "RayTracer.Gpu/Tests/nested-glass-scene.json",
      "sha256": "340b45e15a10e80d7bcb4e7ca5c1265a3437d69fdf054eff6f23f0d66db8764f",
      "bytes": 2273
    },
    {
      "path": "RayTracer.Gpu/Tests/odd-settings.json",
      "sha256": "c9b73ca6268f581cf581c0750d96cff20eb46be75c3ba0e8f008daefde56dba7",
      "bytes": 242
    },
    {
      "path": "RayTracer.Gpu/Tests/parity-settings.json",
      "sha256": "7b05c4096cdb366b7ffb07496596de9f1045bf797d9d24e69ee20e695be82046",
      "bytes": 241
    },
    {
      "path": "RayTracer.Gpu/Tests/sampled-lights-scene.json",
      "sha256": "598eadffe8ca7580359b9601461a99fb37dee3f91d8cfaa784c012d6b5d0dab6",
      "bytes": 3413
    },
    {
      "path": "RayTracer.Gpu/Tests/tiny-settings.json",
      "sha256": "bb864dc5d972d2adcdad7f76d9095d1dafc25305f6dfe0edc2610407dcb472c4",
      "bytes": 241
    },
    {
      "path": "RayTracer.Gpu/Worker.fs",
      "sha256": "c31f8ec4963a81fe9c6cde9c02c2edaa4803c9748da34bcf4a2478ede0028c41",
      "bytes": 10823
    },
    {
      "path": "RayTracer.Gpu/packages.lock.json",
      "sha256": "3bd29a38bbb05fb3aed3d8161d2d7061980c5c34e9397aefde9c9548e302617d",
      "bytes": 2114
    },
    {
      "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": "a7c895e8c576a6d03b2fe7aa5b5f2d5ba42d54665e7cf3b6a4d5880ad3621f7a",
      "bytes": 7033
    },
    {
      "path": "RayTracer/Acceleration/BVH.fs",
      "sha256": "55f0d1ce2cf76e6b5dbec6f5b911605d39003a64d24a8bb062f96ffa6d95c335",
      "bytes": 6160
    },
    {
      "path": "RayTracer/Acceleration/FlatBVH.fs",
      "sha256": "686d8b73a5df610c99409112d1e8ff870bd956606522b0fb123865fe2eac1769",
      "bytes": 12162
    },
    {
      "path": "RayTracer/Acceleration/KDTree.fs",
      "sha256": "ebea794f71add6fde323e8b5c34b0a48db504f8054a87bc09af53d3087ed081e",
      "bytes": 15432
    },
    {
      "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": "8bdd5e6a54eb9318c486e32c8e738b1f7504e405522bc0f156d241c68691f443",
      "bytes": 3832
    },
    {
      "path": "RayTracer/Camera/PinholeCamera.fs",
      "sha256": "d395c9f779fe616f8ce404d9e1e75d2ab8808857fbca99dd44eefa58c65cfc13",
      "bytes": 1401
    },
    {
      "path": "RayTracer/Camera/ThinLensCamera.fs",
      "sha256": "2daa2a8cd4889f5169abb2cc112a4b22f921243987c789f1028231da836c89b1",
      "bytes": 2246
    },
    {
      "path": "RayTracer/ClassicIntegrator.fs",
      "sha256": "be13267721fb36edd27a781ae0b3488e6c59b98ea81534c10db43439ede560ad",
      "bytes": 11969
    },
    {
      "path": "RayTracer/Core/BBox.fs",
      "sha256": "55c5b9b4279337a88eb39938caf6cc9d6e689f43074d9b122be1636989a3f0db",
      "bytes": 3235
    },
    {
      "path": "RayTracer/Core/Colour.fs",
      "sha256": "39e6374c20ed7e6d67598530f87afc63b5bd70c5a5a15b58e251477bdb2325eb",
      "bytes": 3737
    },
    {
      "path": "RayTracer/Core/Foundation.fs",
      "sha256": "ed2a94c2bf5269d9763842d177605986bb1c72addf868068a1c888e6ab2d5c6a",
      "bytes": 7828
    },
    {
      "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": "cd078c19652129e5ead45a071dbbdb3eb3846d541ae2021dbb52ef8e897f56df",
      "bytes": 9048
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprParse.fsi",
      "sha256": "627d1d39198bcbf39a12d0d352b884c916f4b68c2dfba4ca5e0b969eea56abaf",
      "bytes": 703
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprToPoly.fs",
      "sha256": "b5adb8d83aef5b1bdaecab0855394f44987277ce9042f6e5c9e43f1693b4d2de",
      "bytes": 13345
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ExprToPoly.fsi",
      "sha256": "f81a02ec47a4392c4da91fbc44224f440a06d52178dadc453aa06262e3985f69",
      "bytes": 874
    },
    {
      "path": "RayTracer/ImplicitSurfaces/ImplicitSurfaces.fs",
      "sha256": "376c556c39c705c323fffdea74af54051d3da56ae302c828da81bce2d49d2d59",
      "bytes": 9777
    },
    {
      "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": "0cff46e2297e91390b9a3d648249e8363e50569e8f41cdca1f8a82886bfc6498",
      "bytes": 1076
    },
    {
      "path": "RayTracer/Materials/Textures.fsi",
      "sha256": "8a5aef2100808ad505e8f24c1aafeeb1b8b22ab0ee650e0ccc80ac57d264722f",
      "bytes": 487
    },
    {
      "path": "RayTracer/Program2.fs",
      "sha256": "f4620ea9b3ab45100cd31701cf757a2dfa8308cf5f152b091e290e5507d8117e",
      "bytes": 5398
    },
    {
      "path": "RayTracer/RayTracer.fsproj",
      "sha256": "f0b095dfdb37c0f006dd45de77c590400b308b2494eb4b1829299d6c3c7213f0",
      "bytes": 2721
    },
    {
      "path": "RayTracer/Render.fs",
      "sha256": "c862d96df1950b438a93b1015baf55f4bb37dd03bb880373cc9f4105f3b41036",
      "bytes": 6413
    },
    {
      "path": "RayTracer/Sampling/Sampling.fs",
      "sha256": "dd610649a89b92244d7de1be94cbc99481f744372bdd6077c40b93fd03cb3749",
      "bytes": 14630
    },
    {
      "path": "RayTracer/Sampling/Sampling.fsi",
      "sha256": "20207e6278cc86bba62ef34c685a33d3e978362f86d2fbb69d2952f3a72317ae",
      "bytes": 873
    },
    {
      "path": "RayTracer/Scene.fs",
      "sha256": "323db33647a38a8eeef43fe6455da2380dcf653ddc350ff1ce4ff1b519054634",
      "bytes": 1877
    },
    {
      "path": "RayTracer/Shapes/BaseShape.fs",
      "sha256": "7643d7cd26c5192edf5e0af2a898bd02ed0b9ecfd609ad5082e7db042829f677",
      "bytes": 1778
    },
    {
      "path": "RayTracer/Shapes/CSG.fs",
      "sha256": "8e0b0e70d67ab2d83668dc0d11b821153076cabf92ecabd1fe250ed1f3f182ca",
      "bytes": 7197
    },
    {
      "path": "RayTracer/Shapes/Shapes.fs",
      "sha256": "6d6f18137c00c609be30d30edf192355bfd697a6a67fbde2df6d578331ab70dc",
      "bytes": 23264
    },
    {
      "path": "RayTracer/Transformation/Transformation.fs",
      "sha256": "0ac87b1c7323d9b3abd682d91cc23d0f6fe5fa2118d03d88d0d0fc16676f9846",
      "bytes": 9113
    },
    {
      "path": "RayTracer/Transformation/Transformation.fsi",
      "sha256": "f046d2c1db4f9bc429eaa8bfe7ae767ba7d82577457cea23f91aa87db7bdc815",
      "bytes": 1446
    },
    {
      "path": "RayTracer/TriangleMesh/PLYParser.fs",
      "sha256": "12f46bbac9a996247c9b7bd84b1624b7a1ca68f9d5b274705cb87dedc1bdc308",
      "bytes": 15991
    },
    {
      "path": "RayTracer/TriangleMesh/TriangleMesh.fs",
      "sha256": "387947adaba72058256ea306317db366d59bb0b43e36cb5f718fe223e2be29d4",
      "bytes": 14958
    },
    {
      "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/GoldDragon.fsx",
      "sha256": "9124474d8ad0b21bce09bfc1d279cf88d8b61c1ccc0a75457edafa87d2a03b16",
      "bytes": 8507
    },
    {
      "path": "SceneAssets/Meshes.fs",
      "sha256": "4f23f7765d14f7e791cacde09e521e2b5340b919a8901694543bd883dd60292b",
      "bytes": 31448
    },
    {
      "path": "SceneAssets/Program.fs",
      "sha256": "cc82e83d8e252922113f8a6e40c9898e47f33b3d2d7cd342c94b53445e551d74",
      "bytes": 12908
    },
    {
      "path": "SceneAssets/README.md",
      "sha256": "cec624111a8f7b3e3d006c4cc41a0bc27874a70eaddd14f8d12e864caf4b0078",
      "bytes": 12581
    },
    {
      "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": "5b34dcdfdf9edee125544a54185ae1138bb5142b4c071eff6eeaa0fe076dbbfb",
      "bytes": 15166
    },
    {
      "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": "1f73c18b2cc3abfbfae5c6dc16599daad111a97d9268aa9190dc67d3f8ff2509",
      "bytes": 29138
    },
    {
      "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": "618056d6e4aefb0b893fe8bf202af50f7073d45406db8af5cdb4af54419608a0",
      "bytes": 22229
    },
    {
      "path": "UnitTests/ImageIOTests.fs",
      "sha256": "6da7198dfbb449ff40f9d448325cfc1de69604d6f5408b70d9c8c39ad067897c",
      "bytes": 3947
    },
    {
      "path": "UnitTests/ImplicitSurfaces/ExprParseTests.fs",
      "sha256": "0c206e57bca18286b0bb47485086abe89834cd1b950ccfed8bb7996f1c3e3ea3",
      "bytes": 4988
    },
    {
      "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": "3ac23a7d7ba4bdbc32db13666be364f78777aaff566b09689b6d13a9a913c54b",
      "bytes": 11010
    },
    {
      "path": "UnitTests/MeshRegressionTests.fs",
      "sha256": "1fd3e29870a6751bde8b1d341a5b79d7733d23807046d6dc29a45d6e100f3883",
      "bytes": 20600
    },
    {
      "path": "UnitTests/NumericalRegressionTests.fs",
      "sha256": "d5b90a110468d9c7fbc0c1b3ee5123683838f6043b93658d97c61b49ff3b6a6a",
      "bytes": 6792
    },
    {
      "path": "UnitTests/Program.fs",
      "sha256": "cfb70e593e134c70fcc5e7d527b7a145548dbad6dcacccbf6aa82dfd47ff2d2c",
      "bytes": 3160
    },
    {
      "path": "UnitTests/README.md",
      "sha256": "9dbf70e1ca20ddcd562763dc971a1f4084a3b313c65f9f9af86a0deadf31d1b8",
      "bytes": 1339
    },
    {
      "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": "cf4cdf4291d63e4c830bfb48cdaf18945f545248611f95ed94f03d04780dc343",
      "bytes": 22287
    },
    {
      "path": "benchmarks/PERFORMANCE.md",
      "sha256": "f6bee0f81e9b6aee747c0628783f9e83799e12df3e37a3d0b2470936370f4b7f",
      "bytes": 3442
    },
    {
      "path": "benchmarks/gold-dragon.json",
      "sha256": "facee2f4b87ac457ec941b900b7eac9d0f3e6b29ce2f1d7970cd2044485681bc",
      "bytes": 1548
    },
    {
      "path": "benchmarks/legacy/LegacyRayTracer.fsproj",
      "sha256": "8aee5724f45605dcd0ea4e40a6b6972297bc38120a97b5383f19bb8625bedfd1",
      "bytes": 4943
    },
    {
      "path": "benchmarks/legacy/README.md",
      "sha256": "7946b65e40a68e867072a21062fa01cf044f1fb016e9dae29e9b94fdd405f686",
      "bytes": 5657
    },
    {
      "path": "benchmarks/legacy/Runner/LegacyRunner.fsproj",
      "sha256": "e77af833959f28a1dd0bf34e2cb8a0a7a1d58e82c2e700750049e84673426d94",
      "bytes": 954
    },
    {
      "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": "6c351ed0843f3f7aabb197027cc7943f274ad751b2905e3b02a02686cb1da3b3",
      "bytes": 11083
    },
    {
      "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/adapted/Transformation/Transformation.fs",
      "sha256": "886884b38a6c6bc8f7c789882b9c6a7113fb1ca957f1cdce7c0a3846c73ac63d",
      "bytes": 7252
    },
    {
      "path": "benchmarks/legacy/adapted/Transformation/Transformation.fsi",
      "sha256": "0630a53ca572251bed48326b4a5a1efc5054f098a11932b3307ad715f1b50aec",
      "bytes": 1353
    },
    {
      "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": "e3d27c212db703065412eb33b6c34dca52f322abb358371dc4682388c856a2aa",
      "bytes": 6860
    },
    {
      "path": "benchmarks/legacy/prepare-port.fsx",
      "sha256": "34cf2c386bdb423d9fdd4aa54c515de8396493616f9596f0348562f178bd2f18",
      "bytes": 13867
    },
    {
      "path": "benchmarks/legacy/proof.fsx",
      "sha256": "971d7fdf9ca37a9bb6fa59bf88ebae27553eadd6764ae72caf38d45978963227",
      "bytes": 6642
    },
    {
      "path": "benchmarks/legacy/source.sha256",
      "sha256": "e16be33a22219bf6a61a41b10eb407db9601b02e8ec37bbb5dce49574beb20fa",
      "bytes": 6205
    },
    {
      "path": "benchmarks/scenes/chair.json",
      "sha256": "ce33b5f08b535ff21d44640557c93e295fcae9af1679cafb5cf84391f010ff4b",
      "bytes": 28262
    },
    {
      "path": "benchmarks/scenes/gold-dragon.json",
      "sha256": "590bc492b726cb1d27db568b9286d87cc721069656822020ca50da180a63834d",
      "bytes": 4706
    },
    {
      "path": "benchmarks/scenes/material-lab.json",
      "sha256": "bf764d906f1812d17924bb2df0e8c8d46eed43ec1a7400ff44cb4100c2d1f051",
      "bytes": 13119
    },
    {
      "path": "benchmarks/scenes/provenance.json",
      "sha256": "2e013d878c5607edd0d35361869d75370f17855c0bb4bfe6efae249808a915ae",
      "bytes": 39154
    },
    {
      "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": "fd035be10f39e07505ec09c514f27648d6be7c9db6859956f1878cbdd216a743",
      "bytes": 21437
    },
    {
      "path": "scripts/BenchmarkReport.fs",
      "sha256": "91165ea472a87be365c499ef4a55e5d79ae15715b2f5ed8a868f4fa9666ba447",
      "bytes": 21837
    },
    {
      "path": "scripts/benchmark-builder-tests.fsx",
      "sha256": "4656b39c84837fcb4a011cabfd6a28a8fcae5b8e7f7c713187ee9d02bf31f715",
      "bytes": 7301
    },
    {
      "path": "scripts/benchmark-selection-tests.fsx",
      "sha256": "f9dfd0eb26217fa7e158317216f9243f7f2a900077c4173e7b64af7eaba82e44",
      "bytes": 7401
    },
    {
      "path": "scripts/benchmark-tests.fsx",
      "sha256": "c7a680b7a618b5bc25e7fb8a7a0f0cd86bc6835d27da4663a6c49b2f9ef73a5c",
      "bytes": 13045
    },
    {
      "path": "scripts/benchmark-worker-tests.fsx",
      "sha256": "da6a904902f4dc67a0de0f49efd50278d565969f724df76dc98692cda548363f",
      "bytes": 23379
    },
    {
      "path": "scripts/benchmark.fsx",
      "sha256": "a98d959f716a1d6db91eba601d0a17762e8fcfde4c7a91f132c9ca908f841dc0",
      "bytes": 40224
    },
    {
      "path": "scripts/prepare-gold-dragon.fsx",
      "sha256": "29904b83e01ffce200f6fd15635b39369a63592b8109bf008a7a2f1eb4d70894",
      "bytes": 4427
    },
    {
      "path": "scripts/tune-cpu.fsx",
      "sha256": "86d3c04520fcdbffb9d6598d342b5f5362c4b51f9816c50b21590902df6ba6d3",
      "bytes": 6282
    }
  ],
  "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/artifacts/gpu-snapshot-20260907/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/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/Basics.dll",
      "sha256": "b48567f48b754ae1d98620f7a5c4c5f19c018b3e313f4930f0e761fc5c16b2b1",
      "bytes": 424448
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/FParsec.dll",
      "sha256": "147154cd8e33699c1458cd7653b78d6c93c2ea272e9aeb3f838af95af2a82b23",
      "bytes": 241152
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/FParsecCS.dll",
      "sha256": "1822de41fcf78bf92de841f03e9a5c78db7fb1eb19cf699f78e06f064e0d4013",
      "bytes": 104448
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/FSharp.Core.dll",
      "sha256": "63797dea63b00ca2081d71827cecbb5425956886b4c3b06947e7ae561a43e366",
      "bytes": 2405672
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/ILGPU.Algorithms.dll",
      "sha256": "2e103e6eaebb335fdc9cbcaddfef348befa0b576fd4f96532c0e38a3a2aa0788",
      "bytes": 1538048
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/ILGPU.dll",
      "sha256": "86aabe2a5a00002d5841791b5fbe9c8edd64b0ea15845c27bc5c85b2b1daacf6",
      "bytes": 1992192
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/RayTracer.Gpu.deps.json",
      "sha256": "1c1524bcb60afacf0735bc9fd8b0194e696b15ddb40cf3cead7d50add600cce2",
      "bytes": 6916
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/RayTracer.Gpu.dll",
      "sha256": "6f425068c2108da392fae191741c0a410e1acd9cbfa87127ed4b63b77ca46c44",
      "bytes": 205824
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/RayTracer.Gpu.runtimeconfig.json",
      "sha256": "9950d4583cfc9a106857c0d5b8a75b53e8774852b57b80bc3823a74d44a4d87f",
      "bytes": 330
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/RayTracer.ImageIO.dll",
      "sha256": "168640b9ef6b07018c6e833b28ee8a46749c60a69201305464b22ce7bd32ea88",
      "bytes": 10752
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/SceneFormat.dll",
      "sha256": "85d92c92cf3717f89679f422b8c109818bf4218d27ed1621b2dae28ed1b466c6",
      "bytes": 69632
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/bin/Release/net10.0/StbImageSharp.dll",
      "sha256": "0ff268f51876e7924192c70a164bac8da402ed0a3ca30e9d2a2840e7f0deda84",
      "bytes": 77312
    },
    {
      "path": "/home/movj/code/dev/Ray_Tracer_FSharp/artifacts/gpu-snapshot-20260907/RayTracer.Gpu/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      \u0022RayTracer.Gpu/1.0.0\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022Basics\u0022: \u00221.0.0\u0022,\n          \u0022FSharp.Core\u0022: \u002210.1.400\u0022,\n          \u0022ILGPU\u0022: \u00221.5.3\u0022,\n          \u0022ILGPU.Algorithms\u0022: \u00221.5.3\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          \u0022RayTracer.Gpu.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      \u0022ILGPU/1.5.3\u0022: {\n        \u0022runtime\u0022: {\n          \u0022lib/net7.0/ILGPU.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.5.3.0\u0022,\n            \u0022fileVersion\u0022: \u00221.5.3.0\u0022\n          }\n        }\n      },\n      \u0022ILGPU.Algorithms/1.5.3\u0022: {\n        \u0022dependencies\u0022: {\n          \u0022ILGPU\u0022: \u00221.5.3\u0022\n        },\n        \u0022runtime\u0022: {\n          \u0022lib/net7.0/ILGPU.Algorithms.dll\u0022: {\n            \u0022assemblyVersion\u0022: \u00221.5.3.0\u0022,\n            \u0022fileVersion\u0022: \u00221.5.3.0\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    \u0022RayTracer.Gpu/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    \u0022ILGPU/1.5.3\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-VhAfQqnp/qTcQla5zcBPQIoUJox8T1EuZLuKrynFFE1BQvOOUCksiCb9IQAJa2MSJf6QDi5YIoG45K0I\u002BGWcgg==\u0022,\n      \u0022path\u0022: \u0022ilgpu/1.5.3\u0022,\n      \u0022hashPath\u0022: \u0022ilgpu.1.5.3.nupkg.sha512\u0022\n    },\n    \u0022ILGPU.Algorithms/1.5.3\u0022: {\n      \u0022type\u0022: \u0022package\u0022,\n      \u0022serviceable\u0022: true,\n      \u0022sha512\u0022: \u0022sha512-KySqYhghiJKkf77NTLcxebFzD2hz/hpO1Dxz/B0IpnowhwKD3i\u002BPVaGa3E\u002BTXahGHY6711HVOWpKr07wV6qEOg==\u0022,\n      \u0022path\u0022: \u0022ilgpu.algorithms/1.5.3\u0022,\n      \u0022hashPath\u0022: \u0022ilgpu.algorithms.1.5.3.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}"
  ],
  "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."
  ]
}

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
high / chair / authored1024×1024, camera 64, light 4, glossy 4, depth 4; 22 threads, tile 16; float64, regular, gamma2gpu1/1 successful 150238.337 msIQR 150238.337–150238.337 150156.721 msIQR 150156.721–150156.721 137.132 msIQR 137.132–137.132 301.805 msIQR 301.805–301.805 3210.513 msIQR 3210.513–3210.513 28.818 msIQR 28.818–28.818 145664.011 msIQR 145664.011–145664.011 68.75 msIQR 68.75–68.75 589.283 msIQR 589.283–589.283 64.389 msIQR 64.389–64.389 740.204 MiBIQR 740.204–740.204 462.879 MiBIQR 462.879–462.879 55.793 MiBIQR 55.793–55.793
high / roman-bust / authored1024×1024, camera 64, light 4, glossy 4, depth 4; 22 threads, tile 16; float64, regular, gamma2gpu1/1 successful 140876.167 msIQR 140876.167–140876.167 140768.662 msIQR 140768.662–140768.662 167.58 msIQR 167.58–167.58 452.538 msIQR 452.538–452.538 3877.056 msIQR 3877.056–3877.056 51.998 msIQR 51.998–51.998 135305.854 msIQR 135305.854–135305.854 103.189 msIQR 103.189–103.189 597.014 msIQR 597.014–597.014 79.504 msIQR 79.504–79.504 729.996 MiBIQR 729.996–729.996 456.637 MiBIQR 456.637–456.637 61.317 MiBIQR 61.317–61.317
high / sky-arena / authored1024×1024, camera 64, light 4, glossy 4, depth 4; 22 threads, tile 16; float64, regular, gamma2gpu1/1 successful 32999.295 msIQR 32999.295–32999.295 32267.352 msIQR 32267.352–32267.352 162.804 msIQR 162.804–162.804 427.348 msIQR 427.348–427.348 4275.366 msIQR 4275.366–4275.366 27.132 msIQR 27.132–27.132 26629.705 msIQR 26629.705–26629.705 81.791 msIQR 81.791–81.791 523.132 msIQR 523.132–523.132 50.144 msIQR 50.144–50.144 734.432 MiBIQR 734.432–734.432 453.477 MiBIQR 453.477–453.477 31.62 MiBIQR 31.62–31.62
high / space-sentinel / authored1024×1024, camera 64, light 4, glossy 4, depth 4; 22 threads, tile 16; float64, regular, gamma2gpu1/1 successful 1123182.725 msIQR 1123182.725–1123182.725 1122423.57 msIQR 1122423.57–1122423.57 169.663 msIQR 169.663–169.663 341.497 msIQR 341.497–341.497 4668.234 msIQR 4668.234–4668.234 47.616 msIQR 47.616–47.616 1116432.746 msIQR 1116432.746–1116432.746 84.968 msIQR 84.968–84.968 513.343 msIQR 513.343–513.343 40.882 msIQR 40.882–40.882 700.429 MiBIQR 700.429–700.429 423.098 MiBIQR 423.098–423.098 50.574 MiBIQR 50.574–50.574

Before / after gallery

high / chair / authored

gpu: cold median 150238.337 ms

high / roman-bust / authored

gpu: cold median 140876.167 ms

high / sky-arena / authored

gpu: cold median 32999.295 ms

high / space-sentinel / authored

gpu: cold median 1123182.725 ms

Every trial, including failures and separate warmups

Case / engineRepeatStatusCold wallRetained artifactsDiagnostic
high / chair / authored / gpumeasured 1attempt 1success150238.337 ms PNG PFM metrics trial stdout stderr
high / roman-bust / authored / gpumeasured 1attempt 1success140876.167 ms PNG PFM metrics trial stdout stderr
high / space-sentinel / authored / gpumeasured 1attempt 1success1123182.725 ms PNG PFM metrics trial stdout stderr
high / sky-arena / authored / gpumeasured 1attempt 1success32999.295 ms PNG PFM metrics trial stdout stderr