@forgeax/engine-runtime 0.1.7 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +45 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/helpers/standard-material-manifest.d.ts +12 -0
  4. package/dist/__tests__/helpers/standard-material-manifest.d.ts.map +1 -0
  5. package/dist/__tests__/helpers/tilemap-assets.d.ts.map +1 -1
  6. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts +2 -0
  7. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts.map +1 -0
  8. package/dist/__tests__/render-environment-consumer.integration.test.d.ts +2 -0
  9. package/dist/__tests__/render-environment-consumer.integration.test.d.ts.map +1 -0
  10. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -1
  11. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -1
  12. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts +2 -0
  13. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts.map +1 -0
  14. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts +2 -0
  15. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts.map +1 -0
  16. package/dist/__tests__/texture-dimensions.browser.test.d.ts +2 -0
  17. package/dist/__tests__/texture-dimensions.browser.test.d.ts.map +1 -0
  18. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts +2 -0
  19. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts.map +1 -0
  20. package/dist/backend-selection.d.ts.map +1 -1
  21. package/dist/createRenderer.d.ts.map +1 -1
  22. package/dist/index.mjs +21 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/renderer-host.d.ts +2 -1
  25. package/dist/renderer-host.d.ts.map +1 -1
  26. package/dist/renderer-host.mjs +21 -2
  27. package/dist/renderer-host.mjs.map +1 -1
  28. package/package.json +30 -30
  29. package/src/__tests__/asset-registry.recursive.spec.ts +12 -18
  30. package/src/__tests__/asset.unit.test.ts +28 -25
  31. package/src/__tests__/basis-catalog-dispatch.integration.test.ts +10 -9
  32. package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +12 -10
  33. package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +2 -3
  34. package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +12 -11
  35. package/src/__tests__/dawn/material-alpha.dawn.test.ts +2 -3
  36. package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +2 -3
  37. package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +2 -3
  38. package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +2 -3
  39. package/src/__tests__/dawn/upload-texture.dawn.test.ts +4 -6
  40. package/src/__tests__/derive-bgl-integration.test.ts +11 -0
  41. package/src/__tests__/equirect-bc6h.integration.test.ts +6 -4
  42. package/src/__tests__/errors.unit.test.ts +56 -0
  43. package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +4 -5
  44. package/src/__tests__/four-path-compression.integration.test.ts +2 -2
  45. package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +461 -18
  46. package/src/__tests__/geometry.unit.test.ts +3 -1
  47. package/src/__tests__/gpu-resource-cow-survivor.test.ts +2 -3
  48. package/src/__tests__/helpers/standard-material-manifest.ts +45 -0
  49. package/src/__tests__/helpers/tilemap-assets.ts +3 -4
  50. package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +4 -2
  51. package/src/__tests__/lights.unit.test.ts +38 -17
  52. package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +3 -4
  53. package/src/__tests__/loader-name-survival.test.ts +2 -3
  54. package/src/__tests__/material-texture-dimension-mismatch.unit.test.ts +18 -0
  55. package/src/__tests__/material-texture-uv-scale.unit.test.ts +18 -16
  56. package/src/__tests__/materials.unit.test.ts +2 -0
  57. package/src/__tests__/mip-gate.unit.test.ts +11 -8
  58. package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +2 -3
  59. package/src/__tests__/new-kind-refs-contract.test.ts +2 -3
  60. package/src/__tests__/pbr-pipeline.unit.test.ts +31 -12
  61. package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -4
  62. package/src/__tests__/pipeline.unit.test.ts +23 -21
  63. package/src/__tests__/point-light-shadow.unit.test.ts +6 -5
  64. package/src/__tests__/render-environment-consumer.integration.test.ts +33 -0
  65. package/src/__tests__/render-error-exhaustive.test-d.ts +86 -0
  66. package/src/__tests__/render-feature-prepared-graphics.fixture.ts +10 -0
  67. package/src/__tests__/render-system-extract.test.ts +4 -6
  68. package/src/__tests__/render-system-mega.test.ts +3 -1
  69. package/src/__tests__/render-system-record-multi-material-textureview.test.ts +7 -7
  70. package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +5 -4
  71. package/src/__tests__/render-system-record.test.ts +8 -6
  72. package/src/__tests__/renderer-host-fallback.unit.test.ts +112 -0
  73. package/src/__tests__/renderer-lifecycle.integration.test.ts +10 -0
  74. package/src/__tests__/renderer-surface.unit.test.ts +66 -0
  75. package/src/__tests__/shadow-csm-cascade-loadop.test.ts +5 -1
  76. package/src/__tests__/shadow-csm-tile-consistency.test.ts +5 -1
  77. package/src/__tests__/shadow-fields-observable.dawn.test.ts +56 -39
  78. package/src/__tests__/skinned-shadow-mixed.dawn.test.ts +385 -0
  79. package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +4 -6
  80. package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +11 -9
  81. package/src/__tests__/ssao-passes.test.ts +28 -12
  82. package/src/__tests__/systems.unit.test.ts +63 -33
  83. package/src/__tests__/texture-dimensions.browser.test.ts +127 -0
  84. package/src/__tests__/transcode-fallback.unit.test.ts +5 -1
  85. package/src/__tests__/volumetric-fog-record-recovery.integration.test.ts +180 -0
  86. package/src/backend-selection.ts +4 -0
  87. package/src/createRenderer.ts +3 -0
  88. package/src/renderer-host.ts +30 -3
