@woosh/meep-engine 2.109.6 → 2.109.8

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 (180) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +203 -174
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +203 -174
  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/geom/3d/Ray3.js +1 -1
  12. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  13. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts +4 -4
  14. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts.map +1 -1
  15. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.js +15 -11
  16. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.d.ts.map +1 -1
  17. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.js +13 -7
  18. package/src/core/geom/3d/normal/octahedron/encoding.spec.js +26 -1
  19. package/src/core/geom/3d/normal/octahedron/prototype.d.ts +2 -0
  20. package/src/core/geom/3d/normal/octahedron/prototype.d.ts.map +1 -0
  21. package/src/core/geom/3d/normal/octahedron/prototype.js +226 -0
  22. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +1 -1
  23. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +4 -4
  24. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +3 -3
  25. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  26. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +10 -5
  27. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +7 -1
  28. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +1 -1
  29. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js +6 -0
  30. package/src/core/geom/vec3/v3_distance.d.ts.map +1 -1
  31. package/src/core/geom/vec3/v3_distance.js +5 -5
  32. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts +10 -0
  33. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts.map +1 -0
  34. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.js +34 -0
  35. package/src/core/model/node-graph/DataType.d.ts.map +1 -1
  36. package/src/core/model/node-graph/DataType.js +16 -10
  37. package/src/core/model/node-graph/ParametricDataType.d.ts +34 -0
  38. package/src/core/model/node-graph/ParametricDataType.d.ts.map +1 -0
  39. package/src/core/model/node-graph/ParametricDataType.js +63 -0
  40. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +5 -1
  41. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts.map +1 -1
  42. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +11 -6
  43. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  44. package/src/engine/asset/loaders/AssetLoader.js +1 -1
  45. package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
  46. package/src/engine/asset/loaders/material/computeTextureEquality.js +6 -1
  47. package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
  48. package/src/engine/asset/loaders/material/computeTextureHash.js +8 -3
  49. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  50. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +9 -15
  51. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +7 -0
  52. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +1 -0
  53. package/src/engine/graphics/geometry/instancing/geometry_copy.js +15 -0
  54. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
  55. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +28 -20
  56. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts +1 -0
  57. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts.map +1 -1
  58. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.js +4 -0
  59. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js +6 -6
  60. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +16 -7
  61. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts +3 -2
  62. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts.map +1 -1
  63. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.js +25 -14
  64. package/src/engine/graphics/render/visibility/hiz/buildCanvasViewFromTexture.js +1 -0
  65. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  66. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +59 -37
  67. package/src/engine/graphics/sh3/gi/material/common.glsl +484 -0
  68. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts +8 -0
  69. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts.map +1 -0
  70. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.js +35 -0
  71. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts +8 -0
  72. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts.map +1 -0
  73. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.js +28 -0
  74. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  75. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +51 -0
  76. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  77. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +29 -0
  78. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  79. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  80. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.js +12 -0
  81. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts +6 -0
  82. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  83. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +26 -0
  84. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts +6 -0
  85. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  86. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +62 -0
  87. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.frag.glsl +43 -0
  88. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.vert.glsl +9 -0
  89. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  90. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  91. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.js +12 -0
  92. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +2 -0
  93. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  94. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +35 -3
  95. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts.map +1 -1
  96. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js +26 -9
  97. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +11 -1
  98. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  99. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +27 -61
  100. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -1
  101. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +8 -6
  102. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts +17 -0
  103. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts.map +1 -0
  104. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.js +100 -0
  105. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts +12 -0
  106. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts.map +1 -0
  107. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +58 -0
  108. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts +11 -0
  109. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts.map +1 -0
  110. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.js +45 -0
  111. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +126 -0
  112. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.vert.glsl +10 -0
  113. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts +13 -0
  114. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -0
  115. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +149 -0
  116. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +161 -0
  117. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.vert.glsl +13 -0
  118. package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.d.ts.map +1 -0
  119. package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.js → depth/sh3_bake_depth.js} +7 -7
  120. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.d.ts +8 -0
  121. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.d.ts.map +1 -0
  122. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.js +50 -0
  123. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +3 -6
  124. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -1
  125. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +34 -58
  126. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.d.ts.map +1 -1
  127. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js +8 -0
  128. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +2 -2
  129. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  130. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +8 -5
  131. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +7 -0
  132. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -0
  133. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +50 -0
  134. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +40 -3
  135. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_along_ray.d.ts.map +1 -0
  136. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.js → sorting/build_bvh_nodes_distances_along_ray.js} +2 -2
  137. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_sqr_to_point.d.ts.map +1 -0
  138. 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
  139. package/src/engine/graphics/sh3/path_tracer/sorting/sort_bvh_nodes_by_distance_to_point.d.ts.map +1 -0
  140. 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
  141. package/src/engine/graphics/sh3/prototypeSH3Probe.js +41 -8
  142. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.d.ts.map +1 -0
  143. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.js +29 -0
  144. package/src/engine/graphics/sh3/shader/visualize.frag.glsl +41 -0
  145. package/src/engine/graphics/sh3/shader/visualize.vert.glsl +9 -0
  146. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +1 -1
  147. package/src/engine/graphics/texture/debug_preview_texture.d.ts +8 -0
  148. package/src/engine/graphics/texture/debug_preview_texture.d.ts.map +1 -0
  149. package/src/engine/graphics/texture/debug_preview_texture.js +38 -0
  150. package/src/view/View.d.ts.map +1 -1
  151. package/src/view/View.js +2 -0
  152. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +0 -8
  153. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +0 -1
  154. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js +0 -32
  155. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +0 -8
  156. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +0 -1
  157. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +0 -44
  158. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +0 -8
  159. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +0 -1
  160. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +0 -86
  161. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +0 -1
  162. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +0 -83
  163. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts.map +0 -1
  164. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.js +0 -71
  165. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts.map +0 -1
  166. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.js +0 -256
  167. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +0 -1
  168. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts.map +0 -1
  169. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts.map +0 -1
  170. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts +0 -2
  171. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts.map +0 -1
  172. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +0 -27
  173. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts.map +0 -1
  174. /package/src/engine/graphics/sh3/gi/material/{build_fragment_shader.d.ts → space_fragment/build_fragment_shader.d.ts} +0 -0
  175. /package/src/engine/graphics/sh3/gi/material/{build_vertex_shader.d.ts → space_fragment/build_vertex_shader.d.ts} +0 -0
  176. /package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.d.ts → depth/sh3_bake_depth.d.ts} +0 -0
  177. /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
  178. /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
  179. /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
  180. /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
+ }
@@ -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"}