@woosh/meep-engine 2.109.5 → 2.109.7

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 (170) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +211 -179
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +211 -179
  5. package/editor/tools/v2/TransformControls.js +39 -33
  6. package/package.json +1 -1
  7. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  8. package/src/core/bvh2/bvh3/BVH.js +8 -0
  9. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  10. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +11 -9
  11. package/src/core/collection/queue/Deque.d.ts.map +1 -1
  12. package/src/core/collection/queue/Deque.js +8 -5
  13. package/src/core/geom/3d/Ray3.js +1 -1
  14. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  15. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts +4 -4
  16. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts.map +1 -1
  17. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.js +15 -11
  18. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.d.ts.map +1 -1
  19. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.js +13 -7
  20. package/src/core/geom/3d/normal/octahedron/encoding.spec.js +26 -1
  21. package/src/core/geom/3d/normal/octahedron/prototype.d.ts +2 -0
  22. package/src/core/geom/3d/normal/octahedron/prototype.d.ts.map +1 -0
  23. package/src/core/geom/3d/normal/octahedron/prototype.js +226 -0
  24. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +1 -1
  25. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +4 -4
  26. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +7 -1
  27. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +1 -1
  28. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js +6 -0
  29. package/src/core/geom/vec3/v3_distance.d.ts.map +1 -1
  30. package/src/core/geom/vec3/v3_distance.js +5 -5
  31. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts +10 -0
  32. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts.map +1 -0
  33. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.js +34 -0
  34. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +5 -1
  35. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts.map +1 -1
  36. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +11 -6
  37. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  38. package/src/engine/asset/loaders/AssetLoader.js +1 -1
  39. package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
  40. package/src/engine/asset/loaders/material/computeTextureEquality.js +6 -1
  41. package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
  42. package/src/engine/asset/loaders/material/computeTextureHash.js +8 -3
  43. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  44. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +9 -15
  45. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +7 -0
  46. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +1 -0
  47. package/src/engine/graphics/geometry/instancing/geometry_copy.js +15 -0
  48. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
  49. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +28 -20
  50. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts +1 -0
  51. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts.map +1 -1
  52. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.js +4 -0
  53. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js +6 -6
  54. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +16 -7
  55. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts +3 -2
  56. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts.map +1 -1
  57. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.js +25 -14
  58. package/src/engine/graphics/render/visibility/hiz/buildCanvasViewFromTexture.js +1 -0
  59. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  60. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +48 -33
  61. package/src/engine/graphics/sh3/gi/material/common.glsl +434 -0
  62. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts +8 -0
  63. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts.map +1 -0
  64. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.js +35 -0
  65. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts +8 -0
  66. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts.map +1 -0
  67. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.js +28 -0
  68. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  69. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +53 -0
  70. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  71. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +29 -0
  72. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  73. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  74. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.js +12 -0
  75. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts +6 -0
  76. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  77. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +26 -0
  78. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts +6 -0
  79. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  80. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +62 -0
  81. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.frag.glsl +43 -0
  82. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.vert.glsl +9 -0
  83. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  84. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  85. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.js +12 -0
  86. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +2 -0
  87. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  88. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +35 -3
  89. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts.map +1 -1
  90. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js +67 -8
  91. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +10 -0
  92. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  93. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +27 -41
  94. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts +17 -0
  95. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts.map +1 -0
  96. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.js +100 -0
  97. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts +12 -0
  98. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts.map +1 -0
  99. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +58 -0
  100. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts +11 -0
  101. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts.map +1 -0
  102. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.js +45 -0
  103. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +126 -0
  104. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.vert.glsl +10 -0
  105. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts +13 -0
  106. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -0
  107. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +146 -0
  108. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +159 -0
  109. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.vert.glsl +13 -0
  110. package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.d.ts.map +1 -0
  111. package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.js → depth/sh3_bake_depth.js} +7 -7
  112. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +3 -6
  113. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -1
  114. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +34 -58
  115. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.d.ts.map +1 -1
  116. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js +8 -0
  117. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +2 -2
  118. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  119. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +8 -5
  120. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +7 -0
  121. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -0
  122. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +50 -0
  123. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +40 -3
  124. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_along_ray.d.ts.map +1 -0
  125. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.js → sorting/build_bvh_nodes_distances_along_ray.js} +2 -2
  126. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_sqr_to_point.d.ts.map +1 -0
  127. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_sqr_to_point.js → sorting/build_bvh_nodes_distances_sqr_to_point.js} +2 -2
  128. package/src/engine/graphics/sh3/path_tracer/sorting/sort_bvh_nodes_by_distance_to_point.d.ts.map +1 -0
  129. package/src/engine/graphics/sh3/path_tracer/{sort_bvh_nodes_by_distance_to_point.js → sorting/sort_bvh_nodes_by_distance_to_point.js} +3 -3
  130. package/src/engine/graphics/sh3/prototypeSH3Probe.js +40 -7
  131. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.d.ts.map +1 -0
  132. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.js +29 -0
  133. package/src/engine/graphics/sh3/shader/visualize.frag.glsl +41 -0
  134. package/src/engine/graphics/sh3/shader/visualize.vert.glsl +9 -0
  135. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +1 -1
  136. package/src/engine/graphics/texture/debug_preview_texture.d.ts +8 -0
  137. package/src/engine/graphics/texture/debug_preview_texture.d.ts.map +1 -0
  138. package/src/engine/graphics/texture/debug_preview_texture.js +38 -0
  139. package/src/engine/graphics/texture/virtual/prototype.js +4 -3
  140. package/src/view/View.d.ts.map +1 -1
  141. package/src/view/View.js +2 -0
  142. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +0 -8
  143. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +0 -1
  144. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js +0 -32
  145. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +0 -8
  146. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +0 -1
  147. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +0 -44
  148. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +0 -8
  149. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +0 -1
  150. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +0 -86
  151. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +0 -1
  152. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +0 -83
  153. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts.map +0 -1
  154. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.js +0 -71
  155. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts.map +0 -1
  156. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.js +0 -256
  157. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +0 -1
  158. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts.map +0 -1
  159. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts.map +0 -1
  160. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts +0 -2
  161. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts.map +0 -1
  162. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +0 -27
  163. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts.map +0 -1
  164. /package/src/engine/graphics/sh3/gi/material/{build_fragment_shader.d.ts → space_fragment/build_fragment_shader.d.ts} +0 -0
  165. /package/src/engine/graphics/sh3/gi/material/{build_vertex_shader.d.ts → space_fragment/build_vertex_shader.d.ts} +0 -0
  166. /package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.d.ts → depth/sh3_bake_depth.d.ts} +0 -0
  167. /package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.d.ts → sorting/build_bvh_nodes_distances_along_ray.d.ts} +0 -0
  168. /package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_sqr_to_point.d.ts → sorting/build_bvh_nodes_distances_sqr_to_point.d.ts} +0 -0
  169. /package/src/engine/graphics/sh3/path_tracer/{sort_bvh_nodes_by_distance_to_point.d.ts → sorting/sort_bvh_nodes_by_distance_to_point.d.ts} +0 -0
  170. /package/src/engine/graphics/sh3/{SH3VisualisationMaterial.d.ts → shader/SH3VisualisationMaterial.d.ts} +0 -0