@@ -418,14 +418,30 @@ type RuntimeLayerError = RenderError | AssetRuntimeError | SkinError;
418
418
  return 'recovery failed';
419
419
  case 'cleanup-failed':
420
420
  return 'cleanup failed';
421
+ case 'scene-data-unavailable':
422
+ return 'scene data unavailable';
421
423
  case 'frame-receipt-stale':
422
424
  return 'frame receipt stale';
423
425
  case 'renderer-contract-failed':
424
426
  return 'renderer contract failed';
425
427
  case 'observation-unavailable':
426
428
  return 'observation unavailable';
429
+ case 'taa-unavailable':
430
+ return 'taa unavailable';
427
431
  case 'shadow-invalid-config':
428
432
  return 'shadow invalid config';
433
+ case 'environment-source-conflict':
434
+ return 'environment source conflict';
435
+ case 'fog-cardinality':
436
+ return 'fog cardinality';
437
+ case 'taa-caps-insufficient':
438
+ return 'taa caps insufficient';
439
+ case 'environment-generation-failed':
440
+ return 'environment generation failed';
441
+ case 'atmosphere-invalid-parameter':
442
+ return 'atmosphere invalid parameter';
443
+ case 'owner-stage-failed':
444
+ return 'owner stage failed';
429
445
  case 'skin-joint-count-exceeded':
430
446
  return 'skin joint count exceeded';
431
447
  case 'skin-joint-despawned':
@@ -512,6 +528,18 @@ type RuntimeLayerError = RenderError | AssetRuntimeError | SkinError;
512
528
  return 'points lines budget exceeded';
513
529
  case 'points-lines-prepare-failed':
514
530
  return 'points lines prepare failed';
531
+ case 'transmission-capability-missing':
532
+ return 'transmission capability missing';
533
+ case 'projector-binding-failed':
534
+ return 'projector binding failed';
535
+ case 'volume-owner-conflict':
536
+ return 'volume owner conflict';
537
+ case 'volume-density-shape-mismatch':
538
+ return 'volume density shape mismatch';
539
+ case 'volume-invalid-bounds':
540
+ return 'volume invalid bounds';
541
+ case 'volume-invalid-parameters':
542
+ return 'volume invalid parameters';
515
543
  }
516
544
  }
517
545
  expect(exhaustive('equirect-projection-failed')).toBe('equirect projection failed');
