@woosh/meep-engine 2.48.20 → 2.48.22

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 (96) hide show
  1. package/package.json +1 -1
  2. package/src/{engine/graphics/micron/build/clustering → core/geom/3d/topology/util}/compute_face_connection_weight.js +40 -35
  3. package/src/core/graph/build_face_graph_from_mesh.js +1 -1
  4. package/src/engine/graphics/ecs/mesh-v2/sample/load_gltf.js +0 -3
  5. package/src/engine/graphics/micron/MICRON_GEOMETRY_FIELD.js +0 -1
  6. package/src/engine/graphics/micron/MICRON_URI_FIELD.js +0 -1
  7. package/src/engine/graphics/micron/build/MICRON_PATCH_SIZE_MAX.js +0 -5
  8. package/src/engine/graphics/micron/build/PatchRepresentation.js +0 -424
  9. package/src/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +0 -311
  10. package/src/engine/graphics/micron/build/build_geometry_info.js +0 -21
  11. package/src/engine/graphics/micron/build/clustering/assignInitialPatchNeighbours.js +0 -63
  12. package/src/engine/graphics/micron/build/clustering/assign_patch_neighbours_from_topology.js +0 -46
  13. package/src/engine/graphics/micron/build/clustering/build_clustering_2.js +0 -37
  14. package/src/engine/graphics/micron/build/clustering/build_leaf_patches.js +0 -326
  15. package/src/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +0 -76
  16. package/src/engine/graphics/micron/build/clustering/computeBorderLengthChange.js +0 -59
  17. package/src/engine/graphics/micron/build/clustering/computeFaceCurvatureScore.js +0 -57
  18. package/src/engine/graphics/micron/build/clustering/computeOpenFaceFreedom.js +0 -35
  19. package/src/engine/graphics/micron/build/clustering/populateOpenFaceNeighboursForPatch.js +0 -56
  20. package/src/engine/graphics/micron/build/clustering/validate_leaf_patch_connectivity.js +0 -44
  21. package/src/engine/graphics/micron/build/compute_micron_buffer_array_constructor.js +0 -24
  22. package/src/engine/graphics/micron/build/compute_vertex_remap_cost.js +0 -29
  23. package/src/engine/graphics/micron/build/debug/build_clustering_info.js +0 -58
  24. package/src/engine/graphics/micron/build/debug/build_graph_info.js +0 -59
  25. package/src/engine/graphics/micron/build/fill_patch_geometry_data.js +0 -270
  26. package/src/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +0 -196
  27. package/src/engine/graphics/micron/build/hierarchy/build_intermediate_patch_topology.js +0 -162
  28. package/src/engine/graphics/micron/build/hierarchy/build_merge_graph.js +0 -89
  29. package/src/engine/graphics/micron/build/hierarchy/computePatchMergeScore.js +0 -146
  30. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertex_count.js +0 -32
  31. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertices.js +0 -34
  32. package/src/engine/graphics/micron/build/hierarchy/merge_patches.js +0 -581
  33. package/src/engine/graphics/micron/build/hierarchy/metis_cluster_clusters.js +0 -53
  34. package/src/engine/graphics/micron/build/hierarchy/optimize_graph_partitioning_balance.js +0 -515
  35. package/src/engine/graphics/micron/build/hierarchy/patch_combine.js +0 -180
  36. package/src/engine/graphics/micron/build/hierarchy/patch_fill_holes_by_uncollapse.js +0 -60
  37. package/src/engine/graphics/micron/build/hierarchy/patch_stitch_parent_border.js +0 -320
  38. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +0 -547
  39. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_tree.js +0 -140
  40. package/src/engine/graphics/micron/buildPatchwork.js +0 -68
  41. package/src/engine/graphics/micron/convert_three_object_to_micron.js +0 -179
  42. package/src/engine/graphics/micron/debug/VirtualGeometryStats.js +0 -42
  43. package/src/engine/graphics/micron/format/MICRON_GEOMETRY_PROPERTY_NAME.js +0 -1
  44. package/src/engine/graphics/micron/format/MicronGeometry.d.ts +0 -21
  45. package/src/engine/graphics/micron/format/MicronGeometry.js +0 -334
  46. package/src/engine/graphics/micron/format/MicronGeometryPatch.d.ts +0 -3
  47. package/src/engine/graphics/micron/format/MicronGeometryPatch.js +0 -205
  48. package/src/engine/graphics/micron/format/MicronGeometryPatchOccurance.js +0 -50
  49. package/src/engine/graphics/micron/format/ThreeMicronMesh.d.ts +0 -10
  50. package/src/engine/graphics/micron/format/ThreeMicronMesh.js +0 -45
  51. package/src/engine/graphics/micron/format/VirtualGeometry.js +0 -158
  52. package/src/engine/graphics/micron/format/micron_build_proxy_geometry.js +0 -205
  53. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +0 -123
  54. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.spec.js +0 -63
  55. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.js +0 -83
  56. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.spec.js +0 -51
  57. package/src/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +0 -25
  58. package/src/engine/graphics/micron/format/serialization/deserialize_patch.js +0 -106
  59. package/src/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +0 -18
  60. package/src/engine/graphics/micron/format/serialization/serialize_patch.js +0 -84
  61. package/src/engine/graphics/micron/format/validate_patch_bounds.js +0 -69
  62. package/src/engine/graphics/micron/plugin/GLTFAssetTransformer.js +0 -265
  63. package/src/engine/graphics/micron/plugin/GLTF_MICRON_ID_FIELD.js +0 -5
  64. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.d.ts +0 -8
  65. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.js +0 -150
  66. package/src/engine/graphics/micron/plugin/serialization/BufferGeometrySerializationAdapter.js +0 -176
  67. package/src/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js +0 -216
  68. package/src/engine/graphics/micron/prototypeMicronProxyBuild.js +0 -227
  69. package/src/engine/graphics/micron/prototypeVirtualGeometry.js +0 -911
  70. package/src/engine/graphics/micron/render/PatchCacheKey.js +0 -79
  71. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.d.ts +0 -1
  72. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.js +0 -1
  73. package/src/engine/graphics/micron/render/VirtualGeometryBuilder.js +0 -207
  74. package/src/engine/graphics/micron/render/approximateTriangleArea.js +0 -25
  75. package/src/engine/graphics/micron/render/culling/PatchCullingSystem.js +0 -129
  76. package/src/engine/graphics/micron/render/instanced/PatchDataTextures.js +0 -329
  77. package/src/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +0 -175
  78. package/src/engine/graphics/micron/render/instanced/shader/constants.js +0 -3
  79. package/src/engine/graphics/micron/render/instanced/shader/gen_micron_vertex_attribute_texture_name.js +0 -8
  80. package/src/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +0 -250
  81. package/src/engine/graphics/micron/render/makeThreeMeshFromVirtualGeometry.js +0 -37
  82. package/src/engine/graphics/micron/render/refinement/ActivePatchFlags.js +0 -8
  83. package/src/engine/graphics/micron/render/refinement/ActivePatchList.js +0 -241
  84. package/src/engine/graphics/micron/render/refinement/ActivePatchRecord.js +0 -154
  85. package/src/engine/graphics/micron/render/refinement/RefinementSpec.js +0 -84
  86. package/src/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +0 -133
  87. package/src/engine/graphics/micron/render/refinement/is_patch_facing_back.js +0 -43
  88. package/src/engine/graphics/micron/render/refinement/is_patch_visible.js +0 -37
  89. package/src/engine/graphics/micron/render/v1/MaterialContext.js +0 -150
  90. package/src/engine/graphics/micron/render/v1/MaterialVertexSpec.js +0 -115
  91. package/src/engine/graphics/micron/render/v1/MicronRenderContext.js +0 -145
  92. package/src/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +0 -255
  93. package/src/engine/graphics/micron/render/v1/VGThreeRenderer.js +0 -142
  94. package/src/engine/graphics/micron/render/v1/getTransformedPositionsCached.js +0 -54
  95. package/src/engine/graphics/micron/simplifyGeometry.js +0 -26
  96. package/src/engine/graphics/micron/util/patchToBufferGeometry.js +0 -19
