@aardworx/wombat.rendering 0.19.23 → 0.19.25

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 (101) hide show
  1. package/dist/core/elementType.d.ts +2 -0
  2. package/dist/core/elementType.d.ts.map +1 -1
  3. package/dist/core/elementType.js +10 -0
  4. package/dist/core/elementType.js.map +1 -1
  5. package/dist/core/provider.d.ts.map +1 -1
  6. package/dist/core/provider.js +65 -32
  7. package/dist/core/provider.js.map +1 -1
  8. package/dist/core/renderObject.d.ts +9 -0
  9. package/dist/core/renderObject.d.ts.map +1 -1
  10. package/dist/resources/preparedRenderObject.d.ts.map +1 -1
  11. package/dist/resources/preparedRenderObject.js +19 -2
  12. package/dist/resources/preparedRenderObject.js.map +1 -1
  13. package/dist/runtime/derivedModes/modeKeyCpu.d.ts +2 -12
  14. package/dist/runtime/derivedModes/modeKeyCpu.d.ts.map +1 -1
  15. package/dist/runtime/derivedModes/modeKeyCpu.js +30 -13
  16. package/dist/runtime/derivedModes/modeKeyCpu.js.map +1 -1
  17. package/dist/runtime/derivedModes/partitionDispatcher.d.ts +11 -0
  18. package/dist/runtime/derivedModes/partitionDispatcher.d.ts.map +1 -1
  19. package/dist/runtime/derivedModes/partitionDispatcher.js +31 -0
  20. package/dist/runtime/derivedModes/partitionDispatcher.js.map +1 -1
  21. package/dist/runtime/derivedUniforms/dispatch.d.ts +5 -1
  22. package/dist/runtime/derivedUniforms/dispatch.d.ts.map +1 -1
  23. package/dist/runtime/derivedUniforms/dispatch.js +28 -13
  24. package/dist/runtime/derivedUniforms/dispatch.js.map +1 -1
  25. package/dist/runtime/derivedUniforms/records.d.ts +15 -0
  26. package/dist/runtime/derivedUniforms/records.d.ts.map +1 -1
  27. package/dist/runtime/derivedUniforms/records.js +81 -14
  28. package/dist/runtime/derivedUniforms/records.js.map +1 -1
  29. package/dist/runtime/derivedUniforms/sceneIntegration.d.ts +6 -0
  30. package/dist/runtime/derivedUniforms/sceneIntegration.d.ts.map +1 -1
  31. package/dist/runtime/derivedUniforms/sceneIntegration.js +9 -0
  32. package/dist/runtime/derivedUniforms/sceneIntegration.js.map +1 -1
  33. package/dist/runtime/flattenTree.d.ts.map +1 -1
  34. package/dist/runtime/flattenTree.js +46 -2
  35. package/dist/runtime/flattenTree.js.map +1 -1
  36. package/dist/runtime/heapAdapter.d.ts +3 -1
  37. package/dist/runtime/heapAdapter.d.ts.map +1 -1
  38. package/dist/runtime/heapAdapter.js +42 -4
  39. package/dist/runtime/heapAdapter.js.map +1 -1
  40. package/dist/runtime/heapDecoder.d.ts.map +1 -1
  41. package/dist/runtime/heapDecoder.js +8 -3
  42. package/dist/runtime/heapDecoder.js.map +1 -1
  43. package/dist/runtime/heapEffect.d.ts +14 -1
  44. package/dist/runtime/heapEffect.d.ts.map +1 -1
  45. package/dist/runtime/heapEffect.js +13 -1
  46. package/dist/runtime/heapEffect.js.map +1 -1
  47. package/dist/runtime/heapEffectIR.d.ts.map +1 -1
  48. package/dist/runtime/heapEffectIR.js +18 -9
  49. package/dist/runtime/heapEffectIR.js.map +1 -1
  50. package/dist/runtime/heapEligibility.d.ts.map +1 -1
  51. package/dist/runtime/heapEligibility.js +64 -12
  52. package/dist/runtime/heapEligibility.js.map +1 -1
  53. package/dist/runtime/heapIrBuilders.d.ts +8 -0
  54. package/dist/runtime/heapIrBuilders.d.ts.map +1 -1
  55. package/dist/runtime/heapIrBuilders.js +47 -2
  56. package/dist/runtime/heapIrBuilders.js.map +1 -1
  57. package/dist/runtime/heapScene/chunkedArena.d.ts +20 -28
  58. package/dist/runtime/heapScene/chunkedArena.d.ts.map +1 -1
  59. package/dist/runtime/heapScene/chunkedArena.js +28 -91
  60. package/dist/runtime/heapScene/chunkedArena.js.map +1 -1
  61. package/dist/runtime/heapScene/freelist.d.ts +1 -1
  62. package/dist/runtime/heapScene/freelist.js +3 -3
  63. package/dist/runtime/heapScene/freelist.js.map +1 -1
  64. package/dist/runtime/heapScene/pools.d.ts +103 -59
  65. package/dist/runtime/heapScene/pools.d.ts.map +1 -1
  66. package/dist/runtime/heapScene/pools.js +335 -194
  67. package/dist/runtime/heapScene/pools.js.map +1 -1
  68. package/dist/runtime/heapScene.d.ts +116 -1
  69. package/dist/runtime/heapScene.d.ts.map +1 -1
  70. package/dist/runtime/heapScene.js +581 -125
  71. package/dist/runtime/heapScene.js.map +1 -1
  72. package/dist/runtime/hybridScene.d.ts.map +1 -1
  73. package/dist/runtime/hybridScene.js +19 -3
  74. package/dist/runtime/hybridScene.js.map +1 -1
  75. package/dist/runtime/index.d.ts +1 -1
  76. package/dist/runtime/index.d.ts.map +1 -1
  77. package/dist/runtime/index.js +1 -1
  78. package/dist/runtime/index.js.map +1 -1
  79. package/package.json +1 -1
  80. package/src/core/elementType.ts +10 -0
  81. package/src/core/provider.ts +56 -28
  82. package/src/core/renderObject.ts +9 -0
  83. package/src/resources/preparedRenderObject.ts +22 -3
  84. package/src/runtime/derivedModes/modeKeyCpu.ts +26 -11
  85. package/src/runtime/derivedModes/partitionDispatcher.ts +30 -0
  86. package/src/runtime/derivedUniforms/dispatch.ts +26 -10
  87. package/src/runtime/derivedUniforms/records.ts +70 -15
  88. package/src/runtime/derivedUniforms/sceneIntegration.ts +10 -0
  89. package/src/runtime/flattenTree.ts +47 -2
  90. package/src/runtime/heapAdapter.ts +40 -5
  91. package/src/runtime/heapDecoder.ts +8 -3
  92. package/src/runtime/heapEffect.ts +15 -1
  93. package/src/runtime/heapEffectIR.ts +18 -9
  94. package/src/runtime/heapEligibility.ts +39 -12
  95. package/src/runtime/heapIrBuilders.ts +50 -2
  96. package/src/runtime/heapScene/chunkedArena.ts +29 -94
  97. package/src/runtime/heapScene/freelist.ts +3 -3
  98. package/src/runtime/heapScene/pools.ts +340 -218
  99. package/src/runtime/heapScene.ts +717 -141
  100. package/src/runtime/hybridScene.ts +20 -3
  101. package/src/runtime/index.ts +5 -0
