accepted

Native WebGPU Cached Clipmap Shadow Lab

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
webgpu-cached-clipmap-shadow
Kind
Canonical Lab
Owning skill
Scalable Real-Time Shadows
Execution
rendering
Three.js
0.185.1
Source hash
sha256:cb4d3abfaab1a84e0fbef28fd523befc0f09ed465690426c58eff739e7b1171c
Published bundle hash
sha256:72e144235093a27db006d320ace064ac03847d86675a96d56284aef9768ad47a
Build revision
sha256:348d7584a398e339bdf08ac952ded6eb67b5ed813416a6fe3ba445615164b63a
Renderer
WebGPURenderer
Backend
WebGPU
Evidence contract
v2
Tracked release bundle
Present

Claim verdicts

visualCorrectnessINSUFFICIENT_EVIDENCE
mechanismCorrectnessPASS
performanceComplianceNOT_CLAIMED
gpuAttributionNOT_CLAIMED
lifecycleStabilityPASS
visualErrorPASS

Promoted same-lab media

Required capability and runtime proof

Capabilities

native-webgpuaccepted

capture-session WebGPUBackend device identity + raw-capture-session evidence-manifest validates under current sourceHash.

comparison-depth-texturesincomplete

primary presentation capture only; specialized shadow-depth mechanism package remains residual.

Runtime proof

renderer-initaccepted

capture-session reports initialized===true and active device generation.

backend-is-webgpuaccepted

rendererBackendEvidence.isWebGPUBackend===true on correctness capture-session.

mechanism-reachableincomplete

final/no-post/diagnostics presentation modes captured; specialized clipmap diagnostics residual.

aligned-readbackaccepted

normalized/transport padded RGBA8 readbacks present for presentation targets.

receiver-consumes-committed-levelsincomplete

specialized candidate package residual.

actual-depth-resource-readbackincomplete

specialized shadow-depth diagnostic residual.

sequential-child-shadow-submissionsincomplete

specialized candidate package residual.

scheduler-fairnessincomplete

specialized scheduler diagnostic residual.

caster-visible-shadow-parityincomplete

specialized silhouette-parity diagnostic residual.

Capture state

FieldPublished value
Primary route/demos/webgpu-cached-clipmap-shadow/
Camerasnear, design, far
Seeds0x00000001, 0x9e3779b9
Modesfinal, shadow-contribution, shadow-depth, level-centers, level-validity, scheduler, silhouette-parity, owner-graph
Capture timeNot present in the promoted report data
Adapter identity{"source":"exact retained renderer.backend.device reference after renderer.init()","backendType":"WebGPUBackend","deviceType":"GPUDevice","deviceLabel":"","deviceIdentityVerified":true,"lossPromiseObservedOnActualDevice":true,"rendererDeviceGeneration":1}
Raw readback hashesNot present in the promoted preview summary

Fixed routes

KindIdStartup stateStatus
scenariopersistent-coverage{"scenario":"persistent-coverage","tier":"high","mode":"final"}accepted
scenariobounded-baseline{"scenario":"bounded-baseline","tier":"high","mode":"final"}accepted
scenariodepth-span{"scenario":"depth-span","tier":"high","mode":"final"}accepted
scenariofixed-footprint{"scenario":"fixed-footprint","tier":"high","mode":"final"}accepted
scenarioslow-subtexel-pan{"scenario":"slow-subtexel-pan","tier":"high","mode":"level-centers"}accepted
scenariobias-sweep{"scenario":"bias-sweep","tier":"high","mode":"shadow-contribution"}accepted
scenarioswept-caster-invalidation{"scenario":"swept-caster-invalidation","tier":"high","mode":"level-validity"}accepted
scenarioage-priority-round-robin{"scenario":"age-priority-round-robin","tier":"high","mode":"scheduler"}accepted
scenarioalpha-displaced-instanced-morph{"scenario":"alpha-displaced-instanced-morph","tier":"high","mode":"silhouette-parity"}accepted
mechanismbounded-shadow{"scenario":"bounded-baseline","tier":"high","mode":"final"}accepted
mechanismcsm{"scenario":"depth-span","tier":"high","mode":"final"}accepted
mechanismtiled-shadow{"scenario":"fixed-footprint","tier":"high","mode":"final"}accepted
mechanismcached-clipmap{"scenario":"persistent-coverage","tier":"high","mode":"final"}accepted
mechanismtexel-snap-and-pan{"scenario":"slow-subtexel-pan","tier":"high","mode":"level-centers"}accepted
mechanismbias-sweep{"scenario":"bias-sweep","tier":"high","mode":"shadow-contribution"}accepted
mechanismtargeted-invalidation{"scenario":"swept-caster-invalidation","tier":"high","mode":"level-validity"}accepted
mechanismscheduler-fairness{"scenario":"age-priority-round-robin","tier":"high","mode":"scheduler"}accepted
mechanismcaster-position-parity{"scenario":"alpha-displaced-instanced-morph","tier":"high","mode":"silhouette-parity"}accepted
tierhigh{"tier":"high"}accepted
tierultra{"tier":"ultra"}accepted
tierreduced{"tier":"reduced"}accepted

