verify-roof-quality-pilot.mjs 2.6 KB

12345678910111213141516171819202122232425262728293031
  1. // Re-verify the saved trial using today's generator, without replacing any asset.
  2. import assert from 'node:assert/strict'
  3. import {readFileSync} from 'node:fs'
  4. import {createHash} from 'node:crypto'
  5. import {textureCoarseRoofs} from './texture-coarse-roofs.mjs'
  6. import {unpackInstanceBuffers} from './instance-buffer-codec.mjs'
  7. import {decodePrimitive} from './instance-safe-primitives.mjs'
  8. import {accessorValues} from './instance-repeated-meshes.mjs'
  9. import {tileRasterBudget} from './raster-budget.mjs'
  10. const dir='.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/roof-quality-pilot/',report=JSON.parse(readFileSync(dir+'report.json')),sha=b=>createHash('sha256').update(b).digest('hex')
  11. for(const row of report.results){
  12. const raw=readFileSync(row.sourcePath);assert.equal(sha(raw),row.sourceSha256)
  13. const defaultResult=textureCoarseRoofs(raw,{maxDimension:64})
  14. const currentImage=readFileSync(dir+`region-${row.region}-${row.uri.slice(0,-4)}-current.jpg`)
  15. assert.equal(defaultResult.report.rasterSha256,sha(currentImage),'default repro matches historical raster')
  16. const p=row.processed.processing,generated=textureCoarseRoofs(raw,{maxDimension:p.maxDimension,metresPerPixel:p.requestedMetresPerPixel,sharpenAmount:p.sharpenAmount,jpegQuality:p.jpegQuality})
  17. const bytes=readFileSync(row.pilotAsset);assert.equal(sha(bytes),row.pilotAssetSha256)
  18. const saved=unpackInstanceBuffers(bytes),fresh=unpackInstanceBuffers(generated.bytes)
  19. assert.equal(generated.report.rasterSha256,row.processed.rasterSha256)
  20. assert.deepEqual(saved.json.nodes,fresh.json.nodes)
  21. for(let i=0;i<saved.json.meshes[0].primitives.length;i++){
  22. const a=saved.json.meshes[0].primitives[i],b=fresh.json.meshes[0].primitives[i]
  23. assert.deepEqual(decodePrimitive(saved.json,saved.bin,a),decodePrimitive(fresh.json,fresh.bin,b))
  24. if(b.attributes.TEXCOORD_0!==undefined)assert.deepEqual(accessorValues(saved.json,saved.bin,a.attributes.TEXCOORD_0),accessorValues(fresh.json,fresh.bin,b.attributes.TEXCOORD_0))
  25. }
  26. const images=saved.json.images.map(im=>{const v=saved.json.bufferViews[im.bufferView];return{mimeType:im.mimeType,bytes:saved.bin.subarray(v.byteOffset,v.byteOffset+v.byteLength)}})
  27. assert.deepEqual(tileRasterBudget(images,saved.json.textures),row.rasterBudget)
  28. for(const s of row.processed.sourceTiles)assert.equal(sha(readFileSync(s.path)),s.sha256)
  29. }
  30. assert.ok(report.region25PilotEstimate<96*1024*1024)
  31. console.log(JSON.stringify({passed:true,pilots:report.results.length,defaultRasterBitwise:true,freshProcessedRasterBitwise:true,geometryAndUv:true,allSourceHashes:true,regionEstimate:report.region25PilotEstimate,configured:false}))