{
  "schemaVersion": 1,
  "libraryVersion": "reference-world-2",
  "units": "metres",
  "provider": "Poly Haven and TextureCan",
  "license": "CC0-1.0",
  "licenseURL": "https://polyhaven.com/license",
  "licenseDeed": "https://creativecommons.org/publicdomain/zero/1.0/",
  "acquisition": "Official provider downloads with per-asset provenance. Poly Haven files retain verified provider MD5; TextureCan ZIP members retain CRC and local SHA-256, with no upstream checksum claim.",
  "archivePolicy": "Original downloads and existing-runtime snapshots are kept separately outside the public build. Existing archive entries are never overwritten.",
  "assets": [
    {
      "id": "rocky_terrain",
      "type": "material",
      "name": "Rocky Terrain",
      "authors": {
        "Amal Kumar": "All"
      },
      "source": "https://polyhaven.com/a/rocky_terrain",
      "provider": "Poly Haven",
      "license": "CC0-1.0",
      "licenseURL": "https://polyhaven.com/license",
      "providerFilesHash": "ed4f64ced98e133be04387b75d6e827a375e9b04",
      "intendedUse": "Large rocky slopes and exposed valley terrain; blend with the existing 15 m grass material.",
      "originals": [
        {
          "name": "rocky_terrain_diff_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rocky_terrain/rocky_terrain_diff_1k.jpg",
          "bytes": 905179,
          "providerMD5": "306ae62c38ab1942a63e831a534875ab",
          "sha256": "429315865fd89c150272592f6d93def174c6f69804a565ff08e53627a885579b",
          "archiveRelativePath": "polyhaven/rocky_terrain/ed4f64ced98e133be04387b75d6e827a375e9b04/originals/rocky_terrain_diff_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "rocky_terrain_nor_gl_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rocky_terrain/rocky_terrain_nor_gl_1k.jpg",
          "bytes": 1059194,
          "providerMD5": "4d42a558317f1d52c9080c73372d125a",
          "sha256": "a6556e1220c6e6c822e68ceeb9589719e4db8c87340199657cc705fea6ecf391",
          "archiveRelativePath": "polyhaven/rocky_terrain/ed4f64ced98e133be04387b75d6e827a375e9b04/originals/rocky_terrain_nor_gl_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "rocky_terrain_arm_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rocky_terrain/rocky_terrain_arm_1k.jpg",
          "bytes": 612370,
          "providerMD5": "71489b39bfbcf2cad431ce563a2f4e71",
          "sha256": "c007a3910a41202de8aeef8a089a79e3c356228687335c90bda342fdd6644ffd",
          "archiveRelativePath": "polyhaven/rocky_terrain/ed4f64ced98e133be04387b75d6e827a375e9b04/originals/rocky_terrain_arm_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        }
      ],
      "tileSizeMetres": [
        90,
        90
      ],
      "tileSizeSource": "Official asset page physical width; confirmed against API dimensions in millimetres.",
      "maps": {
        "albedo": {
          "path": "/assets/reference/materials/rocky_terrain_albedo.jpg",
          "bytes": 905179,
          "sha256": "429315865fd89c150272592f6d93def174c6f69804a565ff08e53627a885579b",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "sRGB",
          "originalSHA256": "429315865fd89c150272592f6d93def174c6f69804a565ff08e53627a885579b"
        },
        "normal": {
          "path": "/assets/reference/materials/rocky_terrain_normal.jpg",
          "bytes": 1059194,
          "sha256": "a6556e1220c6e6c822e68ceeb9589719e4db8c87340199657cc705fea6ecf391",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "convention": "OpenGL +Y",
          "originalSHA256": "a6556e1220c6e6c822e68ceeb9589719e4db8c87340199657cc705fea6ecf391"
        },
        "arm": {
          "path": "/assets/reference/materials/rocky_terrain_arm.jpg",
          "bytes": 612370,
          "sha256": "c007a3910a41202de8aeef8a089a79e3c356228687335c90bda342fdd6644ffd",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "channels": {
            "R": "ambient occlusion",
            "G": "roughness",
            "B": "metalness"
          },
          "originalSHA256": "c007a3910a41202de8aeef8a089a79e3c356228687335c90bda342fdd6644ffd"
        }
      },
      "optimization": "Provider 1024-square JPEG selection; bytes retained unchanged, no normal/data-map recompression."
    },
    {
      "id": "white_sandstone_bricks_03",
      "type": "material",
      "name": "White Sandstone Bricks 03",
      "authors": {
        "Rob Tuytel": "All"
      },
      "source": "https://polyhaven.com/a/white_sandstone_bricks_03",
      "provider": "Poly Haven",
      "license": "CC0-1.0",
      "licenseURL": "https://polyhaven.com/license",
      "providerFilesHash": "63dc5741daae0e2eaa78cf765c4c8220cfc6606d",
      "intendedUse": "Pale weathered masonry for inhabited-scale walls and close vault bases; sandstone, not a limestone scan.",
      "originals": [
        {
          "name": "white_sandstone_bricks_03_diff_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/white_sandstone_bricks_03/white_sandstone_bricks_03_diff_1k.jpg",
          "bytes": 572227,
          "providerMD5": "66a5b590dd1a7786219ac3de31958577",
          "sha256": "c0a4a186abd95a96f8cfc6ff13cecbea513e1712f482220abc71b48832d6dd52",
          "archiveRelativePath": "polyhaven/white_sandstone_bricks_03/63dc5741daae0e2eaa78cf765c4c8220cfc6606d/originals/white_sandstone_bricks_03_diff_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "white_sandstone_bricks_03_nor_gl_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/white_sandstone_bricks_03/white_sandstone_bricks_03_nor_gl_1k.jpg",
          "bytes": 610903,
          "providerMD5": "630b80240908aeda36ba1a6f269bd284",
          "sha256": "12a7d032cda08b25b68408a7ad185c4a8b4cce1bef8aaa429c0a03b419831922",
          "archiveRelativePath": "polyhaven/white_sandstone_bricks_03/63dc5741daae0e2eaa78cf765c4c8220cfc6606d/originals/white_sandstone_bricks_03_nor_gl_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "white_sandstone_bricks_03_arm_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/white_sandstone_bricks_03/white_sandstone_bricks_03_arm_1k.jpg",
          "bytes": 144670,
          "providerMD5": "b235d9718a3d61936ec62344198311e3",
          "sha256": "e81a748bfa0b4ac178ab9bb91331e9856396d5ced5d0f9db65b15f33519bb8cd",
          "archiveRelativePath": "polyhaven/white_sandstone_bricks_03/63dc5741daae0e2eaa78cf765c4c8220cfc6606d/originals/white_sandstone_bricks_03_arm_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        }
      ],
      "tileSizeMetres": [
        2,
        2
      ],
      "tileSizeSource": "Official asset page physical width; confirmed against API dimensions in millimetres.",
      "maps": {
        "albedo": {
          "path": "/assets/reference/materials/white_sandstone_bricks_03_albedo.jpg",
          "bytes": 572227,
          "sha256": "c0a4a186abd95a96f8cfc6ff13cecbea513e1712f482220abc71b48832d6dd52",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "sRGB",
          "originalSHA256": "c0a4a186abd95a96f8cfc6ff13cecbea513e1712f482220abc71b48832d6dd52"
        },
        "normal": {
          "path": "/assets/reference/materials/white_sandstone_bricks_03_normal.jpg",
          "bytes": 610903,
          "sha256": "12a7d032cda08b25b68408a7ad185c4a8b4cce1bef8aaa429c0a03b419831922",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "convention": "OpenGL +Y",
          "originalSHA256": "12a7d032cda08b25b68408a7ad185c4a8b4cce1bef8aaa429c0a03b419831922"
        },
        "arm": {
          "path": "/assets/reference/materials/white_sandstone_bricks_03_arm.jpg",
          "bytes": 144670,
          "sha256": "e81a748bfa0b4ac178ab9bb91331e9856396d5ced5d0f9db65b15f33519bb8cd",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "channels": {
            "R": "ambient occlusion",
            "G": "roughness",
            "B": "metalness"
          },
          "originalSHA256": "e81a748bfa0b4ac178ab9bb91331e9856396d5ced5d0f9db65b15f33519bb8cd"
        }
      },
      "optimization": "Provider 1024-square JPEG selection; bytes retained unchanged, no normal/data-map recompression."
    },
    {
      "id": "roof_tiles",
      "type": "material",
      "name": "Roof Tiles",
      "authors": {
        "Stephan Seeliger": "All"
      },
      "source": "https://polyhaven.com/a/roof_tiles",
      "provider": "Poly Haven",
      "license": "CC0-1.0",
      "licenseURL": "https://polyhaven.com/license",
      "providerFilesHash": "9be0342a471bf04a52dcf336b9b19876f214afcb",
      "intendedUse": "Weathered ceramic roof surface; curved East Asian-inspired roof silhouettes are authored geometry.",
      "originals": [
        {
          "name": "roof_tiles_diff_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/roof_tiles/roof_tiles_diff_1k.jpg",
          "bytes": 1105673,
          "providerMD5": "525e8cac13027e36f47844f3240fdde8",
          "sha256": "1b30c1f0a9d3f761afb1354d95b36990fc670fac5f811889af8cb2ab682c8e66",
          "archiveRelativePath": "polyhaven/roof_tiles/9be0342a471bf04a52dcf336b9b19876f214afcb/originals/roof_tiles_diff_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "roof_tiles_nor_gl_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/roof_tiles/roof_tiles_nor_gl_1k.jpg",
          "bytes": 883229,
          "providerMD5": "4123966e766370bd7d4b107c97a2ed97",
          "sha256": "1eb4e911e3d1b38c7c3b06bdecb6fde5f9646dca5498caf67ffa651cb6cb8d8c",
          "archiveRelativePath": "polyhaven/roof_tiles/9be0342a471bf04a52dcf336b9b19876f214afcb/originals/roof_tiles_nor_gl_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "roof_tiles_arm_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/roof_tiles/roof_tiles_arm_1k.jpg",
          "bytes": 1079696,
          "providerMD5": "c79de39188a60e9acbdd787a1d56fdcc",
          "sha256": "74f56737737e477f49c3c281ecc505a4457debb240d605cf50eaa2bfc5953bff",
          "archiveRelativePath": "polyhaven/roof_tiles/9be0342a471bf04a52dcf336b9b19876f214afcb/originals/roof_tiles_arm_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        }
      ],
      "tileSizeMetres": [
        2,
        2
      ],
      "tileSizeSource": "Official asset page physical width; confirmed against API dimensions in millimetres.",
      "maps": {
        "albedo": {
          "path": "/assets/reference/materials/roof_tiles_albedo.jpg",
          "bytes": 1105673,
          "sha256": "1b30c1f0a9d3f761afb1354d95b36990fc670fac5f811889af8cb2ab682c8e66",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "sRGB",
          "originalSHA256": "1b30c1f0a9d3f761afb1354d95b36990fc670fac5f811889af8cb2ab682c8e66"
        },
        "normal": {
          "path": "/assets/reference/materials/roof_tiles_normal.jpg",
          "bytes": 883229,
          "sha256": "1eb4e911e3d1b38c7c3b06bdecb6fde5f9646dca5498caf67ffa651cb6cb8d8c",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "convention": "OpenGL +Y",
          "originalSHA256": "1eb4e911e3d1b38c7c3b06bdecb6fde5f9646dca5498caf67ffa651cb6cb8d8c"
        },
        "arm": {
          "path": "/assets/reference/materials/roof_tiles_arm.jpg",
          "bytes": 1079696,
          "sha256": "74f56737737e477f49c3c281ecc505a4457debb240d605cf50eaa2bfc5953bff",
          "resolution": [
            1024,
            1024
          ],
          "colorSpace": "linear",
          "channels": {
            "R": "ambient occlusion",
            "G": "roughness",
            "B": "metalness"
          },
          "originalSHA256": "74f56737737e477f49c3c281ecc505a4457debb240d605cf50eaa2bfc5953bff"
        }
      },
      "optimization": "Provider 1024-square JPEG selection; bytes retained unchanged, no normal/data-map recompression."
    },
    {
      "id": "rock_face_01",
      "type": "model",
      "name": "Rock Face 01",
      "authors": {
        "Dario Barresi": "All"
      },
      "source": "https://polyhaven.com/a/rock_face_01",
      "provider": "Poly Haven",
      "license": "CC0-1.0",
      "licenseURL": "https://polyhaven.com/license",
      "providerFilesHash": "a39e6911cc84e0ceef097a98b1146885afb4afb3",
      "intendedUse": "Nearby stratified rock faces and cliff-foot transitions; not a whole mountain or terrain replacement.",
      "originals": [
        {
          "name": "rock_face_01_1k.gltf",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/rock_face_01/rock_face_01_1k.gltf",
          "bytes": 2793,
          "providerMD5": "b4855bc7e841a17a94332561a9b301c0",
          "sha256": "96c332c01d173a2431115f3bac29be101fba341e5500e2a08e384f4edd17299e",
          "archiveRelativePath": "polyhaven/rock_face_01/a39e6911cc84e0ceef097a98b1146885afb4afb3/originals/rock_face_01_1k.gltf",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "textures/rock_face_01_arm_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/rock_face_01/rock_face_01_arm_1k.jpg",
          "bytes": 693610,
          "providerMD5": "5799e7f5546350576b87bf67c34fb49f",
          "sha256": "59128c79d207a50a69a38002986135ade3b19642d26158cec141eca41578c9ca",
          "archiveRelativePath": "polyhaven/rock_face_01/a39e6911cc84e0ceef097a98b1146885afb4afb3/originals/textures/rock_face_01_arm_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "textures/rock_face_01_nor_gl_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/rock_face_01/rock_face_01_nor_gl_1k.jpg",
          "bytes": 1023400,
          "providerMD5": "46e01f5c3b8ac4463aeef2b4c61d1cd4",
          "sha256": "9a9d85b9a01f4e24fc9ceec8baf96c019f552bca69591ff544c7a725e28b1d97",
          "archiveRelativePath": "polyhaven/rock_face_01/a39e6911cc84e0ceef097a98b1146885afb4afb3/originals/textures/rock_face_01_nor_gl_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "textures/rock_face_01_diff_1k.jpg",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/rock_face_01/rock_face_01_diff_1k.jpg",
          "bytes": 853749,
          "providerMD5": "98ee9f024a6383d7e6cab44ed41e1f15",
          "sha256": "41bd26ed2db1332b1ebb4b1326fd8af4d21f0f0eb57b8ea385033115c722cfdb",
          "archiveRelativePath": "polyhaven/rock_face_01/a39e6911cc84e0ceef097a98b1146885afb4afb3/originals/textures/rock_face_01_diff_1k.jpg",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        },
        {
          "name": "rock_face_01.bin",
          "sourceURL": "https://dl.polyhaven.org/file/ph-assets/Models/gltf/8k/rock_face_01/rock_face_01.bin",
          "bytes": 476436,
          "providerMD5": "06caed23e725af568b64f8cbee210c1c",
          "sha256": "873eac0319333e92bc96ddeedf8ebf69dc3c68ff1dfe32d8c14ddc165cdb20ac",
          "archiveRelativePath": "polyhaven/rock_face_01/a39e6911cc84e0ceef097a98b1146885afb4afb3/originals/rock_face_01.bin",
          "provenance": "Unmodified bytes downloaded from the official provider; provider MD5 verified."
        }
      ],
      "geometry": {
        "vertices": 11106,
        "triangles": 20174,
        "primitives": 1,
        "boundsMetres": {
          "min": [
            -2.133601427078247,
            -0.03435921296477318,
            -3.466048240661621
          ],
          "max": [
            2.8199098110198975,
            3.5296897888183594,
            0.36125504970550537
          ]
        },
        "sizeMetres": [
          4.9535112380981445,
          3.5640490017831326,
          3.8273032903671265
        ],
        "nodeTransforms": "identity",
        "upAxis": "Y"
      },
      "catalogDimensionsMetres": [
        7.108232021331787,
        5.624304533004761,
        4.9804371148347855
      ],
      "dimensionNote": "Use geometry.sizeMetres for placement. Provider catalog dimensions differ from the delivered glTF proxy.",
      "textures": [
        {
          "originalName": "textures/rock_face_01_nor_gl_1k.jpg",
          "resolution": [
            1024,
            1024
          ]
        },
        {
          "originalName": "textures/rock_face_01_diff_1k.jpg",
          "resolution": [
            1024,
            1024
          ]
        },
        {
          "originalName": "textures/rock_face_01_arm_1k.jpg",
          "resolution": [
            1024,
            1024
          ]
        }
      ],
      "model": {
        "path": "/assets/reference/models/rock_face_01.glb",
        "bytes": 3049040,
        "sha256": "e01131ad83ae56c3af89798b1a44b3b54533b839b07d49d64d5bf390086a4c6b",
        "format": "glTF 2.0 binary",
        "externalDependencies": []
      },
      "optimization": "One GLB request, three embedded 1K JPEG maps, original indexed proxy geometry unchanged; no Draco/Meshopt decoder needed."
    },
    {
      "id": "others_0025",
      "surfaceKind": "facade",
      "type": "material",
      "name": "Old Office Building Facade",
      "authors": {
        "TextureCan": "Provider; individual creator not named"
      },
      "source": "https://www.texturecan.com/details/357/",
      "provider": "TextureCan",
      "license": "CC0-1.0",
      "licenseURL": "https://www.texturecan.com/terms/",
      "creationMethod": "Procedural / Substance Designer, as labeled by the official page; not a photograph or photogrammetry scan.",
      "intendedUse": "Aged pale facade panels and dark varied windows on Arcology masses; structural balconies and setbacks remain separate geometry.",
      "originals": [
        {
          "name": "others_0025_color_2k.jpg",
          "sourceURL": "https://www.texturecan.com/downloads/others_0025/others_0025_2k_h7FwXJ.zip",
          "bytes": 273317,
          "sha256": "d5dc99ba7b3ca492c2f50fd2f6fbe45f439f647d1a2610ae1833ea044471e8f3",
          "archiveRelativePath": "facade-candidates/texturecan-others_0025/extracted/others_0025_color_2k.jpg",
          "provenance": "Unmodified member of the official provider ZIP; ZIP CRC checked and local SHA-256 recorded. No provider MD5/SHA was published."
        },
        {
          "name": "others_0025_normal_opengl_2k.png",
          "sourceURL": "https://www.texturecan.com/downloads/others_0025/others_0025_2k_h7FwXJ.zip",
          "bytes": 178582,
          "sha256": "1965cb8a4002efadb0e1b77f85513623f274e0166910b25d7708a2d9611d856c",
          "archiveRelativePath": "facade-candidates/texturecan-others_0025/extracted/others_0025_normal_opengl_2k.png",
          "provenance": "Unmodified member of the official provider ZIP; ZIP CRC checked and local SHA-256 recorded. No provider MD5/SHA was published."
        },
        {
          "name": "others_0025_ao_2k.jpg",
          "sourceURL": "https://www.texturecan.com/downloads/others_0025/others_0025_2k_h7FwXJ.zip",
          "bytes": 124725,
          "sha256": "6061a4707bd67bb493eaf5a5f5679a8283c56d6d905cbe4eb4e9325234af5748",
          "archiveRelativePath": "facade-candidates/texturecan-others_0025/extracted/others_0025_ao_2k.jpg",
          "provenance": "Unmodified member of the official provider ZIP; ZIP CRC checked and local SHA-256 recorded. No provider MD5/SHA was published."
        },
        {
          "name": "others_0025_roughness_2k.jpg",
          "sourceURL": "https://www.texturecan.com/downloads/others_0025/others_0025_2k_h7FwXJ.zip",
          "bytes": 245306,
          "sha256": "43d95b1df271cbd2bceab029efd763ff2ae0b8c29c98aa2d2c7d11da4630e123",
          "archiveRelativePath": "facade-candidates/texturecan-others_0025/extracted/others_0025_roughness_2k.jpg",
          "provenance": "Unmodified member of the official provider ZIP; ZIP CRC checked and local SHA-256 recorded. No provider MD5/SHA was published."
        }
      ],
      "originalArchive": {
        "url": "https://www.texturecan.com/downloads/others_0025/others_0025_2k_h7FwXJ.zip",
        "filename": "others_0025_2k_h7FwXJ.zip",
        "bytes": 495864,
        "sha256": "b059837e15f08a566387a108d76dc8362cd0395b2cda3b3947c3af5b3509545f",
        "providerChecksum": null,
        "verification": "ZIP integrity/CRC checked and local SHA-256 recorded. No official MD5/SHA was published on the download page."
      },
      "tileSizeMetres": [
        24,
        24
      ],
      "storeyHeightMetres": 4,
      "tileSizeSource": "Artist-selected 24 m horizontal and vertical tile, assigning 4 m to each of six apparent storeys. The provider does not publish a physical tile dimension.",
      "maps": {
        "albedo": {
          "path": "/assets/reference/materials/facade_albedo.jpg",
          "bytes": 273317,
          "sha256": "d5dc99ba7b3ca492c2f50fd2f6fbe45f439f647d1a2610ae1833ea044471e8f3",
          "resolution": [
            2048,
            2048
          ],
          "colorSpace": "sRGB",
          "originalSHA256": "d5dc99ba7b3ca492c2f50fd2f6fbe45f439f647d1a2610ae1833ea044471e8f3"
        },
        "normal": {
          "path": "/assets/reference/materials/facade_normal.png",
          "bytes": 178582,
          "sha256": "1965cb8a4002efadb0e1b77f85513623f274e0166910b25d7708a2d9611d856c",
          "resolution": [
            2048,
            2048
          ],
          "colorSpace": "linear",
          "originalSHA256": "1965cb8a4002efadb0e1b77f85513623f274e0166910b25d7708a2d9611d856c",
          "convention": "OpenGL +Y",
          "sourceBitDepth": 16
        },
        "arm": {
          "path": "/assets/reference/materials/facade_arm.png",
          "bytes": 1003171,
          "sha256": "0b84df8f11659d02450b155083cbec249cedf4a9fe54d1037e5ee257391bfd01",
          "resolution": [
            2048,
            2048
          ],
          "colorSpace": "linear",
          "channels": {
            "R": "ambient occlusion",
            "G": "roughness",
            "B": "metalness"
          },
          "processing": {
            "script": "scripts/prepare-facade.py",
            "decoder": "Pillow 13.0.0",
            "operation": "Decode source grayscale JPEGs without resizing or color transfer; pack AO into R, roughness into G, constant zero metalness into B. Write an 8-bit RGB lossless PNG with filter 0.",
            "inputs": [
              {
                "name": "others_0025_ao_2k.jpg",
                "sha256": "6061a4707bd67bb493eaf5a5f5679a8283c56d6d905cbe4eb4e9325234af5748"
              },
              {
                "name": "others_0025_roughness_2k.jpg",
                "sha256": "43d95b1df271cbd2bceab029efd763ff2ae0b8c29c98aa2d2c7d11da4630e123"
              }
            ],
            "decodedChannelSHA256": {
              "R": "7a0faa7f8c4c4f3f649a4b9fc44ab8c473c8c02bb5b5783cbd59e517c71eea2b",
              "G": "7b21aa8326e35f50cb42628fd96c3f20d57370580e99b6bd2508fc542b537953",
              "B": "bb9f8df61474d25e71fa00722318cd387396ca1736605e1248821cc0de3d3af8"
            },
            "rgbSHA256": "b8a7b1f91f1fa6f5a1168649e5977117f89644da1332c9f98f5f3d44513b3b38"
          }
        }
      },
      "optimization": "Albedo JPEG and OpenGL normal PNG retained byte-for-byte; AO and roughness packed into one lossless PNG with zero metalness. No runtime source ZIP or unused maps."
    }
  ],
  "existingArchive": {
    "files": 21,
    "bytes": 10078505,
    "manifestSHA256": "34c2a03983a7e5637b7ce980928d8feffdc3280b5fff00ffebbaf503aa1b30d0",
    "archiveRelativePath": "existing-runtime-snapshots/manifest-34c2a03983a7e5637b7ce980928d8feffdc3280b5fff00ffebbaf503aa1b30d0.json",
    "provenance": "Existing runtime snapshots with original manifests; no new upstream download claim."
  },
  "reusedRuntimeManifests": [
    "/assets/credits.json",
    "/assets/models/credits.json"
  ],
  "limitations": [
    "No reference image, logo, video frame or generated concept image is a runtime asset.",
    "Textures do not supply cathedral, palace or arcology geometry; these forms require original structural modeling.",
    "The imported rock is a nearby detail proxy. Do not duplicate it at every distant terrain vertex.",
    "Sandstone is a pale-stone visual replacement, not a claim of a geological limestone scan."
  ],
  "providers": [
    {
      "name": "Poly Haven",
      "licenseURL": "https://polyhaven.com/license"
    },
    {
      "name": "TextureCan",
      "licenseURL": "https://www.texturecan.com/terms/"
    }
  ]
}