Locked tier contracts

high · accepted
{
  "targetClass": "current general-purpose WebGPU adapter",
  "frameTargetMs": {
    "value": 16.67,
    "unit": "ms",
    "label": "Gated",
    "source": "Authored 60 Hz frame allowance; current-adapter timing evidence pending"
  },
  "resolutionPolicy": {
    "width": 1920,
    "height": 1080,
    "dprCap": 1.5
  },
  "mechanismLimits": {
    "dynamicLevels": 2,
    "updateBudget": 2,
    "correctionBudget": 2,
    "maxCacheAgeFrames": 64
  },
  "resourceLimits": {
    "mapSizes": [
      1024,
      1024,
      1024,
      512,
      512,
      512,
      512
    ],
    "nominalMemoryGateBytes": 67108864
  },
  "degradationFromPrevious": [
    "reduce the two finest map dimensions",
    "reduce ordinary and correction update budgets"
  ],
  "preservedInvariants": [
    "receiver-backed child shadow nodes",
    "stable light basis",
    "correctness invalidation before age refresh",
    "one directional illumination owner"
  ]
}
ultra · accepted
{
  "targetClass": "current high-end WebGPU adapter",
  "frameTargetMs": {
    "value": 16.67,
    "unit": "ms",
    "label": "Gated",
    "source": "Authored 60 Hz frame allowance; current-adapter timing evidence pending"
  },
  "resolutionPolicy": {
    "width": 1920,
    "height": 1080,
    "dprCap": 2
  },
  "mechanismLimits": {
    "dynamicLevels": 2,
    "updateBudget": 3,
    "correctionBudget": 3,
    "maxCacheAgeFrames": 48
  },
  "resourceLimits": {
    "mapSizes": [
      2048,
      2048,
      1024,
      1024,
      512,
      512,
      512
    ],
    "nominalMemoryGateBytes": 134217728
  },
  "degradationFromPrevious": [],
  "preservedInvariants": [
    "receiver-backed child shadow nodes",
    "stable light basis",
    "correctness invalidation before age refresh",
    "one directional illumination owner"
  ]
}
reduced · accepted
{
  "targetClass": "binding and memory constrained WebGPU adapter",
  "frameTargetMs": {
    "value": 16.67,
    "unit": "ms",
    "label": "Gated",
    "source": "Authored 60 Hz frame allowance; target-adapter timing evidence pending"
  },
  "resolutionPolicy": {
    "width": 1280,
    "height": 720,
    "dprCap": 1
  },
  "mechanismLimits": {
    "dynamicLevels": 1,
    "updateBudget": 1,
    "correctionBudget": 1,
    "maxCacheAgeFrames": 96
  },
  "resourceLimits": {
    "mapSizes": [
      512,
      512,
      512,
      256,
      256,
      256,
      256
    ],
    "nominalMemoryGateBytes": 33554432
  },
  "degradationFromPrevious": [
    "halve shadow map dimensions",
    "update one dynamic and one queued level at a time"
  ],
  "preservedInvariants": [
    "receiver-backed child shadow nodes",
    "stable light basis",
    "correctness invalidation before age refresh",
    "one directional illumination owner"
  ]
}

Limitations

  • Correctness capture records native r185 WebGPUBackend with device identity proof.
  • Physical multi-scenario shadow matrix and GPU timestamps remain incomplete.
  • Named-adapter 60 Hz performance is NOT_CLAIMED.