@aardworx/wombat.rendering 0.21.14 → 0.21.16
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.
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/renderTree.d.ts +4 -0
- package/dist/core/renderTree.d.ts.map +1 -1
- package/dist/core/renderTree.js +1 -0
- package/dist/core/renderTree.js.map +1 -1
- package/dist/core/rowSet.d.ts +32 -0
- package/dist/core/rowSet.d.ts.map +1 -0
- package/dist/core/rowSet.js +36 -0
- package/dist/core/rowSet.js.map +1 -0
- package/dist/runtime/flattenTree.d.ts.map +1 -1
- package/dist/runtime/flattenTree.js +8 -0
- package/dist/runtime/flattenTree.js.map +1 -1
- package/dist/runtime/heapAdapter.d.ts.map +1 -1
- package/dist/runtime/heapAdapter.js +145 -3
- package/dist/runtime/heapAdapter.js.map +1 -1
- package/dist/runtime/hybridScene.d.ts.map +1 -1
- package/dist/runtime/hybridScene.js +46 -4
- package/dist/runtime/hybridScene.js.map +1 -1
- package/dist/runtime/scenePass.d.ts +1 -1
- package/dist/runtime/scenePass.d.ts.map +1 -1
- package/dist/runtime/scenePass.js +6 -1
- package/dist/runtime/scenePass.js.map +1 -1
- package/package.json +1 -1
- package/src/core/index.ts +3 -0
- package/src/core/renderTree.ts +3 -1
- package/src/core/rowSet.ts +64 -0
- package/src/runtime/flattenTree.ts +8 -0
- package/src/runtime/heapAdapter.ts +135 -2
- package/src/runtime/hybridScene.ts +69 -13
- package/src/runtime/scenePass.ts +8 -1
package/dist/core/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export type { RenderObject, } from "./renderObject.js";
|
|
|
13
13
|
export type { IUniformProvider, IAttributeProvider, } from "./provider.js";
|
|
14
14
|
export { UniformProvider, AttributeProvider, asUniformProvider, asAttributeProvider, } from "./provider.js";
|
|
15
15
|
export { RenderTree, } from "./renderTree.js";
|
|
16
|
+
export { materializeRow } from "./rowSet.js";
|
|
17
|
+
export type { RenderRow, RenderRowSet } from "./rowSet.js";
|
|
16
18
|
export type { IRenderTask, } from "./renderTask.js";
|
|
17
19
|
export { ISampler, } from "./sampler.js";
|
|
18
20
|
export { ITexture, } from "./texture.js";
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,YAAY,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,EACN,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,YAAY,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,YAAY,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,EACN,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { ElementType, ElementKind, } from "./elementType.js";
|
|
|
9
9
|
export { PipelineState } from "./pipelineState.js";
|
|
10
10
|
export { UniformProvider, AttributeProvider, asUniformProvider, asAttributeProvider, } from "./provider.js";
|
|
11
11
|
export { RenderTree, } from "./renderTree.js";
|
|
12
|
+
export { materializeRow } from "./rowSet.js";
|
|
12
13
|
export { ISampler, } from "./sampler.js";
|
|
13
14
|
export { ITexture, } from "./texture.js";
|
|
14
15
|
export { AdaptiveResource, } from "./adaptiveResource.js";
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,2DAA2D;AAC3D,8DAA8D;AAC9D,iDAAiD;AAEjD,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAkD1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,2DAA2D;AAC3D,8DAA8D;AAC9D,iDAAiD;AAEjD,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAkD1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AA4BtB,OAAO,EACL,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -20,6 +20,9 @@ export type RenderTree = {
|
|
|
20
20
|
} | {
|
|
21
21
|
readonly kind: "UnorderedFromSet";
|
|
22
22
|
readonly children: aset<RenderTree>;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: "Rows";
|
|
25
|
+
readonly set: import("./rowSet.js").RenderRowSet;
|
|
23
26
|
};
|
|
24
27
|
export declare const RenderTree: {
|
|
25
28
|
readonly empty: {
|
|
@@ -31,5 +34,6 @@ export declare const RenderTree: {
|
|
|
31
34
|
readonly adaptive: (tree: aval<RenderTree>) => RenderTree;
|
|
32
35
|
readonly orderedFromList: (children: alist<RenderTree>) => RenderTree;
|
|
33
36
|
readonly unorderedFromSet: (children: aset<RenderTree>) => RenderTree;
|
|
37
|
+
readonly rows: (set: import("./rowSet.js").RenderRowSet) => RenderTree;
|
|
34
38
|
};
|
|
35
39
|
//# sourceMappingURL=renderTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTree.d.ts","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"renderTree.d.ts","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,aAAa,EAAE,YAAY,CAAA;CAAE,CAAC;AAEhF,eAAO,MAAM,UAAU;;;;4BAEN,YAAY,KAAG,UAAU;oCACjB,UAAU,EAAE,KAAG,UAAU;sCACvB,UAAU,EAAE,KAAG,UAAU;8BACjC,IAAI,CAAC,UAAU,CAAC,KAAG,UAAU;yCAClB,KAAK,CAAC,UAAU,CAAC,KAAG,UAAU;0CAC7B,IAAI,CAAC,UAAU,CAAC,KAAG,UAAU;yBAC9C,OAAO,aAAa,EAAE,YAAY,KAAG,UAAU;CACnD,CAAC"}
|
package/dist/core/renderTree.js
CHANGED
|
@@ -13,5 +13,6 @@ export const RenderTree = {
|
|
|
13
13
|
adaptive: (tree) => ({ kind: "Adaptive", tree }),
|
|
14
14
|
orderedFromList: (children) => ({ kind: "OrderedFromList", children }),
|
|
15
15
|
unorderedFromSet: (children) => ({ kind: "UnorderedFromSet", children }),
|
|
16
|
+
rows: (set) => ({ kind: "Rows", set }),
|
|
16
17
|
};
|
|
17
18
|
//# sourceMappingURL=renderTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTree.js","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,6DAA6D;AAC7D,iEAAiE;AACjE,QAAQ;
|
|
1
|
+
{"version":3,"file":"renderTree.js","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,6DAA6D;AAC7D,iEAAiE;AACjE,QAAQ;AAeR,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAgC;IACtD,IAAI,EAAE,CAAC,MAAoB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtE,OAAO,EAAE,CAAC,GAAG,QAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACnF,SAAS,EAAE,CAAC,GAAG,QAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACvF,QAAQ,EAAE,CAAC,IAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9E,eAAe,EAAE,CAAC,QAA2B,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACrG,gBAAgB,EAAE,CAAC,QAA0B,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IACtG,IAAI,EAAE,CAAC,GAAuC,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;CAC9E,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { aval, aset } from "@aardworx/wombat.adaptive";
|
|
2
|
+
import type { Trafo3d } from "@aardworx/wombat.base";
|
|
3
|
+
import type { DrawCall } from "./drawCall.js";
|
|
4
|
+
import type { IAttributeProvider, IUniformProvider } from "./provider.js";
|
|
5
|
+
import type { RenderObject } from "./renderObject.js";
|
|
6
|
+
/** The per-row delta over a `RenderRowSet.template`. */
|
|
7
|
+
export interface RenderRow {
|
|
8
|
+
readonly uniforms: IUniformProvider;
|
|
9
|
+
readonly drawCall: aval<DrawCall>;
|
|
10
|
+
readonly instanceAttributes?: IAttributeProvider;
|
|
11
|
+
readonly pickId?: number;
|
|
12
|
+
readonly modelChain?: readonly aval<Trafo3d>[];
|
|
13
|
+
readonly active?: aval<boolean>;
|
|
14
|
+
}
|
|
15
|
+
export interface RenderRowSet {
|
|
16
|
+
/**
|
|
17
|
+
* Shared fields — a RenderObject whose per-row fields are treated as
|
|
18
|
+
* DEFAULTS (rows override via prototype inheritance). The producer
|
|
19
|
+
* seeds it from the first lowered row; `template.heapAsserted` is
|
|
20
|
+
* expected for the direct heap path (unasserted sets fall back to
|
|
21
|
+
* materialized per-row consumption).
|
|
22
|
+
*
|
|
23
|
+
* Mutable ON PURPOSE: the tree node must exist before the first
|
|
24
|
+
* child arrives through the reactive children set.
|
|
25
|
+
*/
|
|
26
|
+
template: RenderObject | undefined;
|
|
27
|
+
readonly rows: aset<RenderRow>;
|
|
28
|
+
}
|
|
29
|
+
/** Row → RenderObject with the set's template as prototype. Cached per
|
|
30
|
+
* row so aset deltas / eligibility caches see a stable identity. */
|
|
31
|
+
export declare function materializeRow(set: RenderRowSet, row: RenderRow): RenderObject;
|
|
32
|
+
//# sourceMappingURL=rowSet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowSet.d.ts","sourceRoot":"","sources":["../../src/core/rowSet.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CAChC;AAID;qEACqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,GAAG,YAAY,CAiB9E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// RenderRowSet — the row store's render-side contract (instance-tables
|
|
2
|
+
// M2 proper). A collection of same-shaped draws is ONE shared template
|
|
3
|
+
// `RenderObject` plus an `aset` of thin rows; per row only the fields
|
|
4
|
+
// that actually differ are retained (~a hundred bytes), instead of a
|
|
5
|
+
// full RenderObject + provider graph + spec per element.
|
|
6
|
+
//
|
|
7
|
+
// `materializeRow` produces a REAL RenderObject via prototype
|
|
8
|
+
// inheritance — every consumer that predates the row store (legacy
|
|
9
|
+
// ScenePass, flatten fallback, eligibility) keeps working unchanged on
|
|
10
|
+
// materialized rows, so correctness never depends on the fast path.
|
|
11
|
+
const materialized = new WeakMap();
|
|
12
|
+
/** Row → RenderObject with the set's template as prototype. Cached per
|
|
13
|
+
* row so aset deltas / eligibility caches see a stable identity. */
|
|
14
|
+
export function materializeRow(set, row) {
|
|
15
|
+
let ro = materialized.get(row);
|
|
16
|
+
if (ro === undefined) {
|
|
17
|
+
if (set.template === undefined) {
|
|
18
|
+
throw new Error("materializeRow: RenderRowSet.template not seeded yet");
|
|
19
|
+
}
|
|
20
|
+
const o = Object.create(set.template);
|
|
21
|
+
o["uniforms"] = row.uniforms;
|
|
22
|
+
o["drawCall"] = row.drawCall;
|
|
23
|
+
if (row.instanceAttributes !== undefined)
|
|
24
|
+
o["instanceAttributes"] = row.instanceAttributes;
|
|
25
|
+
if (row.pickId !== undefined)
|
|
26
|
+
o["pickId"] = row.pickId;
|
|
27
|
+
if (row.modelChain !== undefined)
|
|
28
|
+
o["modelChain"] = row.modelChain;
|
|
29
|
+
if (row.active !== undefined)
|
|
30
|
+
o["active"] = row.active;
|
|
31
|
+
ro = o;
|
|
32
|
+
materialized.set(row, ro);
|
|
33
|
+
}
|
|
34
|
+
return ro;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=rowSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowSet.js","sourceRoot":"","sources":["../../src/core/rowSet.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,yDAAyD;AACzD,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;AACnE,uEAAuE;AACvE,oEAAoE;AAiCpE,MAAM,YAAY,GAAG,IAAI,OAAO,EAA2B,CAAC;AAE5D;qEACqE;AACrE,MAAM,UAAU,cAAc,CAAC,GAAiB,EAAE,GAAc;IAC9D,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAA4B,CAAC;QACjE,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS;YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,kBAAkB,CAAC;QAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACvD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;QACnE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACvD,EAAE,GAAG,CAA4B,CAAC;QAClC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenTree.d.ts","sourceRoot":"","sources":["../../src/runtime/flattenTree.ts"],"names":[],"mappings":"AAyBA,OAAO,EAGyD,KAAK,IAAI,EACxE,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"flattenTree.d.ts","sourceRoot":"","sources":["../../src/runtime/flattenTree.ts"],"names":[],"mappings":"AAyBA,OAAO,EAGyD,KAAK,IAAI,EACxE,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkHxD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAiCtE"}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
// `ASet.collect`'s. One History, one state, two caches.
|
|
25
25
|
import { ASet, AbstractDirtyReader, Cache, HashSetDelta, SetOperation, hashSetDeltaMonoid, } from "@aardworx/wombat.adaptive";
|
|
26
26
|
import { AListBridges } from "@aardworx/wombat.adaptive";
|
|
27
|
+
import { materializeRow } from "../core/rowSet.js";
|
|
27
28
|
/** True when `tree` contains no reactive nodes — its RenderObjects can
|
|
28
29
|
* be enumerated as a plain iterable (no inner aset / reader needed). */
|
|
29
30
|
function isStaticTree(tree) {
|
|
@@ -148,6 +149,13 @@ export function flattenRenderTree(tree) {
|
|
|
148
149
|
return flattenChildSet(AListBridges.toASet(tree.children));
|
|
149
150
|
case "UnorderedFromSet":
|
|
150
151
|
return flattenChildSet(tree.children);
|
|
152
|
+
case "Rows":
|
|
153
|
+
// Materialization fallback — prototype-derived RenderObjects
|
|
154
|
+
// with stable per-row identity. The hybrid renderer consumes
|
|
155
|
+
// row sets DIRECTLY (see hybridScene.collectRowSets) and never
|
|
156
|
+
// takes this path for them; it exists for the legacy ScenePass
|
|
157
|
+
// and for row sets under reactive containers.
|
|
158
|
+
return tree.set.rows.map((r) => materializeRow(tree.set, r));
|
|
151
159
|
}
|
|
152
160
|
}
|
|
153
161
|
//# sourceMappingURL=flattenTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenTree.js","sourceRoot":"","sources":["../../src/runtime/flattenTree.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,iEAAiE;AACjE,iEAAiE;AACjE,kEAAkE;AAClE,EAAE;AACF,wEAAwE;AACxE,mEAAmE;AACnE,uEAAuE;AACvE,EAAE;AACF,2DAA2D;AAC3D,gEAAgE;AAChE,yBAAyB;AACzB,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,iEAAiE;AACjE,+DAA+D;AAC/D,wDAAwD;AAExD,OAAO,EACL,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAC5D,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"flattenTree.js","sourceRoot":"","sources":["../../src/runtime/flattenTree.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,iEAAiE;AACjE,iEAAiE;AACjE,kEAAkE;AAClE,EAAE;AACF,wEAAwE;AACxE,mEAAmE;AACnE,uEAAuE;AACvE,EAAE;AACF,2DAA2D;AAC3D,gEAAgE;AAChE,yBAAyB;AACzB,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,iEAAiE;AACjE,+DAA+D;AAC/D,wDAAwD;AAExD,OAAO,EACL,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAC5D,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;yEACyE;AACzE,SAAS,YAAY,CAAC,IAAgB;IACpC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAgB;IACtC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO;QACT,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,MAAM,CAAC;YAClB,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW;YACd,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;QACT;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,oBAAoB,CAAC;AACvC,MAAM,cAAc,GAAG,CAAC,GAAY,EAAW,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,qBAAsB,SAAQ,mBAGnC;IACkB,OAAO,CAA6B;IACpC,OAAO,CAAoC;IAC3C,MAAM,CAAkD;IAEzE,YAAY,QAA0B;QACpC,KAAK,CAAC,kBAAkB,EAAgB,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CACrB,CAAC,CAAC,EAAE,EAAE;YACJ,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC,CACF,CAAC;IACJ,CAAC;IAEQ,OAAO,CACd,GAAkB,EAClB,KAAwC;QAExC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,EAAgB,CAAC;oBAC7C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;wBAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7E,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,EAAgB,CAAC;oBAC7C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;wBAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnF,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,SAAS;oBAAE,OAAO,YAAY,CAAC,KAAK,EAAgB,CAAC;gBAC/D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,eAAe,CAAC,QAA0B;IACjD,OAAO,IAAI,CAAC,QAAQ,CAClB,GAAG,EAAE,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAA0D,CACnG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,EAAgB,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,+DAA+D;YAC/D,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,wDAAwD;YACxD,8DAA8D;YAC9D,6DAA6D;YAC7D,gEAAgE;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,EAAgB,CAAC;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,iBAAiB;YACpB,OAAO,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,KAAK,kBAAkB;YACrB,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,MAAM;YACT,6DAA6D;YAC7D,6DAA6D;YAC7D,+DAA+D;YAC/D,+DAA+D;YAC/D,8CAA8C;YAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heapAdapter.d.ts","sourceRoot":"","sources":["../../src/runtime/heapAdapter.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAa,KAAK,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AAiFhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"heapAdapter.d.ts","sourceRoot":"","sources":["../../src/runtime/heapAdapter.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAa,KAAK,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AAiFhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAmPxD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,aAAa,EACpB,IAAI,CAAC,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAOlD,YAAY,GAAG,IAAI,CAyErB"}
|
|
@@ -180,6 +180,55 @@ function currentRefCellFor(av, initial) {
|
|
|
180
180
|
}
|
|
181
181
|
return c;
|
|
182
182
|
}
|
|
183
|
+
// ─── Value-interned constant wrappers ───────────────────────────────
|
|
184
|
+
// Collection rows repeat the same uniform VALUES (class colors, line
|
|
185
|
+
// widths) across thousands of rows. Wrapping each pull in a fresh
|
|
186
|
+
// `AVal.constant` costs ~100 B per row-pass AND defeats the pool's
|
|
187
|
+
// aval-identity sharing (every row gets its own arena slot for an
|
|
188
|
+
// identical value). Interning by VALUE makes equal constants share
|
|
189
|
+
// ONE wrapper — and therefore one pool entry per chunk.
|
|
190
|
+
const constPrimIntern = new Map();
|
|
191
|
+
const constDataIntern = new Map();
|
|
192
|
+
const constObjIntern = new WeakMap();
|
|
193
|
+
function internConstant(v) {
|
|
194
|
+
const t = typeof v;
|
|
195
|
+
if (t === "number" || t === "string" || t === "boolean") {
|
|
196
|
+
let av = constPrimIntern.get(v);
|
|
197
|
+
if (av === undefined) {
|
|
198
|
+
av = AVal.constant(v);
|
|
199
|
+
constPrimIntern.set(v, av);
|
|
200
|
+
}
|
|
201
|
+
return av;
|
|
202
|
+
}
|
|
203
|
+
if (v !== null && t === "object") {
|
|
204
|
+
// Vector/matrix values expose `_data` (number[] or typed array) —
|
|
205
|
+
// key structurally so per-row `new V4f(...)` instances collapse.
|
|
206
|
+
const data = v._data;
|
|
207
|
+
if (data !== undefined && typeof data.length === "number" && data.length <= 16) {
|
|
208
|
+
let key = String(data.length);
|
|
209
|
+
for (let i = 0; i < data.length; i++)
|
|
210
|
+
key += "," + data[i];
|
|
211
|
+
let av = constDataIntern.get(key);
|
|
212
|
+
if (av === undefined) {
|
|
213
|
+
av = AVal.constant(v);
|
|
214
|
+
constDataIntern.set(key, av);
|
|
215
|
+
}
|
|
216
|
+
return av;
|
|
217
|
+
}
|
|
218
|
+
let av = constObjIntern.get(v);
|
|
219
|
+
if (av === undefined) {
|
|
220
|
+
av = AVal.constant(v);
|
|
221
|
+
constObjIntern.set(v, av);
|
|
222
|
+
}
|
|
223
|
+
return av;
|
|
224
|
+
}
|
|
225
|
+
return AVal.constant(v);
|
|
226
|
+
}
|
|
227
|
+
/** True when `v` quacks like an aval (matches `asAval`'s test). */
|
|
228
|
+
function isAvalLike(v) {
|
|
229
|
+
return typeof v === "object" && v !== null
|
|
230
|
+
&& typeof v.getValue === "function";
|
|
231
|
+
}
|
|
183
232
|
function indicesAvalFor(ibAval, indexFormat, baseVertex) {
|
|
184
233
|
let byBase = indicesAvalCache.get(ibAval);
|
|
185
234
|
if (byBase === undefined) {
|
|
@@ -320,6 +369,93 @@ function describeTexture(t) {
|
|
|
320
369
|
* spec's avals — this function does not subscribe to anything.
|
|
321
370
|
*/
|
|
322
371
|
export function renderObjectToHeapSpec(ro, token, pool, opts) {
|
|
372
|
+
const flat = buildFlatSpec(ro, token, pool, opts);
|
|
373
|
+
if (flat === null)
|
|
374
|
+
return flat;
|
|
375
|
+
// Row specs (prototype-derived ROs — see materializeRow): chain the
|
|
376
|
+
// spec AND its inputs bag onto template-shared prototypes so each
|
|
377
|
+
// row retains only what actually differs. Protocol: the first row's
|
|
378
|
+
// spec stays flat and is remembered; the second row diffs against
|
|
379
|
+
// it (by identity) to mint the shared prototypes; rows 3+ get
|
|
380
|
+
// Object.create + own-only fields. Any shape surprise (different
|
|
381
|
+
// input name sets) falls back to the flat spec — correctness never
|
|
382
|
+
// depends on the chaining.
|
|
383
|
+
const tpl = Object.getPrototypeOf(ro);
|
|
384
|
+
if (tpl === null || tpl === Object.prototype || tpl.effect === undefined) {
|
|
385
|
+
return flat;
|
|
386
|
+
}
|
|
387
|
+
let cache = specShareCache.get(tpl);
|
|
388
|
+
if (cache === undefined) {
|
|
389
|
+
cache = { first: flat };
|
|
390
|
+
specShareCache.set(tpl, cache);
|
|
391
|
+
return flat;
|
|
392
|
+
}
|
|
393
|
+
if (cache.specProto === undefined) {
|
|
394
|
+
const first = cache.first;
|
|
395
|
+
if (first === undefined)
|
|
396
|
+
return flat;
|
|
397
|
+
// Mint prototypes from the identity-agreeing subset.
|
|
398
|
+
const firstInputNames = Object.keys(first.inputs);
|
|
399
|
+
const thisInputNames = Object.keys(flat.inputs);
|
|
400
|
+
if (firstInputNames.length !== thisInputNames.length)
|
|
401
|
+
return flat;
|
|
402
|
+
const inputsProto = {};
|
|
403
|
+
for (const n of firstInputNames) {
|
|
404
|
+
if (first.inputs[n] === flat.inputs[n])
|
|
405
|
+
inputsProto[n] = first.inputs[n];
|
|
406
|
+
}
|
|
407
|
+
const specProto = {};
|
|
408
|
+
const f = first;
|
|
409
|
+
const g = flat;
|
|
410
|
+
for (const k of Object.keys(f)) {
|
|
411
|
+
if (k === "inputs" || k === "instanceAttributes")
|
|
412
|
+
continue;
|
|
413
|
+
if (f[k] === g[k])
|
|
414
|
+
specProto[k] = f[k];
|
|
415
|
+
}
|
|
416
|
+
cache.inputsProto = inputsProto;
|
|
417
|
+
cache.specProto = specProto;
|
|
418
|
+
cache.first = undefined; // release the flat reference
|
|
419
|
+
}
|
|
420
|
+
const inputsProto = cache.inputsProto;
|
|
421
|
+
const specProto = cache.specProto;
|
|
422
|
+
const names = Object.keys(flat.inputs);
|
|
423
|
+
// Shape guard: a key present in a prototype but ABSENT from this
|
|
424
|
+
// row would leak the shared value through the chain — bail to flat.
|
|
425
|
+
for (const k of Object.keys(specProto)) {
|
|
426
|
+
if (!(k in flat))
|
|
427
|
+
return flat;
|
|
428
|
+
}
|
|
429
|
+
const slimInputs = Object.create(inputsProto);
|
|
430
|
+
let protoNamesSeen = 0;
|
|
431
|
+
for (const n of names) {
|
|
432
|
+
const v = flat.inputs[n];
|
|
433
|
+
if (n in inputsProto) {
|
|
434
|
+
protoNamesSeen++;
|
|
435
|
+
if (inputsProto[n] !== v)
|
|
436
|
+
slimInputs[n] = v;
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
slimInputs[n] = v;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
// A name in the proto but ABSENT from this row would leak the shared
|
|
443
|
+
// value — bail to flat in that case.
|
|
444
|
+
if (protoNamesSeen !== Object.keys(inputsProto).length)
|
|
445
|
+
return flat;
|
|
446
|
+
const slim = Object.create(specProto);
|
|
447
|
+
const g2 = flat;
|
|
448
|
+
for (const k of Object.keys(g2)) {
|
|
449
|
+
if (k === "inputs")
|
|
450
|
+
continue;
|
|
451
|
+
if (specProto[k] !== g2[k])
|
|
452
|
+
slim[k] = g2[k];
|
|
453
|
+
}
|
|
454
|
+
slim["inputs"] = slimInputs;
|
|
455
|
+
return slim;
|
|
456
|
+
}
|
|
457
|
+
const specShareCache = new WeakMap();
|
|
458
|
+
function buildFlatSpec(ro, token, pool, opts) {
|
|
323
459
|
// 1. Inputs map: vertex attributes (BufferView) + uniforms, pulled
|
|
324
460
|
// SHADER-DRIVEN from the providers. We compile `ro.effect` (cached
|
|
325
461
|
// per Effect by the module-level compile cache) to discover the
|
|
@@ -349,8 +485,12 @@ export function renderObjectToHeapSpec(ro, token, pool, opts) {
|
|
|
349
485
|
if (Object.prototype.hasOwnProperty.call(inputs, name))
|
|
350
486
|
return;
|
|
351
487
|
const av = uProv.tryGet(name);
|
|
352
|
-
if (av
|
|
353
|
-
|
|
488
|
+
if (av === undefined)
|
|
489
|
+
return;
|
|
490
|
+
// Plain (non-aval) uniform values — e.g. row-scope constants
|
|
491
|
+
// resolved through a RowProvider hole — intern by VALUE so equal
|
|
492
|
+
// constants share one wrapper + one pool entry.
|
|
493
|
+
inputs[name] = isAvalLike(av) ? av : internConstant(av);
|
|
354
494
|
};
|
|
355
495
|
// §7-covered derived trafos (ModelViewProjTrafo, NormalMatrix, …) are
|
|
356
496
|
// GPU-computed from the M/V/P constituents — addDraw never reads their
|
|
@@ -396,7 +536,9 @@ export function renderObjectToHeapSpec(ro, token, pool, opts) {
|
|
|
396
536
|
// Pull them here so `ruleForUniform`'s bound-leaf check succeeds
|
|
397
537
|
// (e.g. LineColor = select(AnnotationId == SelectedId, …) needs
|
|
398
538
|
// AnnotationId/SelectedId/… in `spec.inputs`).
|
|
399
|
-
for (
|
|
539
|
+
// for-in (NOT Object.keys): row specs chain their input bags onto a
|
|
540
|
+
// template-shared prototype; rule values can live on either level.
|
|
541
|
+
for (const name in inputs) {
|
|
400
542
|
const v = inputs[name];
|
|
401
543
|
if (isDerivedRule(v)) {
|
|
402
544
|
for (const inp of inputsOf(v.ir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heapAdapter.js","sourceRoot":"","sources":["../../src/runtime/heapAdapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heapAdapter.js","sourceRoot":"","sources":["../../src/runtime/heapAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybridScene.d.ts","sourceRoot":"","sources":["../../src/runtime/hybridScene.ts"],"names":[],"mappings":"AA6BA,OAAO,EACO,aAAa,EAAa,KAAK,IAAI,EAChD,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"hybridScene.d.ts","sourceRoot":"","sources":["../../src/runtime/hybridScene.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ import { ASet, AVal, AdaptiveToken, } from "@aardworx/wombat.adaptive";
|
|
|
30
30
|
import { RenderTree } from "../core/renderTree.js";
|
|
31
31
|
import { ScenePass } from "./scenePass.js";
|
|
32
32
|
import { flattenRenderTree } from "./flattenTree.js";
|
|
33
|
+
import { materializeRow } from "../core/index.js";
|
|
33
34
|
import { isHeapEligible } from "./heapEligibility.js";
|
|
34
35
|
import { renderObjectToHeapSpec } from "./heapAdapter.js";
|
|
35
36
|
import { buildHeapScene } from "./heapScene.js";
|
|
@@ -77,7 +78,30 @@ export function compileHybridScene(device, signature, tree, opts = {}) {
|
|
|
77
78
|
}
|
|
78
79
|
return av;
|
|
79
80
|
};
|
|
80
|
-
|
|
81
|
+
// ─── Row sets (instance-tables M2 proper) ────────────────────────
|
|
82
|
+
// `Rows` nodes on the STATIC spine are consumed directly: the heap
|
|
83
|
+
// gets one choose stage per set (row → spec over the shared
|
|
84
|
+
// template), the flat pipeline never sees per-row RenderObjects.
|
|
85
|
+
// Rows under reactive containers stay in the tree and go through
|
|
86
|
+
// the materialization fallback (correct, just not accelerated).
|
|
87
|
+
// Producer contract (dom row lowering): a Rows node's template is
|
|
88
|
+
// heap-asserted and seeded before its first row arrives.
|
|
89
|
+
const rowSets = [];
|
|
90
|
+
const stripRows = (t) => {
|
|
91
|
+
switch (t.kind) {
|
|
92
|
+
case "Rows":
|
|
93
|
+
rowSets.push(t.set);
|
|
94
|
+
return RenderTree.empty;
|
|
95
|
+
case "Ordered":
|
|
96
|
+
return RenderTree.ordered(...t.children.map(stripRows));
|
|
97
|
+
case "Unordered":
|
|
98
|
+
return RenderTree.unordered(...t.children.map(stripRows));
|
|
99
|
+
default:
|
|
100
|
+
return t;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const strippedTree = stripRows(tree);
|
|
104
|
+
const flat = flattenRenderTree(strippedTree);
|
|
81
105
|
// ─── Atlas pool ──────────────────────────────────────────────────
|
|
82
106
|
// Per-scene Tier-S atlas pool. Owned by this hybrid scene; disposed
|
|
83
107
|
// alongside the heap path. The adapter consults it to classify
|
|
@@ -113,6 +137,12 @@ export function compileHybridScene(device, signature, tree, opts = {}) {
|
|
|
113
137
|
}
|
|
114
138
|
return spec;
|
|
115
139
|
};
|
|
140
|
+
// Row sets: one choose stage per set — row → spec via the cached
|
|
141
|
+
// materialized RO (prototype over the shared template). `undefined`
|
|
142
|
+
// (atlas-full) drops the row for the cycle, like the flat path.
|
|
143
|
+
const rowSpecSets = rowSets.map((set) => ASet.bind((on) => on
|
|
144
|
+
? set.rows.choose((row) => specOf(materializeRow(set, row)))
|
|
145
|
+
: ASet.empty(), heapEnabled));
|
|
116
146
|
// ONE fused stage: eligibility routes straight into the spec.
|
|
117
147
|
// Constant eligibility (asserted rows, fully-static ROs) takes the
|
|
118
148
|
// closure-free branch: an eager constant wrapper per RO — and the
|
|
@@ -130,7 +160,10 @@ export function compileHybridScene(device, signature, tree, opts = {}) {
|
|
|
130
160
|
}
|
|
131
161
|
return e.map((b) => (b ? specOf(ro) : undefined));
|
|
132
162
|
});
|
|
133
|
-
const
|
|
163
|
+
const allHeapSpecs = rowSpecSets.length === 0
|
|
164
|
+
? heapSpecAset
|
|
165
|
+
: ASet.unionMany(ASet.ofArray([heapSpecAset, ...rowSpecSets]));
|
|
166
|
+
const heapScene = buildHeapScene(device, signature, allHeapSpecs, {
|
|
134
167
|
fragmentOutputLayout,
|
|
135
168
|
atlasPool,
|
|
136
169
|
...(opts.enableFamilyMerge === true ? { enableFamilyMerge: true } : {}),
|
|
@@ -156,7 +189,7 @@ export function compileHybridScene(device, signature, tree, opts = {}) {
|
|
|
156
189
|
}
|
|
157
190
|
return l;
|
|
158
191
|
};
|
|
159
|
-
const
|
|
192
|
+
const legacyFromFlat = flat.chooseA((ro) => {
|
|
160
193
|
const e = elig(ro);
|
|
161
194
|
if (e.isConstant) {
|
|
162
195
|
// Why force here: constant — immutable by definition.
|
|
@@ -165,7 +198,16 @@ export function compileHybridScene(device, signature, tree, opts = {}) {
|
|
|
165
198
|
: AVal.constant(leafOf(ro));
|
|
166
199
|
}
|
|
167
200
|
return e.map((b) => (b ? undefined : leafOf(ro)));
|
|
168
|
-
})
|
|
201
|
+
});
|
|
202
|
+
// Row sets render legacy ONLY when the global heap toggle is off —
|
|
203
|
+
// with the (default) constant-true toggle the bind collapses and
|
|
204
|
+
// this contributes nothing.
|
|
205
|
+
const legacySet = rowSets.length === 0
|
|
206
|
+
? legacyFromFlat
|
|
207
|
+
: ASet.union(legacyFromFlat, ASet.bind((on) => on
|
|
208
|
+
? ASet.empty()
|
|
209
|
+
: ASet.unionMany(ASet.ofArray(rowSets.map((set) => set.rows.map((r) => leafOf(materializeRow(set, r)))))), heapEnabled));
|
|
210
|
+
const legacyTree = RenderTree.unorderedFromSet(legacySet);
|
|
169
211
|
const scenePass = new ScenePass(device, signature, legacyTree, compileEffect);
|
|
170
212
|
// DEBUG registry: per-hybrid-scene live draw counts (heap vs legacy) so
|
|
171
213
|
// multi-task pipelines (OIT) can be inspected from the console.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybridScene.js","sourceRoot":"","sources":["../../src/runtime/hybridScene.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hybridScene.js","sourceRoot":"","sources":["../../src/runtime/hybridScene.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AdaptiveToken } from "@aardworx/wombat.adaptive";
|
|
2
|
-
import { type CompiledEffect, type Effect, type FramebufferSignature
|
|
2
|
+
import { RenderTree, type CompiledEffect, type Effect, type FramebufferSignature } from "../core/index.js";
|
|
3
3
|
import { type PreparedRenderObject } from "../resources/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Counters surfaced for tests. `prepareCount` only goes up when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenePass.d.ts","sourceRoot":"","sources":["../../src/runtime/scenePass.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"scenePass.d.ts","sourceRoot":"","sources":["../../src/runtime/scenePass.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAS/B;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAwMD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAuB;gBAGhD,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,oBAAoB,EAC/B,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,KAAK,cAAc;IAM/E;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,IAAI,oBAAoB,EAAE;IAMjC;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAKzE;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,oBAAoB,EAAE;IAKrD,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// list — that was a .NET↔native amortisation in the F# build with
|
|
16
16
|
// no analogue in WebGPU/JS.
|
|
17
17
|
import { MapExt, } from "@aardworx/wombat.adaptive";
|
|
18
|
-
import {} from "../core/index.js";
|
|
18
|
+
import { RenderTree, materializeRow, } from "../core/index.js";
|
|
19
19
|
import { prepareRenderObject, } from "../resources/index.js";
|
|
20
20
|
class NodeWalker {
|
|
21
21
|
}
|
|
@@ -224,6 +224,11 @@ function build(tree, ctx) {
|
|
|
224
224
|
case "Adaptive": return new AdaptiveWalker(tree.tree, ctx);
|
|
225
225
|
case "OrderedFromList": return new OrderedFromListWalker(tree.children, ctx);
|
|
226
226
|
case "UnorderedFromSet": return new UnorderedFromSetWalker(tree.children, ctx);
|
|
227
|
+
case "Rows":
|
|
228
|
+
// Desugar to an unordered set of materialized leaves — the
|
|
229
|
+
// legacy path keeps its per-RO machinery; the row store's fast
|
|
230
|
+
// path lives in the hybrid renderer.
|
|
231
|
+
return new UnorderedFromSetWalker(tree.set.rows.map((r) => RenderTree.leaf(materializeRow(tree.set, r))), ctx);
|
|
227
232
|
}
|
|
228
233
|
}
|
|
229
234
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenePass.js","sourceRoot":"","sources":["../../src/runtime/scenePass.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,mEAAmE;AACnE,qDAAqD;AACrD,0DAA0D;AAC1D,yBAAyB;AACzB,EAAE;AACF,kEAAkE;AAClE,kEAAkE;AAClE,gEAAgE;AAChE,iDAAiD;AACjD,EAAE;AACF,+DAA+D;AAC/D,qEAAqE;AACrE,mEAAmE;AACnE,kEAAkE;AAClE,4BAA4B;AAE5B,OAAO,EAIL,MAAM,GAKP,MAAM,2BAA2B,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"scenePass.js","sourceRoot":"","sources":["../../src/runtime/scenePass.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aardworx/wombat.rendering",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.16",
|
|
4
4
|
"description": "WebGPU rendering layer for the Wombat TypeScript stack — RenderObject/RenderTask/runtime + window glue, port of Aardvark.Rendering's lower layers on top of WebGPU and wombat.shader.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "krauthaufen",
|
package/src/core/index.ts
CHANGED
package/src/core/renderTree.ts
CHANGED
|
@@ -16,7 +16,8 @@ export type RenderTree =
|
|
|
16
16
|
| { readonly kind: "Unordered"; readonly children: readonly RenderTree[] }
|
|
17
17
|
| { readonly kind: "Adaptive"; readonly tree: aval<RenderTree> }
|
|
18
18
|
| { readonly kind: "OrderedFromList"; readonly children: alist<RenderTree> }
|
|
19
|
-
| { readonly kind: "UnorderedFromSet"; readonly children: aset<RenderTree> }
|
|
19
|
+
| { readonly kind: "UnorderedFromSet"; readonly children: aset<RenderTree> }
|
|
20
|
+
| { readonly kind: "Rows"; readonly set: import("./rowSet.js").RenderRowSet };
|
|
20
21
|
|
|
21
22
|
export const RenderTree = {
|
|
22
23
|
empty: { kind: "Empty" } as const satisfies RenderTree,
|
|
@@ -26,4 +27,5 @@ export const RenderTree = {
|
|
|
26
27
|
adaptive: (tree: aval<RenderTree>): RenderTree => ({ kind: "Adaptive", tree }),
|
|
27
28
|
orderedFromList: (children: alist<RenderTree>): RenderTree => ({ kind: "OrderedFromList", children }),
|
|
28
29
|
unorderedFromSet: (children: aset<RenderTree>): RenderTree => ({ kind: "UnorderedFromSet", children }),
|
|
30
|
+
rows: (set: import("./rowSet.js").RenderRowSet): RenderTree => ({ kind: "Rows", set }),
|
|
29
31
|
} as const;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// RenderRowSet — the row store's render-side contract (instance-tables
|
|
2
|
+
// M2 proper). A collection of same-shaped draws is ONE shared template
|
|
3
|
+
// `RenderObject` plus an `aset` of thin rows; per row only the fields
|
|
4
|
+
// that actually differ are retained (~a hundred bytes), instead of a
|
|
5
|
+
// full RenderObject + provider graph + spec per element.
|
|
6
|
+
//
|
|
7
|
+
// `materializeRow` produces a REAL RenderObject via prototype
|
|
8
|
+
// inheritance — every consumer that predates the row store (legacy
|
|
9
|
+
// ScenePass, flatten fallback, eligibility) keeps working unchanged on
|
|
10
|
+
// materialized rows, so correctness never depends on the fast path.
|
|
11
|
+
|
|
12
|
+
import type { aval, aset } from "@aardworx/wombat.adaptive";
|
|
13
|
+
import type { Trafo3d } from "@aardworx/wombat.base";
|
|
14
|
+
import type { DrawCall } from "./drawCall.js";
|
|
15
|
+
import type { IAttributeProvider, IUniformProvider } from "./provider.js";
|
|
16
|
+
import type { RenderObject } from "./renderObject.js";
|
|
17
|
+
|
|
18
|
+
/** The per-row delta over a `RenderRowSet.template`. */
|
|
19
|
+
export interface RenderRow {
|
|
20
|
+
readonly uniforms: IUniformProvider;
|
|
21
|
+
readonly drawCall: aval<DrawCall>;
|
|
22
|
+
readonly instanceAttributes?: IAttributeProvider;
|
|
23
|
+
readonly pickId?: number;
|
|
24
|
+
readonly modelChain?: readonly aval<Trafo3d>[];
|
|
25
|
+
readonly active?: aval<boolean>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface RenderRowSet {
|
|
29
|
+
/**
|
|
30
|
+
* Shared fields — a RenderObject whose per-row fields are treated as
|
|
31
|
+
* DEFAULTS (rows override via prototype inheritance). The producer
|
|
32
|
+
* seeds it from the first lowered row; `template.heapAsserted` is
|
|
33
|
+
* expected for the direct heap path (unasserted sets fall back to
|
|
34
|
+
* materialized per-row consumption).
|
|
35
|
+
*
|
|
36
|
+
* Mutable ON PURPOSE: the tree node must exist before the first
|
|
37
|
+
* child arrives through the reactive children set.
|
|
38
|
+
*/
|
|
39
|
+
template: RenderObject | undefined;
|
|
40
|
+
readonly rows: aset<RenderRow>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const materialized = new WeakMap<RenderRow, RenderObject>();
|
|
44
|
+
|
|
45
|
+
/** Row → RenderObject with the set's template as prototype. Cached per
|
|
46
|
+
* row so aset deltas / eligibility caches see a stable identity. */
|
|
47
|
+
export function materializeRow(set: RenderRowSet, row: RenderRow): RenderObject {
|
|
48
|
+
let ro = materialized.get(row);
|
|
49
|
+
if (ro === undefined) {
|
|
50
|
+
if (set.template === undefined) {
|
|
51
|
+
throw new Error("materializeRow: RenderRowSet.template not seeded yet");
|
|
52
|
+
}
|
|
53
|
+
const o = Object.create(set.template) as Record<string, unknown>;
|
|
54
|
+
o["uniforms"] = row.uniforms;
|
|
55
|
+
o["drawCall"] = row.drawCall;
|
|
56
|
+
if (row.instanceAttributes !== undefined) o["instanceAttributes"] = row.instanceAttributes;
|
|
57
|
+
if (row.pickId !== undefined) o["pickId"] = row.pickId;
|
|
58
|
+
if (row.modelChain !== undefined) o["modelChain"] = row.modelChain;
|
|
59
|
+
if (row.active !== undefined) o["active"] = row.active;
|
|
60
|
+
ro = o as unknown as RenderObject;
|
|
61
|
+
materialized.set(row, ro);
|
|
62
|
+
}
|
|
63
|
+
return ro;
|
|
64
|
+
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
import { AListBridges } from "@aardworx/wombat.adaptive";
|
|
32
32
|
import type { RenderObject } from "../core/renderObject.js";
|
|
33
33
|
import type { RenderTree } from "../core/renderTree.js";
|
|
34
|
+
import { materializeRow } from "../core/rowSet.js";
|
|
34
35
|
|
|
35
36
|
/** True when `tree` contains no reactive nodes — its RenderObjects can
|
|
36
37
|
* be enumerated as a plain iterable (no inner aset / reader needed). */
|
|
@@ -168,5 +169,12 @@ export function flattenRenderTree(tree: RenderTree): aset<RenderObject> {
|
|
|
168
169
|
return flattenChildSet(AListBridges.toASet(tree.children));
|
|
169
170
|
case "UnorderedFromSet":
|
|
170
171
|
return flattenChildSet(tree.children);
|
|
172
|
+
case "Rows":
|
|
173
|
+
// Materialization fallback — prototype-derived RenderObjects
|
|
174
|
+
// with stable per-row identity. The hybrid renderer consumes
|
|
175
|
+
// row sets DIRECTLY (see hybridScene.collectRowSets) and never
|
|
176
|
+
// takes this path for them; it exists for the legacy ScenePass
|
|
177
|
+
// and for row sets under reactive containers.
|
|
178
|
+
return tree.set.rows.map((r) => materializeRow(tree.set, r));
|
|
171
179
|
}
|
|
172
180
|
}
|
|
@@ -167,6 +167,46 @@ function currentRefCellFor(av: aval<ITexture>, initial: number): { ref: number }
|
|
|
167
167
|
}
|
|
168
168
|
return c;
|
|
169
169
|
}
|
|
170
|
+
// ─── Value-interned constant wrappers ───────────────────────────────
|
|
171
|
+
// Collection rows repeat the same uniform VALUES (class colors, line
|
|
172
|
+
// widths) across thousands of rows. Wrapping each pull in a fresh
|
|
173
|
+
// `AVal.constant` costs ~100 B per row-pass AND defeats the pool's
|
|
174
|
+
// aval-identity sharing (every row gets its own arena slot for an
|
|
175
|
+
// identical value). Interning by VALUE makes equal constants share
|
|
176
|
+
// ONE wrapper — and therefore one pool entry per chunk.
|
|
177
|
+
const constPrimIntern = new Map<unknown, aval<unknown>>();
|
|
178
|
+
const constDataIntern = new Map<string, aval<unknown>>();
|
|
179
|
+
const constObjIntern = new WeakMap<object, aval<unknown>>();
|
|
180
|
+
function internConstant(v: unknown): aval<unknown> {
|
|
181
|
+
const t = typeof v;
|
|
182
|
+
if (t === "number" || t === "string" || t === "boolean") {
|
|
183
|
+
let av = constPrimIntern.get(v);
|
|
184
|
+
if (av === undefined) { av = AVal.constant(v); constPrimIntern.set(v, av); }
|
|
185
|
+
return av;
|
|
186
|
+
}
|
|
187
|
+
if (v !== null && t === "object") {
|
|
188
|
+
// Vector/matrix values expose `_data` (number[] or typed array) —
|
|
189
|
+
// key structurally so per-row `new V4f(...)` instances collapse.
|
|
190
|
+
const data = (v as { _data?: ArrayLike<number> })._data;
|
|
191
|
+
if (data !== undefined && typeof data.length === "number" && data.length <= 16) {
|
|
192
|
+
let key = String(data.length);
|
|
193
|
+
for (let i = 0; i < data.length; i++) key += "," + data[i];
|
|
194
|
+
let av = constDataIntern.get(key);
|
|
195
|
+
if (av === undefined) { av = AVal.constant(v); constDataIntern.set(key, av); }
|
|
196
|
+
return av;
|
|
197
|
+
}
|
|
198
|
+
let av = constObjIntern.get(v as object);
|
|
199
|
+
if (av === undefined) { av = AVal.constant(v); constObjIntern.set(v as object, av); }
|
|
200
|
+
return av;
|
|
201
|
+
}
|
|
202
|
+
return AVal.constant(v);
|
|
203
|
+
}
|
|
204
|
+
/** True when `v` quacks like an aval (matches `asAval`'s test). */
|
|
205
|
+
function isAvalLike(v: unknown): boolean {
|
|
206
|
+
return typeof v === "object" && v !== null
|
|
207
|
+
&& typeof (v as { getValue?: unknown }).getValue === "function";
|
|
208
|
+
}
|
|
209
|
+
|
|
170
210
|
function indicesAvalFor(ibAval: aval<IBuffer>, indexFormat: GPUIndexFormat, baseVertex: number): aval<Uint32Array> {
|
|
171
211
|
let byBase = indicesAvalCache.get(ibAval);
|
|
172
212
|
if (byBase === undefined) {
|
|
@@ -336,6 +376,93 @@ export function renderObjectToHeapSpec(
|
|
|
336
376
|
// it comes back as soon as atlas space frees. Previously this condition threw,
|
|
337
377
|
// and the exception escaped into the render loop's frame callback: one full
|
|
338
378
|
// atlas killed the whole viewer, permanently.
|
|
379
|
+
): HeapDrawSpec | null {
|
|
380
|
+
const flat = buildFlatSpec(ro, token, pool, opts);
|
|
381
|
+
if (flat === null) return flat;
|
|
382
|
+
// Row specs (prototype-derived ROs — see materializeRow): chain the
|
|
383
|
+
// spec AND its inputs bag onto template-shared prototypes so each
|
|
384
|
+
// row retains only what actually differs. Protocol: the first row's
|
|
385
|
+
// spec stays flat and is remembered; the second row diffs against
|
|
386
|
+
// it (by identity) to mint the shared prototypes; rows 3+ get
|
|
387
|
+
// Object.create + own-only fields. Any shape surprise (different
|
|
388
|
+
// input name sets) falls back to the flat spec — correctness never
|
|
389
|
+
// depends on the chaining.
|
|
390
|
+
const tpl = Object.getPrototypeOf(ro) as RenderObject | null;
|
|
391
|
+
if (tpl === null || tpl === Object.prototype || (tpl as { effect?: unknown }).effect === undefined) {
|
|
392
|
+
return flat;
|
|
393
|
+
}
|
|
394
|
+
let cache = specShareCache.get(tpl);
|
|
395
|
+
if (cache === undefined) {
|
|
396
|
+
cache = { first: flat };
|
|
397
|
+
specShareCache.set(tpl, cache);
|
|
398
|
+
return flat;
|
|
399
|
+
}
|
|
400
|
+
if (cache.specProto === undefined) {
|
|
401
|
+
const first = cache.first;
|
|
402
|
+
if (first === undefined) return flat;
|
|
403
|
+
// Mint prototypes from the identity-agreeing subset.
|
|
404
|
+
const firstInputNames = Object.keys(first.inputs);
|
|
405
|
+
const thisInputNames = Object.keys(flat.inputs);
|
|
406
|
+
if (firstInputNames.length !== thisInputNames.length) return flat;
|
|
407
|
+
const inputsProto: Record<string, unknown> = {};
|
|
408
|
+
for (const n of firstInputNames) {
|
|
409
|
+
if (first.inputs[n] === (flat.inputs as Record<string, unknown>)[n]) inputsProto[n] = first.inputs[n];
|
|
410
|
+
}
|
|
411
|
+
const specProto: Record<string, unknown> = {};
|
|
412
|
+
const f = first as unknown as Record<string, unknown>;
|
|
413
|
+
const g = flat as unknown as Record<string, unknown>;
|
|
414
|
+
for (const k of Object.keys(f)) {
|
|
415
|
+
if (k === "inputs" || k === "instanceAttributes") continue;
|
|
416
|
+
if (f[k] === g[k]) specProto[k] = f[k];
|
|
417
|
+
}
|
|
418
|
+
cache.inputsProto = inputsProto;
|
|
419
|
+
cache.specProto = specProto;
|
|
420
|
+
cache.first = undefined; // release the flat reference
|
|
421
|
+
}
|
|
422
|
+
const inputsProto = cache.inputsProto!;
|
|
423
|
+
const specProto = cache.specProto!;
|
|
424
|
+
const names = Object.keys(flat.inputs);
|
|
425
|
+
// Shape guard: a key present in a prototype but ABSENT from this
|
|
426
|
+
// row would leak the shared value through the chain — bail to flat.
|
|
427
|
+
for (const k of Object.keys(specProto)) {
|
|
428
|
+
if (!(k in (flat as unknown as Record<string, unknown>))) return flat;
|
|
429
|
+
}
|
|
430
|
+
const slimInputs = Object.create(inputsProto) as Record<string, unknown>;
|
|
431
|
+
let protoNamesSeen = 0;
|
|
432
|
+
for (const n of names) {
|
|
433
|
+
const v = (flat.inputs as Record<string, unknown>)[n];
|
|
434
|
+
if (n in inputsProto) {
|
|
435
|
+
protoNamesSeen++;
|
|
436
|
+
if (inputsProto[n] !== v) slimInputs[n] = v;
|
|
437
|
+
} else {
|
|
438
|
+
slimInputs[n] = v;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// A name in the proto but ABSENT from this row would leak the shared
|
|
442
|
+
// value — bail to flat in that case.
|
|
443
|
+
if (protoNamesSeen !== Object.keys(inputsProto).length) return flat;
|
|
444
|
+
const slim = Object.create(specProto) as Record<string, unknown>;
|
|
445
|
+
const g2 = flat as unknown as Record<string, unknown>;
|
|
446
|
+
for (const k of Object.keys(g2)) {
|
|
447
|
+
if (k === "inputs") continue;
|
|
448
|
+
if ((specProto as Record<string, unknown>)[k] !== g2[k]) slim[k] = g2[k];
|
|
449
|
+
}
|
|
450
|
+
slim["inputs"] = slimInputs;
|
|
451
|
+
return slim as unknown as HeapDrawSpec;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
interface SpecShare {
|
|
455
|
+
first: HeapDrawSpec | undefined;
|
|
456
|
+
inputsProto?: Record<string, unknown>;
|
|
457
|
+
specProto?: Record<string, unknown>;
|
|
458
|
+
}
|
|
459
|
+
const specShareCache = new WeakMap<object, SpecShare>();
|
|
460
|
+
|
|
461
|
+
function buildFlatSpec(
|
|
462
|
+
ro: RenderObject,
|
|
463
|
+
token: AdaptiveToken,
|
|
464
|
+
pool?: AtlasPool,
|
|
465
|
+
opts?: { readonly enableDerivedUniforms?: boolean },
|
|
339
466
|
): HeapDrawSpec | null {
|
|
340
467
|
// 1. Inputs map: vertex attributes (BufferView) + uniforms, pulled
|
|
341
468
|
// SHADER-DRIVEN from the providers. We compile `ro.effect` (cached
|
|
@@ -364,7 +491,11 @@ export function renderObjectToHeapSpec(
|
|
|
364
491
|
const pullUniform = (name: string): void => {
|
|
365
492
|
if (Object.prototype.hasOwnProperty.call(inputs, name)) return;
|
|
366
493
|
const av = uProv.tryGet(name);
|
|
367
|
-
if (av
|
|
494
|
+
if (av === undefined) return;
|
|
495
|
+
// Plain (non-aval) uniform values — e.g. row-scope constants
|
|
496
|
+
// resolved through a RowProvider hole — intern by VALUE so equal
|
|
497
|
+
// constants share one wrapper + one pool entry.
|
|
498
|
+
inputs[name] = isAvalLike(av) ? av : internConstant(av);
|
|
368
499
|
};
|
|
369
500
|
// §7-covered derived trafos (ModelViewProjTrafo, NormalMatrix, …) are
|
|
370
501
|
// GPU-computed from the M/V/P constituents — addDraw never reads their
|
|
@@ -404,7 +535,9 @@ export function renderObjectToHeapSpec(
|
|
|
404
535
|
// Pull them here so `ruleForUniform`'s bound-leaf check succeeds
|
|
405
536
|
// (e.g. LineColor = select(AnnotationId == SelectedId, …) needs
|
|
406
537
|
// AnnotationId/SelectedId/… in `spec.inputs`).
|
|
407
|
-
for (
|
|
538
|
+
// for-in (NOT Object.keys): row specs chain their input bags onto a
|
|
539
|
+
// template-shared prototype; rule values can live on either level.
|
|
540
|
+
for (const name in inputs) {
|
|
408
541
|
const v = inputs[name];
|
|
409
542
|
if (isDerivedRule(v)) {
|
|
410
543
|
for (const inp of inputsOf((v as DerivedRule).ir)) {
|
|
@@ -36,6 +36,7 @@ import { RenderTree } from "../core/renderTree.js";
|
|
|
36
36
|
import type { RenderObject } from "../core/renderObject.js";
|
|
37
37
|
import { ScenePass } from "./scenePass.js";
|
|
38
38
|
import { flattenRenderTree } from "./flattenTree.js";
|
|
39
|
+
import { materializeRow, type RenderRowSet } from "../core/index.js";
|
|
39
40
|
import { isHeapEligible } from "./heapEligibility.js";
|
|
40
41
|
import { renderObjectToHeapSpec } from "./heapAdapter.js";
|
|
41
42
|
import { buildHeapScene, type HeapDrawSpec, type HeapScene } from "./heapScene.js";
|
|
@@ -229,7 +230,30 @@ export function compileHybridScene(
|
|
|
229
230
|
return av;
|
|
230
231
|
};
|
|
231
232
|
|
|
232
|
-
|
|
233
|
+
// ─── Row sets (instance-tables M2 proper) ────────────────────────
|
|
234
|
+
// `Rows` nodes on the STATIC spine are consumed directly: the heap
|
|
235
|
+
// gets one choose stage per set (row → spec over the shared
|
|
236
|
+
// template), the flat pipeline never sees per-row RenderObjects.
|
|
237
|
+
// Rows under reactive containers stay in the tree and go through
|
|
238
|
+
// the materialization fallback (correct, just not accelerated).
|
|
239
|
+
// Producer contract (dom row lowering): a Rows node's template is
|
|
240
|
+
// heap-asserted and seeded before its first row arrives.
|
|
241
|
+
const rowSets: RenderRowSet[] = [];
|
|
242
|
+
const stripRows = (t: RenderTree): RenderTree => {
|
|
243
|
+
switch (t.kind) {
|
|
244
|
+
case "Rows":
|
|
245
|
+
rowSets.push(t.set);
|
|
246
|
+
return RenderTree.empty;
|
|
247
|
+
case "Ordered":
|
|
248
|
+
return RenderTree.ordered(...t.children.map(stripRows));
|
|
249
|
+
case "Unordered":
|
|
250
|
+
return RenderTree.unordered(...t.children.map(stripRows));
|
|
251
|
+
default:
|
|
252
|
+
return t;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
const strippedTree = stripRows(tree);
|
|
256
|
+
const flat = flattenRenderTree(strippedTree);
|
|
233
257
|
|
|
234
258
|
// ─── Atlas pool ──────────────────────────────────────────────────
|
|
235
259
|
// Per-scene Tier-S atlas pool. Owned by this hybrid scene; disposed
|
|
@@ -266,6 +290,18 @@ export function compileHybridScene(
|
|
|
266
290
|
}
|
|
267
291
|
return spec;
|
|
268
292
|
};
|
|
293
|
+
// Row sets: one choose stage per set — row → spec via the cached
|
|
294
|
+
// materialized RO (prototype over the shared template). `undefined`
|
|
295
|
+
// (atlas-full) drops the row for the cycle, like the flat path.
|
|
296
|
+
const rowSpecSets = rowSets.map((set) =>
|
|
297
|
+
ASet.bind(
|
|
298
|
+
(on: boolean) =>
|
|
299
|
+
on
|
|
300
|
+
? set.rows.choose((row) => specOf(materializeRow(set, row)))
|
|
301
|
+
: ASet.empty<HeapDrawSpec>(),
|
|
302
|
+
heapEnabled,
|
|
303
|
+
));
|
|
304
|
+
|
|
269
305
|
// ONE fused stage: eligibility routes straight into the spec.
|
|
270
306
|
// Constant eligibility (asserted rows, fully-static ROs) takes the
|
|
271
307
|
// closure-free branch: an eager constant wrapper per RO — and the
|
|
@@ -284,7 +320,11 @@ export function compileHybridScene(
|
|
|
284
320
|
return e.map((b) => (b ? specOf(ro) : undefined));
|
|
285
321
|
});
|
|
286
322
|
|
|
287
|
-
const
|
|
323
|
+
const allHeapSpecs = rowSpecSets.length === 0
|
|
324
|
+
? heapSpecAset
|
|
325
|
+
: ASet.unionMany(ASet.ofArray([heapSpecAset, ...rowSpecSets]));
|
|
326
|
+
|
|
327
|
+
const heapScene: HeapScene = buildHeapScene(device, signature, allHeapSpecs, {
|
|
288
328
|
fragmentOutputLayout,
|
|
289
329
|
atlasPool,
|
|
290
330
|
...(opts.enableFamilyMerge === true ? { enableFamilyMerge: true } : {}),
|
|
@@ -308,17 +348,33 @@ export function compileHybridScene(
|
|
|
308
348
|
if (l === undefined) { l = RenderTree.leaf(ro); leafCache.set(ro, l); }
|
|
309
349
|
return l;
|
|
310
350
|
};
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
351
|
+
const legacyFromFlat = flat.chooseA((ro: RenderObject) => {
|
|
352
|
+
const e = elig(ro);
|
|
353
|
+
if (e.isConstant) {
|
|
354
|
+
// Why force here: constant — immutable by definition.
|
|
355
|
+
return e.force(/* allow-force */)
|
|
356
|
+
? (CONST_UNDEF as aval<RenderTree | undefined>)
|
|
357
|
+
: AVal.constant(leafOf(ro));
|
|
358
|
+
}
|
|
359
|
+
return e.map((b) => (b ? undefined : leafOf(ro)));
|
|
360
|
+
});
|
|
361
|
+
// Row sets render legacy ONLY when the global heap toggle is off —
|
|
362
|
+
// with the (default) constant-true toggle the bind collapses and
|
|
363
|
+
// this contributes nothing.
|
|
364
|
+
const legacySet = rowSets.length === 0
|
|
365
|
+
? legacyFromFlat
|
|
366
|
+
: ASet.union(
|
|
367
|
+
legacyFromFlat,
|
|
368
|
+
ASet.bind(
|
|
369
|
+
(on: boolean) =>
|
|
370
|
+
on
|
|
371
|
+
? ASet.empty<RenderTree>()
|
|
372
|
+
: ASet.unionMany(ASet.ofArray(rowSets.map((set) =>
|
|
373
|
+
set.rows.map((r) => leafOf(materializeRow(set, r)))))),
|
|
374
|
+
heapEnabled,
|
|
375
|
+
),
|
|
376
|
+
);
|
|
377
|
+
const legacyTree: RenderTree = RenderTree.unorderedFromSet(legacySet);
|
|
322
378
|
const scenePass = new ScenePass(device, signature, legacyTree, compileEffect);
|
|
323
379
|
// DEBUG registry: per-hybrid-scene live draw counts (heap vs legacy) so
|
|
324
380
|
// multi-task pipelines (OIT) can be inspected from the console.
|
package/src/runtime/scenePass.ts
CHANGED
|
@@ -26,11 +26,12 @@ import {
|
|
|
26
26
|
type aset,
|
|
27
27
|
} from "@aardworx/wombat.adaptive";
|
|
28
28
|
import {
|
|
29
|
+
RenderTree,
|
|
30
|
+
materializeRow,
|
|
29
31
|
type CompiledEffect,
|
|
30
32
|
type Effect,
|
|
31
33
|
type FramebufferSignature,
|
|
32
34
|
type RenderObject,
|
|
33
|
-
type RenderTree,
|
|
34
35
|
} from "../core/index.js";
|
|
35
36
|
import {
|
|
36
37
|
prepareRenderObject,
|
|
@@ -238,6 +239,12 @@ function build(tree: RenderTree, ctx: BuildContext): NodeWalker {
|
|
|
238
239
|
case "Adaptive": return new AdaptiveWalker(tree.tree, ctx);
|
|
239
240
|
case "OrderedFromList": return new OrderedFromListWalker(tree.children, ctx);
|
|
240
241
|
case "UnorderedFromSet": return new UnorderedFromSetWalker(tree.children, ctx);
|
|
242
|
+
case "Rows":
|
|
243
|
+
// Desugar to an unordered set of materialized leaves — the
|
|
244
|
+
// legacy path keeps its per-RO machinery; the row store's fast
|
|
245
|
+
// path lives in the hybrid renderer.
|
|
246
|
+
return new UnorderedFromSetWalker(
|
|
247
|
+
tree.set.rows.map((r) => RenderTree.leaf(materializeRow(tree.set, r))), ctx);
|
|
241
248
|
}
|
|
242
249
|
}
|
|
243
250
|
|