@woosh/meep-engine 2.109.6 → 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 (167) 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/triangle/triangle_encode_rasterized_depth.d.ts +7 -1
  25. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +1 -1
  26. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js +6 -0
  27. package/src/core/geom/vec3/v3_distance.d.ts.map +1 -1
  28. package/src/core/geom/vec3/v3_distance.js +5 -5
  29. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts +10 -0
  30. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts.map +1 -0
  31. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.js +34 -0
  32. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +5 -1
  33. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts.map +1 -1
  34. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +11 -6
  35. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  36. package/src/engine/asset/loaders/AssetLoader.js +1 -1
  37. package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
  38. package/src/engine/asset/loaders/material/computeTextureEquality.js +6 -1
  39. package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
  40. package/src/engine/asset/loaders/material/computeTextureHash.js +8 -3
  41. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  42. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +9 -15
  43. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +7 -0
  44. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +1 -0
  45. package/src/engine/graphics/geometry/instancing/geometry_copy.js +15 -0
  46. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
  47. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +28 -20
  48. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts +1 -0
  49. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts.map +1 -1
  50. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.js +4 -0
  51. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js +6 -6
  52. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +16 -7
  53. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts +3 -2
  54. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts.map +1 -1
  55. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.js +25 -14
  56. package/src/engine/graphics/render/visibility/hiz/buildCanvasViewFromTexture.js +1 -0
  57. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  58. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +48 -33
  59. package/src/engine/graphics/sh3/gi/material/common.glsl +434 -0
  60. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts +8 -0
  61. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts.map +1 -0
  62. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.js +35 -0
  63. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts +8 -0
  64. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts.map +1 -0
  65. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.js +28 -0
  66. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  67. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +53 -0
  68. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  69. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +29 -0
  70. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  71. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  72. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.js +12 -0
  73. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts +6 -0
  74. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  75. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +26 -0
  76. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts +6 -0
  77. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  78. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +62 -0
  79. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.frag.glsl +43 -0
  80. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.vert.glsl +9 -0
  81. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  82. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  83. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.js +12 -0
  84. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +2 -0
  85. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  86. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +35 -3
  87. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts.map +1 -1
  88. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js +67 -8
  89. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +10 -0
  90. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  91. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +27 -41
  92. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts +17 -0
  93. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts.map +1 -0
  94. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.js +100 -0
  95. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts +12 -0
  96. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts.map +1 -0
  97. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +58 -0
  98. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts +11 -0
  99. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts.map +1 -0
  100. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.js +45 -0
  101. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +126 -0
  102. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.vert.glsl +10 -0
  103. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts +13 -0
  104. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -0
  105. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +146 -0
  106. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +159 -0
  107. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.vert.glsl +13 -0
  108. package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.d.ts.map +1 -0
  109. package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.js → depth/sh3_bake_depth.js} +7 -7
  110. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +3 -6
  111. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -1
  112. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +34 -58
  113. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.d.ts.map +1 -1
  114. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js +8 -0
  115. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +2 -2
  116. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  117. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +8 -5
  118. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +7 -0
  119. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -0
  120. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +50 -0
  121. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +40 -3
  122. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_along_ray.d.ts.map +1 -0
  123. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.js → sorting/build_bvh_nodes_distances_along_ray.js} +2 -2
  124. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_sqr_to_point.d.ts.map +1 -0
  125. 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
  126. package/src/engine/graphics/sh3/path_tracer/sorting/sort_bvh_nodes_by_distance_to_point.d.ts.map +1 -0
  127. 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
  128. package/src/engine/graphics/sh3/prototypeSH3Probe.js +40 -7
  129. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.d.ts.map +1 -0
  130. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.js +29 -0
  131. package/src/engine/graphics/sh3/shader/visualize.frag.glsl +41 -0
  132. package/src/engine/graphics/sh3/shader/visualize.vert.glsl +9 -0
  133. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +1 -1
  134. package/src/engine/graphics/texture/debug_preview_texture.d.ts +8 -0
  135. package/src/engine/graphics/texture/debug_preview_texture.d.ts.map +1 -0
  136. package/src/engine/graphics/texture/debug_preview_texture.js +38 -0
  137. package/src/view/View.d.ts.map +1 -1
  138. package/src/view/View.js +2 -0
  139. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +0 -8
  140. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +0 -1
  141. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js +0 -32
  142. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +0 -8
  143. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +0 -1
  144. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +0 -44
  145. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +0 -8
  146. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +0 -1
  147. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +0 -86
  148. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +0 -1
  149. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +0 -83
  150. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts.map +0 -1
  151. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.js +0 -71
  152. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts.map +0 -1
  153. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.js +0 -256
  154. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +0 -1
  155. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts.map +0 -1
  156. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts.map +0 -1
  157. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts +0 -2
  158. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts.map +0 -1
  159. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +0 -27
  160. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts.map +0 -1
  161. /package/src/engine/graphics/sh3/gi/material/{build_fragment_shader.d.ts → space_fragment/build_fragment_shader.d.ts} +0 -0
  162. /package/src/engine/graphics/sh3/gi/material/{build_vertex_shader.d.ts → space_fragment/build_vertex_shader.d.ts} +0 -0
  163. /package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.d.ts → depth/sh3_bake_depth.d.ts} +0 -0
  164. /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
  165. /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
  166. /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
  167. /package/src/engine/graphics/sh3/{SH3VisualisationMaterial.d.ts → shader/SH3VisualisationMaterial.d.ts} +0 -0
