accepted

Image Pipeline and Material-context AO Integration

This report separates published implementation state from accepted evidence. Every value below comes from the schema-v2 registry, the emitted source manifest, or promoted same-lab artifacts.

Lab id
integration-image-pipeline-ao
Kind
Integration Demo
Owning skill
Ambient Contact Shading
Execution
rendering
Three.js
0.185.1
Source hash
sha256:4399f1417fde0b9b36d8c262a938d03b0c167b73301a03d5ca8be4aaffb072e0
Published bundle hash
sha256:9b7e25a72db9101900090b6e81e639f10b160790722ec62991463a3f22643832
Build revision
sha256:348d7584a398e339bdf08ac952ded6eb67b5ed813416a6fe3ba445615164b63a
Renderer
WebGPURenderer
Backend
WebGPU
Evidence contract
v2
Tracked release bundle
Present

Claim verdicts

visualCorrectnessPASS
mechanismCorrectnessPASS
performanceComplianceNOT_CLAIMED
gpuAttributionNOT_CLAIMED
lifecycleStabilityPASS
visualErrorPASS

Promoted same-lab media

Required capability and runtime proof

Capabilities

native-webgpuaccepted

capture-session.json: nativeWebGPU=true and rendererBackendEvidence.deviceIdentityVerified=true after renderer.init().

standard-depthaccepted

Proven by capture-session runtime metrics.

Runtime proof

renderer-initaccepted

Recorded in capture-session correctness lane (renderer-init).

backend-is-webgpuaccepted

Recorded in capture-session correctness lane (backend-is-webgpu).

mechanism-reachableaccepted

Recorded in capture-session correctness lane (mechanism-reachable).

aligned-readbackaccepted

Recorded in capture-session correctness lane (aligned-readback).

exclusive-ownersaccepted

Recorded in capture-session correctness lane (exclusive-owners).

one-prepass-one-lit-passaccepted

Recorded in capture-session correctness lane (one-prepass-one-lit-pass).

current-adapter-timingaccepted

Correctness capture disables timestamp queries; hardwarePerformance remains NOT_CLAIMED (no invented timing).

Capture state

FieldPublished value
Primary route/demos/integration-image-pipeline-ao/
Camerasnear, design, far
Seeds0x00000001, 0x9e3779b9
Modesfinal, raw-ao, denoised-ao, temporal-ao, normal, depth, velocity, indirect-visibility, owner-graph
Capture timeNot present in the promoted report data
Adapter identity{"source":"LabController.getMetrics","backendType":"WebGPU","deviceType":"unknown","deviceLabel":"","deviceIdentityVerified":false}
Raw readback hashesNot present in the promoted preview summary

Fixed routes

KindIdStartup stateStatus
scenariowall-receiver{"scenario":"wall-receiver","mode":"final"}accepted
scenariodirect-emissive{"scenario":"direct-emissive","mode":"indirect-visibility"}accepted
mechanismshared-gbuffer{"mode":"normal"}accepted
mechanismindirect-only-application{"mode":"indirect-visibility"}accepted
mechanismowner-graph{"mode":"owner-graph"}accepted
tierultra{"tier":"ultra"}accepted
tierhigh{"tier":"high"}accepted
tiermedium{"tier":"medium"}accepted

Locked tier contracts

ultra · accepted
{
  "targetClass": "current-adapter",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "aoScale": {
      "value": 0.5,
      "unit": "ratio",
      "label": "Authored",
      "source": "AO ultra starting tier"
    }
  },
  "mechanismLimits": {
    "samples": {
      "value": 16,
      "unit": "samples",
      "label": "Authored",
      "source": "AO ultra starting tier"
    }
  },
  "resourceLimits": {},
  "degradationFromPrevious": [],
  "preservedInvariants": [
    "one shared gbuffer owner",
    "one prepass plus one lit pass",
    "indirect-only application",
    "one tone/output owner"
  ]
}
high · accepted
{
  "targetClass": "current-adapter",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "aoScale": {
      "value": 0.5,
      "unit": "ratio",
      "label": "Authored",
      "source": "AO high starting tier"
    }
  },
  "mechanismLimits": {
    "samples": {
      "value": 12,
      "unit": "samples",
      "label": "Authored",
      "source": "AO high starting tier"
    }
  },
  "resourceLimits": {},
  "degradationFromPrevious": [
    "reduce GTAO samples"
  ],
  "preservedInvariants": [
    "one shared gbuffer owner",
    "one prepass plus one lit pass",
    "indirect-only application",
    "one tone/output owner"
  ]
}
medium · accepted
{
  "targetClass": "current-adapter",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "aoScale": {
      "value": 0.33,
      "unit": "ratio",
      "label": "Authored",
      "source": "AO medium starting tier"
    }
  },
  "mechanismLimits": {
    "samples": {
      "value": 8,
      "unit": "samples",
      "label": "Authored",
      "source": "AO medium starting tier"
    },
    "reconstruction": "raw"
  },
  "resourceLimits": {},
  "degradationFromPrevious": [
    "reduce GTAO samples",
    "reduce AO resolution",
    "remove denoise from the active material-context path"
  ],
  "preservedInvariants": [
    "one shared gbuffer owner",
    "one prepass plus one lit pass",
    "indirect-only application",
    "one tone/output owner"
  ]
}

Limitations

  • Evidence pixels are native-WebGPU readbacks from threejs-ambient-contact-shading/examples/integration-image-pipeline-ao/index.html (the live demo), not substitute gallery art.
  • Tracked v2 release bundle: docs/visual-validation/integration-image-pipeline-ao/bundle.
  • hardwarePerformance remains NOT_CLAIMED without named-adapter GPU timestamps.