@@ -562,14 +590,30 @@ type RuntimeLayerError = RenderError | AssetRuntimeError | SkinError;
562
590
  return 'ok';
563
591
  case 'cleanup-failed':
564
592
  return 'ok';
593
+ case 'scene-data-unavailable':
594
+ return 'ok';
565
595
  case 'frame-receipt-stale':
566
596
  return 'ok';
567
597
  case 'renderer-contract-failed':
568
598
  return 'ok';
569
599
  case 'observation-unavailable':
570
600
  return 'ok';
601
+ case 'taa-unavailable':
602
+ return 'ok';
571
603
  case 'shadow-invalid-config':
572
604
  return 'ok';
605
+ case 'environment-source-conflict':
606
+ return 'ok';
607
+ case 'fog-cardinality':
608
+ return 'ok';
609
+ case 'taa-caps-insufficient':
610
+ return 'ok';
611
+ case 'environment-generation-failed':
612
+ return 'ok';
613
+ case 'atmosphere-invalid-parameter':
614
+ return 'ok';
615
+ case 'owner-stage-failed':
616
+ return 'ok';
573
617
  case 'skin-joint-count-exceeded':
574
618
  return 'ok';
575
619
  case 'skin-joint-despawned':
@@ -644,6 +688,18 @@ type RuntimeLayerError = RenderError | AssetRuntimeError | SkinError;
644
688
  return 'ok';
645
689
  case 'points-lines-prepare-failed':
646
690
  return 'ok';
691
+ case 'transmission-capability-missing':
692
+ return 'ok';
693
+ case 'projector-binding-failed':
694
+ return 'ok';
695
+ case 'volume-owner-conflict':
696
+ return 'ok';
697
+ case 'volume-density-shape-mismatch':
698
+ return 'ok';
699
+ case 'volume-invalid-bounds':
700
+ return 'ok';
701
+ case 'volume-invalid-parameters':
702
+ return 'ok';
647
703
  }
648
704
  }
649
705
  expect(exhaustive('hdrp-deferred-caps-insufficient')).toBe('ok');
@@ -12,16 +12,15 @@
12
12
  // not actually happen — the 4th texture (heightTexture) would silently fall
13
13
  // through.
14
14
  //
15
- // Scope of the gate — the three USER-REGION texture fields only:
15
+ // Scope of the gate — the three user-authored base texture fields:
16
16
  // baseColorTexture / metallicRoughnessTexture / normalTexture
17
17
  // These are the fields `derive(default-standard-pbr).textureFieldNames`
18
18
  // produces and that w7/w8 route through iteration.
19
19
  //
20
20
  // Deliberately NOT gated (legitimate residual naming):
21
- // - emissiveTexture / occlusionTexture: these live in the engine-injection
22
- // LIGHTMAP region (appendInjection 'lightmap'), are NOT in any paramSchema
23
- // textureFieldNames set, and are assembled by the injection path — naming
24
- // them there is the engine-managed region, not user-region hardcoding.
21
+ // - emissiveTexture / occlusionTexture: legacy engine-owned snapshot fields
22
+ // still have named reads, while the production Standard BGL no longer adds
23
+ // a duplicate lightmap region.
25
24
  // - USER_REGION_TEXTURE_FIELDS in derive-paramschema.ts: the 3-field
26
25
  // register-time under-declaration validator (charter P3 safety net from
27
26
  // the 4.3 blending regression). Orthogonal to binding; lives in a
@@ -216,10 +216,10 @@ describe('w16: 4-path compressed-fixture loading', () => {
216
216
  guid: GUID_TEX,
217
217
  kind: 'texture',
218
218
  payload: {
219
- width: 4,
220
- height: 4,
219
+ shape: { viewDimension: '2d', extent: { width: 4, height: 4 } },
221
220
  format: 'rgba8unorm',
222
221
  colorSpace: 'srgb',
222
+ mips: { kind: 'none' },
223
223
  },
224
224
  refs: [],
225
225
  artifacts: {