@@ -0,0 +1,62 @@
1
+ import { insert_after } from "../../../../../../core/primitives/strings/insert_after.js";
2
+ import PREAMBLE_COMMON from "../common.glsl";
3
+
4
+ import PREAMBLE from "./preable.vert.glsl";
5
+
6
+ const SHADER_CHUNK_ACCUMULATION = `
7
+ {
8
+ // lookup nearby tet
9
+ vec3 lpv_mesh_bounds_min = lpv_v3_bounds_min;
10
+ vec3 lpv_mesh_bounds_max = lpv_v3_bounds_max;
11
+ vec3 lookup_coordinates = (worldPosition.xyz - lpv_mesh_bounds_min) / (lpv_mesh_bounds_max - lpv_mesh_bounds_min) ;
12
+
13
+ uint nearest_tet = lpv_guess_initial_tet( worldPosition.xyz );
14
+
15
+ uint tet;
16
+ vec4 weights;
17
+ lpv_getTetrahedron(worldPosition.xyz, nearest_tet, tet, weights);
18
+
19
+ weights = lvp_mask_weights_by_visibility(worldPosition.xyz, tet, weights);
20
+
21
+ if(tet == INVALID_TET){
22
+ lpv_values = vec3[](
23
+ vec3(0.0, 0.0, 0.0),
24
+ vec3(0.0, 0.0, 0.0),
25
+ vec3(0.0, 0.0, 0.0),
26
+
27
+ vec3(0.0, 0.0, 0.0),
28
+ vec3(0.0, 0.0, 0.0),
29
+ vec3(0.0, 0.0, 0.0),
30
+
31
+ vec3(0.0, 0.0, 0.0),
32
+ vec3(0.0, 0.0, 0.0),
33
+ vec3(0.0, 0.0, 0.0)
34
+ );
35
+ }else{
36
+
37
+ vec3 worldNormal = normalize(inverseTransformDirection( normalize(normal), viewMatrix ));
38
+
39
+ //weights = lpv_bias_weight_by_normal(worldPosition.xyz, normal, tet, weights);
40
+
41
+ lpv_values = lpv_interpolate_probes(weights, tet);
42
+ }
43
+ }
44
+ `
45
+
46
+ /**
47
+ *
48
+ * @param {string} source
49
+ */
50
+ export function build_vertex_shader(source) {
51
+ let result = PREAMBLE + PREAMBLE_COMMON + source;
52
+
53
+ result = insert_after(
54
+ result,
55
+ '#include <fog_vertex>',
56
+ SHADER_CHUNK_ACCUMULATION
57
+ );
58
+
59
+ // console.log(result)
60
+
61
+ return result;
62
+ }
@@ -0,0 +1,43 @@
1
+ uniform float lpv_f_intensity;
2
+
3
+ varying vec3[9] lpv_values;
4
+
5
+ // vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
6
+ // // normal is assumed to have unit length
7
+ // float x = normal.x, y = normal.y, z = normal.z;
8
+ //
9
+ // // band 0
10
+ // vec3 result = shCoefficients[ 0 ] * 0.886227;
11
+ //
12
+ // // band 1
13
+ // result -= shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
14
+ // result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
15
+ // result -= shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
16
+ //
17
+ // // band 2
18
+ // result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
19
+ // result -= shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
20
+ // result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
21
+ // result -= shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
22
+ // result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
23
+ //
24
+ // return result;
25
+ // }
26
+ //
27
+ // vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
28
+ //
29
+ // // matrix is assumed to be orthogonal
30
+ //
31
+ // return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );
32
+ //
33
+ // }
34
+ //
35
+ // vec3 lpv_getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
36
+ //
37
+ // vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
38
+ //
39
+ // vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
40
+ //
41
+ // return irradiance;
42
+ //
43
+ // }
@@ -0,0 +1,9 @@
1
+ #ifndef LPV_SHADER_CHUNK_PREAMBLE
2
+ #define LPV_SHADER_CHUNK_PREAMBLE
3
+
4
+ precision highp usampler2D;
5
+ precision highp usampler3D;
6
+
7
+ varying vec3[9] lpv_values;
8
+
9
+ #endif
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {{vertexShader, fragmentShader}} shader
4
+ */
5
+ export function space_vertex_transform_shader(shader: {
6
+ vertexShader;
7
+ fragmentShader;
8
+ }): void;
9
+ //# sourceMappingURL=space_vertex_transform_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space_vertex_transform_shader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,sDAFW;IAAC,YAAY,CAAC;IAAC,cAAc,CAAA;CAAC,QAMxC"}
@@ -0,0 +1,12 @@
1
+ import { build_fragment_shader } from "./build_fragment_shader.js";
2
+ import { build_vertex_shader } from "./build_vertex_shader.js";
3
+
4
+ /**
5
+ *
6
+ * @param {{vertexShader, fragmentShader}} shader
7
+ */
8
+ export function space_vertex_transform_shader(shader) {
9
+
10
+ shader.vertexShader = build_vertex_shader(shader.vertexShader);
11
+ shader.fragmentShader = build_fragment_shader(shader.fragmentShader);
12
+ }
@@ -8,6 +8,8 @@ export class LightProbeVolume {
8
8
  get mesh(): TetrahedralMesh;
9
9
  get points(): number[];
10
10
  get harmonics(): number[];
11
+ get depth_map_resolution(): number;
12
+ get depth(): number[];
11
13
  set count(arg: number);
12
14
  get count(): number;
13
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"AAUA;IAmBI,sBAEC;IAED,cAQC;IAED;;;OAGG;IACH,4BAEC;IAED,uBAEC;IAED,0BAEC;IAMD,uBAEC;IAND,oBAEC;IAMD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAgBhB;IAED;;;;;OAKG;IACH,mBAJW,MAAM,UACN,MAAM,EAAE,iBACR,MAAM,QAIhB;IAED;;OAEG;IACH,mBAaC;IAGD;;;;;OAKG;IACH,mCAJW,MAAM,GAEJ,UAAU,CAsBtB;IAGD,yBAEC;;CAEJ;gCAnJ+B,wDAAwD;2BAC7D,mCAAmC"}
1
+ {"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"AAUA;IAiCI,sBAEC;IAED,cAkBC;IAED;;;OAGG;IACH,4BAEC;IAED,uBAEC;IAED,0BAEC;IAED,mCAEC;IAED,sBAEC;IAMD,uBAEC;IAND,oBAEC;IAMD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAgBhB;IAED;;;;;OAKG;IACH,mBAJW,MAAM,UACN,MAAM,EAAE,iBACR,MAAM,QAIhB;IAED;;OAEG;IACH,mBAaC;IAGD;;;;;OAKG;IACH,mCAJW,MAAM,GAEJ,UAAU,CAsBtB;IAGD,yBAEC;;CAEJ;gCAnL+B,wDAAwD;2BAC7D,mCAAmC"}
@@ -20,11 +20,25 @@ export class LightProbeVolume {
20
20
  #mesh = new TetrahedralMesh();
21
21
 
22
22
  /**
23
- *
23
+ * Probe irradiance color data
24
+ * Base-3 spherical harmonics, 9 coefficients per color channel for a total of 27 coefficients per probe
24
25
  * @type {number[]}
25
26
  */
26
27
  #sh3_rgb = [];
27
28
 
29
+ /**
30
+ * Resolution of an individual depth map for a probe
31
+ * Depth map is stored as a 2d texture of size RESOLUTION x RESOLUTION
32
+ * @type {number}
33
+ */
34
+ #probe_depth_resolution = 24;
35
+
36
+ /**
37
+ * Octahedral-encoded depth map for each probe
38
+ * @type {number[]}
39
+ */
40
+ #probe_depth = [];
41
+
28
42
  #probe_count = 0;
29
43
 
30
44
  get version() {
@@ -32,8 +46,18 @@ export class LightProbeVolume {
32
46
  }
33
47
 
34
48
  clear() {
35
- this.#probe_positions.splice(0, this.#probe_positions.length);
36
- this.#sh3_rgb.splice(0, this.#sh3_rgb.length);
49
+ if (this.#probe_positions.length > 0) {
50
+ this.#probe_positions = [];
51
+ }
52
+
53
+ if (this.#sh3_rgb.length > 0) {
54
+ this.#sh3_rgb = [];
55
+ }
56
+
57
+ if (this.#probe_depth.length > 0) {
58
+ this.#probe_depth = [];
59
+ }
60
+
37
61
  this.#mesh.clear();
38
62
 
39
63
  this.#probe_count = 0;
@@ -57,6 +81,14 @@ export class LightProbeVolume {
57
81
  return this.#sh3_rgb;
58
82
  }
59
83
 
84
+ get depth_map_resolution() {
85
+ return this.#probe_depth_resolution;
86
+ }
87
+
88
+ get depth() {
89
+ return this.#probe_depth;
90
+ }
91
+
60
92
  get count() {
61
93
  return this.#probe_count;
62
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LightProbeVolumeBaker.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js"],"names":[],"mappings":"AAMA;IAGI,8BAAqC;IAGrC;;;;;OAKG;IACH,0DAJa,SAAS,CA+CrB;CACJ;wCA1DuC,8BAA8B;sBAJhD,4CAA4C"}
1
+ {"version":3,"file":"LightProbeVolumeBaker.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js"],"names":[],"mappings":"AAmDA;IAGI,8BAAqC;IAGrC;;;;;OAKG;IACH,0DAJa,SAAS,CA6DrB;CACJ;wCAhHuC,8BAA8B;sBAJhD,4CAA4C"}
@@ -1,9 +1,54 @@
1
+ import { v3_distance_sqr } from "../../../../core/geom/vec3/v3_distance_sqr.js";
2
+ import {
3
+ tetrahedral_mesh_find_tets_attached_to_vertex
4
+ } from "../../../../core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.js";
5
+ import { max2 } from "../../../../core/math/max2.js";
1
6
  import TaskGroup from "../../../../core/process/task/TaskGroup.js";
2
7
  import { actionTask } from "../../../../core/process/task/util/actionTask.js";
3
8
  import { countTask } from "../../../../core/process/task/util/countTask.js";
4
9
  import { promiseTask } from "../../../../core/process/task/util/promiseTask.js";
5
10
  import { PathTracerProbeRenderer } from "./PathTracerProbeRenderer.js";
6
11
 
12
+ /**
13
+ *
14
+ * @param {number} vertex_index
15
+ * @param {TetrahedralMesh} mesh
16
+ * @param {number[]} points
17
+ */
18
+ function find_max_depth_radius_for_point(vertex_index, mesh, points) {
19
+ const tets = [];
20
+
21
+ const count = tetrahedral_mesh_find_tets_attached_to_vertex(
22
+ tets, 0,
23
+ mesh,
24
+ vertex_index
25
+ );
26
+
27
+ const ref_x = points[vertex_index * 3];
28
+ const ref_y = points[vertex_index * 3 + 1];
29
+ const ref_z = points[vertex_index * 3 + 2];
30
+
31
+ let radius_sqr = 0;
32
+
33
+ for (let i = 0; i < count; i++) {
34
+ const tet = tets[i];
35
+
36
+ for (let j = 0; j < 4; j++) {
37
+ const v = mesh.getVertexIndex(tet, j);
38
+
39
+ const x = points[v * 3];
40
+ const y = points[v * 3 + 1];
41
+ const z = points[v * 3 + 2];
42
+
43
+ const r2 = v3_distance_sqr(ref_x, ref_y, ref_z, x, y, z);
44
+
45
+ radius_sqr = max2(r2, radius_sqr);
46
+ }
47
+ }
48
+
49
+ return Math.sqrt(radius_sqr);
50
+ }
51
+
7
52
  export class LightProbeVolumeBaker {
8
53
 
9
54
  // this._ren = new WebGLCubeProbeRenderer();
@@ -29,23 +74,37 @@ export class LightProbeVolumeBaker {
29
74
 
30
75
  const probe_count = lpv.count;
31
76
 
32
- const tBake = countTask(0, probe_count, (i) => {
77
+ const tBakeIrradiance = countTask(0, probe_count, (i) => {
33
78
 
79
+ // Bake color
34
80
  renderer.bake(
35
81
  lpv.points, i * 3,
36
82
  lpv.harmonics, i * 9 * 3
37
83
  );
38
84
 
85
+
86
+ // Bake depth
87
+ const max_distance = find_max_depth_radius_for_point(i, lpv.mesh, lpv.points);
88
+
89
+ const depth_resolution = lpv.depth_map_resolution;
90
+
91
+ renderer.bake_depth_octahedral(
92
+ depth_resolution,
93
+ max_distance*1.05 + 0.00001,
94
+ lpv.points, i * 3,
95
+ lpv.depth, i * depth_resolution * depth_resolution
96
+ );
97
+
39
98
  });
40
- tBake.estimatedDuration = probe_count;
99
+ tBakeIrradiance.estimatedDuration = probe_count;
41
100
 
42
- tBake.promise().then(() => {
101
+ tBakeIrradiance.promise().then(() => {
43
102
 
44
- const duration = tBake.__executedCpuTime;
103
+ const duration = tBakeIrradiance.__executedCpuTime;
45
104
 
46
105
  console.log(`Baked ${probe_count} probes in ${duration}ms, ~${(duration / probe_count).toFixed(2)}ms per probe`);
47
106
 
48
- })
107
+ });
49
108
 
50
109
  const tFinish = actionTask(() => {
51
110
  renderer.bake_end();
@@ -53,11 +112,11 @@ export class LightProbeVolumeBaker {
53
112
  lpv.incrementVersion();
54
113
  });
55
114
 
56
- tFinish.addDependency(tBake);
57
- tBake.addDependency(tPrepare);
115
+ tFinish.addDependency(tBakeIrradiance);
116
+ tBakeIrradiance.addDependency(tPrepare);
58
117
 
59
118
  return new TaskGroup([
60
- tPrepare, tBake, tFinish
119
+ tPrepare, tBakeIrradiance, tFinish
61
120
  ], "LightProbeVolume Bake");
62
121
  }
63
122
  }
@@ -4,6 +4,16 @@ export class PathTracerProbeRenderer extends ProbeRenderer {
4
4
  random: () => number;
5
5
  scene: PathTracedScene;
6
6
  bake_depth(position: any, position_offset: any, output: any, output_offset: any): void;
7
+ /**
8
+ *
9
+ * @param {number} resolution
10
+ * @param {number} max_depth
11
+ * @param {number[]} position
12
+ * @param {number} position_offset
13
+ * @param {number[]} output
14
+ * @param {number} output_offset
15
+ */
16
+ bake_depth_octahedral(resolution: number, max_depth: number, position: number[], position_offset: number, output: number[], output_offset: number): void;
7
17
  bake(position: any, position_offset: any, output: any, output_offset: any): void;
8
18
  bake_start(): void;
9
19
  build_scene(ecd: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"PathTracerProbeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js"],"names":[],"mappings":"AA2BA;IACI,mBAA0B;IAC1B,qBAAmB;IACnB,qBAAyB;IAEzB,uBAA6B;IAE7B,uFAoBC;IAED,iFAqCC;IAKD,mBACC;IAED,4BAsCC;CACJ;8BA3H6B,oBAAoB;2BADvB,8BAA8B;gCADzB,mCAAmC"}
1
+ {"version":3,"file":"PathTracerProbeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js"],"names":[],"mappings":"AAwBA;IACI,mBAA0B;IAC1B,qBAAmB;IACnB,qBAAyB;IAEzB,uBAA6B;IAE7B,uFAoBC;IAED;;;;;;;;OAQG;IACH,kCAPW,MAAM,aACN,MAAM,YACN,MAAM,EAAE,mBACR,MAAM,UACN,MAAM,EAAE,iBACR,MAAM,QAahB;IAED,iFAqCC;IAKD,mBACC;IAED,4BAKC;CACJ;8BA/G6B,oBAAoB;2BAJvB,8BAA8B;gCADzB,mCAAmC"}
@@ -8,15 +8,12 @@ import { sh3_vector_accumulate } from "../../../../core/geom/3d/sphere/harmonics
8
8
  import { randomPointOnSphere } from "../../../../core/geom/random/randomPointOnSphere.js";
9
9
  import { vector_scale_array } from "../../../../core/geom/vec/vector_scale_array.js";
10
10
  import { seededRandom } from "../../../../core/math/random/seededRandom.js";
11
- import { Transform } from "../../../ecs/transform/Transform.js";
12
- import { Light } from "../../ecs/light/Light.js";
13
- import { LightType } from "../../ecs/light/LightType.js";
14
- import { ShadedGeometry } from "../../ecs/mesh-v2/ShadedGeometry.js";
15
- import { DirectionalLight } from "../../render/forward_plus/model/DirectionalLight.js";
16
11
  import { PathTracedScene } from "../path_tracer/PathTracedScene.js";
17
12
  import { PathTracer } from "../path_tracer/PathTracer.js";
13
+ import { populate_path_traced_scene_from_ecd } from "../path_tracer/populate_path_traced_scene_from_ecd.js";
14
+ import { bake_octahedral_depth_map } from "./depth/octahedral/bake_octahedral_depth_map.js";
15
+ import { sh3_bake_depth } from "./depth/sh3_bake_depth.js";
18
16
  import { ProbeRenderer } from "./ProbeRenderer.js";
19
- import { sh3_bake_depth } from "./sh3_bake_depth.js";
20
17
 
21
18
  const __shared_buffer = new ArrayBuffer((27 + 9) * 8);
22
19
  const sh_basis = new Float64Array(__shared_buffer, 0, 9);
@@ -27,7 +24,7 @@ const sampled_irradiance = new Float32Array(3);
27
24
 
28
25
  export class PathTracerProbeRenderer extends ProbeRenderer {
29
26
  tracer = new PathTracer();
30
- sample_count = 256;
27
+ sample_count = 192;
31
28
  random = seededRandom(0);
32
29
 
33
30
  scene = new PathTracedScene()
@@ -54,6 +51,28 @@ export class PathTracerProbeRenderer extends ProbeRenderer {
54
51
 
55
52
  }
56
53
 
54
+ /**
55
+ *
56
+ * @param {number} resolution
57
+ * @param {number} max_depth
58
+ * @param {number[]} position
59
+ * @param {number} position_offset
60
+ * @param {number[]} output
61
+ * @param {number} output_offset
62
+ */
63
+ bake_depth_octahedral(
64
+ resolution, max_depth,
65
+ position, position_offset,
66
+ output, output_offset
67
+ ) {
68
+ bake_octahedral_depth_map(
69
+ output, output_offset,
70
+ this.scene,
71
+ position, position_offset,
72
+ resolution, max_depth
73
+ );
74
+ }
75
+
57
76
  bake(position, position_offset, output, output_offset) {
58
77
 
59
78
 
@@ -102,40 +121,7 @@ export class PathTracerProbeRenderer extends ProbeRenderer {
102
121
  build_scene(ecd) {
103
122
 
104
123
  const scene = this.scene;
105
-
106
- ecd.traverseEntities([ShadedGeometry, Transform],
107
- /**
108
- *
109
- * @param {ShadedGeometry} sg
110
- * @param {Transform} transform
111
- */
112
- (sg, transform) => {
113
-
114
- scene.createMesh(sg.geometry, sg.material, transform.matrix)
115
-
116
- });
117
-
118
-
119
- ecd.traverseEntities([Light, Transform],
120
- /**
121
- *
122
- * @param {Light} light
123
- * @param {Transform} transform
124
- */
125
- (light, transform) => {
126
-
127
- if (light.type.getValue() === LightType.DIRECTION) {
128
-
129
- const l = new DirectionalLight();
130
-
131
- l.color.copy(light.color);
132
- l.direction.copy(transform.forward);
133
- l.intensity.copy(light.intensity);
134
-
135
- scene.addLight(l);
136
- }
137
-
138
- });
124
+ populate_path_traced_scene_from_ecd(ecd, scene);
139
125
 
140
126
  }
141
127
  }
@@ -0,0 +1,17 @@
1
+ export class OctahedralDepthDebuggerWidget {
2
+ update(): void;
3
+ /**
4
+ *
5
+ * @returns {Entity}
6
+ */
7
+ get entity(): Entity;
8
+ /**
9
+ *
10
+ * @param {EntityComponentDataset} ecd
11
+ * @param {Engine} engine
12
+ */
13
+ build(ecd: EntityComponentDataset, engine: Engine): void;
14
+ #private;
15
+ }
16
+ import Entity from "../../../../../ecs/Entity.js";
17
+ //# sourceMappingURL=OctahedralDepthDebuggerWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OctahedralDepthDebuggerWidget.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.js"],"names":[],"mappings":"AAUA;IA6CI,eAYC;IAED;;;OAGG;IACH,qBAEC;IAED;;;;OAIG;IACH,yDAeC;;CAEJ;mBAjGkB,8BAA8B"}
@@ -0,0 +1,100 @@
1
+ import { ClampToEdgeWrapping, DataTexture, FloatType, NearestFilter, OctahedronBufferGeometry, RedFormat } from "three";
2
+ import { TransformControls } from "../../../../../../../editor/tools/v2/TransformControls.js";
3
+ import Entity from "../../../../../ecs/Entity.js";
4
+ import { Transform } from "../../../../../ecs/transform/Transform.js";
5
+ import { ShadedGeometry } from "../../../../ecs/mesh-v2/ShadedGeometry.js";
6
+ import { PathTracedScene } from "../../../path_tracer/PathTracedScene.js";
7
+ import { populate_path_traced_scene_from_ecd } from "../../../path_tracer/populate_path_traced_scene_from_ecd.js";
8
+ import { bake_octahedral_depth_map } from "./bake_octahedral_depth_map.js";
9
+ import { OctahedralDepthVisualizationMaterial } from "./shader/OctahedralDepthVisualizationMaterial.js";
10
+
11
+ export class OctahedralDepthDebuggerWidget {
12
+
13
+ /**
14
+ * @type {PathTracedScene}
15
+ */
16
+ #scene = new PathTracedScene();
17
+
18
+ #resolution = 64;
19
+
20
+ #texture = new DataTexture(
21
+ new Float32Array(this.#resolution * this.#resolution),
22
+ this.#resolution,
23
+ this.#resolution,
24
+ RedFormat,
25
+ FloatType
26
+ );
27
+
28
+ #entity = new Entity();
29
+
30
+ constructor() {
31
+ this.#texture.generateMipmaps = false;
32
+
33
+ this.#texture.magFilter = NearestFilter;
34
+ this.#texture.minFilter = NearestFilter;
35
+
36
+ this.#texture.wrapT = ClampToEdgeWrapping;
37
+ this.#texture.wrapS = ClampToEdgeWrapping;
38
+
39
+ this.#texture.flipY = false;
40
+
41
+
42
+ const material = new OctahedralDepthVisualizationMaterial();
43
+
44
+ material.texture = this.#texture;
45
+ material.scale = 10;
46
+
47
+ const transform = new Transform();
48
+ this.#entity.add(transform);
49
+ this.#entity.add(ShadedGeometry.from(new OctahedronBufferGeometry(1, 4), material));
50
+
51
+
52
+ transform.position.onChanged.add(this.update, this);
53
+
54
+ }
55
+
56
+ update() {
57
+
58
+ console.time('depth build');
59
+ bake_octahedral_depth_map(
60
+ this.#texture.image.data, 0,
61
+ this.#scene,
62
+ this.#entity.getComponentSafe(Transform).position, 0,
63
+ this.#resolution, 100
64
+ );
65
+ console.timeEnd('depth build');
66
+
67
+ this.#texture.needsUpdate = true;
68
+ }
69
+
70
+ /**
71
+ *
72
+ * @returns {Entity}
73
+ */
74
+ get entity() {
75
+ return this.#entity;
76
+ }
77
+
78
+ /**
79
+ *
80
+ * @param {EntityComponentDataset} ecd
81
+ * @param {Engine} engine
82
+ */
83
+ build(ecd, engine) {
84
+
85
+ populate_path_traced_scene_from_ecd(ecd, this.#scene);
86
+
87
+ this.update();
88
+
89
+ this.#entity.build(ecd);
90
+
91
+
92
+ const gizmo = new TransformControls(engine.graphics.camera, engine.graphics.domElement, true);
93
+
94
+ gizmo.build(ecd);
95
+
96
+
97
+ gizmo.attach(this.#entity.id);
98
+ }
99
+
100
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ *
3
+ * @param {number[]} result
4
+ * @param {number} result_offset
5
+ * @param {PathTracedScene} scene
6
+ * @param {number[]|Vector3} position
7
+ * @param {number} position_offset
8
+ * @param {number} resolution
9
+ * @param {number} max_depth
10
+ */
11
+ export function bake_octahedral_depth_map(result: number[], result_offset: number, scene: PathTracedScene, position: number[] | Vector3, position_offset: number, resolution: number, max_depth: number): void;
12
+ //# sourceMappingURL=bake_octahedral_depth_map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bake_octahedral_depth_map.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,kDARW,MAAM,EAAE,iBACR,MAAM,oCAEN,MAAM,EAAE,UAAQ,mBAChB,MAAM,cACN,MAAM,aACN,MAAM,QAyChB"}
@@ -0,0 +1,58 @@
1
+ import { array_copy } from "../../../../../../core/collection/array/array_copy.js";
2
+ import {
3
+ decode_octahedron_to_unit
4
+ } from "../../../../../../core/geom/3d/normal/octahedron/decode_octahedron_to_unit.js";
5
+ import { Ray3 } from "../../../../../../core/geom/3d/Ray3.js";
6
+
7
+ const scratch_ray = new Ray3();
8
+
9
+ /**
10
+ *
11
+ * @param {number[]} result
12
+ * @param {number} result_offset
13
+ * @param {PathTracedScene} scene
14
+ * @param {number[]|Vector3} position
15
+ * @param {number} position_offset
16
+ * @param {number} resolution
17
+ * @param {number} max_depth
18
+ */
19
+ export function bake_octahedral_depth_map(
20
+ result, result_offset,
21
+ scene,
22
+ position, position_offset,
23
+ resolution,
24
+ max_depth
25
+ ) {
26
+
27
+ scratch_ray.tMax = max_depth;
28
+ array_copy(position, position_offset, scratch_ray, 0, 3);
29
+
30
+ const ray_direction = scratch_ray.direction;
31
+
32
+ const ray_hit = [];
33
+
34
+ for (let oct_x = 0; oct_x < resolution; oct_x++) {
35
+ for (let oct_y = 0; oct_y < resolution; oct_y++) {
36
+
37
+ const u = oct_x / (resolution - 1);
38
+ const v = oct_y / (resolution - 1);
39
+
40
+ decode_octahedron_to_unit(
41
+ ray_direction, 0,
42
+ u * 2 - 1, v * 2 - 1
43
+ );
44
+
45
+ let distance = scene.trace(ray_hit, scratch_ray);
46
+
47
+ if (distance < 0) {
48
+ // no hit
49
+ distance = max_depth;
50
+ }
51
+
52
+ const pixel_index = oct_y * resolution + oct_x;
53
+
54
+ result[result_offset + pixel_index] = distance;
55
+ }
56
+ }
57
+
58
+ }
@@ -0,0 +1,11 @@
1
+ export class OctahedralDepthVisualizationMaterial extends ShaderMaterial {
2
+ constructor();
3
+ set scale(arg: any);
4
+ /**
5
+ *
6
+ * @param {THREE.DataTexture} v
7
+ */
8
+ set texture(arg: import("three").DataTexture);
9
+ }
10
+ import { ShaderMaterial } from "three";
11
+ //# sourceMappingURL=OctahedralDepthVisualizationMaterial.d.ts.map