{
  "kraft_outer": {
    "albedo": "kraft_outer_albedo.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      1.41,
      1.41
    ],
    "repeatTarget": "one outer box face (0.4 × 0.4 m)",
    "tileMetres": [
      0.2844,
      0.2844
    ],
    "size": [
      1024,
      1024
    ],
    "mapSize": [
      1024,
      1024
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      180,
      139,
      98
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Brown kraft corrugated shipping-box board, the outer face of a new cardboard box. Warm tan-brown unbleached kraft liner with fine visible wood fibres and tiny darker fibre flecks, very subtle parallel ridges from the flutes underneath running vertically, one or two faint soft crease marks, slight natural tone mottling. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/kraft_outer.2.png (2048x2048, quality high)",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 251190 bytes, PSNR 36.05 dB",
        "referenceSeam": {
          "x": 1.149,
          "y": 1.108
        },
        "format": "avif",
        "quality": 62,
        "chroma": "420",
        "bytes": 162609,
        "psnr": 36.49,
        "seam": {
          "x": 1.165,
          "y": 1.098
        }
      }
    },
    "jpeg": {
      "albedo": "kraft_outer_albedo.jpg"
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 290,
          "cutCost": 0.00092
        },
        "y": {
          "overlap": 320,
          "cutCost": 0.0008
        }
      },
      "wrapStepRatio": {
        "x": 0.988,
        "y": 0.97
      }
    },
    "scaleMeasured": {
      "periodPx": 28.44,
      "periodsPerTile": 36.0
    },
    "notes": "The generated crease line is suppressed: inside a repeating tile it would recur at the same place on every face. Creases belong to the box geometry or a decal."
  },
  "kraft_inner": {
    "albedo": "kraft_inner_albedo.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      1.88,
      1.88
    ],
    "repeatTarget": "one inner box face or flap underside (0.4 × 0.4 m)",
    "tileMetres": [
      0.2133,
      0.2133
    ],
    "size": [
      1024,
      1024
    ],
    "mapSize": [
      1024,
      1024
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      202,
      176,
      145
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "The inside liner of a brown corrugated cardboard box: a lighter, paler and more matte kraft paper than the outside, pale buff-tan with a soft fibrous texture, faint vertical flute ridges showing through, a few tiny fibre flecks. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/kraft_inner.1.png (2048x2048, quality high)",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 233109 bytes, PSNR 36.06 dB",
        "referenceSeam": {
          "x": 1.203,
          "y": 1.11
        },
        "format": "avif",
        "quality": 62,
        "chroma": "420",
        "bytes": 144164,
        "psnr": 36.42,
        "seam": {
          "x": 1.191,
          "y": 1.104
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 126,
          "cutCost": 0.00076
        },
        "y": {
          "overlap": 316,
          "cutCost": 0.00066
        }
      },
      "wrapStepRatio": {
        "x": 0.994,
        "y": 0.984
      }
    },
    "scaleMeasured": {
      "periodPx": 37.93,
      "periodsPerTile": 27.0
    }
  },
  "book_linen": {
    "albedo": "book_linen_albedo.avif",
    "roughness": "book_linen_roughness.avif",
    "normal": "book_linen_normal.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      2.17,
      3.18
    ],
    "repeatTarget": "the front cover of a 0.15 × 0.22 m hardback (0.15 × 0.22 m)",
    "tileMetres": [
      0.0691,
      0.0691
    ],
    "size": [
      512,
      512
    ],
    "mapSize": [
      512,
      512
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      28,
      30,
      32
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Charcoal black book-binding cloth, the fine woven linen buckram cover of a hardback book. A tight regular plain weave with visible crossing threads, slight irregular slubs in the yarn, very dark charcoal almost black with faint grey thread highlights, matte. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/book_linen.2.png (2048x2048, quality high)",
    "roughnessRange": [
      0.661,
      0.94,
      0.8
    ],
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 81585 bytes, PSNR 34.47 dB",
        "referenceSeam": {
          "x": 0.831,
          "y": 1.025
        },
        "format": "avif",
        "quality": 58,
        "chroma": "420",
        "bytes": 46274,
        "psnr": 35.19,
        "seam": {
          "x": 0.857,
          "y": 1.031
        }
      },
      "roughness": {
        "reference": "JPEG quality 85 4:4:4, 58638 bytes, PSNR 37.05 dB",
        "referenceSeam": {
          "x": 0.975,
          "y": 1.1
        },
        "format": "avif",
        "quality": 62,
        "chroma": "444",
        "bytes": 33862,
        "psnr": 37.52,
        "seam": {
          "x": 0.921,
          "y": 1.123
        }
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 253208 bytes, PSNR 27.57 dB",
        "referenceSeam": {
          "x": 1.162,
          "y": 0.942
        },
        "format": "avif",
        "quality": 50,
        "chroma": "444",
        "bytes": 135596,
        "psnr": 28.25,
        "seam": {
          "x": 1.21,
          "y": 0.971
        }
      }
    },
    "jpeg": {
      "albedo": "book_linen_albedo.jpg"
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 178,
          "cutCost": 0.00273
        },
        "y": {
          "overlap": 288,
          "cutCost": 0.00094
        }
      },
      "wrapStepRatio": {
        "x": 0.784,
        "y": 1.034
      }
    },
    "scaleMeasured": {
      "periodPx": 3.37,
      "periodsPerTile": 152.0
    }
  },
  "aluminium": {
    "albedo": "aluminium_albedo.avif",
    "roughness": "aluminium_roughness.avif",
    "normal": "aluminium_normal.jpg",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      0.67,
      1.0
    ],
    "repeatTarget": "the top face of a 0.08 × 0.12 m drive (0.08 × 0.12 m)",
    "tileMetres": [
      0.12,
      0.12
    ],
    "size": [
      512,
      512
    ],
    "mapSize": [
      512,
      512
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      102,
      104,
      108
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Space-grey anodised aluminium surface of a premium laptop or portable drive casing: fine bead-blasted satin finish with an extremely subtle, fine brushed grain running horizontally, medium-dark cool grey, microscopic uniform speckle, no scratches, no dents, no reflections of objects, no edges or holes. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/aluminium.1.png (2048x2048, quality high)",
    "roughnessRange": [
      0.3,
      0.46,
      0.38
    ],
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 40466 bytes, PSNR 38.22 dB",
        "referenceSeam": {
          "x": 1.427,
          "y": 1.052
        },
        "format": "avif",
        "quality": 70,
        "chroma": "420",
        "bytes": 27700,
        "psnr": 38.84,
        "seam": {
          "x": 1.368,
          "y": 0.978
        }
      },
      "roughness": {
        "reference": "JPEG quality 85 4:4:4, 37235 bytes, PSNR 40.81 dB",
        "referenceSeam": {
          "x": 1.457,
          "y": 1.096
        },
        "format": "avif",
        "quality": 74,
        "chroma": "444",
        "bytes": 26493,
        "psnr": 41.23,
        "seam": {
          "x": 1.489,
          "y": 1.05
        }
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 76606 bytes, PSNR 36.92 dB",
        "referenceSeam": {
          "x": 2.88,
          "y": 1.018
        },
        "format": "jpeg"
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 270,
          "cutCost": 0.00098
        },
        "y": {
          "overlap": 158,
          "cutCost": 0.00082
        }
      },
      "wrapStepRatio": {
        "x": 1.007,
        "y": 0.941
      }
    }
  },
  "card_paper": {
    "albedo": "card_paper_albedo.avif",
    "roughness": "card_paper_roughness.avif",
    "normal": "card_paper_normal.avif",
    "tileable": false,
    "tileAxes": [],
    "repeatHint": [
      1,
      1
    ],
    "repeatTarget": "one 5 × 3 inch index card face; red header line at the top (0.127 × 0.0762 m)",
    "tileMetres": [
      0.127,
      0.0762
    ],
    "size": [
      1020,
      612
    ],
    "mapSize": [
      510,
      306
    ],
    "shipSize": [
      510,
      306
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      236,
      238,
      242
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "The front face of a blank ruled index card photographed straight down, cropped so the card fills the entire frame edge to edge: bright off-white card stock with a subtle paper grain, one thin red horizontal header line about one fifth of the way down from the top, and below it thin evenly spaced pale blue horizontal ruled lines down to the bottom, every line running the full width. Nothing written on it. Flat, even diffuse lighting, no shadows, no border, no background, no perspective, absolutely no text, letters, numbers or logos.",
    "source": "work/textures/raw/card_paper.1.png (2048x1232, quality high)",
    "roughnessRange": [
      0.825,
      0.9,
      0.859
    ],
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:4:4, 26192 bytes, PSNR 40.43 dB",
        "referenceSeam": {},
        "format": "avif",
        "quality": 48,
        "chroma": "444",
        "bytes": 1170,
        "psnr": 40.55,
        "seam": {}
      },
      "roughness": {
        "reference": "JPEG quality 85 4:4:4, 6606 bytes, PSNR 49.76 dB",
        "referenceSeam": {},
        "format": "avif",
        "quality": 68,
        "chroma": "444",
        "bytes": 700,
        "psnr": 49.98,
        "seam": {}
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 26256 bytes, PSNR 40.55 dB",
        "referenceSeam": {},
        "format": "avif",
        "quality": 66,
        "chroma": "444",
        "bytes": 5535,
        "psnr": 40.75,
        "seam": {}
      }
    },
    "jpeg": {
      "albedo": "card_paper_albedo.jpg"
    }
  },
  "paper_crinkle": {
    "albedo": "paper_crinkle_albedo.avif",
    "normal": "paper_crinkle_normal.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      3.8,
      2.7
    ],
    "repeatTarget": "the crumpled packing paper in the box opening (0.38 × 0.27 m)",
    "tileMetres": [
      0.1,
      0.1
    ],
    "size": [
      512,
      512
    ],
    "mapSize": [
      512,
      512
    ],
    "shipSize": [
      256,
      256
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      179,
      155,
      127
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Brown kraft packing paper that was crumpled into a ball and then pressed flat again, seen straight down: a dense, even crackle of many small sharp crease lines that break the sheet into tiny angular facets 3 to 15 mm across, like the crinkle of crushed paper. Pale, slightly greyish unbleached kraft tan. Each facet is tilted a little differently, so under soft overhead light the facets differ only slightly in tone and the crease lines show as fine darker and lighter hairlines. Matte, no shine. Photographic material scan for a PBR texture: perfectly flat and orthographic, the paper fills the entire frame edge to edge with no border, no background, no edges of the sheet, no perspective, no vignette, no cast shadows. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/paper_crinkle.1.png (2048x2048, quality high)",
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 18984 bytes, PSNR 35.33 dB",
        "referenceSeam": {
          "x": 1.117,
          "y": 0.887
        },
        "format": "avif",
        "quality": 64,
        "chroma": "420",
        "bytes": 14253,
        "psnr": 37.12,
        "seam": {
          "x": 1.147,
          "y": 0.888
        }
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 52341 bytes, PSNR 29.32 dB",
        "referenceSeam": {
          "x": 1.05,
          "y": 1.001
        },
        "format": "avif",
        "quality": 58,
        "chroma": "444",
        "bytes": 36930,
        "psnr": 32.13,
        "seam": {
          "x": 1.082,
          "y": 1.022
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 300,
          "cutCost": 0.00321
        },
        "y": {
          "overlap": 320,
          "cutCost": 0.00183
        }
      },
      "wrapStepRatio": {
        "x": 1.046,
        "y": 0.873
      }
    },
    "notes": "Fine crinkle detail for the packing paper, projected triplanar over the generated paper mesh (whose UV atlas is too fragmented to tile across). The normal map adds the small sharp crease facets; the albedo's luminance, normalised to its mean, adds matching facet tone. The paper's hue comes from the mesh's own scan and tint."
  },
  "floor": {
    "roughness": "floor_roughness.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      17.14,
      17.14
    ],
    "repeatTarget": "a 6 × 6 m stage floor (6.0 × 6.0 m)",
    "tileMetres": [
      0.35,
      0.35
    ],
    "size": [
      1024,
      1024
    ],
    "mapSize": [
      1024,
      1024
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      32,
      32,
      31
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Polished black concrete stage floor, power-trowelled and sealed to a deep near-black sheen: very dark charcoal-black with faint cloudy trowel marks, long fine parallel micro-scratches and buffing streaks running mostly in one direction, a few tiny pale specks of aggregate, no reflections of objects, no light sources, no tiles, no grout lines, no cracks. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/floor.3.png (2048x2048, quality high)",
    "roughnessRange": [
      0.12,
      0.32,
      0.219
    ],
    "encoding": {
      "roughness": {
        "reference": "JPEG quality 85 4:4:4, 184223 bytes, PSNR 41.09 dB",
        "referenceSeam": {
          "x": 1.336,
          "y": 1.135
        },
        "format": "avif",
        "quality": 74,
        "chroma": "444",
        "bytes": 131446,
        "psnr": 41.67,
        "seam": {
          "x": 1.342,
          "y": 1.158
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 308,
          "cutCost": 0.00055
        },
        "y": {
          "overlap": 302,
          "cutCost": 0.00035
        }
      },
      "wrapStepRatio": {
        "x": 0.997,
        "y": 1.037
      }
    },
    "notes": "Polished black concrete with buffing streaks. Roughness only: the page shows the floor purely by specular sheen and reflection (a lit albedo reads as grey concrete), so no albedo map ships (albedoMeanSRGB describes the scan). No normal map: at the relief a polished floor needs, an 8-bit normal map adds more quantisation and compression noise to the reflections than signal. The roughness map carries the streaks and the cloudy trowel marks; the page rotates it so the streaks run towards the camera."
  },
  "kraft_closeup": {
    "albedo": "kraft_closeup_albedo.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      1.41,
      1.41
    ],
    "repeatTarget": "the front face seen in the trade close-up (0.4 × 0.4 m)",
    "tileMetres": [
      0.2844,
      0.2844
    ],
    "size": [
      2048,
      2048
    ],
    "mapSize": [
      2048,
      2048
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      180,
      139,
      98
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Brown kraft corrugated shipping-box board, the outer face of a new cardboard box. Warm tan-brown unbleached kraft liner with fine visible wood fibres and tiny darker fibre flecks, very subtle parallel ridges from the flutes underneath running vertically, one or two faint soft crease marks, slight natural tone mottling. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/kraft_outer.2.png (2048x2048, quality high)",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 957850 bytes, PSNR 38.11 dB",
        "referenceSeam": {
          "x": 1.203,
          "y": 1.243
        },
        "format": "avif",
        "quality": 72,
        "chroma": "420",
        "bytes": 622414,
        "psnr": 38.69,
        "seam": {
          "x": 1.216,
          "y": 1.275
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 290,
          "cutCost": 0.00092
        },
        "y": {
          "overlap": 320,
          "cutCost": 0.0008
        }
      },
      "wrapStepRatio": {
        "x": 1.055,
        "y": 1.115
      }
    },
    "scaleMeasured": {
      "periodPx": 56.89,
      "periodsPerTile": 36.0
    },
    "notes": "kraft_outer's own scan built at twice the resolution: the trade close-up blends to it from kraft_outer (the same tile, texel for texel), so the board keeps its fibre at 3x the hero's scale; its luminance also bumps the lighting normal, so the raking key picks the fibre out."
  },
  "label_paper": {
    "albedo": "label_paper_albedo.avif",
    "roughness": "label_paper_roughness.avif",
    "normal": "label_paper_normal.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      2.07,
      1.33
    ],
    "repeatTarget": "the RENT IT label (0.124 × 0.08 m)",
    "tileMetres": [
      0.06,
      0.06
    ],
    "size": [
      1024,
      1024
    ],
    "mapSize": [
      1024,
      1024
    ],
    "shipSize": [
      512,
      512
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      239,
      238,
      235
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Matte white direct-thermal shipping label stock: slightly off-white smooth paper with a very fine, faint paper texture, uniform and blank. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no object outline, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting from all sides. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos, stamps, barcodes, stickers or tape.",
    "source": "work/textures/raw/label_paper.2.png (2048x2048, quality high)",
    "roughnessRange": [
      0.68,
      0.76,
      0.72
    ],
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 23983 bytes, PSNR 42.12 dB",
        "referenceSeam": {
          "x": 2.021,
          "y": 1.175
        },
        "format": "avif",
        "quality": 82,
        "chroma": "420",
        "bytes": 18648,
        "psnr": 43.07,
        "seam": {
          "x": 1.988,
          "y": 0.914
        }
      },
      "roughness": {
        "reference": "JPEG quality 85 4:4:4, 24624 bytes, PSNR 41.10 dB",
        "referenceSeam": {
          "x": 1.924,
          "y": 1.096
        },
        "format": "avif",
        "quality": 76,
        "chroma": "444",
        "bytes": 14351,
        "psnr": 41.27,
        "seam": {
          "x": 1.892,
          "y": 0.856
        }
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 48780 bytes, PSNR 34.46 dB",
        "referenceSeam": {
          "x": 1.861,
          "y": 1.089
        },
        "format": "avif",
        "quality": 58,
        "chroma": "444",
        "bytes": 15442,
        "psnr": 35.99,
        "seam": {
          "x": 1.806,
          "y": 0.907
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 256,
          "cutCost": 0.00018
        },
        "y": {
          "overlap": 240,
          "cutCost": 0.00012
        }
      },
      "wrapStepRatio": {
        "x": 0.954,
        "y": 1.048
      }
    }
  },
  "masking_tape": {
    "albedo": "masking_tape_albedo.avif",
    "normal": "masking_tape_normal.avif",
    "tileable": true,
    "tileAxes": [
      "x",
      "y"
    ],
    "repeatHint": [
      5.04,
      1.2
    ],
    "repeatTarget": "the BUILD IT ALL YOURSELF tape (0.252 × 0.06 m)",
    "tileMetres": [
      0.05,
      0.05
    ],
    "size": [
      1024,
      1024
    ],
    "mapSize": [
      1024,
      1024
    ],
    "shipSize": [
      512,
      512
    ],
    "colorSpace": {
      "albedo": "srgb",
      "normal": "linear",
      "roughness": "linear"
    },
    "albedoMeanSRGB": [
      228,
      212,
      174
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "The paper of beige masking tape, seen straight down and filling the entire frame: pale cream-beige crepe paper with a faint warm yellow tint, a fine irregular crepe crinkle of tiny wavy ridges running across the frame from top to bottom, faint paper fibres, slightly translucent, matte with a very faint satin sheen. Photographic material scan for a PBR texture: perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no edges of the tape, no roll, no perspective, no vignette, no cast shadows, soft even diffuse lighting. Uniform statistics across the whole frame so it can be tiled. Absolutely no text, letters, numbers, logos or marks.",
    "source": "work/textures/raw/masking_tape.1.png (2048x2048, quality high)",
    "normalConvention": "OpenGL: +Y (green) points to the top of the image. Correct as-is when loaded with TextureLoader (flipY = true); negate normalScale.y if a texture is uploaded with flipY = false",
    "encoding": {
      "albedo": {
        "reference": "JPEG quality 86 4:2:0, 51554 bytes, PSNR 36.00 dB",
        "referenceSeam": {
          "x": 1.321,
          "y": 1.235
        },
        "format": "avif",
        "quality": 66,
        "chroma": "420",
        "bytes": 31003,
        "psnr": 36.3,
        "seam": {
          "x": 1.285,
          "y": 1.278
        }
      },
      "normal": {
        "reference": "JPEG quality 85 4:4:4, 240953 bytes, PSNR 27.28 dB",
        "referenceSeam": {
          "x": 0.942,
          "y": 0.964
        },
        "format": "avif",
        "quality": 62,
        "chroma": "444",
        "bytes": 209092,
        "psnr": 32.85,
        "seam": {
          "x": 0.986,
          "y": 1.012
        }
      }
    },
    "seam": {
      "cut": {
        "x": {
          "overlap": 250,
          "cutCost": 0.00057
        },
        "y": {
          "overlap": 302,
          "cutCost": 0.00077
        }
      },
      "wrapStepRatio": {
        "x": 1.046,
        "y": 0.963
      }
    },
    "notes": "Crepe paper of beige masking tape; the crinkle runs across the tape."
  },
  "kraft_star": {
    "albedo": "kraft_star_albedo.jpg",
    "tileable": false,
    "wrap": "mirrored repeat (stars sample small patches)",
    "size": [
      512,
      512
    ],
    "mapSize": [
      512,
      512
    ],
    "colorSpace": {
      "albedo": "srgb"
    },
    "albedoMeanSRGB": [
      181,
      141,
      97
    ],
    "model": "gpt-image-2.5-flare",
    "prompt": "Unbleached brown kraft paper sheet, the smooth thin paper used for folding origami paper stars (not corrugated board). Warm tan-brown with natural tone mottling, fine visible wood-pulp fibres, scattered tiny darker fibre flecks and a few paler fibre strands, a faint soft paper grain. Photographic material scan for a PBR texture: shot straight down, perfectly flat and orthographic, the material fills the entire frame edge to edge with no border, no background, no perspective, no vignette, no cast shadows, no highlights or glare, soft even diffuse lighting. Uniform statistics across the whole frame so it can be tiled. No ridges, no stripes, no creases, no text, letters, numbers, logos or stamps.",
    "source": "work/textures/kraft_star/kraft_star.raw.png (1024x1024, quality high), downsampled to 512 with Lanczos",
    "use": "folded paper stars on the creator page (src/creators/stars.js): albedo detail around its mean, and bump"
  }
}
