@woosh/meep-engine 2.48.20 → 2.48.21

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 (94) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics/micron/MICRON_GEOMETRY_FIELD.js +0 -1
  3. package/src/engine/graphics/micron/MICRON_URI_FIELD.js +0 -1
  4. package/src/engine/graphics/micron/build/MICRON_PATCH_SIZE_MAX.js +0 -5
  5. package/src/engine/graphics/micron/build/PatchRepresentation.js +0 -424
  6. package/src/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +0 -311
  7. package/src/engine/graphics/micron/build/build_geometry_info.js +0 -21
  8. package/src/engine/graphics/micron/build/clustering/assignInitialPatchNeighbours.js +0 -63
  9. package/src/engine/graphics/micron/build/clustering/assign_patch_neighbours_from_topology.js +0 -46
  10. package/src/engine/graphics/micron/build/clustering/build_clustering_2.js +0 -37
  11. package/src/engine/graphics/micron/build/clustering/build_leaf_patches.js +0 -326
  12. package/src/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +0 -76
  13. package/src/engine/graphics/micron/build/clustering/computeBorderLengthChange.js +0 -59
  14. package/src/engine/graphics/micron/build/clustering/computeFaceCurvatureScore.js +0 -57
  15. package/src/engine/graphics/micron/build/clustering/computeOpenFaceFreedom.js +0 -35
  16. package/src/engine/graphics/micron/build/clustering/compute_face_connection_weight.js +0 -35
  17. package/src/engine/graphics/micron/build/clustering/populateOpenFaceNeighboursForPatch.js +0 -56
  18. package/src/engine/graphics/micron/build/clustering/validate_leaf_patch_connectivity.js +0 -44
  19. package/src/engine/graphics/micron/build/compute_micron_buffer_array_constructor.js +0 -24
  20. package/src/engine/graphics/micron/build/compute_vertex_remap_cost.js +0 -29
  21. package/src/engine/graphics/micron/build/debug/build_clustering_info.js +0 -58
  22. package/src/engine/graphics/micron/build/debug/build_graph_info.js +0 -59
  23. package/src/engine/graphics/micron/build/fill_patch_geometry_data.js +0 -270
  24. package/src/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +0 -196
  25. package/src/engine/graphics/micron/build/hierarchy/build_intermediate_patch_topology.js +0 -162
  26. package/src/engine/graphics/micron/build/hierarchy/build_merge_graph.js +0 -89
  27. package/src/engine/graphics/micron/build/hierarchy/computePatchMergeScore.js +0 -146
  28. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertex_count.js +0 -32
  29. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertices.js +0 -34
  30. package/src/engine/graphics/micron/build/hierarchy/merge_patches.js +0 -581
  31. package/src/engine/graphics/micron/build/hierarchy/metis_cluster_clusters.js +0 -53
  32. package/src/engine/graphics/micron/build/hierarchy/optimize_graph_partitioning_balance.js +0 -515
  33. package/src/engine/graphics/micron/build/hierarchy/patch_combine.js +0 -180
  34. package/src/engine/graphics/micron/build/hierarchy/patch_fill_holes_by_uncollapse.js +0 -60
  35. package/src/engine/graphics/micron/build/hierarchy/patch_stitch_parent_border.js +0 -320
  36. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +0 -547
  37. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_tree.js +0 -140
  38. package/src/engine/graphics/micron/buildPatchwork.js +0 -68
  39. package/src/engine/graphics/micron/convert_three_object_to_micron.js +0 -179
  40. package/src/engine/graphics/micron/debug/VirtualGeometryStats.js +0 -42
  41. package/src/engine/graphics/micron/format/MICRON_GEOMETRY_PROPERTY_NAME.js +0 -1
  42. package/src/engine/graphics/micron/format/MicronGeometry.d.ts +0 -21
  43. package/src/engine/graphics/micron/format/MicronGeometry.js +0 -334
  44. package/src/engine/graphics/micron/format/MicronGeometryPatch.d.ts +0 -3
  45. package/src/engine/graphics/micron/format/MicronGeometryPatch.js +0 -205
  46. package/src/engine/graphics/micron/format/MicronGeometryPatchOccurance.js +0 -50
  47. package/src/engine/graphics/micron/format/ThreeMicronMesh.d.ts +0 -10
  48. package/src/engine/graphics/micron/format/ThreeMicronMesh.js +0 -45
  49. package/src/engine/graphics/micron/format/VirtualGeometry.js +0 -158
  50. package/src/engine/graphics/micron/format/micron_build_proxy_geometry.js +0 -205
  51. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +0 -123
  52. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.spec.js +0 -63
  53. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.js +0 -83
  54. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.spec.js +0 -51
  55. package/src/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +0 -25
  56. package/src/engine/graphics/micron/format/serialization/deserialize_patch.js +0 -106
  57. package/src/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +0 -18
  58. package/src/engine/graphics/micron/format/serialization/serialize_patch.js +0 -84
  59. package/src/engine/graphics/micron/format/validate_patch_bounds.js +0 -69
  60. package/src/engine/graphics/micron/plugin/GLTFAssetTransformer.js +0 -265
  61. package/src/engine/graphics/micron/plugin/GLTF_MICRON_ID_FIELD.js +0 -5
  62. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.d.ts +0 -8
  63. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.js +0 -150
  64. package/src/engine/graphics/micron/plugin/serialization/BufferGeometrySerializationAdapter.js +0 -176
  65. package/src/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js +0 -216
  66. package/src/engine/graphics/micron/prototypeMicronProxyBuild.js +0 -227
  67. package/src/engine/graphics/micron/prototypeVirtualGeometry.js +0 -911
  68. package/src/engine/graphics/micron/render/PatchCacheKey.js +0 -79
  69. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.d.ts +0 -1
  70. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.js +0 -1
  71. package/src/engine/graphics/micron/render/VirtualGeometryBuilder.js +0 -207
  72. package/src/engine/graphics/micron/render/approximateTriangleArea.js +0 -25
  73. package/src/engine/graphics/micron/render/culling/PatchCullingSystem.js +0 -129
  74. package/src/engine/graphics/micron/render/instanced/PatchDataTextures.js +0 -329
  75. package/src/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +0 -175
  76. package/src/engine/graphics/micron/render/instanced/shader/constants.js +0 -3
  77. package/src/engine/graphics/micron/render/instanced/shader/gen_micron_vertex_attribute_texture_name.js +0 -8
  78. package/src/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +0 -250
  79. package/src/engine/graphics/micron/render/makeThreeMeshFromVirtualGeometry.js +0 -37
  80. package/src/engine/graphics/micron/render/refinement/ActivePatchFlags.js +0 -8
  81. package/src/engine/graphics/micron/render/refinement/ActivePatchList.js +0 -241
  82. package/src/engine/graphics/micron/render/refinement/ActivePatchRecord.js +0 -154
  83. package/src/engine/graphics/micron/render/refinement/RefinementSpec.js +0 -84
  84. package/src/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +0 -133
  85. package/src/engine/graphics/micron/render/refinement/is_patch_facing_back.js +0 -43
  86. package/src/engine/graphics/micron/render/refinement/is_patch_visible.js +0 -37
  87. package/src/engine/graphics/micron/render/v1/MaterialContext.js +0 -150
  88. package/src/engine/graphics/micron/render/v1/MaterialVertexSpec.js +0 -115
  89. package/src/engine/graphics/micron/render/v1/MicronRenderContext.js +0 -145
  90. package/src/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +0 -255
  91. package/src/engine/graphics/micron/render/v1/VGThreeRenderer.js +0 -142
  92. package/src/engine/graphics/micron/render/v1/getTransformedPositionsCached.js +0 -54
  93. package/src/engine/graphics/micron/simplifyGeometry.js +0 -26
  94. 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();