@@ -1,216 +0,0 @@
1
- import { AbstractRenderAdapter } from "../../../ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js";
2
- import Vector2 from "../../../../../core/geom/Vector2.js";
3
- import { ShadedGeometryFlags } from "../../../ecs/mesh-v2/ShadedGeometryFlags.js";
4
- import { MaterialVertexSpec, MaterialVertexSpecFlags } from "../../render/v1/MaterialVertexSpec.js";
5
- import { compute_geometry_polycount } from "../../../geometry/compute_geometry_polycount.js";
6
- import { inverseLerp } from "../../../../../core/math/inverseLerp.js";
7
- import { MICRON_GEOMETRY_FIELD } from "../../MICRON_GEOMETRY_FIELD.js";
8
- import { assert } from "../../../../../core/assert.js";
9
-
10
- /**
11
- *
12
- * @type {MaterialVertexSpec}
13
- */
14
- const scratch_mvc = new MaterialVertexSpec();
15
-
16
- /**
17
- * @readonly
18
- * @type {number}
19
- */
20
- const MICRON_POLYCOUNT_THRESHOLD_MIN = 4096;
21
-
22
- /**
23
- * @readonly
24
- * @type {number}
25
- */
26
- const MICRON_POLYCOUNT_THRESHOLD_MAX = 10000;
27
-
28
- export class MicronShadedGeometryRenderAdapter extends AbstractRenderAdapter {
29
-
30
- /**
31
- *
32
- * @param {AbstractAsyncMap<THREE.BufferGeometry, MicronGeometry>} [cache]
33
- */
34
- constructor(cache) {
35
- super();
36
-
37
- /**
38
- *
39
- * @type {MicronRenderContext|null}
40
- */
41
- this.ctx = null;
42
-
43
- /**
44
- *
45
- * @type {Map<number, MicronGeometry>}
46
- * @private
47
- */
48
- this.__geometry_map = new Map();
49
-
50
- /**
51
- *
52
- * @type {Map<number, Promise>}
53
- * @private
54
- */
55
- this.__geometry_building_promises = new Map();
56
-
57
- /**
58
- *
59
- * @type {AbstractAsyncMap<THREE.BufferGeometry, MicronGeometry>|undefined}
60
- * @private
61
- */
62
- this.__cache = cache;
63
- }
64
-
65
- score(geometry, material, instance_count) {
66
- const polycount = compute_geometry_polycount(geometry);
67
-
68
- return inverseLerp(MICRON_POLYCOUNT_THRESHOLD_MIN, MICRON_POLYCOUNT_THRESHOLD_MAX, polycount);
69
- }
70
-
71
- /**
72
- *
73
- * @param {ShadedGeometry} sg
74
- * @returns {MicronGeometry}
75
- * @private
76
- */
77
- __obtain_micron_geometry(sg) {
78
- const buffer_geometry = sg.geometry;
79
-
80
- const attached_micron_data = buffer_geometry[MICRON_GEOMETRY_FIELD];
81
-
82
- if (attached_micron_data !== undefined) {
83
- assert.equal(attached_micron_data.isMicronGeometry, true, `geometry[${MICRON_GEOMETRY_FIELD}].isMicronGeometry !== true`);
84
-
85
- // data was found directly on the geometry
86
- return attached_micron_data;
87
- }
88
-
89
- const geometry_id = buffer_geometry.id;
90
-
91
- const micron_geometry = this.__geometry_map.get(geometry_id);
92
-
93
- if (micron_geometry !== undefined) {
94
-
95
- return micron_geometry;
96
-
97
- } else {
98
-
99
- // no micron geometry
100
- if (
101
- this.__cache !== undefined // cache is attached
102
- && !this.__geometry_building_promises.has(geometry_id)
103
- ) {
104
- const p = this.__cache.get(buffer_geometry);
105
-
106
- this.__geometry_building_promises.set(geometry_id, p);
107
-
108
- p.then(mg => {
109
- if (mg !== undefined) {
110
- this.__geometry_map.set(geometry_id, mg);
111
- }
112
- });
113
-
114
- p.finally(() => {
115
- this.__geometry_building_promises.delete(geometry_id);
116
- });
117
-
118
- }
119
-
120
- return undefined;
121
- }
122
-
123
- }
124
-
125
- intend_draw(sg) {
126
- return this.__obtain_micron_geometry(sg) !== undefined;
127
- }
128
-
129
- add(sg) {
130
- const micron_geometry = this.__obtain_micron_geometry(sg);
131
-
132
- if (micron_geometry === undefined) {
133
- // no micron geometry
134
- return;
135
- }
136
-
137
- // populate virtual geometry for this instance
138
- this.ctx.builder.buildForMesh(sg.entity, micron_geometry, sg.transform);
139
-
140
- scratch_mvc.material = sg.material;
141
- scratch_mvc.spec = micron_geometry.vertex_spec;
142
-
143
- // clear all flags
144
- scratch_mvc.flags = 0;
145
-
146
- scratch_mvc.writeFlag(MaterialVertexSpecFlags.CastShadow, sg.getFlag(ShadedGeometryFlags.CastShadow));
147
- scratch_mvc.writeFlag(MaterialVertexSpecFlags.ReceiveShadow, sg.getFlag(ShadedGeometryFlags.ReceiveShadow));
148
-
149
- const material_context = this.ctx.obtain_material(scratch_mvc);
150
-
151
- material_context.instances.add(sg.entity);
152
-
153
- }
154
-
155
- /**
156
- *
157
- * @param {THREE.WebGLRenderer} renderer
158
- * @param {CameraView} view
159
- */
160
- build_start(renderer, view) {
161
- this.__object_count = 0;
162
-
163
- const resolution = new Vector2();
164
- let pixelRatio = 1;
165
-
166
- /**
167
- *
168
- * @type {THREE.RenderTarget}
169
- */
170
- const render_target = renderer.getRenderTarget();
171
-
172
- if (render_target !== null) {
173
- resolution.set(render_target.width, render_target.height);
174
- } else {
175
- renderer.getSize(resolution);
176
- pixelRatio = renderer.getPixelRatio();
177
- }
178
-
179
- // clear context
180
- const material_contexts = this.ctx.contexts_array;
181
- const contexts_count = material_contexts.length;
182
-
183
- for (let i = 0; i < contexts_count; i++) {
184
- const mc = material_contexts[i];
185
-
186
- mc.instances.clear();
187
- }
188
-
189
- // initialize geometry builder
190
- const vg_builder = this.ctx.builder;
191
-
192
- vg_builder.resolution.set(resolution.x * pixelRatio, resolution.y * pixelRatio);
193
- vg_builder.setMatricesFromCamera(view.camera);
194
- vg_builder.setOutput(this.ctx.geometry);
195
-
196
- vg_builder.initialize_build();
197
- }
198
-
199
- build_end() {
200
- this.ctx.render();
201
-
202
- const material_contexts = this.ctx.contexts_array;
203
- const contexts_count = material_contexts.length;
204
- for (let i = 0; i < contexts_count; i++) {
205
- const mc = material_contexts[i];
206
-
207
- if (mc.instances.size > 0) {
208
- this.__objects[this.__object_count++] = mc.mesh;
209
- }
210
- }
211
- }
212
-
213
- dispose() {
214
- // rendering context is not owned, do nothing
215
- }
216
- }
@@ -1,227 +0,0 @@
1
- import { PLYLoader } from "three/examples/jsm/loaders/PLYLoader.js";
2
- import {
3
- AmbientLight,
4
- CubeTextureLoader,
5
- DirectionalLight,
6
- FrontSide,
7
- Mesh,
8
- MeshBasicMaterial,
9
- MeshStandardMaterial,
10
- PerspectiveCamera,
11
- PointLight,
12
- RepeatWrapping,
13
- Scene,
14
- SphereGeometry,
15
- sRGBEncoding,
16
- TextureLoader,
17
- VSMShadowMap,
18
- WebGLRenderer
19
- } from "three";
20
- import Stats from "three/examples/jsm/libs/stats.module.js";
21
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
22
- import { buildMicronGeometryFromBufferGeometry } from "./build/buildMicronGeometryFromBufferGeometry.js";
23
-
24
- const background = new TextureLoader().load('data/textures/utility/checkers_white_grey_256x256.png');
25
- background.repeat.set(50, 30);
26
- background.wrapS = RepeatWrapping;
27
- background.wrapT = RepeatWrapping;
28
-
29
- let container, stats;
30
-
31
- let camera, scene, renderer;
32
- let directionalLight;
33
- let pointLight;
34
-
35
- let windowHalfX = window.innerWidth / 2;
36
- let windowHalfY = window.innerHeight / 2;
37
-
38
-
39
- function init() {
40
-
41
- container = document.createElement("div");
42
- document.body.appendChild(container);
43
-
44
- camera = new PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000000);
45
- camera.position.z = -4000;
46
-
47
- //
48
-
49
-
50
- scene = new Scene();
51
-
52
- window.scene = scene;
53
-
54
- // LIGHTS
55
-
56
- const ambient = new AmbientLight(0xffffff, 0.1);
57
- scene.add(ambient);
58
-
59
- pointLight = new PointLight(0x6666ff, 0.5);
60
- pointLight.position.y = 1000;
61
- scene.add(pointLight);
62
-
63
- // light representation
64
-
65
- const sphere = new SphereGeometry(100, 16, 8);
66
-
67
- const mesh = new Mesh(sphere, new MeshBasicMaterial({ color: 0xffffff }));
68
- mesh.scale.set(0.5, 0.5, 0.5);
69
- pointLight.add(mesh);
70
-
71
- // add directional light
72
- directionalLight = new DirectionalLight(0xFFAAAA, 0.8);
73
- directionalLight.position.set(-500, 1000, 300);
74
- directionalLight.castShadow = true;
75
- const shadow_camera = directionalLight.shadow.camera;
76
- // small bias to prevent shadow acne
77
- directionalLight.shadow.bias = -0.0001;
78
- // directionalLight.shadow.mapSize.set(4096, 4096);
79
- directionalLight.shadow.mapSize.set(1024, 1024);
80
- directionalLight.shadow.autoUpdate = false;
81
-
82
- window.light = directionalLight;
83
- // directionalLight.shadow.autoUpdate = true;
84
-
85
- shadow_camera.near = 0.1;
86
- shadow_camera.far = 2000;
87
-
88
- const shadow_camera_size = 15;
89
-
90
- shadow_camera.left = -shadow_camera_size / 2;
91
- shadow_camera.right = shadow_camera_size / 2;
92
-
93
- shadow_camera.bottom = -shadow_camera_size / 2;
94
- shadow_camera.top = shadow_camera_size / 2;
95
-
96
- shadow_camera.updateProjectionMatrix();
97
-
98
-
99
- scene.add(directionalLight);
100
- // material samples
101
-
102
- const cubeMaterial1 = new MeshStandardMaterial({
103
- wireframe: false,
104
- side: FrontSide,
105
- color: 0xffffff
106
- });
107
-
108
- //
109
-
110
- renderer = new WebGLRenderer({
111
- antialias: true,
112
- preserveDrawingBuffer: true,
113
- stencil: false
114
- });
115
-
116
- renderer.shadowMap.enabled = true;
117
- renderer.shadowMap.type = VSMShadowMap;
118
- // renderer.shadowMap.type = BasicShadowMap;
119
- renderer.sortObjects = false;
120
-
121
- renderer.setPixelRatio(window.devicePixelRatio);
122
- renderer.setSize(window.innerWidth, window.innerHeight);
123
- container.appendChild(renderer.domElement);
124
-
125
- stats = new Stats();
126
- container.appendChild(stats.dom);
127
-
128
-
129
- window.addEventListener("resize", onWindowResize);
130
-
131
- // envmap
132
- const genCubeUrls = function (prefix, postfix) {
133
-
134
- return [
135
- prefix + "posx" + postfix, prefix + "negx" + postfix,
136
- prefix + "posy" + postfix, prefix + "negy" + postfix,
137
- prefix + "posz" + postfix, prefix + "negz" + postfix
138
- ];
139
-
140
- };
141
-
142
- const urls = genCubeUrls("data/textures/cubemaps/hip_miramar/32/", ".png");
143
-
144
- new CubeTextureLoader().load(urls, function (cubeTexture) {
145
-
146
- cubeTexture.encoding = sRGBEncoding;
147
-
148
- // scene.background = new Color(0.1, 0.1, 0.1);
149
- // scene.background = new ThreeColor(1, 0.3, 0.3);
150
- // scene.background = new Color(0.3, 1, 0.3);
151
-
152
- scene.background = background;
153
- scene.environment = cubeTexture;
154
-
155
-
156
- // const lightProbe = new LightProbe();
157
- //
158
- // lightProbe.copy(LightProbeGenerator.fromCubeTexture(cubeTexture));
159
- // lightProbe.intensity = 1.2;
160
-
161
- // scene.add(lightProbe);
162
- });
163
-
164
- onWindowResize();
165
-
166
- new PLYLoader().load("data/models/stanford/Lucy100k.ply", async geometry => {
167
- geometry.computeVertexNormals();
168
-
169
- const source = new Mesh(geometry, new MeshStandardMaterial({ color: 0xFFFFFF }));
170
-
171
- const micron_g = await buildMicronGeometryFromBufferGeometry(geometry);
172
-
173
- micron_g.buildProxy();
174
-
175
- const proxy = new Mesh(micron_g.proxy, new MeshStandardMaterial({ color: 0xFF0000 }));
176
-
177
- source.position.x += 700;
178
- proxy.position.x -= 700;
179
-
180
- console.warn(geometry, micron_g);
181
-
182
- scene.add(source);
183
- scene.add(proxy);
184
- })
185
- }
186
-
187
- function onWindowResize() {
188
-
189
- const w = window.innerWidth;
190
- const h = window.innerHeight;
191
-
192
- windowHalfX = w / 2;
193
- windowHalfY = h / 2;
194
-
195
- camera.aspect = w / h;
196
- camera.updateProjectionMatrix();
197
-
198
- renderer.setSize(w, h);
199
-
200
- background.repeat.set(w / 20, h / 20);
201
- }
202
-
203
- function animate() {
204
-
205
- requestAnimationFrame(animate);
206
-
207
- render();
208
- stats.update();
209
-
210
- }
211
-
212
- function render() {
213
- if (orbitControls !== undefined) {
214
- orbitControls.update();
215
- }
216
-
217
- const timer = -0.0002 * Date.now();
218
-
219
- pointLight.position.x = 10000 * Math.cos(timer);
220
- pointLight.position.z = 10000 * Math.sin(timer);
221
-
222
- renderer.render(scene, camera);
223
- }
224
-
225
- init();
226
- const orbitControls = new OrbitControls(camera, container);
227
- animate();