{
  "title": "WaterBottle ORM material and texel inspection",
  "source_revision": "edc7c9e67c639d230715049ee31f9a96a6babbbe",
  "sources": {
    "gltf": "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/edc7c9e67c639d230715049ee31f9a96a6babbbe/Models/WaterBottle/glTF/WaterBottle.gltf",
    "texture": "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/edc7c9e67c639d230715049ee31f9a96a6babbbe/Models/WaterBottle/glTF/WaterBottle_occlusionRoughnessMetallic.png",
    "license": "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/edc7c9e67c639d230715049ee31f9a96a6babbbe/Models/WaterBottle/LICENSE.md",
    "specification": "https://raw.githubusercontent.com/KhronosGroup/glTF/8e798b02d254cea97659a333cfcb20875b62bdd4/specification/2.0/Specification.adoc",
    "factor_schema": "https://raw.githubusercontent.com/KhronosGroup/glTF/8e798b02d254cea97659a333cfcb20875b62bdd4/specification/2.0/schema/material.pbrMetallicRoughness.schema.json",
    "uv_schema": "https://raw.githubusercontent.com/KhronosGroup/glTF/8e798b02d254cea97659a333cfcb20875b62bdd4/specification/2.0/schema/textureInfo.schema.json",
    "occlusion_schema": "https://raw.githubusercontent.com/KhronosGroup/glTF/8e798b02d254cea97659a333cfcb20875b62bdd4/specification/2.0/schema/material.occlusionTextureInfo.schema.json"
  },
  "asset_credit": "WaterBottle sample: Microsoft; hosted by Khronos Group. Model-associated files are CC0-1.0; repository metadata has separate terms. No source texture or mesh is redistributed in this report.",
  "git_blob_sha1": {
    "gltf": "9f23f3add06376ba56326a9e3a99223a304c60a5",
    "texture": "0999b4fd02a582785c39055e86fed916eb5df486"
  },
  "material_name": "BottleMat",
  "bindings": [
    {
      "role": "metallicRoughnessTexture",
      "texture_index": 1,
      "image_index": 1,
      "image_uri": "WaterBottle_occlusionRoughnessMetallic.png",
      "texCoord_explicit": null,
      "texCoord_effective": 0
    },
    {
      "role": "occlusionTexture",
      "texture_index": 1,
      "image_index": 1,
      "image_uri": "WaterBottle_occlusionRoughnessMetallic.png",
      "texCoord_explicit": null,
      "texCoord_effective": 0
    }
  ],
  "factors": {
    "metallicFactor_explicit": null,
    "metallicFactor_effective": 1,
    "roughnessFactor_explicit": null,
    "roughnessFactor_effective": 1,
    "occlusionStrength_explicit": null,
    "occlusionStrength_effective": 1
  },
  "primitive_texcoord_attributes": [
    "TEXCOORD_0"
  ],
  "texture": {
    "width": 2048,
    "height": 2048,
    "mode": "RGB",
    "file_bytes": 3577832,
    "sha256": "10cc809d9762e8c671f1ae73618dd5fdd07792d2c6ec9c4691cdb991617c9369",
    "channel_extrema": {
      "R": [
        0,
        255
      ],
      "G": [
        0,
        203
      ],
      "B": [
        0,
        255
      ]
    },
    "samples": [
      {
        "x": 0,
        "y": 0,
        "RGB_8bit": [
          233,
          78,
          0
        ],
        "occlusion_R": 0.913725,
        "roughness_G": 0.305882,
        "metallic_B": 0.0
      },
      {
        "x": 512,
        "y": 512,
        "RGB_8bit": [
          241,
          96,
          251
        ],
        "occlusion_R": 0.945098,
        "roughness_G": 0.376471,
        "metallic_B": 0.984314
      },
      {
        "x": 1024,
        "y": 1024,
        "RGB_8bit": [
          255,
          100,
          248
        ],
        "occlusion_R": 1.0,
        "roughness_G": 0.392157,
        "metallic_B": 0.972549
      },
      {
        "x": 1536,
        "y": 1536,
        "RGB_8bit": [
          255,
          193,
          0
        ],
        "occlusion_R": 1.0,
        "roughness_G": 0.756863,
        "metallic_B": 0.0
      }
    ]
  },
  "synthetic_factor_example": {
    "not_a_sample_measurement": true,
    "input_RGB_linear": [
      0.2,
      0.6,
      0.8
    ],
    "occlusionStrength": 0.5,
    "roughnessFactor": 0.5,
    "metallicFactor": 0.25,
    "effective_occlusion": 0.6,
    "effective_roughness": 0.3,
    "effective_metallic": 0.2
  },
  "method": {
    "pixel_coordinates": "Integer coordinates from top-left; x increases right, y increases down. Raw stored RGB samples are read without color conversion, filtering, or UV lookup.",
    "normalized_values": "Each 8-bit channel divided by 255; six decimal places in report. Effective glTF defaults resolved from specification.",
    "reproduction": "Download the exact pinned glTF and PNG, install Pillow if needed, then run the companion inspect-orm.py with those two local input files. The script rejects different source bytes."
  },
  "limits": [
    "File/material inspection, not a rendered scene, importer validation, or engine test.",
    "Individual atlas texels are not identified as visible surface points; no UV, filtering, mip, or lighting evaluation was performed.",
    "Channel extrema include the whole image, including atlas padding; they are not a visual-quality score.",
    "No performance, compression, memory, or generated-asset quality measurement is provided."
  ]
}