@@ -197,19 +197,33 @@ export function compileHybridScene(
197
197
  // toggle — flipping that off forces every RO to legacy.
198
198
  const heapEnabled = opts.heapEnabled ?? AVal.constant(true);
199
199
  const eligCache = new WeakMap<RenderObject, aval<boolean>>();
200
+ const notEligCache = new WeakMap<RenderObject, aval<boolean>>();
200
201
  const elig = (ro: RenderObject): aval<boolean> => {
201
202
  let av = eligCache.get(ro);
202
203
  if (av === undefined) {
203
204
  const perRO = isHeapEligible(ro);
204
- av = AVal.custom(t => heapEnabled.getValue(t) && perRO.getValue(t));
205
+ // Constant collapse (static RO + constant heapEnabled): a plain
206
+ // constant instead of a custom aval + two subscriptions per RO.
207
+ av = heapEnabled.isConstant && perRO.isConstant
208
+ ? AVal.constant(heapEnabled.force(/* allow-force */) && perRO.force(/* allow-force */))
209
+ : AVal.custom(t => heapEnabled.getValue(t) && perRO.getValue(t));
205
210
  eligCache.set(ro, av);
206
211
  }
207
212
  return av;
208
213
  };
214
+ const notElig = (ro: RenderObject): aval<boolean> => {
215
+ let av = notEligCache.get(ro);
216
+ if (av === undefined) {
217
+ const e = elig(ro);
218
+ av = e.isConstant ? AVal.constant(!e.force(/* allow-force */)) : e.map(b => !b);
219
+ notEligCache.set(ro, av);
220
+ }
221
+ return av;
222
+ };
209
223
 
210
224
  const flat = flattenRenderTree(tree);
211
225
  const heapAset = flat.filterA(ro => elig(ro));
212
- const legacyAset = flat.filterA(ro => elig(ro).map(b => !b));
226
+ const legacyAset = flat.filterA(ro => notElig(ro));
213
227
 
214
228
  // ─── Atlas pool ──────────────────────────────────────────────────
215
229
  // Per-scene Tier-S atlas pool. Owned by this hybrid scene; disposed
@@ -231,7 +245,9 @@ export function compileHybridScene(
231
245
  const heapSpecAset = heapAset.map((ro: RenderObject) => {
232
246
  let spec = specCache.get(ro);
233
247
  if (spec === undefined) {
234
- spec = renderObjectToHeapSpec(ro, AdaptiveToken.top, atlasPool);
248
+ spec = renderObjectToHeapSpec(ro, AdaptiveToken.top, atlasPool, {
249
+ enableDerivedUniforms: opts.enableDerivedUniforms !== false,
250
+ });
235
251
  specCache.set(ro, spec);
236
252
  }
237
253
  return spec;
@@ -291,6 +307,7 @@ export function compileHybridScene(
291
307
  __legacyCount(): number {
292
308
  return scenePass.collect().length;
293
309
  },
310
+
294
311
  heapDerivedTimings() {
295
312
  const s = heapScene.stats;
296
313
  return {
@@ -25,7 +25,12 @@ export {
25
25
 
26
26
  export {
27
27
  buildHeapScene,
28
+ createHeapStorage,
29
+ oct32, c4b,
30
+ type HeapPackedAttribute,
28
31
  type HeapScene,
32
+ type HeapStorage,
33
+ type HeapStorageOptions,
29
34
  type HeapSceneStats,
30
35
  type HeapDrawSpec,
31
36
  type HeapGeometry,