@woosh/meep-engine 2.119.128 → 2.119.130
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/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"AAQA,4BAA6B,CAAC,CAAC;AAC/B,6BAA8B,CAAC,CAAC;AAChC,6BAA8B,CAAC,CAAC;AAChC,4BAA6B,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,+BAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,wBAFU,MAAM,CAEoB;AAcpC;;;;;GAKG;AACH,iCAFU,MAAM,CAEqB;AAiBrC;;;;;;GAMG;AACH;IAEI;;;;OAIG;IACH,sBAA2E;IAE3E;;;;;OAKG;IACH,mBAFa,WAAW,CAIvB;IAED;;;;OAIG;IACH,uBAAsD;IAEtD;;;OAGG;IACH,oBAFY,YAAY,CAIvB;IAED;;;;OAIG;IACH,sBAAoD;IAEpD;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,eAAW;IAEX;;;;OAIG;IACH,eAAY;IAEZ;;;;OAIG;IACH,uBAAmB;IAEnB;;;;OAIG;IACH,eAAmB;IAUnB;;;OAGG;IACH,YAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAUD;;;;OAIG;IACH,YAFY,MAAM,CAIjB;IAUD;;;OAGG;IACH,qBAFW,MAAM,EAQhB;IAlBD;;;OAGG;IACH,qBAFa,MAAM,CAIlB;IAcD,wBAgBC;IAED;;;;OAIG;IACH,uBA6BC;IAED;;OAEG;IACH,aAIC;IAED;;;OAGG;IACH,iBAFa,MAAM,CAqDlB;IAED;;;;OAIG;IACH,iBAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,uBAHW,MAAM,SACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAGD;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,oBAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,QAe/B;IAED;;;;OAIG;IACH,kBAHW,MAAM,QACN,MAAM,EAAE,GAAC,SAAS,CAAC,MAAM,CAAC,GAAC,KAAK,QAsB1C;IAED;;;;OAIG;IACH,mBAHW,MAAM,QACN,MAAM,EAAE,QAWlB;IAED;;;;;;;;;OASG;IACH,4BARW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAmBhB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAoClB;IAED;;;;;OAKG;IACH,oCAJW,MAAM,WACN,MAAM,WACN,MAAM,QAwChB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA0GhB;IAED;;;;;OAKG;IACH,wBAqBC;IAED;;;;OAIG;IACH,yBA4BC;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA6ChB;IAED;;;;;;OAMG;IACH,gBAoMC;IAED
|
|
1
|
+
{"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"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"}
|
|
@@ -1067,7 +1067,8 @@ export class BVH {
|
|
|
1067
1067
|
}
|
|
1068
1068
|
|
|
1069
1069
|
/**
|
|
1070
|
-
*
|
|
1070
|
+
* Utility method for assigning both children at once
|
|
1071
|
+
* Children must be valid nodes (non-null)
|
|
1071
1072
|
* @param {number} parent
|
|
1072
1073
|
* @param {number} child_1
|
|
1073
1074
|
* @param {number} child_2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ebvh_optimize_treelet.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_optimize_treelet.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ebvh_optimize_treelet.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_optimize_treelet.js"],"names":[],"mappings":"AAgNA;;;;;;;GAOG;AACH,2CAJW,GAAG,QACH,MAAM,iBACN,MAAM,QA0IhB"}
|
|
@@ -5,7 +5,7 @@ import { NULL_NODE } from "./BVH.js";
|
|
|
5
5
|
|
|
6
6
|
const scratch_areas = new Float32Array(256);
|
|
7
7
|
const scratch_cost = new Float32Array(256);
|
|
8
|
-
const
|
|
8
|
+
const scratch_partitions = new Uint32Array(256);
|
|
9
9
|
const scratch_treelet = new Uint32Array(16);
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -23,7 +23,7 @@ function assemble_mask(bvh, leaves, mask) {
|
|
|
23
23
|
return leaves[leaf_index];
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
let partitioning_left =
|
|
26
|
+
let partitioning_left = scratch_partitions[mask];
|
|
27
27
|
let partition_right = mask & ~(partitioning_left);
|
|
28
28
|
|
|
29
29
|
const parent = bvh.allocate_node();
|
|
@@ -45,7 +45,7 @@ function assemble_mask(bvh, leaves, mask) {
|
|
|
45
45
|
*/
|
|
46
46
|
function rebuild_treelet(bvh, root, leaves, mask) {
|
|
47
47
|
|
|
48
|
-
let partitioning_left =
|
|
48
|
+
let partitioning_left = scratch_partitions[mask];
|
|
49
49
|
let partition_right = mask & ~(partitioning_left);
|
|
50
50
|
|
|
51
51
|
bvh.node_assign_children(root,
|
|
@@ -54,6 +54,11 @@ function rebuild_treelet(bvh, root, leaves, mask) {
|
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
//cost of traversing an intermediate node
|
|
58
|
+
const SAH_COST_INTERMEDIATE = 1.2;
|
|
59
|
+
// cost of performing ray/triangle test
|
|
60
|
+
const SAH_COST_TRIANGLE = 1;
|
|
61
|
+
|
|
57
62
|
/**
|
|
58
63
|
*
|
|
59
64
|
* @param {BVH} bvh
|
|
@@ -80,7 +85,9 @@ function optimize_treelet(bvh, root, leaves, leaf_count) {
|
|
|
80
85
|
|
|
81
86
|
// Initialize costs of individual leaves
|
|
82
87
|
for (let i = 0; i < leaf_count; i++) {
|
|
83
|
-
|
|
88
|
+
const leaf = leaves[i];
|
|
89
|
+
|
|
90
|
+
scratch_cost[1 << i] = SAH_COST_TRIANGLE * bvh.node_get_surface_area(leaf) ;
|
|
84
91
|
}
|
|
85
92
|
|
|
86
93
|
// Optimize every subset of leaves
|
|
@@ -92,26 +99,28 @@ function optimize_treelet(bvh, root, leaves, leaf_count) {
|
|
|
92
99
|
|
|
93
100
|
// Try each way of partitioning the leaves
|
|
94
101
|
let best_cost = Infinity;
|
|
95
|
-
let
|
|
102
|
+
let best_partition = 0;
|
|
96
103
|
|
|
97
104
|
const delta = (s - 1) & s;
|
|
98
|
-
let
|
|
105
|
+
let partition = (-delta) & s;
|
|
99
106
|
|
|
100
107
|
do {
|
|
101
|
-
const cost = scratch_cost[
|
|
108
|
+
const cost = scratch_cost[partition] + scratch_cost[s ^ partition];
|
|
102
109
|
|
|
103
110
|
if (cost < best_cost) {
|
|
104
111
|
best_cost = cost;
|
|
105
|
-
|
|
112
|
+
best_partition = partition;
|
|
106
113
|
}
|
|
107
114
|
|
|
108
|
-
|
|
115
|
+
partition = (partition - delta) & s;
|
|
109
116
|
|
|
110
|
-
} while (
|
|
117
|
+
} while (partition !== 0)
|
|
111
118
|
|
|
112
119
|
// Calculate final SAH cost (Equation 2)
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
const sah_heuristic = SAH_COST_INTERMEDIATE * scratch_areas[s] + best_cost
|
|
121
|
+
|
|
122
|
+
scratch_cost[s] = sah_heuristic;
|
|
123
|
+
scratch_partitions[s] = best_partition;
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
|
|
@@ -120,8 +129,6 @@ function optimize_treelet(bvh, root, leaves, leaf_count) {
|
|
|
120
129
|
}
|
|
121
130
|
|
|
122
131
|
|
|
123
|
-
|
|
124
|
-
|
|
125
132
|
/**
|
|
126
133
|
*
|
|
127
134
|
* @param {BVH} bvh
|