@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
package/README.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # `@forgeax/engine-runtime`
2
2
 
3
+ ## Host entry and frame evidence
4
+
5
+ `createRenderer` is the host assembly entry. It selects the backend services
6
+ and returns the render package's single `Renderer` contract; game code does
7
+ not construct a device, graph, or second submit path. Pass the attached lease,
8
+ camera, and environment facts to `draw`, then bind diagnostics to the
9
+ returned `FrameReceipt`:
10
+
11
+ ```ts
12
+ const result = await createRenderer(canvas);
13
+ if (!result.ok) throw result.error;
14
+ const renderer = result.value;
15
+ const lease = renderer.attach(world);
16
+ if (!lease.ok) throw lease.error;
17
+ const frame = renderer.draw({
18
+ leases: [lease.value],
19
+ camera: { lease: lease.value },
20
+ environment: { lease: lease.value },
21
+ });
22
+ if (!frame.ok) throw frame.error;
23
+ const facts = renderer.inspect();
24
+ const observation = await renderer.observe(frame.value, { include: ['timings'] });
25
+ void facts;
26
+ void observation;
27
+ ```
28
+
29
+ ## Progressive recovery index
30
+
31
+ Start with the public host route: `createRenderer`, `attach`, and `draw`. Then
32
+ use `inspect()` for detached state and `observe(receipt, request)` for evidence
33
+ bound to the successful receipt. If `draw` returns an error, use its closed
34
+ `code` and typed `detail` to repair the named producer or capability, and retry
35
+ the identical request. Do not parse text or reach into graph, device, or
36
+ history state.
37
+
38
+ Carrier manifests and schemas expose current source/build provenance, backend,
39
+ runner, and frame identity. Structural graph checks are distinct from real
40
+ Browser/Dawn readback and PNG evidence; a historical oracle is reference data,
41
+ not a runtime pass. `unavailable` remains an explicit result.
42
+
43
+ `inspect()` is detached and bounded. `observe()` is receipt-bound, so a
44
+ stale receipt is a structured failure rather than an implicit read of the
45
+ current frame. Repair the owner named by `error.detail`, then retry the same
46
+ request.
47
+
3
48
  ## Render happy path
4
49
 
5
50
  `createRenderer -> attach -> draw -> inspect/observe/recover` assembles one