@@ -0,0 +1,38 @@
1
+ import { FrameRunner } from "../FrameRunner.js";
2
+ import { WebGLRendererPool } from "../render/RendererPool.js";
3
+ import { buildCanvasViewFromTexture } from "../render/visibility/hiz/buildCanvasViewFromTexture.js";
4
+
5
+ /**
6
+ * Useful tool for previewing textures
7
+ * @param {THREE.Texture} texture
8
+ * @param {number} resolution
9
+ * @param {boolean} flipY
10
+ */
11
+ export function debug_preview_texture({
12
+ texture,
13
+ resolution = 512,
14
+ flipY = true
15
+ }) {
16
+
17
+ const preview = buildCanvasViewFromTexture({
18
+ width: resolution,
19
+ height: resolution,
20
+ texture: texture,
21
+ renderer: WebGLRendererPool.global.get(),
22
+ flipY: flipY
23
+ });
24
+
25
+ const runner = new FrameRunner(() => {
26
+
27
+ preview.render();
28
+ });
29
+
30
+ runner.startup();
31
+
32
+ document.body.appendChild(
33
+ preview.view.el
34
+ );
35
+
36
+ preview.view.link();
37
+
38
+ }
@@ -84,7 +84,7 @@ function makeMesh(mat) {
84
84
 
85
85
  geo.applyMatrix4(m4);
86
86
 
87
- // mesh.rotation.x = 0.3;
87
+ mesh.rotation.y = Math.PI*0.5;
88
88
 
89
89
  scene.add(mesh);
90
90
 
@@ -259,8 +259,10 @@ async function init() {
259
259
 
260
260
  scene = new Scene();
261
261
 
262
- const gltf = await loadGLTF({ path: "data/models/Scans/green_car_wreck/converted/model.gltf" })
262
+ // const gltf = await loadGLTF({ path: "data/models/Scans/green_car_wreck/converted/model.gltf" })
263
+ // scene.add(gltf);
263
264
 
265
+ flatSample({am});
264
266
 
265
267
  virtual_texture_managers.forEach(vt => {
266
268
  vt.initialize({
@@ -273,7 +275,6 @@ async function init() {
273
275
 
274
276
  const manager = virtual_texture_managers[0];
275
277
 
276
- scene.add(gltf);
277
278
 
278
279
  //
279
280
  // usageDebugView.mip_levels = virtualTextureManager.max_mip_level;
@@ -1 +1 @@
1
- {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../src/view/View.js"],"names":[],"mappings":"wBAsBU,MAAM;;;;;;;AAchB;;;GAGG;AACH;IAEI;;;;OAIG;IACH,iBAAc;IAEd;;;OAGG;IACH,OAFU,SAAS,GAAC,MAAM,CAEJ;IAEtB;;;OAGG;IACH,mBAFU,OAAO,CAEY;IAE7B;;;OAGG;IACH,mBAFU,OAAO,CAES;IAE1B;;;OAGG;IACH,gBAFU,OAAO,CAES;IAE1B;;;OAGG;IACH,eAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,0BAFU,OAAO,CAEuB;IAExC;;;MAGE;IAEF;;;OAGG;IACH,UAFU,IAAI,EAAE,CAEF;IAEd;;;OAGG;IACH,QAFU,IAAI,GAAC,IAAI,CAEL;IAUV;;;OAGG;IACH,IAFU,OAAO,qBAAiB,IAAI,CAExB;IAUlB;;OAEG;IACH,wBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,0BASC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,SAAS,GACd,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,SAAS,GACd,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,SAAS,SAChB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,SAAS,GACd,OAAO,CAInB;IAED;;;;;OAKG;IACH,6BAIC;IAED;;;;;OAKG;IACH,wBAKC;IAED;;;OAGG;IACH,0BAQC;IA8BD;;OAEG;IACH,aA+BC;IAED;;OAEG;IACH,eA6BC;IAED;;;OAGG;IACH,sBAFW,IAAI,EAAE,QAMhB;IAED;;;;OAIG;IACH,gBAHW,IAAI,GACF,IAAI,CAmBhB;IAED;;;;;;;;OAQG;IACH,uBAPW,OAAO,WACP,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,UACN,OAAO,QAYjB;IAED;;;;;;;OAOG;IACH,kBANW,IAAI,WACJ,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,QAahB;IAED;;;;OAIG;IACH,mBAHW,IAAI,GACF,OAAO,CAmBnB;IAED;;;;OAIG;IACH,gBAHW,IAAI,GACF,OAAO,CAInB;IAED,0BAUC;IAED;;;;;OAKG;IACH,kBAJW,KAAK,WACL,MAAM,WACN,MAAM,QAkBhB;IAED;;;;OAIG;IACH,4BAHW,KAAK,GACH,KAAK,CAUjB;IAED,4BAaC;IAED;;;;;OAKG;IACH,6BAJW,OAAO,UACP,OAAO,GACL,OAAO,CAanB;IAED;;;;;OAKG;IACH,6BAJW,OAAO,UACP,OAAO,GACL,OAAO,CAanB;IAED;;;OAGG;IACH,2BAFW,OAAO,QAgBjB;IAED,gBAeC;IAED;;;;;;;OAOG;IACH,mBALW,MAAM,qCAGJ,IAAI,CAWhB;IAED;;;;;;OAMG;IACH,qBALW,MAAM,qCAGJ,OAAO,CAwBnB;IAED;;;;;;OAMG;IACH,eAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,kBAFW,MAAM,EAAE,QAalB;IAED;;;;;;OAMG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,GACJ,MAAM,EAAE,CA0BpB;IAED;;;;;;;;OAQG;IACH,eAJW,MAAM,QACN,OAAO,GACL,IAAI,CAMhB;IAED;;;OAGG;IACH,qBAMC;IAED;;;OAGG;IACH,sBAMC;IAED;;;;OAIG;IACH,8BAHW,OAAO,QA6BjB;IAGL;;;OAGG;IACH,iBAFU,OAAO,CAEI;;CANpB;oBAlwBmB,yBAAyB;oBADzB,yBAAyB;mBAN1B,iCAAiC;kBAGlC,+BAA+B"}
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../src/view/View.js"],"names":[],"mappings":"wBAsBU,MAAM;;;;;;;AAchB;;;GAGG;AACH;IAEI;;;;OAIG;IACH,iBAAc;IAEd;;;OAGG;IACH,OAFU,SAAS,GAAC,MAAM,CAEJ;IAEtB;;;OAGG;IACH,mBAFU,OAAO,CAEY;IAE7B;;;OAGG;IACH,mBAFU,OAAO,CAES;IAE1B;;;OAGG;IACH,gBAFU,OAAO,CAES;IAE1B;;;OAGG;IACH,eAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,0BAFU,OAAO,CAEuB;IAExC;;;MAGE;IAEF;;;OAGG;IACH,UAFU,IAAI,EAAE,CAEF;IAEd;;;OAGG;IACH,QAFU,IAAI,GAAC,IAAI,CAEL;IAUV;;;OAGG;IACH,IAFU,OAAO,qBAAiB,IAAI,CAExB;IAUlB;;OAEG;IACH,wBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,0BASC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,SAAS,GACd,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,SAAS,GACd,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,SAAS,SAChB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,SAAS,GACd,OAAO,CAInB;IAED;;;;;OAKG;IACH,6BAIC;IAED;;;;;OAKG;IACH,wBAKC;IAED;;;OAGG;IACH,0BAQC;IA8BD;;OAEG;IACH,aA+BC;IAED;;OAEG;IACH,eA6BC;IAED;;;OAGG;IACH,sBAFW,IAAI,EAAE,QAMhB;IAED;;;;OAIG;IACH,gBAHW,IAAI,GACF,IAAI,CAqBhB;IAED;;;;;;;;OAQG;IACH,uBAPW,OAAO,WACP,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,UACN,OAAO,QAYjB;IAED;;;;;;;OAOG;IACH,kBANW,IAAI,WACJ,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,QAahB;IAED;;;;OAIG;IACH,mBAHW,IAAI,GACF,OAAO,CAmBnB;IAED;;;;OAIG;IACH,gBAHW,IAAI,GACF,OAAO,CAInB;IAED,0BAUC;IAED;;;;;OAKG;IACH,kBAJW,KAAK,WACL,MAAM,WACN,MAAM,QAkBhB;IAED;;;;OAIG;IACH,4BAHW,KAAK,GACH,KAAK,CAUjB;IAED,4BAaC;IAED;;;;;OAKG;IACH,6BAJW,OAAO,UACP,OAAO,GACL,OAAO,CAanB;IAED;;;;;OAKG;IACH,6BAJW,OAAO,UACP,OAAO,GACL,OAAO,CAanB;IAED;;;OAGG;IACH,2BAFW,OAAO,QAgBjB;IAED,gBAeC;IAED;;;;;;;OAOG;IACH,mBALW,MAAM,qCAGJ,IAAI,CAWhB;IAED;;;;;;OAMG;IACH,qBALW,MAAM,qCAGJ,OAAO,CAwBnB;IAED;;;;;;OAMG;IACH,eAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,kBAFW,MAAM,EAAE,QAalB;IAED;;;;;;OAMG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,GACJ,MAAM,EAAE,CA0BpB;IAED;;;;;;;;OAQG;IACH,eAJW,MAAM,QACN,OAAO,GACL,IAAI,CAMhB;IAED;;;OAGG;IACH,qBAMC;IAED;;;OAGG;IACH,sBAMC;IAED;;;;OAIG;IACH,8BAHW,OAAO,QA6BjB;IAGL;;;OAGG;IACH,iBAFU,OAAO,CAEI;;CANpB;oBApwBmB,yBAAyB;oBADzB,yBAAyB;mBAN1B,iCAAiC;kBAGlC,+BAA+B"}
package/src/view/View.js CHANGED
@@ -358,6 +358,8 @@ class View {
358
358
  assert.notNull(child, 'child');
359
359
  assert.isInstanceOf(child, View, 'child');
360
360
  assert.equal(child.isLinked, false, 'child is already linked somewhere');
361
+ assert.notEqual(child, this, 'cannot add self as a child');
362
+ assert.notEqual(this.parent, child, 'cannot add existing parent as a child')
361
363
 
362
364
  child.parent = this;
363
365
 
@@ -1,8 +0,0 @@
1
- /**
2
- *
3
- * @param {number[]|Float32Array} result sh3
4
- * @param {number[]} sh input
5
- * @param {number[]} rotation 3x3 rotation matrix
6
- */
7
- export function sh3_rotate_filament(result: number[] | Float32Array, sh: number[], rotation: number[]): void;
8
- //# sourceMappingURL=sh3_rotate_filament.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sh3_rotate_filament.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,4CAJW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,EAAE,YACR,MAAM,EAAE,QAuBlB"}
@@ -1,32 +0,0 @@
1
- import { sh_rotate_band1 } from "./sh_rotate_band1.js";
2
- import { sh_rotate_band2 } from "./sh_rotate_band2.js";
3
-
4
- /**
5
- *
6
- * @param {number[]|Float32Array} result sh3
7
- * @param {number[]} sh input
8
- * @param {number[]} rotation 3x3 rotation matrix
9
- */
10
- export function sh3_rotate_filament(result, sh, rotation) {
11
-
12
- // Adapted from filament https://github.com/google/filament/blob/e2da13f81734ccd6d6f9935061b771801682619e/libs/ibl/src/CubemapSH.cpp
13
-
14
- const b0 = sh[0];
15
- const band1 = [sh[1], sh[2], sh[3]];
16
- const b1 = sh_rotate_band1(band1, rotation);
17
- const band2 = [sh[4], sh[5], sh[6], sh[7], sh[8]];
18
- const b2 = sh_rotate_band2(band2, rotation);
19
-
20
- result[0] = b0;
21
-
22
- result[1] = b1[0];
23
- result[2] = b1[1];
24
- result[3] = b1[2];
25
-
26
- result[4] = b2[0];
27
- result[5] = b2[1];
28
- result[6] = b2[2];
29
- result[7] = b2[3];
30
- result[8] = b2[4];
31
- }
32
-
@@ -1,8 +0,0 @@
1
- /**
2
- * utilities to rotate very low order spherical harmonics (up to 3rd band)
3
- * @param {number[]} band1 vec3
4
- * @param {number[]} M 3x3 matrix
5
- * @returns {number[]}
6
- */
7
- export function sh_rotate_band1(band1: number[], M: number[]): number[];
8
- //# sourceMappingURL=sh_rotate_band1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sh_rotate_band1.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,uCAJW,MAAM,EAAE,KACR,MAAM,EAAE,GACN,MAAM,EAAE,CAoCpB"}
@@ -1,44 +0,0 @@
1
- import { mat3 } from "gl-matrix";
2
- import { m3_multiply_vec3 } from "../../../mat3/m3_multiply_vec3.js";
3
-
4
- /**
5
- * utilities to rotate very low order spherical harmonics (up to 3rd band)
6
- * @param {number[]} band1 vec3
7
- * @param {number[]} M 3x3 matrix
8
- * @returns {number[]}
9
- */
10
- export function sh_rotate_band1(band1, M) {
11
-
12
- // inverse() is not constexpr -- so we pre-calculate it in mathematica
13
- //
14
- // constexpr float3 N0{ 1, 0, 0 };
15
- // constexpr float3 N1{ 0, 1, 0 };
16
- // constexpr float3 N2{ 0, 0, 1 };
17
- //
18
- // constexpr mat3f A1 = { // this is the projection of N0, N1, N2 to SH space
19
- // float3{ -N0.y, N0.z, -N0.x },
20
- // float3{ -N1.y, N1.z, -N1.x },
21
- // float3{ -N2.y, N2.z, -N2.x }
22
- // };
23
- //
24
- // const mat3f invA1 = inverse(A1);
25
-
26
- const invA1TimesK = [
27
- 0, -1, 0,
28
- 0, 0, 1,
29
- -1, 0, 0
30
- ];
31
-
32
- const R1OverK = [
33
- -M[1], M[2], -M[0],
34
- -M[4], M[5], -M[3],
35
- -M[7], M[8], -M[6]
36
- ];
37
-
38
-
39
- m3_multiply_vec3(invA1TimesK, invA1TimesK, band1);
40
-
41
- mat3.multiply(R1OverK, R1OverK, invA1TimesK);
42
-
43
- return R1OverK;
44
- }
@@ -1,8 +0,0 @@
1
- /**
2
- *
3
- * @param {number[]} band2 vec5
4
- * @param {number[]} M mat3
5
- * @return {number[]} vec5
6
- */
7
- export function sh_rotate_band2(band2: number[], M: number[]): number[];
8
- //# sourceMappingURL=sh_rotate_band2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sh_rotate_band2.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,uCAJW,MAAM,EAAE,KACR,MAAM,EAAE,GACP,MAAM,EAAE,CA0CnB"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Math.sqrt(3)
3
- * @type {number}
4
- */
5
- const SQRT_3 = 1.7320508075688772;
6
-
7
- /**
8
- *
9
- * @param {number[]|Float32Array} M 5x5 matrix
10
- * @param {number[]} x vec5
11
- * @return {number[]} vec5
12
- */
13
- function multiply_5d(M, x) {
14
- return [
15
- M[0] * x[0] + M[5] * x[1] + M[10] * x[2] + M[15] * x[3] + M[20] * x[4],
16
- M[1] * x[0] + M[6] * x[1] + M[11] * x[2] + M[16] * x[3] + M[21] * x[4],
17
- M[2] * x[0] + M[7] * x[1] + M[12] * x[2] + M[17] * x[3] + M[22] * x[4],
18
- M[3] * x[0] + M[8] * x[1] + M[13] * x[2] + M[18] * x[3] + M[23] * x[4],
19
- M[4] * x[0] + M[9] * x[1] + M[14] * x[2] + M[19] * x[3] + M[24] * x[4]
20
- ];
21
- }
22
-
23
- /**
24
- * This projects a vec3 to SH2/k space (i.e. we premultiply by 1/k)
25
- * these are second band SH factors, multiplied by 1/K ( K = Math.sqrt(15) / (2*Math.sqrt(Math.PI)) )
26
- * @param {number[]|Float32Array} output
27
- * @param {number} output_offset
28
- * @param {number} x
29
- * @param {number} y
30
- * @param {number} z
31
- */
32
- function project_v3_to_sh2k(output, output_offset, x, y, z) {
33
- output[output_offset] = (y * x)
34
- output[output_offset + 1] = -(y * z)
35
- output[output_offset + 2] = 0.28867513459481287 * (3 * z * z - 1)
36
- output[output_offset + 3] = -(z * x)
37
- output[output_offset + 4] = 0.5 * (x * x - y * y)
38
- }
39
-
40
- /**
41
- *
42
- * @param {number[]} band2 vec5
43
- * @param {number[]} M mat3
44
- * @return {number[]} vec5
45
- */
46
- export function sh_rotate_band2(band2, M) {
47
- const n = Math.SQRT1_2;
48
-
49
- // Below we precompute (with help of Mathematica):
50
- // constexpr float3 N0{ 1, 0, 0 };
51
- // constexpr float3 N1{ 0, 0, 1 };
52
- // constexpr float3 N2{ n, n, 0 };
53
- // constexpr float3 N3{ n, 0, n };
54
- // constexpr float3 N4{ 0, n, n };
55
- // constexpr float M_SQRT_PI = 1.7724538509f;
56
- // constexpr float M_SQRT_15 = 3.8729833462f;
57
- // constexpr float k = M_SQRT_15 / (2.0f * M_SQRT_PI);
58
- // --> k * inverse(mat5{project(N0), project(N1), project(N2), project(N3), project(N4)})
59
- const invATimesK = [
60
- 0, 1, 2, 0, 0,
61
- -1, 0, 0, 0, -2,
62
- 0, SQRT_3, 0, 0, 0,
63
- 1, 1, 0, -2, 0,
64
- 2, 1, 0, 0, 0
65
- ];
66
-
67
- // this is: invA * k * band2
68
- // 5x5 matrix by vec5 (this a lot of zeroes and constants, which the compiler should eliminate)
69
- const invATimesKTimesBand2 = multiply_5d(invATimesK, band2);
70
-
71
- // this is: mat5{project(N0), project(N1), project(N2), project(N3), project(N4)} / k
72
- // (the 1/k comes from project(), see above)
73
- const ROverK = new Float32Array(25);
74
-
75
- project_v3_to_sh2k(ROverK, 0, M[0], M[1], M[2]) // M * N0
76
- project_v3_to_sh2k(ROverK, 5, M[6], M[7], M[8]) // M * N1
77
- project_v3_to_sh2k(ROverK, 10, n * (M[0] + M[3]), n * (M[1] + M[4]), n * (M[2] + M[5])) // M * N2
78
- project_v3_to_sh2k(ROverK, 15, n * (M[0] + M[6]), n * (M[1] + M[7]), n * (M[2] + M[8])) // M * N3
79
- project_v3_to_sh2k(ROverK, 20, n * (M[3] + M[6]), n * (M[4] + M[7]), n * (M[5] + M[8])) // M * N4;
80
-
81
- // notice how "k" disappears
82
- // this is: (R / k) * (invA * k) * band2 == R * invA * band2
83
- const result = multiply_5d(ROverK, invATimesKTimesBand2);
84
-
85
- return result;
86
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"SH3VisualisationMaterial.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/SH3VisualisationMaterial.js"],"names":[],"mappings":"AA0DA;IAEI,cAoBC;CAEJ;+BAlFuC,OAAO"}
@@ -1,83 +0,0 @@
1
- import { ShaderMaterial, Vector3 } from "three";
2
-
3
- const shader_vx = `
4
- varying vec3 vNormal;
5
-
6
- void main() {
7
-
8
- vNormal = normalize( normalMatrix * normal );
9
-
10
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
11
-
12
- }
13
- `;
14
-
15
- const shader_fg = `
16
- #define RECIPROCAL_PI 0.318309886
17
-
18
- vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
19
- // matrix is assumed to be orthogonal
20
- return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );
21
- }
22
-
23
- // source: https://graphics.stanford.edu/papers/envmap/envmap.pdf
24
- vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
25
- // normal is assumed to have unit length
26
- float x = normal.x, y = normal.y, z = normal.z;
27
-
28
- // band 0
29
- vec3 result = shCoefficients[ 0 ] * 0.8862269254527579;
30
-
31
- // band 1
32
- result -= shCoefficients[ 1 ] * 1.0233267079464885 * y;
33
- result += shCoefficients[ 2 ] * 1.0233267079464885 * z;
34
- result -= shCoefficients[ 3 ] * 1.0233267079464885 * x;
35
-
36
- // band 2
37
- result += shCoefficients[ 4 ] * 0.8580855308097834 * x * y;
38
- result -= shCoefficients[ 5 ] * 0.8580855308097834 * y * z;
39
- result += shCoefficients[ 6 ] * ( 0.7431238683011272 * z * z - 0.24770795610037571 );
40
- result -= shCoefficients[ 7 ] * 0.8580855308097834 * x * z;
41
- result += shCoefficients[ 8 ] * 0.4290427654048917 * ( x * x - y * y );
42
-
43
- return result;
44
- }
45
-
46
- uniform vec3 sh[ 9 ]; // sh coefficients
47
- uniform float intensity; // light probe intensity
48
- varying vec3 vNormal;
49
-
50
- void main() {
51
- vec3 normal = normalize( vNormal );
52
- vec3 worldNormal = normalize(inverseTransformDirection( normal, viewMatrix ));
53
- vec3 irradiance = shGetIrradianceAt( worldNormal, sh );
54
- vec3 outgoingLight = 1.0 * irradiance * intensity;
55
- gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );
56
- }
57
- `;
58
-
59
- export class SH3VisualisationMaterial extends ShaderMaterial {
60
-
61
- constructor() {
62
- const sh = [];
63
-
64
- for (let i = 0; i < 9; i++) {
65
- sh.push(new Vector3());
66
- }
67
-
68
- super({
69
- fragmentShader: shader_fg,
70
- vertexShader: shader_vx,
71
- lights: false,
72
- uniforms: {
73
- intensity: {
74
- value: 1,
75
- },
76
- sh: {
77
- value: sh
78
- }
79
- }
80
- })
81
- }
82
-
83
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_fragment_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/build_fragment_shader.js"],"names":[],"mappings":"AAsDA;;;GAGG;AACH,8CAFW,MAAM,UAchB"}
@@ -1,71 +0,0 @@
1
- import { insert_after } from "../../../../../core/primitives/strings/insert_after.js";
2
-
3
- const PREAMBLE = `
4
-
5
- uniform float lpv_f_intensity;
6
-
7
- varying vec3[9] lpv_values;
8
-
9
- // vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
10
- // // normal is assumed to have unit length
11
- // float x = normal.x, y = normal.y, z = normal.z;
12
- //
13
- // // band 0
14
- // vec3 result = shCoefficients[ 0 ] * 0.886227;
15
- //
16
- // // band 1
17
- // result -= shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
18
- // result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
19
- // result -= shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
20
- //
21
- // // band 2
22
- // result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
23
- // result -= shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
24
- // result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
25
- // result -= shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
26
- // result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
27
- //
28
- // return result;
29
- // }
30
- //
31
- // vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
32
- //
33
- // // matrix is assumed to be orthogonal
34
- //
35
- // return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );
36
- //
37
- // }
38
- //
39
- // vec3 lpv_getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
40
- //
41
- // vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
42
- //
43
- // vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
44
- //
45
- // return irradiance;
46
- //
47
- // }
48
- `;
49
-
50
- const ACCUMULATION = `
51
- irradiance += getLightProbeIrradiance(lpv_values, geometryNormal )* lpv_f_intensity;
52
- `;
53
-
54
-
55
- /**
56
- *
57
- * @param {string} source
58
- */
59
- export function build_fragment_shader(source) {
60
-
61
- let result = PREAMBLE + source;
62
-
63
-
64
- result = insert_after(
65
- result,
66
- '#include <lights_fragment_begin>',
67
- ACCUMULATION
68
- );
69
-
70
- return result;
71
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_vertex_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/build_vertex_shader.js"],"names":[],"mappings":"AA+OA;;;GAGG;AACH,4CAFW,MAAM,UAchB"}