@woosh/meep-engine 3.3.0 → 3.4.0

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 (846) hide show
  1. package/editor/process/SymbolicDisplayProcess.js +106 -106
  2. package/editor/process/symbolic/{SoundEmitterSymbolicDisplay.js → AudioEmitterSymbolicDisplay.js} +67 -57
  3. package/package.json +94 -94
  4. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +110 -102
  5. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts +54 -0
  6. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  7. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +10 -3
  8. package/src/engine/EntityCreator.d.ts +19 -11
  9. package/src/engine/EntityCreator.d.ts.map +1 -1
  10. package/src/engine/EntityCreator.js +116 -94
  11. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  12. package/src/engine/achievements/AchievementManager.js +437 -433
  13. package/src/engine/animation/AnimatedActions.d.ts +6 -1
  14. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  15. package/src/engine/animation/AnimatedActions.js +111 -81
  16. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  17. package/src/engine/animation/AnimationUtils.js +234 -252
  18. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
  19. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  20. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +26 -5
  21. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  22. package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
  23. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
  24. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  25. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
  26. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
  27. package/src/engine/sound/SoundEngine.d.ts +2 -2
  28. package/src/engine/sound/SoundEngine.js +124 -124
  29. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
  30. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  31. package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
  32. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  33. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  34. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
  35. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
  36. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
  37. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
  38. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
  39. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
  40. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
  41. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
  42. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
  43. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
  44. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
  45. package/src/engine/sound/sopra/README.md +644 -643
  46. package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
  47. package/src/engine/sound/sopra/SopraEngine.js +432 -432
  48. package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
  49. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
  50. package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
  51. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
  52. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
  53. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
  54. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
  55. package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
  56. package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
  57. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  58. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  59. package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
  60. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
  61. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
  62. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
  63. package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
  64. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
  65. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
  66. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
  67. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
  68. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  69. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
  70. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  71. package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
  72. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  73. package/src/shade/device/timing/GPUTimerArray.js +10 -0
  74. package/src/shade/playground/add_random_meshes.d.ts +19 -3
  75. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  76. package/src/shade/playground/add_random_meshes.js +132 -84
  77. package/src/shade/playground/bvh_repro/README.md +57 -0
  78. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
  79. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
  80. package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
  81. package/src/shade/playground/bvh_repro/index.html +124 -0
  82. package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
  83. package/src/shade/playground/bvh_repro/main.js +254 -0
  84. package/src/shade/playground/load_default_environment.d.ts +10 -1
  85. package/src/shade/playground/load_default_environment.d.ts.map +1 -1
  86. package/src/shade/playground/load_default_environment.js +44 -20
  87. package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
  88. package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
  89. package/src/shade/playground/make_playground_asset_manager.js +33 -0
  90. package/src/shade/playground/skinned_blas_refit/README.md +103 -0
  91. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
  92. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
  93. package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
  94. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
  95. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
  96. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
  97. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
  98. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
  99. package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
  100. package/src/shade/playground/skinned_blas_refit/index.html +168 -0
  101. package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
  102. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
  103. package/src/shade/playground/skinned_blas_refit/main.js +502 -0
  104. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +81 -0
  105. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
  106. package/src/shade/playground/skinned_blas_refit/place_character.js +116 -0
  107. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
  108. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
  109. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
  110. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
  111. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
  112. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
  113. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
  114. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
  115. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
  116. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
  117. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
  118. package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
  119. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
  120. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
  121. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
  122. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
  123. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
  124. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
  125. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
  126. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
  127. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
  128. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
  129. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
  130. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
  131. package/src/shade/playground/sponza_path_trace/README.md +57 -0
  132. package/src/shade/playground/sponza_path_trace/index.html +164 -0
  133. package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
  134. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
  135. package/src/shade/playground/sponza_path_trace/main.js +363 -0
  136. package/src/shade/renderer/Renderer.d.ts +16 -0
  137. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  138. package/src/shade/renderer/Renderer.js +23 -4
  139. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
  140. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  141. package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
  142. package/src/shade/renderer/animation/Skin.d.ts +9 -7
  143. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  144. package/src/shade/renderer/animation/Skin.js +9 -7
  145. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
  146. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
  147. package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
  148. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  149. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
  150. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  151. package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
  152. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
  153. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  154. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
  155. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
  156. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  157. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
  158. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
  159. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
  160. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
  161. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
  162. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
  163. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
  164. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
  165. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
  167. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
  168. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
  170. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
  171. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
  172. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
  173. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
  174. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
  175. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
  176. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
  177. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
  178. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
  179. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
  180. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
  181. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
  182. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
  183. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
  184. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
  185. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
  186. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
  187. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
  188. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
  189. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
  190. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
  191. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
  192. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
  193. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
  194. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
  195. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
  196. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
  197. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
  198. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
  199. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
  200. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
  201. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
  202. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
  203. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
  204. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
  205. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
  206. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
  207. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
  208. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
  209. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
  210. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
  211. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
  212. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
  213. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
  214. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
  215. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
  216. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
  217. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
  219. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
  220. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
  221. package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
  222. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
  223. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
  224. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
  225. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
  226. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
  227. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
  228. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
  229. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
  230. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
  231. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
  232. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
  233. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
  234. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
  235. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  236. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
  237. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  238. package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
  239. package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
  240. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  241. package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
  242. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
  243. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
  244. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
  245. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
  246. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
  247. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
  248. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
  249. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
  250. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
  251. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
  252. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
  253. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
  254. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
  255. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
  256. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
  257. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
  258. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
  259. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
  260. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
  261. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
  262. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
  263. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
  264. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
  265. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
  266. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
  267. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
  268. package/src/shade/renderer/texture/virtual/README.md +255 -276
  269. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  270. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
  271. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  272. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
  273. package/src/view/interaction/InterfaceCommand.d.ts +8 -8
  274. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  275. package/src/view/interaction/InterfaceCommand.js +146 -146
  276. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  277. package/src/view/interaction/createInterfaceCommandButton.js +115 -124
  278. package/src/engine/ecs/components/Timer.d.ts +0 -50
  279. package/src/engine/ecs/components/Timer.d.ts.map +0 -1
  280. package/src/engine/ecs/components/Timer.js +0 -80
  281. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
  282. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
  283. package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
  284. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
  285. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
  286. package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
  287. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
  288. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
  289. package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
  290. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
  291. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
  292. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
  293. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
  294. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
  295. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
  296. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
  297. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
  298. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
  299. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
  300. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
  301. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
  302. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
  303. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
  304. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
  305. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
  306. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
  307. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
  308. package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
  309. package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
  310. package/src/engine/ecs/systems/TimerSystem.js +0 -86
  311. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
  312. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
  313. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
  314. package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
  315. package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
  316. package/src/engine/graphics/StandardFrameBuffers.js +0 -9
  317. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
  318. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
  319. package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
  320. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
  321. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
  322. package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
  323. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
  324. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
  325. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
  326. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
  327. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
  328. package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
  329. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
  330. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
  331. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
  332. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
  333. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
  334. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
  335. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
  336. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
  337. package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
  338. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
  339. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
  340. package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
  341. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
  342. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
  343. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
  344. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
  345. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
  346. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
  347. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
  348. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
  349. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
  350. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
  351. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
  352. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
  353. package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
  354. package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
  355. package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
  356. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
  357. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
  358. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
  359. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
  360. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
  361. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
  362. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
  363. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
  364. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
  365. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
  366. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
  367. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
  368. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
  369. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
  370. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
  371. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
  372. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
  373. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
  374. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
  375. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
  376. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
  377. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
  378. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
  379. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
  380. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
  381. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
  382. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
  383. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
  384. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
  385. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
  386. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
  387. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
  388. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
  389. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
  390. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
  391. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
  392. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
  393. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
  394. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
  395. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
  396. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
  397. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
  398. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
  399. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
  401. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
  402. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
  404. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
  405. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
  406. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
  407. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
  408. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
  409. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
  410. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
  411. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
  412. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
  413. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
  414. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
  415. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
  416. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
  417. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
  418. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
  419. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
  420. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
  421. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
  422. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
  423. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
  424. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
  425. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
  426. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
  427. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
  428. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
  429. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
  430. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
  431. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
  432. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
  433. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
  434. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
  435. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
  436. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
  437. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
  438. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
  439. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
  440. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
  441. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
  442. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
  443. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
  444. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
  445. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
  446. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
  447. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
  448. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
  449. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
  450. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
  451. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
  452. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
  453. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
  454. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
  455. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
  456. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
  457. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
  458. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
  459. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
  460. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
  461. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
  462. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
  463. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
  464. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
  465. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
  466. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
  467. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
  468. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
  469. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
  470. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
  471. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
  472. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
  473. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
  474. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
  475. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
  476. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
  477. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
  478. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
  479. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
  480. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
  481. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
  482. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
  483. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
  484. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
  485. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
  486. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
  487. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
  488. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
  489. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
  490. package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
  491. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
  492. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
  493. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
  494. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
  495. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
  496. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
  497. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
  498. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
  499. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
  500. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
  501. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
  502. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
  503. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
  504. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
  505. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
  506. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
  507. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
  508. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
  509. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
  510. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
  511. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
  512. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
  513. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
  514. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
  515. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
  516. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
  517. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
  518. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
  519. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
  520. package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
  521. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
  522. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
  523. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
  524. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
  525. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
  526. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
  527. package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
  528. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
  529. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
  530. package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
  531. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
  532. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
  533. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
  534. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
  535. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
  536. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
  537. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
  538. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
  539. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
  540. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
  541. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
  542. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
  543. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
  544. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
  545. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
  546. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
  547. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
  548. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
  549. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
  550. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
  551. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
  552. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
  553. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
  554. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
  555. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
  556. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
  557. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
  558. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
  559. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
  560. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
  561. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
  562. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
  563. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
  564. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
  565. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
  566. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
  567. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
  568. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
  569. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
  570. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
  571. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
  572. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
  573. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
  574. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
  575. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
  576. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
  577. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
  578. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
  579. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
  580. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
  581. package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
  582. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
  583. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
  584. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
  585. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
  586. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
  587. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
  588. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
  589. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
  590. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
  591. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
  592. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
  593. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
  594. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
  595. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
  596. package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
  597. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
  598. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
  599. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
  600. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
  601. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
  602. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
  603. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
  604. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
  605. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
  606. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
  607. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
  608. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
  609. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
  610. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
  611. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
  612. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
  613. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
  614. package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
  615. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
  616. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
  617. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
  618. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
  619. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
  620. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
  621. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
  622. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
  623. package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
  624. package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
  625. package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
  626. package/src/engine/graphics/shaders/ClearShader.js +0 -28
  627. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
  628. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
  629. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
  630. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
  631. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
  632. package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
  633. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
  634. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
  635. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
  636. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
  637. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
  638. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
  639. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
  640. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
  641. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
  642. package/src/engine/graphics/shadows/README.md +0 -6
  643. package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
  644. package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
  645. package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
  646. package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
  647. package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
  648. package/src/engine/graphics/util/composeMatrix4.js +0 -13
  649. package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
  650. package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
  651. package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
  652. package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
  653. package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
  654. package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
  655. package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
  656. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
  657. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
  658. package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
  659. package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
  660. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
  661. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
  662. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
  663. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
  664. package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
  665. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
  666. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
  667. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
  668. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
  669. package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
  670. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
  671. package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
  672. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
  673. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
  674. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
  675. package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
  676. package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
  677. package/src/shade/playground/FramePerformanceMonitor.js +0 -468
  678. package/src/shade/playground/add_random_lights.d.ts +0 -8
  679. package/src/shade/playground/add_random_lights.d.ts.map +0 -1
  680. package/src/shade/playground/add_random_lights.js +0 -50
  681. package/src/shade/playground/animation_prototype.d.ts +0 -24
  682. package/src/shade/playground/animation_prototype.d.ts.map +0 -1
  683. package/src/shade/playground/animation_prototype.js +0 -508
  684. package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
  685. package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
  686. package/src/shade/playground/animation_prototype_skinning.js +0 -647
  687. package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
  688. package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
  689. package/src/shade/playground/animation_prototype_stress.js +0 -765
  690. package/src/shade/playground/enable_picker.d.ts +0 -8
  691. package/src/shade/playground/enable_picker.d.ts.map +0 -1
  692. package/src/shade/playground/enable_picker.js +0 -60
  693. package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
  694. package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
  695. package/src/shade/playground/gltf_skinned_prototype.js +0 -560
  696. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
  697. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
  698. package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
  699. package/src/shade/playground/gltf_viewer.d.ts +0 -2
  700. package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
  701. package/src/shade/playground/gltf_viewer.js +0 -283
  702. package/src/shade/playground/main.d.ts.map +0 -1
  703. package/src/shade/playground/main.js +0 -2727
  704. package/src/shade/playground/make_animated_instances.d.ts +0 -9
  705. package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
  706. package/src/shade/playground/make_animated_instances.js +0 -118
  707. package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
  708. package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
  709. package/src/shade/playground/prototype_virtual_texture.js +0 -274
  710. package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
  711. package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
  712. package/src/shade/playground/prototype_volumetrics_01.js +0 -206
  713. package/src/shade/playground/sample.d.ts +0 -2
  714. package/src/shade/playground/sample.d.ts.map +0 -1
  715. package/src/shade/playground/sample.js +0 -234
  716. package/src/shade/playground/sample_load_gltf.d.ts +0 -9
  717. package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
  718. package/src/shade/playground/sample_load_gltf.js +0 -103
  719. package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
  720. package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
  721. package/src/shade/playground/spread_node3d_grid.js +0 -20
  722. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
  723. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
  724. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
  725. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
  726. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
  727. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
  728. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
  729. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
  730. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
  731. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
  732. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
  733. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
  734. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
  735. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
  736. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
  737. package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
  738. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
  739. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
  740. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
  741. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
  742. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
  743. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
  744. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
  745. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
  746. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
  747. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
  748. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
  749. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
  750. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
  751. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
  752. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
  753. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
  754. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
  755. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
  756. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
  757. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
  758. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
  759. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
  760. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
  761. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
  762. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
  763. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
  764. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
  765. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
  766. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
  767. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
  768. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
  769. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
  770. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
  771. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
  772. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
  773. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
  774. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
  775. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
  776. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
  777. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
  778. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
  779. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
  780. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
  781. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
  782. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
  783. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
  784. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
  785. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
  786. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
  787. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
  788. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
  789. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
  790. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
  791. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
  792. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
  793. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
  794. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
  795. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
  796. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
  797. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
  798. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
  799. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
  800. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
  801. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
  802. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
  803. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
  804. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
  805. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
  806. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
  807. package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
  808. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
  809. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
  810. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
  811. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
  812. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
  813. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
  814. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
  815. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
  816. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
  817. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
  818. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
  819. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
  820. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
  821. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
  822. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
  823. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
  824. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
  825. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
  826. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
  827. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
  828. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
  829. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
  830. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
  831. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
  832. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
  833. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
  834. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
  835. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
  836. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
  837. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
  838. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
  839. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
  840. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
  841. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
  842. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
  843. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
  844. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
  845. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
  846. /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
@@ -1,2727 +0,0 @@
1
- import { downloadAsFile } from "../../core/binary/downloadAsFile.js";
2
- import { Color } from "../../core/color/Color.js";
3
- import { AABB3 } from "../../core/geom/3d/aabb/AABB3.js";
4
- import {
5
- aabb3_intersects_frustum_degree
6
- } from "../../core/geom/3d/aabb/aabb3_intersects_frustum_degree.js";
7
- import Quaternion from "../../core/geom/Quaternion.js";
8
- import Vector3 from "../../core/geom/Vector3.js";
9
- import { DEG_TO_RAD } from "../../core/math/DEG_TO_RAD.js";
10
- import {
11
- MIE_PARTICLES_STANDARD_PRECOMPUTED
12
- } from "../../core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.js";
13
- import { randomFloatBetween } from "../../core/math/random/randomFloatBetween.js";
14
- import { randomIntegerBetween } from "../../core/math/random/randomIntegerBetween.js";
15
- import { seededRandom } from "../../core/math/random/seededRandom.js";
16
- import ConcurrentExecutor from "../../core/process/executor/ConcurrentExecutor.js";
17
- import { Transform } from "../../engine/ecs/transform/Transform.js";
18
- import GUI from "lil-gui";
19
- import Stats from "stats.js/src/Stats.js";
20
- import { FramePerformanceMonitor } from "./FramePerformanceMonitor.js";
21
- // import { OrbitalCameraController } from "../renderer/camera/OrbitalCameraController.js"; // legacy (no inertia)
22
- import { OrbitalCameraController } from "../renderer/camera/orbital/index.js"; // direct-drive + release momentum
23
- import { PerspectiveCamera } from "../renderer/camera/PerspectiveCamera.js";
24
- import { create_frame_loop } from "../renderer/create_frame_loop.js";
25
- import { DynamicResolutionScaling } from "../renderer/DynamicResolutionScaling.js";
26
- import { enable_picker } from "./enable_picker.js";
27
- import { BoxGeometry } from "../renderer/geometry/BoxGeometry.js";
28
- import { make_box_geometry } from "../renderer/geometry/primitives/make_box_geometry.js";
29
- import { make_octahedron_geometry } from "../renderer/geometry/primitives/make_octahedron_geometry.js";
30
- import { make_plane_geometry } from "../renderer/geometry/primitives/make_plane_geometry.js";
31
- import { brick4_bake_for_scene } from "../renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js";
32
- import { lpv_visualise_probes } from "../renderer/global_illumination/lpv/lpv_visualise_probes.js";
33
- import {
34
- lpv_generate_probe_locations2
35
- } from "../renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js";
36
- import { load_environment_map, ProjectionMappingType } from "../renderer/light/environment/rgbe/load_environment_map.js";
37
- import { make_sunlight } from "../renderer/light/make_sunlight.js";
38
- import { SpotLight } from "../renderer/light/model/SpotLight.js";
39
- import { ParticipatingMediaVolume, VolumetricsParticleSpec } from "../renderer/volumetrics/ParticipatingMediaVolume.js";
40
- import { load_default_environment } from "./load_default_environment.js";
41
- import { load_gltf } from "../renderer/loader/gltf/load_gltf.js";
42
- import { StandardShadeMaterial } from "../renderer/material/StandardShadeMaterial.js";
43
- import { TransparencyMode } from "../renderer/material/TransparencyMode.js";
44
- import { Mesh } from "../renderer/scene/Mesh.js";
45
- import { DOF_PRESET_NAMES } from "../renderer/postprocess/dof/DOF_PRESETS.js";
46
- import { Renderer } from "../renderer/Renderer.js";
47
- import { scene_optimize } from "../renderer/scene/optimization/scene_optimize.js";
48
- import { Scene } from "../renderer/scene/Scene.js";
49
- import { serialize_scene } from "../renderer/scene/serialization/serialize_scene.js";
50
- import { verify_radix_sort_one_sweep } from "../renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js";
51
- import { get_single_pixel_texture } from "../renderer/texture/util/get_single_pixel_texture.js";
52
- import { make_checkers_texture } from "../renderer/texture/util/make_checkers_texture.js";
53
- import { add_random_meshes } from "./add_random_meshes.js";
54
-
55
- import { t64_look_rotation } from "../../engine/ecs/transform/t64_look_rotation.js";
56
- /**
57
- *
58
- * @param {Scene} scene
59
- * @param {PerspectiveCamera} camera
60
- */
61
- function sample_Blender35(scene, camera) {
62
-
63
- function add_bundle(bundle) {
64
- bundle.scenes.forEach(n => scene.add(n));
65
- }
66
-
67
- const p = load_gltf('Blender3.5-splash/model.gltf').then(add_bundle);
68
-
69
- scene.lights.add(make_sunlight({
70
- direction: new Vector3(-1, -1, 1)
71
- }));
72
-
73
- camera.transform.fromJSON({
74
- position: { x: 1.7463508196335535, y: 1.9190651121172662, z: 1.8690058269716217 },
75
- rotation: { x: -0.008126135887431813, y: 0.9419140115684058, z: -0.022849665148099302, w: -0.33497739256444115 }
76
-
77
- });
78
-
79
- camera.far = 30;
80
-
81
- return p;
82
- }
83
-
84
- /**
85
- *
86
- * @param {Scene} scene
87
- * @param {string} url
88
- */
89
- async function load_slpv(scene, url) {
90
-
91
- const response = await fetch(url);
92
- const buffer = await response.arrayBuffer();
93
-
94
- renderer.scenes.obtain(scene).volumetric_light_map.upload(buffer);
95
-
96
- }
97
-
98
- /**
99
- *
100
- * @param {Scene} scene
101
- * @param {PerspectiveCamera} camera
102
- */
103
- function sample_Blender41(scene, camera) {
104
-
105
- function add_bundle(bundle) {
106
- bundle.scenes.forEach(n => scene.add(n));
107
- }
108
-
109
- const p = load_gltf('Blender4.1-splash/model.gltf').then(add_bundle);
110
-
111
- scene.lights.add(make_sunlight());
112
-
113
- camera.transform.fromJSON({
114
- position: { x: -14.823, y: 1.71024, z: 5.45426 },
115
- rotation: Quaternion.fromEulerAngles(0, 180 * DEG_TO_RAD, 0),
116
- });
117
-
118
- load_default_environment(scene)
119
-
120
- camera.far = 50;
121
-
122
- return p;
123
- }
124
-
125
- /**
126
- *
127
- * @param {Scene} scene
128
- * @param {PerspectiveCamera} camera
129
- */
130
- function sample_flower_scattering(scene, camera) {
131
-
132
- function add_nodes(bundle) {
133
- bundle.scenes.forEach(n => scene.add(n));
134
- }
135
-
136
- load_gltf('flower_scattering/model.gltf').then(add_nodes);
137
-
138
- scene.lights.add(make_sunlight());
139
-
140
- camera.transform.fromJSON({
141
- position: { x: -6.4682708821438695, y: 5.878561621922152, z: -6.936678014165665 },
142
- rotation: { x: 0.25841972623672294, y: 0.34462020646106367, z: -0.09928340561408339, w: 0.8969944056459552 },
143
- });
144
-
145
- load_default_environment(scene);
146
- }
147
-
148
- /**
149
- *
150
- * @param {Scene} scene
151
- * @param {PerspectiveCamera} camera
152
- */
153
- function sample_pebble_scattering(scene, camera) {
154
-
155
- function add_nodes(bundle) {
156
- bundle.scenes.forEach(n => scene.add(n));
157
- }
158
-
159
- const p = load_gltf('pebble_scattering/model.gltf').then(add_nodes);
160
-
161
- scene.lights.add(make_sunlight({
162
- direction: new Vector3(-1.5, -1, 1.5)
163
- }));
164
-
165
- const v_default = {
166
- position: { x: -2.4354279345968988, y: 0.30977640357262476, z: -2.8011386726457594 },
167
- rotation: { x: 0.1668703393578709, y: 0.3130673645258333, z: -0.05597646104601723, w: 0.9332790316514143 }
168
- };
169
- const v_stress = {
170
- position: { x: -0.02432305358312252, y: 3.9703021885351473, z: -0.03367423494234176 },
171
- rotation: { x: 0.7071061165730906, y: 0, z: 0, w: 0.7071068236795591 },
172
- }
173
-
174
- load_default_environment(scene);
175
-
176
- camera.transform.fromJSON(v_default);
177
-
178
- camera.far = 16;
179
-
180
- return p;
181
- }
182
-
183
- /**
184
- *
185
- * @param {Scene} scene
186
- * @param {PerspectiveCamera} camera
187
- */
188
- function sample_powerplant(scene, camera) {
189
-
190
- function add_nodes(bundle) {
191
- bundle.scenes.forEach(n => scene.add(n));
192
- }
193
-
194
- const p = load_gltf('powerplant/model.gltf').then(add_nodes);
195
-
196
- scene.lights.add(make_sunlight());
197
-
198
- camera.transform.fromJSON({
199
- position: { x: 50.34309806555996, y: 75.72974432754577, z: 97.060131115306 },
200
- rotation: { x: -0.11422042118122494, y: 0.8529826504674208, z: -0.20998089073160459, w: -0.4639852572165621 }
201
- });
202
-
203
- load_default_environment(scene);
204
-
205
- return p;
206
- }
207
-
208
- /**
209
- *
210
- * @param {Scene} scene
211
- * @param {PerspectiveCamera} camera
212
- */
213
- function sample_NormalTangentTest(scene, camera) {
214
-
215
- function add_nodes(bundle) {
216
- bundle.scenes.forEach(n => scene.add(n));
217
- }
218
-
219
- load_gltf('glTF-Sample-Models/2.0/NormalTangentTest/glTF/NormalTangentTest.gltf').then(add_nodes);
220
-
221
-
222
- scene.lights.add(make_sunlight({}));
223
-
224
- camera.transform.fromJSON({
225
- position: { x: 0.3125825233068688, y: -0.05614099272964101, z: 1.8286251743429103 },
226
- rotation: {
227
- x: -0.00018466271417495077,
228
- y: 0.9993264049082066,
229
- z: -0.005077478130592861,
230
- w: -0.036344484708887966
231
- }
232
- });
233
- }
234
-
235
- /**
236
- *
237
- * @param {Scene} scene
238
- * @param {PerspectiveCamera} camera
239
- */
240
- function sample_WaterBottle(scene, camera) {
241
-
242
- function add_nodes(bundle) {
243
- bundle.scenes.forEach(n => scene.add(n));
244
- }
245
-
246
- load_gltf('glTF-Sample-Models/2.0/WaterBottle/glTF/WaterBottle.gltf').then(add_nodes);
247
-
248
-
249
- scene.lights.add(make_sunlight({}));
250
- scene.lights.add(make_sunlight({
251
- intensity: 1,
252
- direction: Vector3.forward
253
- }));
254
-
255
- camera.transform.fromJSON({
256
- position: { x: 0.004448837166293011, y: 0.035540680034447505, z: -0.9993583280838544 },
257
- rotation: {
258
- x: 0.017773103345215122,
259
- y: -0.0022254787244741048,
260
- z: 0.00003956001003957647,
261
- w: 0.9998395683693124
262
- }
263
- });
264
- }
265
-
266
- /**
267
- *
268
- * @param {Scene} scene
269
- * @param {PerspectiveCamera} camera
270
- */
271
- function sample_MaterialsVariantsShoe(scene, camera) {
272
-
273
- function add_nodes(bundle) {
274
- bundle.scenes.forEach(n => scene.add(n));
275
- }
276
-
277
- const p = load_gltf('glTF-Sample-Models/2.0/MaterialsVariantsShoe/glTF/MaterialsVariantsShoe.gltf').then(add_nodes);
278
-
279
-
280
- scene.lights.add(make_sunlight({
281
- direction: new Vector3(-0.2, -1, 0.8),
282
- }));
283
-
284
- const v_default = {
285
- position: { x: 0, y: 0.07, z: -0.24 },
286
- rotation: {
287
- x: 0,
288
- y: 0,
289
- z: 0,
290
- w: 1
291
- }
292
- };
293
-
294
- const v_terminator = {
295
- position: { x: 0.19559476593453173, y: 0.09293976556177566, z: 0.10044825380016276 },
296
- rotation: { x: -0.06768135072685622, y: 0.8930638771739731, z: -0.1435708651376218, w: -0.42100303174016906 },
297
- }
298
-
299
- camera.far = 5;
300
- camera.transform.fromJSON(v_default);
301
-
302
- return p;
303
- }
304
-
305
- /**
306
- *
307
- * @param {Scene} scene
308
- * @param {PerspectiveCamera} camera
309
- */
310
- function sample_MetalRoughSpheres(scene, camera) {
311
-
312
- function add_nodes(bundle) {
313
- bundle.scenes.forEach(n => scene.add(n));
314
- }
315
-
316
- const p = load_gltf('glTF-Sample-Models/2.0/MetalRoughSpheres/glTF/MetalRoughSpheres.gltf').then(add_nodes);
317
-
318
-
319
- scene.lights.add(make_sunlight({
320
- direction: new Vector3(-0.2, -1, 0.8)
321
- }));
322
-
323
- const v_main = {
324
- position: { x: 0, y: 0, z: -12 },
325
- rotation: {
326
- x: 0,
327
- y: 0,
328
- z: 0,
329
- w: 1
330
- }
331
- };
332
-
333
- const v_main2 = {
334
- position: { x: -0.008087582804548243, y: -0.08519009972495122, z: -9.98057115266989 },
335
- rotation: {
336
- x: 0,
337
- y: 0,
338
- z: 0,
339
- w: 1
340
- }
341
- };
342
-
343
- const v_pixel_bug = {
344
- position: { x: -1.070048837802901, y: 3.5174314448172965, z: -0.4644000600621032 },
345
- rotation: {
346
- x: -2.1855695031547374e-8,
347
- y: 4.371138995207255e-8,
348
- z: 9.553428081975427e-16,
349
- w: 0.9999999999999988
350
- }
351
- };
352
-
353
- const v_reflections_0 = {
354
- position: { x: -1.0786426150362676, y: 1.7054015934539062, z: 4.017754498922638 },
355
- rotation: { x: 0.002683893129299963, y: 0.9952843779789958, z: -0.09256944346132598, w: 0.028856573010222465 }
356
- }
357
- const v_closeup = {
358
- position: { x: 3.30239796672363, y: 2.1891135306983998, z: -3.8443340687524534 },
359
- rotation: { x: -0.13316414067176083, y: 0.19398613316295302, z: 0.02658815103680908, w: 0.9715604777902817 },
360
- }
361
-
362
- camera.transform.fromJSON(v_main2);
363
-
364
- load_environment_map("environments/octahedral/pretoria_gardens_2k.hdr", ProjectionMappingType.Octahedral)
365
- .then(texture => {
366
-
367
- scene.lights.environment = texture;
368
- });
369
-
370
- return p;
371
- }
372
-
373
- /**
374
- *
375
- * @param {Scene} scene
376
- * @param {PerspectiveCamera} camera
377
- */
378
- function sample_rungholt(scene, camera) {
379
-
380
- function add_nodes(bundle) {
381
- bundle.scenes.forEach(n => scene.add(n));
382
- }
383
-
384
- camera.far = 700;
385
-
386
- load_default_environment(scene);
387
-
388
- const p = load_gltf('rungholt/v2/model.gltf').then(add_nodes);
389
-
390
- scene.lights.add(make_sunlight({
391
- intensity: 5
392
- }));
393
-
394
- camera.transform.fromJSON({
395
- position: { x: 142.82152692901172, y: 206.9304200926864, z: 88.1237330266172 },
396
- rotation: { x: -0.18746816342866535, y: 0.8110449076261371, z: -0.36362466298372104, w: -0.41813747737361334 }
397
- });
398
-
399
- return p;
400
- }
401
-
402
- /**
403
- *
404
- * @param {Scene} scene
405
- * @param {PerspectiveCamera} camera
406
- */
407
- async function sample_Blender2(scene, camera) {
408
-
409
- function add_nodes(bundle) {
410
- bundle.scenes.forEach(n => scene.add(n));
411
- }
412
-
413
- const p = load_gltf('Blender2-gltf/Blender 2.gltf').then(add_nodes);
414
-
415
- scene.lights.add(make_sunlight({
416
- intensity: 8,
417
- direction: new Vector3(-0.2, -1, -0.2)
418
- }));
419
-
420
- const v_main = {
421
- position: { x: 1.2551072414379085, y: 2.4910501690081395, z: 4.1322917192379105 },
422
- rotation: { x: -0.025477322537200888, y: 0.9541455163739329, z: -0.08503280795263604, w: -0.2858787526059721 },
423
- };
424
-
425
- const v_bug_01 = {
426
- position: { x: -15.129516254389948, y: 5.057020031317275, z: 0.09288128318520528 },
427
- rotation: { x: 0.00037506475815295354, y: 0.9964050527935893, z: -0.004417403435695944, w: 0.0846009257674992 }
428
- }
429
-
430
- const v_hero_0 = {
431
- position: { x: 2.223599481892907, y: 1.6722018700707628, z: 6.167739572612925 },
432
- rotation: {
433
- x: 0.00021324453847545806,
434
- y: 0.9749165706301498,
435
- z: 0.0009340745944802329,
436
- w: -0.22256855649926593
437
- }
438
- }
439
-
440
- camera.transform.fromJSON(v_hero_0);
441
-
442
- load_default_environment(scene);
443
-
444
- camera.far = 50;
445
-
446
- await load_slpv(scene, 'Blender2-gltf/lightmap.svlm');
447
-
448
- return p;
449
- }
450
-
451
- /**
452
- *
453
- * @param {Scene} scene
454
- * @param {PerspectiveCamera} camera
455
- */
456
- function sample_Blender2_spec_test(scene, camera) {
457
-
458
- function add_nodes(bundle) {
459
- bundle.scenes.forEach(n => scene.add(n));
460
- }
461
-
462
- load_gltf('Blender2-gltf/Blender 2.gltf').then(add_nodes);
463
-
464
- scene.lights.add(make_sunlight({
465
- intensity: 6
466
- }));
467
-
468
- camera.transform.fromJSON({
469
- position: { x: -0.5869416336109241, y: 0.6906890957245286, z: 2.6371570204147097 },
470
- rotation: { x: 0.06115335483650239, y: 0.9166233444777053, z: -0.1541016669957492, w: 0.36375072203348 }
471
- });
472
- }
473
-
474
- /**
475
- *
476
- * @param {Scene} scene
477
- * @param {AABB3} bounds
478
- * @param {Vector3} resolution
479
- */
480
- function build_lpv_mesh(scene, resolution) {
481
- console.log(`#build_lpv_mesh, ${resolution}`)
482
-
483
- const bounds = scene.instances.bounding_box;
484
-
485
- bounds.grow(Math.max(bounds.width, bounds.height, bounds.depth) * 0.05);
486
-
487
- scene.light_probe_volume.build_grid(
488
- bounds,
489
- resolution
490
- );
491
-
492
- // // jitter points to avoid regular grid look
493
- // const jitter = new Vector3();
494
- // jitter.set(bounds.width, bounds.height, bounds.depth);
495
- // jitter._multiply(
496
- // 1 / resolution.x,
497
- // 1 / resolution.y,
498
- // 1 / resolution.z,
499
- // );
500
- // jitter.multiplyScalar(0.2);
501
- //
502
- // lpv_jitter_points(
503
- // scene.light_probe_volume.positions,
504
- // 0,
505
- // scene.light_probe_volume.probe_count,
506
- // jitter
507
- // );
508
-
509
- }
510
-
511
- /**
512
- *
513
- * @type {number}
514
- */
515
- const timestamp_main_parsed_ms = performance.now();
516
-
517
- /**
518
- *
519
- * @param {Scene} scene
520
- * @param {PerspectiveCamera} camera
521
- */
522
- async function sample_Sponza(scene, camera) {
523
-
524
- function add_nodes(bundle) {
525
- bundle.scenes.forEach(n => scene.add(n));
526
- }
527
-
528
- const load_promise = load_gltf('Sponza/glTF/Sponza.gltf')
529
- .then(add_nodes);
530
-
531
- const light = make_sunlight({
532
- intensity: 7.5,
533
- temperature: 3500,
534
- direction: new Vector3(-0.2, -1, 0.21),
535
- });
536
-
537
- scene.lights.add(light);
538
-
539
- // camera-lion close-up
540
- const transform_close_up_lion = Transform.fromJSON({
541
- position: { x: -9.717819451746418, y: 1.3545300016789599, z: -0.2532305219160802 },
542
- rotation: { x: -0.007464555805272171, y: -0.7040350876804718, z: -0.007400933001196929, w: 0.7100873903345221 }
543
- })
544
-
545
- const transform_ao_validation = Transform.fromJSON({
546
- position: { x: 6.797289774373101, y: 3.4096001001163443, z: -1.8289157946422079 },
547
- rotation: { x: 0.02690314252273821, y: -0.6849852484370184, z: 0.025326779193201573, w: 0.7276193954271535 }
548
- });
549
-
550
- const gi_view_0 = Transform.fromJSON({
551
- position: { x: 8.573368095824236, y: 0.2941973473465046, z: -2.6852566883620366 },
552
- rotation: { x: 0.049154929277954576, y: -0.5744610112446781, z: 0.03459123557196376, w: 0.816322109163427 }
553
- });
554
-
555
- const view_balcony_0 = Transform.fromJSON({
556
- position: {
557
- x: -0.49078825022791883,
558
- y: 4.78451792229094,
559
- z: -4.362871167702758
560
- },
561
- rotation: {
562
- x: 0,
563
- y: 0,
564
- z: 0,
565
- w: 1
566
- },
567
- });
568
-
569
- const transform_hzb_bug_0 = Transform.fromJSON({
570
- position: {
571
- x: 6.152824559915167,
572
- y: 3.217854454310324,
573
- z: -2.512206533819479
574
- },
575
- rotation: {
576
- w: 0.6845326358906514,
577
- x: 0.02729685762631996,
578
- y: -0.7278924707556823,
579
- z: 0.02902590190697945
580
- },
581
- })
582
-
583
- const v_main = Transform.fromJSON({
584
- position: {
585
- "x": 6.882350816359706,
586
- "y": 3.46377271542073,
587
- "z": -0.35451149125927056
588
- },
589
- rotation: {
590
- "x": 0,
591
- "y": -0.7071067811865476,
592
- "z": 0,
593
- "w": 0.7071067811865476
594
- }
595
- });
596
-
597
- const v_terminator_column = Transform.fromJSON({
598
- position: { x: 3.154283913825675, y: 4.489943035497312, z: 1.677231833825024 },
599
- rotation: { x: -0.013922532338911293, y: -0.7271504395753207, z: -0.014753854506712625, w: 0.6861783478774922 },
600
- });
601
-
602
- const v_terminator_drape = Transform.fromJSON({
603
- position: { x: 3.490824675095654, y: 3.6322529547592164, z: 0.00597384560351788 },
604
- rotation: { x: 0.017382246091421583, y: 0.026076850851011926, z: -0.000453497039986395, w: 0.9995087041696766 }
605
- });
606
-
607
- const v_terminator_drape_0 = Transform.fromJSON({
608
- position: { x: 4.344951054147374, y: 3.990828287929621, z: 1.0679631063393713 },
609
- rotation: {
610
- x: 0.017382246077006475,
611
- y: 0.026076882621904787,
612
- z: -0.00045349759250732405,
613
- w: 0.999508703340784
614
- },
615
- });
616
-
617
- const v_broken_clusters = Transform.fromJSON({
618
- position: { x: -0.6989944062625513, y: 0.7955559229247222, z: -1.5901727118090194 },
619
- rotation: { x: -0.08711217232943305, y: 0.9108561015638399, z: 0.31533742646869023, w: 0.2516245996401671 }
620
- });
621
-
622
- const v_csm_bug0 = Transform.fromJSON({
623
- position: { x: 1.496414878399618, y: 2.5553749641849284, z: -1.6356492905885907 },
624
- rotation: { x: 0.1612611060150937, y: -0.556325258333227, z: 0.11109200075590174, w: 0.8075615332563257 }
625
- });
626
-
627
- const v_csm_bug1 = Transform.fromJSON({
628
- position: { x: 5.921343087423949, y: 2.5282490785875793, z: 0.3310384650765162 },
629
- rotation: { x: 0.19685487689931777, y: -0.7788268451340126, z: 0.29700837262990126, w: 0.5162004739704265 }
630
- });
631
- const v_csm_bug2 = Transform.fromJSON({
632
- position: { x: -1.8606525126360738, y: 2.012460328343715, z: 0.5264204830865257 },
633
- rotation: { x: 0.24438857096312552, y: -0.7147978900872488, z: 0.2998369949894897, w: 0.5826113448475677 }
634
- });
635
- const v_csm_bug3 = Transform.fromJSON({
636
- position: { x: -7.742480655513035, y: 0.1945624757616174, z: 2.0849360809488315 },
637
- rotation: { x: -0.04015724245258378, y: 0.9554173423548293, z: -0.24841907381621356, w: -0.15444436399731087 }
638
- })
639
- const v_csm_bug4 = Transform.fromJSON({
640
- position: { x: 3.211711160246605, y: 1.7430670321220587, z: -0.11893329862588438 },
641
- rotation: { x: -0.013985978355409878, y: -0.7442104294103111, z: -0.015590547272532038, w: 0.6676167792994012 }
642
- })
643
-
644
- const v_csm_blend_bug0 = Transform.fromJSON({
645
- position: { x: -4.225904341620395, y: 3.463743711332445, z: 4.475033277117049 },
646
- rotation: { x: 0.0685720673385106, y: 0.7485445950285943, z: -0.07838262382305794, w: 0.6548549649479748 },
647
- })
648
-
649
- const v_ssgi_bug0 = Transform.fromJSON({
650
- position: { x: 1.7623567689392967, y: 2.70670297934202, z: -0.4340710062119524 },
651
- rotation: { x: 0.17705316728914253, y: 0.5717526681775746, z: -0.12801042067556012, w: 0.7907998448300135 }
652
- });
653
-
654
- const v_hashed_alpha_0 = Transform.fromJSON({
655
- position: { x: -1.5887714801183048, y: 0.3501061407711964, z: 1.3395318836669996 },
656
- rotation: { x: 0.16815564870502012, y: -0.4035703568180537, z: 0.07572519618248541, w: 0.8961698162566438 }
657
- });
658
-
659
- const v_hashed_alpha_1 = Transform.fromJSON({
660
- position: { x: -1.6623734058708086, y: 1.3090366336333448, z: 0.6365927524443017 },
661
- rotation: { x: 0.4254654649716964, y: -0.20415401068294317, z: 0.09914975336686183, w: 0.8760534255659168 }
662
- });
663
-
664
- camera.transform.copy(v_main);
665
-
666
-
667
- // const probe_bounds = new AABB3(
668
- // ...camera.transform.position.asArray(),
669
- // ...camera.transform.position.asArray(),
670
- // );
671
- //
672
- // probe_bounds.grow(0.1);
673
- //
674
- // scene.light_probe_volume.build_grid(
675
- // probe_bounds,
676
- // new Vector3(2, 2, 2)
677
- // );
678
-
679
- camera.far = 50;
680
-
681
- const env_map = "environments/octahedral/venice_sunset_4k.hdr";
682
-
683
- await load_slpv(scene, "Sponza/glTF/lightmap-2.svlm")
684
-
685
- scene.lights.environment = await load_environment_map(env_map, ProjectionMappingType.Octahedral);
686
-
687
- await load_promise;
688
-
689
- }
690
-
691
- function sample_EldenRing0(scene, camera) {
692
-
693
-
694
- const p = load_gltf('EldenRing/map/m10/m10_00_00_00/combined-model.glb').then(b => scene.add(b.scenes));
695
-
696
- const light = make_sunlight();
697
-
698
- scene.lights.add(light);
699
- camera.transform.fromJSON({
700
- position: { x: -268.8277181502093, y: 106.78324490323607, z: -182.09757478520098 },
701
- rotation: { x: 0.13698650607681923, y: 0.8408518684798718, z: -0.2504861029753127, w: 0.4598473057907536 }
702
- });
703
-
704
- load_default_environment(scene);
705
-
706
- return p;
707
- }
708
-
709
- function sample_EldenRing1(scene, camera) {
710
-
711
-
712
- load_gltf('EldenRing/map/m10/m10_00_00_00_005002/combined-model.gltf').then(b => scene.add(b.scenes));
713
-
714
- const light = make_sunlight();
715
-
716
-
717
- scene.lights.add(light);
718
- camera.transform.fromJSON({
719
- position: { x: -274.6873386051618, y: 117.652285439949, z: -189.47627894544158 },
720
- rotation: { x: 0.019642869777503548, y: 0.9767560210337751, z: -0.10246246087627864, w: 0.187251908274251 },
721
- });
722
- }
723
-
724
- function sample_EldenRing2(scene, camera) {
725
-
726
-
727
- load_gltf('EldenRing/map/m10/tangent_test/model.gltf').then(b => scene.add(b.scenes));
728
-
729
- const light = make_sunlight();
730
-
731
-
732
- scene.lights.add(light);
733
- camera.transform.fromJSON({
734
- position: { x: -268.5855976275191, y: 114.32201153034802, z: -206.6815780680543 },
735
- rotation: { x: 0.016071580936215937, y: -0.859168337591329, z: 0.027036430229921284, w: 0.5107254677487556 },
736
- });
737
- }
738
-
739
- function sample_italian_kitchen(scene, camera) {
740
-
741
- const p = load_gltf('italian_kitchen/scene.gltf').then(b => scene.add(b.scenes));
742
-
743
- const plane = Mesh.from(
744
- make_box_geometry(100, 1, 100),
745
- new StandardShadeMaterial(),
746
- Transform.fromJSON({
747
- position: { x: 0, y: -0.5, z: 0 }
748
- }).matrix
749
- );
750
- scene.add(plane);
751
-
752
- scene.lights.add(make_sunlight({
753
- intensity: 2.2,
754
- direction: new Vector3(0.5, -1, 0.7)
755
- }));
756
-
757
- camera.transform.fromJSON({
758
- position: { x: -5.888507648629962, y: 22.123269699087274, z: 37.88011448200162 },
759
- rotation: { x: 0.009246620025009488, y: 0.9893682629522365, z: -0.1255061382991719, w: 0.07289135428990696 }
760
- });
761
-
762
- return p;
763
- }
764
-
765
- function sample_country_kitchen_cycles(scene, camera) {
766
-
767
- const p = load_gltf('country-kitchen-cycles/gltf/scene.gltf').then(b => scene.add(b.scenes));
768
-
769
- scene.lights.add(make_sunlight({
770
- intensity: 2.2,
771
- direction: new Vector3(0.5, -1, 0.7)
772
- }));
773
-
774
- const view_main = {
775
- position: { x: 0.30194759981108865, y: 2.02149414430389, z: -4.215181352418013 },
776
- rotation: { x: 0.05567752606385583, y: -0.0784643822386679, z: 0.004389106593464819, w: 0.9953512392892391 }
777
- };
778
-
779
- const view_shadow_glitch = {
780
- position: { x: 0.5985769455694623, y: 1.933247106703753, z: -3.513577848876495 },
781
- rotation: { x: 0.2576197080640052, y: -0.08706953833238104, z: 0.023316072186571838, w: 0.9620329216245114 }
782
- }
783
-
784
- camera.transform.fromJSON(view_shadow_glitch);
785
-
786
- load_default_environment(scene);
787
-
788
- camera.far = 15;
789
-
790
- return p;
791
- }
792
-
793
- function sample_house_diorama(scene, camera) {
794
-
795
- const p = load_gltf('house_diorama/v2/scene.gltf').then(b => scene.add(b.scenes));
796
-
797
- scene.lights.add(make_sunlight({
798
- intensity: 2.2,
799
- direction: new Vector3(0.5, -1, 0.7)
800
- }));
801
-
802
- camera.transform.fromJSON({
803
- position: { x: -0.20867290303933145, y: 3.878670459691777, z: 5.200458518006686 },
804
- rotation: {
805
- x: -0.0007302964919395506,
806
- y: 0.9912801495707657,
807
- z: -0.13165445692355932,
808
- w: -0.005498700406178939
809
- }
810
- });
811
-
812
- load_default_environment(scene)
813
-
814
- camera.far = 10;
815
-
816
- return p;
817
- }
818
-
819
- function sample_salle_de_bain(scene, camera) {
820
-
821
- const p = load_gltf('salle_de_bain/model.glb').then(b => scene.add(b.scenes));
822
-
823
- scene.lights.add(make_sunlight({
824
- intensity: 2.2,
825
- direction: new Vector3(0.1, -1, 1)
826
- }));
827
-
828
- camera.transform.fromJSON({
829
- position: { x: 0.316127248092972, y: 22.709977038068786, z: 25.5284314719473 },
830
- rotation: {
831
- x: -0.0042827867293474126,
832
- y: 0.9810612336178611,
833
- z: -0.19241538785786377,
834
- w: -0.021836486565822544
835
- }
836
- });
837
-
838
- load_default_environment(scene);
839
-
840
- return p;
841
- }
842
-
843
-
844
- function sample_harley_davidson_xr1200x(scene, camera) {
845
-
846
- const p = load_gltf('harley_davidson_xr1200x/scene.gltf').then(b => scene.add(b.scenes));
847
-
848
- const plane = Mesh.from(
849
- make_box_geometry(10, 1, 10),
850
- new StandardShadeMaterial(),
851
- Transform.fromJSON({
852
- position: { x: 0, y: -0.5, z: 0 }
853
- }).matrix
854
- );
855
- scene.add(plane);
856
-
857
- scene.lights.add(make_sunlight({
858
- intensity: 2.2,
859
- direction: new Vector3(-2, -1, -1)
860
- }));
861
-
862
- camera.transform.fromJSON({
863
- position: { x: 1.1165812965622877, y: 0.8353902858093329, z: -0.8883911787074074 },
864
- rotation: { x: 0.08765802959658824, y: -0.5083251961592707, z: 0.0521090800425825, w: 0.8551059633600963 }
865
- });
866
-
867
- camera.far = 10;
868
-
869
- load_default_environment(scene);
870
-
871
- return p;
872
- }
873
-
874
- function sample_csgo_de_inferno(scene, camera) {
875
-
876
- load_gltf('csgo/de_inferno/de_inferno.gltf').then(b => scene.add(b.scenes));
877
-
878
- scene.lights.add(make_sunlight({
879
- intensity: 2.2,
880
- direction: new Vector3(0.3, -1, -0.3)
881
- }));
882
-
883
- camera.transform.fromJSON({
884
- position: { x: -0.32568158541374564, y: 0.6060166272297361, z: 0.5713064310120421 },
885
- rotation: { x: 0.05514977858089271, y: 0.9414421705459582, z: -0.19031839914297508, w: 0.2728077132117947 }
886
- });
887
- }
888
-
889
- function sample_csgo_de_ancient(scene, camera) {
890
-
891
- load_gltf('csgo/de_ancient/de_ancient.gltf').then(b => scene.add(b.scenes));
892
-
893
- scene.lights.add(make_sunlight({
894
- intensity: 2.2,
895
- direction: new Vector3(0.3, -1, -0.3)
896
- }));
897
-
898
- camera.transform.fromJSON({
899
- position: { x: -0.32568158541374564, y: 0.6060166272297361, z: 0.5713064310120421 },
900
- rotation: { x: 0.05514977858089271, y: 0.9414421705459582, z: -0.19031839914297508, w: 0.2728077132117947 }
901
- });
902
- }
903
-
904
- function sample_csgo_de_gwalior(scene, camera) {
905
-
906
- load_gltf('csgo/de_gwalior/de_gwalior.gltf').then(b => scene.add(b.scenes));
907
-
908
- scene.lights.add(make_sunlight({
909
- intensity: 2.2,
910
- direction: new Vector3(0.3, -1, -0.3)
911
- }));
912
-
913
- camera.transform.fromJSON({
914
- position: { x: -0.32568158541374564, y: 0.6060166272297361, z: 0.5713064310120421 },
915
- rotation: { x: 0.05514977858089271, y: 0.9414421705459582, z: -0.19031839914297508, w: 0.2728077132117947 }
916
- });
917
- }
918
-
919
- function sample_csgo_de_nuke(scene, camera) {
920
-
921
- load_gltf('csgo/de_nuke/de_nuke.gltf').then(b => scene.add(b.scenes));
922
-
923
- scene.lights.add(make_sunlight({
924
- intensity: 2.2,
925
- direction: new Vector3(0.3, -1, -0.3)
926
- }));
927
-
928
- camera.transform.fromJSON({
929
- position: { x: -0.32568158541374564, y: 0.6060166272297361, z: 0.5713064310120421 },
930
- rotation: { x: 0.05514977858089271, y: 0.9414421705459582, z: -0.19031839914297508, w: 0.2728077132117947 }
931
- });
932
- }
933
-
934
- function sample_FlightHelmet(scene, camera) {
935
-
936
- const p = load_gltf('glTF-Sample-Models/2.0/FlightHelmet/glTF/FlightHelmet.gltf').then(b => scene.add(b.scenes));
937
-
938
- scene.lights.add(make_sunlight({
939
- intensity: 2.2,
940
- direction: new Vector3(0.3, -1, -0.3)
941
- }));
942
-
943
- camera.transform.fromJSON({
944
- position: { x: -0.32568158541374564, y: 0.6060166272297361, z: 0.5713064310120421 },
945
- rotation: { x: 0.05514977858089271, y: 0.9414421705459582, z: -0.19031839914297508, w: 0.2728077132117947 }
946
- });
947
-
948
- load_default_environment(scene);
949
-
950
- camera.far = 3;
951
-
952
- return p;
953
- }
954
-
955
- async function sample_Bistro(scene, camera) {
956
-
957
- const p = load_gltf('Bistro_v5_2/gltf-v1/model.gltf').then(b => scene.add(b.scenes));
958
-
959
- scene.lights.add(make_sunlight({
960
- intensity: 5.2,
961
- direction: new Vector3(0.5, -1, 0.3)
962
- }));
963
-
964
- const v_books = {
965
- position: { x: 18.601740820267107, y: 3.186870770035556, z: -38.48390168174029 },
966
- rotation: { x: 0.11838799028787608, y: 0.4899354967368206, z: -0.0673623752254661, w: 0.8610515682564118 }
967
- };
968
-
969
- const v_main = {
970
- position: { x: -15.178634475900287, y: 8.19487549774558, z: 2.082348334498482 },
971
- rotation: { x: 0.086751267628722, y: 0.7637693518798772, z: -0.10501233847843479, w: 0.63095404227336 }
972
- };
973
-
974
- camera.transform.fromJSON(v_main);
975
-
976
- const env_map = "environments/octahedral/venice_sunset_2k.hdr";
977
- // const env_map = "environments/octahedral/rustig_koppie_puresky_2k.hdr";
978
- // const env_map = "environments/test4_16.hdr";
979
- load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
980
-
981
- scene.lights.environment = texture;
982
-
983
- renderer.indicate_view_change();
984
-
985
- });
986
-
987
- const lightmap_promise = load_slpv(scene, "Bistro_v5_2/gltf-v1/lightmap.svlm");
988
-
989
- return Promise.all([p, lightmap_promise]);
990
- }
991
-
992
-
993
- function sample_Sibenik(scene, camera) {
994
-
995
- const p = load_gltf('sibenik/model.gltf').then(b => scene.add(b.scenes));
996
-
997
- scene.lights.add(make_sunlight({
998
- intensity: 15
999
- }));
1000
-
1001
- camera.transform.fromJSON({
1002
- position: { x: -11.508146013053528, y: -7.019423534356523, z: 0.22170187357721272 },
1003
- rotation: { x: 0.06335615464437039, y: 0.6884888029762511, z: -0.06058929259869287, w: 0.7199292350414709 }
1004
- });
1005
-
1006
- const env_map = "environments/octahedral/venice_sunset_2k.hdr";
1007
- load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
1008
-
1009
- scene.lights.environment = texture;
1010
-
1011
- renderer.indicate_view_change();
1012
-
1013
- });
1014
-
1015
- return p;
1016
- }
1017
-
1018
- /**
1019
- *
1020
- * @param {Scene} scene
1021
- * @param {Camera} camera
1022
- * @returns {Promise<void>}
1023
- */
1024
- function sample_PicaPica(scene, camera) {
1025
-
1026
- const p = load_gltf('pica_pica/pica_pica.gltf').then(b => scene.add(b.scenes));
1027
-
1028
- scene.lights.add(make_sunlight({
1029
- intensity: 2.2
1030
- }));
1031
-
1032
- const view_0 = {
1033
- position: { x: 7.990444788625961, y: 27.102921043144782, z: 14.50242104415642 },
1034
- rotation: { x: -0.06467917148351163, y: 0.8954409270109066, z: -0.4181080310353906, w: -0.13852012631297853 }
1035
- };
1036
-
1037
- const view_1 = {
1038
- position: { x: 27.608709796058342, y: 10.392400837998734, z: 28.419039946225517 },
1039
- rotation: { x: -0.044895638695714966, y: 0.9344647171665834, z: -0.12733934815048423, w: -0.32946132460349703 }
1040
- }
1041
- const view_shadow = {
1042
- position: { x: 2.5759440334688475, y: 0.43798173280282265, z: 13.845405474797067 },
1043
- rotation: { x: 0.01989389344176856, y: 0.939313054815156, z: -0.3379919449332818, w: 0.05528709811307331 }
1044
- };
1045
-
1046
- const view_reprojection = {
1047
- position: { x: -3.492360513032427, y: 4.216132128296507, z: 12.328360034334205 },
1048
- rotation: { x: 0.01015610670901215, y: 0.9585852983120718, z: -0.28253090934728836, w: 0.03445815752279594 }
1049
- }
1050
-
1051
- /**
1052
- * Shadows flicker via self-occlusion
1053
- */
1054
- const view_shadow_messed_up = {
1055
- position: { x: 2.4452539518710643, y: 13.843778843378821, z: 9.908749947483336 },
1056
- rotation: { x: -0.0016857710322627504, y: 0.9970493587577702, z: 0.022951603715497444, w: 0.07323222148503233 }
1057
- }
1058
-
1059
- /**
1060
- * Depth occlusion via HiZ is messed up
1061
- */
1062
- const view_occlusion_messed_up = {
1063
- position: { x: 1.214641991766806, y: 1.4069866256727495, z: 7.159309200384172 },
1064
- rotation: { x: -0.003546427582025649, y: 0.9870500843846836, z: -0.15885199921399767, w: -0.022036245444962143 }
1065
- }
1066
-
1067
- const view_reflections = {
1068
-
1069
- position: { x: 16.457801772564125, y: 6.91539404807458, z: 17.821228326352184 },
1070
- rotation: { x: -0.09033405780797099, y: 0.8914656660916815, z: -0.2042845091317301, w: -0.3942037081363757 }
1071
- }
1072
- const view_reflections2 = {
1073
-
1074
- position: { x: 3.1986735877702213, y: 31.9916047652275, z: 16.439765693328106 },
1075
- rotation: { x: 0.1328767675767749, y: 0.8636123331566495, z: -0.3831916091931462, w: 0.2994690189352531 }
1076
- }
1077
-
1078
- /*
1079
- * [21/05/2025] at this specific camera state there was a huge black triangle connected to the clock hand rasterized incorrectly.
1080
- * Disappeared when changing the view within a few degrees.
1081
- * after reloading the page the problem did not reproduce
1082
- */
1083
- const view_bugged_raster = {
1084
- position: { x: -4.7934928685061, y: 14.804578193142104, z: 9.291182894913526 },
1085
- rotation: { x: 0.09768322312996866, y: 0.8804377633324317, z: -0.20714685069063818, w: 0.4151837124286984 },
1086
- }
1087
-
1088
- /*
1089
- * flicked in the middle left of the screen at resolution 1080x1080.
1090
- */
1091
- const view_csm_bug_0 = {
1092
- position: { x: -0.5873810872638958, y: 24.97234351136642, z: 16.899311513786486 },
1093
- rotation: { x: -0.07004619535457735, y: 0.9257167832834796, z: -0.30473893356127196, w: -0.2127819307074132 }
1094
- }
1095
-
1096
- const view_csm_bug_1 = {
1097
- position: { x: -16.523606106182925, y: 4.823308025044677, z: 8.71350625010329 },
1098
- rotation: { x: -0.06427824947885483, y: -0.7222231161759307, z: -0.06773878165112963, w: 0.6853273192901935 }
1099
- }
1100
-
1101
- const view_oit_0 = {
1102
- position: { x: 4.997418245589089, y: 9.018463085496833, z: 14.898966499595447 },
1103
- rotation: { x: -0.0009360539523078567, y: 0.941375078430896, z: -0.3373503559774804, w: -0.002612055529676634 }
1104
- }
1105
- const view_oit_1 = {
1106
- position: { x: 3.3633691782203856, y: 7.261528718488533, z: 11.542850343640474 },
1107
- rotation: { x: -0.0005687153277725135, y: 0.6820020749726231, z: 0.0005303413235261416, w: 0.731349823978917 }
1108
- }
1109
-
1110
- camera.transform.fromJSON(view_0);
1111
-
1112
- // p.then(() => build_lpv_mesh(
1113
- // scene,
1114
- // new Vector3(32, 16, 32)
1115
- // ));
1116
-
1117
- // add a bright cube
1118
- const material = new StandardShadeMaterial();
1119
- material.emissive_factor.set(20, 0, 0);
1120
- const box = Mesh.from(new BoxGeometry(2, 2, 2), material);
1121
- // scene.add(box);
1122
-
1123
- const env_map = "environments/octahedral/venice_sunset_2k.hdr";
1124
- load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
1125
-
1126
- scene.lights.environment = texture;
1127
-
1128
- renderer.indicate_view_change();
1129
-
1130
- });
1131
-
1132
- return p;
1133
- }
1134
-
1135
- function sample_JustAGirl(scene, camera) {
1136
-
1137
- load_gltf('just_a_girl/scene.gltf').then(b => scene.add(b.scenes));
1138
-
1139
- scene.lights.add(make_sunlight({
1140
- direction: new Vector3(0.2, -1, -0.5)
1141
- }));
1142
-
1143
- camera.transform.fromJSON({
1144
- position: { x: -11.283656511445908, y: 90.65578779568742, z: 25.972806145166548 },
1145
- rotation: { x: -0.005127058889583556, y: 0.9833683470015583, z: 0.028109772172140796, w: 0.17936066483762794 }
1146
- });
1147
-
1148
- load_default_environment(scene);
1149
- }
1150
-
1151
- function sample_CafeBernini(scene, camera) {
1152
-
1153
- const p = load_gltf('caffe_bernini/scene.gltf').then(b => scene.add(b.scenes));
1154
-
1155
- scene.lights.add(make_sunlight());
1156
-
1157
- camera.transform.fromJSON({
1158
- position: { x: 630.8862665385361, y: 1481.1856917959858, z: 2122.944915799807 },
1159
- rotation: { x: 0.0033743306880141925, y: 0.9829829122453883, z: 0.018148275316988267, w: -0.1827671968078574 }
1160
- });
1161
-
1162
- load_default_environment(scene);
1163
-
1164
- return p;
1165
- }
1166
-
1167
- function sample_Conference(scene, camera) {
1168
-
1169
- const p = load_gltf('conference/model.glb').then(b => scene.add(b.scenes));
1170
-
1171
- scene.lights.add(make_sunlight());
1172
-
1173
- camera.transform.fromJSON({
1174
- position: { x: -32.56003483363031, y: 398.4662739124476, z: -321.8140581258559 },
1175
- rotation: { x: 0.11065255270495904, y: 0.49736196986724446, z: -0.06413785788114089, w: 0.8580637614397132 }
1176
- });
1177
-
1178
-
1179
- const plane = Mesh.from(
1180
- make_box_geometry(1000, 1, 1000),
1181
- new StandardShadeMaterial(),
1182
- Transform.fromJSON({
1183
- position: { x: 0, y: -0.5, z: 0 }
1184
- }).matrix
1185
- );
1186
- scene.add(plane);
1187
-
1188
- return p;
1189
- }
1190
-
1191
- function sample_Plane(scene, camera) {
1192
-
1193
- scene.lights.add(make_sunlight());
1194
-
1195
- const material = new StandardShadeMaterial();
1196
- material.texture_albedo = make_checkers_texture({
1197
- size: 64,
1198
- repeat: 8,
1199
- color1: Color.fromRGB(1, 0.6, 0),
1200
- color2: Color.fromRGB(1, 1, 1),
1201
- });
1202
- material.roughness_factor = 1;
1203
- material.metallic_factor = 0;
1204
-
1205
- const transform = Transform.fromJSON({
1206
- position: { x: 0, y: -0.5, z: 0 },
1207
- });
1208
- transform.lookAt(Vector3.up);
1209
-
1210
- const plane = Mesh.from(
1211
- make_plane_geometry(
1212
- 100, 100,
1213
- 5, 5,
1214
- ),
1215
- material,
1216
- transform.matrix
1217
- );
1218
-
1219
- scene.add(plane);
1220
-
1221
- camera.transform.fromJSON({
1222
- position: { x: 0, y: 2, z: 0 },
1223
- rotation: { x: 0.11065255270495904, y: 0.49736196986724446, z: -0.06413785788114089, w: 0.8580637614397132 }
1224
- });
1225
-
1226
- load_default_environment(scene)
1227
- return Promise.resolve();
1228
- }
1229
-
1230
- function sample_Classroom(scene, camera) {
1231
-
1232
- const p = load_gltf('classroom/gltf2/model.gltf').then(b => scene.add(b.scenes[0]));
1233
-
1234
- scene.lights.add(make_sunlight({
1235
- direction: new Vector3(-1, -1, -1)
1236
- }));
1237
-
1238
- camera.transform.fromJSON({
1239
- position: { x: 1.244353751164485, y: 1.1681474214190015, z: 0.8488125513802389 },
1240
- rotation: { x: -0.00006083963607998484, y: 0.999823003536261, z: 0.003283608695736593, w: 0.01852500505267974 }
1241
- });
1242
-
1243
- load_default_environment(scene)
1244
-
1245
- camera.far = 30;
1246
-
1247
- return p;
1248
- }
1249
-
1250
-
1251
- async function sample_TrashGod(scene, camera) {
1252
- const env_map = "environments/octahedral/venice_sunset_2k.hdr";
1253
- // const env_map = "environments/octahedral/moonless_golf_4k.hdr";
1254
- // const env_map = "environments/octahedral/rustig_koppie_puresky_2k.hdr";
1255
- // const env_map = "environments/test4_16.hdr";
1256
- load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
1257
-
1258
- scene.lights.environment = texture;
1259
-
1260
- renderer.indicate_view_change();
1261
-
1262
- });
1263
-
1264
- {
1265
- const fog = new ParticipatingMediaVolume();
1266
- fog.transform.position.set(-55, 4, -5.116);
1267
- fog.transform.scale.set(10, 3, 20);
1268
- fog.transform.rotation.fromAxisAngle(Vector3.up, 83 * (Math.PI / 180));
1269
- fog.fade_distance = 0.5;
1270
-
1271
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.CLOUD_DROPLET_LARGE);
1272
-
1273
- fog.target_extinction = 1;
1274
-
1275
- console.log(fog);
1276
-
1277
- scene.volumetrics.add(fog);
1278
- }
1279
-
1280
-
1281
- {
1282
- // test volume in the sky
1283
- const fog = new ParticipatingMediaVolume();
1284
- fog.transform.position.set(-55, 0, -5.116);
1285
- fog.transform.scale.set(200, 200, 200);
1286
- fog.fade_distance = 10;
1287
-
1288
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.MARITIME_HAZE_SMALL);
1289
-
1290
- fog.target_extinction = 0.003;
1291
-
1292
- // scene.volumetrics.add(fog);
1293
- }
1294
-
1295
- {
1296
- // graveyard
1297
- const fog = new ParticipatingMediaVolume();
1298
- fog.transform.position.set(-51.98019820725889, 7.899311905935347, -15.3228393616169);
1299
- fog.transform.scale.set(7, 5, 7);
1300
- fog.fade_distance = 1;
1301
-
1302
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.FOG_DROPLET_SMALL);
1303
-
1304
- fog.target_extinction = 0.4;
1305
-
1306
- scene.volumetrics.add(fog);
1307
- }
1308
-
1309
- {
1310
- // Mine
1311
- const fog = new ParticipatingMediaVolume();
1312
- fog.transform.position.set(-50.846390607312934, 0.3159949821015605, 17.89429433940319);
1313
- fog.transform.scale.set(10, 7, 10);
1314
- fog.fade_distance = 4;
1315
-
1316
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.COARSE_DUST_MEDIUM);
1317
-
1318
- fog.target_extinction = 0.4;
1319
-
1320
- scene.volumetrics.add(fog);
1321
- }
1322
-
1323
- {
1324
- // large crystal
1325
- const fog = new ParticipatingMediaVolume();
1326
- fog.transform.position.set(-53.41918585295826, 17.333878151116526, 29.90844167706601);
1327
- fog.transform.scale.set(18, 10, 18);
1328
- fog.fade_distance = 4;
1329
-
1330
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.MARITIME_HAZE_MEDIUM);
1331
-
1332
- fog.target_extinction = 0.1;
1333
-
1334
- scene.volumetrics.add(fog);
1335
- }
1336
-
1337
- {
1338
- // Low cloud
1339
- const fog = new ParticipatingMediaVolume();
1340
- fog.transform.position.set(-57.36387203979457, -15, 2.607232848593789);
1341
- fog.transform.scale.set(400, 20, 400);
1342
- fog.fade_distance = 4;
1343
-
1344
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.CLOUD_DROPLET_LARGE);
1345
-
1346
- fog.target_extinction = 0.1;
1347
-
1348
- scene.volumetrics.add(fog);
1349
- }
1350
-
1351
- {
1352
- // ball cloud
1353
- const fog = new ParticipatingMediaVolume();
1354
- fog.transform.position.set(-51.137423384559284, 33, 5.593067265589105);
1355
- fog.transform.scale.set(15, 15, 15);
1356
- fog.fade_distance = 7;
1357
-
1358
- fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.CLOUD_DROPLET_LARGE);
1359
-
1360
- fog.target_extinction = 1;
1361
-
1362
- scene.volumetrics.add(fog);
1363
- }
1364
-
1365
- const p = load_gltf('flying_world_-_battle_of_the_trash_god/v2/scene.gltf').then(b => scene.add(b.scenes[0]));
1366
-
1367
- // p.then(() => {
1368
- //
1369
- // scene.lights.elements
1370
- // .filter(l => l.name === "Point Torch Yellow")
1371
- // .forEach(l => {
1372
- //
1373
- // const fog = new ParticipatingMediaVolume();
1374
- //
1375
- // fog.transform.position.set(...l.position);
1376
- // fog.transform.position._add(0, 0.7, 0);
1377
- // fog.transform.scale.set(1, 2, 1);
1378
- // fog.fade_distance = 0.5;
1379
- //
1380
- // fog.particle_spec = VolumetricsParticleSpec.fromMeep(MIE_PARTICLES_STANDARD_PRECOMPUTED.SOOT_PARTICLE_SMALL);
1381
- //
1382
- // fog.target_extinction = 1;
1383
- //
1384
- // scene.volumetrics.add(fog);
1385
- //
1386
- // })
1387
- //
1388
- // })
1389
-
1390
- scene.lights.add(make_sunlight({
1391
- intensity: 0.6,
1392
- temperature: 5500,
1393
- }));
1394
-
1395
- const skull_view = {
1396
- position: { x: -26.275197432538384, y: 7.498790962451237, z: -14.42467495393056 },
1397
- rotation: { x: 0.10177000778045209, y: -0.7321660020265738, z: 0.11220628445996303, w: 0.6640674368770687 }
1398
- };
1399
-
1400
- const over_view = {
1401
- position: { x: 561.3195688834221, y: 3167.9298818170405, z: 1381.5435954300099 },
1402
- rotation: { x: 0.10177001090182168, y: -0.7321659835534557, z: 0.1122062816289112, w: 0.6640674572445613 }
1403
- }
1404
-
1405
- const spider = {
1406
-
1407
- position: { x: -5191.672826640803, y: 2892.1892981228802, z: -2043.5879697201829 },
1408
- rotation: { x: 0.080291737740006, y: -0.7631136560429292, z: 0.09665356975856286, w: 0.6339312835508361 }
1409
- }
1410
-
1411
- const shadow_aliasing = {
1412
- position: { x: -4946.674267332207, y: 822.1640478401062, z: -392.519591814741 },
1413
- rotation: { x: 0.426693783608766, y: -0.5231794083976178, z: 0.34134946843470265, w: 0.6539849096559494 }
1414
- }
1415
-
1416
- const inside_out = {
1417
- position: { x: -61.55864473831582, y: 23.7158848700074, z: -19.634434309820563 },
1418
- rotation: { x: 0.27745576215003553, y: 0.0922110339369582, z: -0.026764015593898134, w: 0.9559284035634205 }
1419
- }
1420
-
1421
- /*
1422
- * Bits of the near cascade missing on the left side of the screen
1423
- */
1424
- const bug_csm_0 = {
1425
- position: { x: -39.15820039740183, y: 17.305095595368833, z: 44.319508050243655 },
1426
- rotation: { x: -0.035838706300981016, y: 0.9628441269037102, z: -0.161869537454111, w: -0.21317839304698766 }
1427
- }
1428
-
1429
- const bug_csm_1 = {
1430
- position: { x: -43.91323377490874, y: 10.080327167610022, z: -4.1856509114938 },
1431
- rotation: { x: 0.020717047791664202, y: 0.968231065465529, z: -0.08572609843316348, w: 0.23398812757426804 }
1432
- }
1433
-
1434
- const bug_csm_2 = {
1435
-
1436
- position: { x: -42.67024163051378, y: 10.401522537349356, z: 0.6341511635976064 },
1437
- rotation: { x: -0.11791330161935587, y: 0.8722587201986901, z: -0.2583114533866139, w: -0.39816626098636393 }
1438
- }
1439
-
1440
- const bug_csm_3 = {
1441
- position: { x: -58.73836000019737, y: 9.641602065925643, z: 10.126891117770958 },
1442
- rotation: { x: 0.280837710090786, y: -0.04708735441480127, z: 0.013796455012015974, w: 0.9585001927356509 }
1443
- }
1444
-
1445
- const v_dead_overview = {
1446
- position: { x: -44.23572420730413, y: 16.787419516572818, z: -0.3908097424888902 },
1447
- rotation: { x: -0.10289617976426199, y: 0.8965686124184902, z: -0.32052909150868936, w: -0.2878162624184363 }
1448
- }
1449
-
1450
- const v_shadow_filter_size = {
1451
- position: { x: -75.55871135386205, y: 1.9080206598480183, z: -18.294818145397606 },
1452
- rotation: { x: -0.16327189433088332, y: 0.8004006042626218, z: -0.518922071596019, w: -0.25183535261779855 }
1453
- }
1454
-
1455
- const v_volumetrics_0 = {
1456
- position: { x: -39.165083083628595, y: 9.002002938463146, z: -12.822321096883556 },
1457
- rotation: { x: 0.0461501744849993, y: 0.9414711984407541, z: -0.14428237367052793, w: 0.3011390717750397 }
1458
- }
1459
-
1460
- const v_volumetrics_1 = {
1461
- position: { x: -57.19543561067503, y: 4.497368033549733, z: -5.431935542965578 },
1462
- rotation: {
1463
- x: 0.0012158994167123557,
1464
- y: 0.9584376528911036,
1465
- z: -0.0040851224490818586,
1466
- w: 0.28527022081489145
1467
- },
1468
- }
1469
-
1470
- const v_volumetrics_aliasing_0 = {
1471
- position: { x: -44.358600521646366, y: 8.13976892720825, z: 2.6707745658793725 },
1472
- rotation: { x: -0.07197787209539422, y: 0.9277035010259875, z: -0.24609398688026018, w: -0.2713358614966388 }
1473
- }
1474
- const v_volumetrics_aliasing_1 = {
1475
- position: { x: -36.56903863396318, y: 19.1017887067011, z: 13.881382214134083 },
1476
- rotation: { x: -0.0961072760435774, y: 0.9036695806244697, z: -0.3054532939528032, w: -0.28432897453277794 }
1477
- }
1478
-
1479
- const v_volumetrics_light_extinction_0 = {
1480
- position: { x: -47.074886781095216, y: 0.0051172127701454295, z: 0.46145311799353866 },
1481
- rotation: { x: -0.04468415098642029, y: 0.7811718063448942, z: 0.620166060884645, w: 0.056284922930574056 }
1482
- }
1483
-
1484
- const v_volumetrics_light_extinction_1 = {
1485
- position: { x: -54.94436821717198, y: 72.07148512632519, z: -4.2209546627188335 },
1486
- rotation: { x: 0.0051060368457535015, y: 0.7070887360615967, z: 0.7070879549622326, w: -0.005106042486242929 }
1487
- }
1488
-
1489
- const v_hzb_bug_7 = {
1490
- position: { x: -49.664092722839094, y: 11.429727150839048, z: 26.506353317643125 },
1491
- rotation: { x: 0.07238277495443966, y: 0.8109369207802384, z: -0.10271154858200157, w: 0.5714826175775142 }
1492
- };
1493
-
1494
- const v_upscale_0 = {
1495
- position: { x: -54.77560187021332, y: 17.558461532917807, z: 30.878805142919266 },
1496
- rotation: { x: 0.13934693181182012, y: -0.7809321354230323, z: 0.187894577434838, w: 0.5791571982016959 }
1497
- }
1498
-
1499
- camera.transform.fromJSON(v_dead_overview);
1500
-
1501
- camera.far = 120;
1502
-
1503
- await load_slpv(scene, "flying_world_-_battle_of_the_trash_god/v2/lightmap-low.svlm");
1504
-
1505
- return p;
1506
- }
1507
-
1508
- function sample_SeaKeep(scene, camera) {
1509
-
1510
- const p = load_gltf('sea_keep_lonely_watcher/v2/scene.gltf').then(b => scene.add(b.scenes[0]));
1511
-
1512
- scene.lights.add(make_sunlight({
1513
- intensity: 20,
1514
- direction: new Vector3(-0.7, -1, -0.5)
1515
- }));
1516
-
1517
- camera.transform.fromJSON({
1518
- position: { x: 10.475921102533784, y: 16.581366474984392, z: -8.686678195075844 },
1519
- rotation: { x: 0.29364345376677314, y: -0.3801409351324641, z: 0.12866203194569786, w: 0.867590037420982 }
1520
- });
1521
-
1522
- camera.far = 60;
1523
-
1524
- load_default_environment(scene);
1525
-
1526
- load_slpv(scene, "sea_keep_lonely_watcher/v2/lightmap.svlm");
1527
-
1528
- return p;
1529
- }
1530
-
1531
- function stress_test_01(scene, controller) {
1532
- scene.lights.add(make_sunlight());
1533
-
1534
- const random = seededRandom();
1535
-
1536
- const geometries = (new Array(10000).fill(1)).map(() => {
1537
-
1538
- const shape = randomIntegerBetween(random, 0, 1);
1539
-
1540
- switch (shape) {
1541
- default:
1542
- case 0:
1543
- return make_box_geometry(
1544
- randomFloatBetween(random, 1, 5),
1545
- randomFloatBetween(random, 1, 5),
1546
- randomFloatBetween(random, 1, 5),
1547
- )
1548
- case 1:
1549
- return make_octahedron_geometry(
1550
- randomFloatBetween(random, 1, 5),
1551
- randomIntegerBetween(random, 0, 2)
1552
- );
1553
-
1554
- }
1555
-
1556
-
1557
- });
1558
-
1559
- const materials = (new Array(1000).fill(1)).map(() => {
1560
- const mat = new StandardShadeMaterial();
1561
-
1562
- mat.texture_albedo = get_single_pixel_texture(Color.fromHSV(random(), 1, 1));
1563
- mat.roughness_factor = randomFloatBetween(random, 0.1, 1);
1564
- mat.metallic_factor = randomFloatBetween(random, 0, 1);
1565
-
1566
- return mat;
1567
- });
1568
-
1569
- add_random_meshes({
1570
- batch: scene.instances,
1571
- geometries,
1572
- materials,
1573
- count: 3e6
1574
- }); // stress-test
1575
-
1576
- controller.camera.far = 200;
1577
- controller.from_transform(Transform.fromJSON({
1578
- position: { x: 316.89373184490677, y: 395.0583521172159, z: 308.85758369195605 },
1579
- rotation: { x: -0.14299422200935458, y: 0.8569380002295408, z: -0.3442801973586337, w: -0.35592283144136044 },
1580
- }));
1581
-
1582
-
1583
- load_default_environment(scene);
1584
-
1585
- return Promise.resolve();
1586
- }
1587
-
1588
- function make_spotlight() {
1589
- const sp = new SpotLight();
1590
- sp.color.copy(Color.red);
1591
- sp.intensity = 100;
1592
- sp.angle = 10 * DEG_TO_RAD;
1593
- sp.penumbra = 0.1;
1594
- sp.distance = 50;
1595
-
1596
- sp.transform_local.setTranslation(0, 5, 0);
1597
- t64_look_rotation(sp.transform_local, Vector3.down.x, Vector3.down.y, Vector3.down.z, 0, 1, 0);
1598
- sp.updateMatrices();
1599
- return sp;
1600
- }
1601
-
1602
- /**
1603
- *
1604
- * @param canvas
1605
- * @param {GUI} gui
1606
- * @returns {Promise<void>}
1607
- */
1608
- const init = async ({ canvas, gui }) => {
1609
-
1610
- const context = canvas.getContext('webgpu');
1611
-
1612
- const renderer = new Renderer();
1613
- window.renderer = renderer;
1614
-
1615
- await renderer.initialize({
1616
- context
1617
- });
1618
-
1619
- const DEBUG_PATCH_QUEUE_LOGGING = false;
1620
-
1621
- // patch DEBUG
1622
- if (DEBUG_PATCH_QUEUE_LOGGING) {
1623
- const queue = renderer.device.queue;
1624
- const submit = queue.submit;
1625
- queue.submit = function (commandBuffers) {
1626
- console.log("queue.submit");
1627
-
1628
- return submit.call(queue, commandBuffers);
1629
- }
1630
-
1631
- const writeBuffer = queue.writeBuffer;
1632
- queue.writeBuffer = function (buffer, bufferOffset, data, dataOffset, size) {
1633
- console.log(`queue.writeBuffer("${buffer.label}", ${bufferOffset}, data, ${dataOffset}, ${size})`);
1634
-
1635
- return writeBuffer.call(queue, buffer, bufferOffset, data, dataOffset, size);
1636
- }
1637
- }
1638
-
1639
- globalThis.gfx = renderer.graphics;
1640
-
1641
- console.log(renderer);
1642
-
1643
-
1644
- const camera = new PerspectiveCamera();
1645
- camera.transform.position.set(0, 0, -5);
1646
- camera.transform.lookAt(Vector3.zero);
1647
-
1648
- camera.near = 0.1;
1649
- camera.far = 200;
1650
- camera.fov = 72 * DEG_TO_RAD;
1651
- camera.aspect = renderer.aspect_ratio;
1652
-
1653
- let frame_limit = Infinity;
1654
- // let frame_limit = 1;
1655
-
1656
- // controller.look(new Vector3(0, 50, -100), Vector3.zero);
1657
- // controller.look(new Vector3(0,2,-2), Vector3.zero);
1658
-
1659
-
1660
- const scene = new Scene();
1661
-
1662
- window.scene = scene;
1663
-
1664
-
1665
- const executor = new ConcurrentExecutor(3, 2);
1666
-
1667
-
1668
- async function visialize_probes() {
1669
-
1670
- // disable LPV so that we don't collect lighting with probes in the scene
1671
- renderer.feature_lpv_enabled = false;
1672
-
1673
- const gpu_scene = renderer.scenes.obtain(scene);
1674
-
1675
- // get current coefficients
1676
- await gpu_scene.light_probe_volume.download();
1677
-
1678
- lpv_visualise_probes(scene);
1679
- }
1680
-
1681
-
1682
- async function handle_scene_loaded() {
1683
- console.log("SCENE LOAD COMPLETE");
1684
-
1685
- {
1686
- let count = 0;
1687
-
1688
- console.time("graphics update");
1689
- renderer.graphics.update();
1690
- console.timeEnd("graphics update");
1691
-
1692
- const time_load_finished = performance.now();
1693
-
1694
- renderer.onFrameFinished.add(() => {
1695
- count++;
1696
-
1697
- if (count === 1) {
1698
- const duration = performance.now() - time_load_finished;
1699
- console.log(`Time to render first frame after load: ${duration.toFixed(2)}ms`);
1700
- }
1701
-
1702
- if (count === 3) {
1703
- const time = performance.now();
1704
- const time_since_load = time - timestamp_main_parsed_ms;
1705
-
1706
- console.log(`first meaningful frame after scene load in ${time_since_load} ms`)
1707
- }
1708
- })
1709
- }
1710
-
1711
- // await delay(1000);
1712
-
1713
-
1714
- // frame_limit = 0;
1715
-
1716
- // await delay(1000);
1717
-
1718
- // renderer.indicate_view_change();
1719
-
1720
- frame_limit += 3; // limit number of drawn frames to spare the GPU
1721
- camera.transform.subscribe(() => {
1722
- frame_limit = Math.max(frame_limit, 1);
1723
- });
1724
-
1725
- const bb = scene.instances.bounding_box;
1726
-
1727
- if (controller.movement_speed_scale === 1.0) {
1728
- // looks unmodified, let's change that
1729
- controller.movement_speed_scale = Math.max(bb.width, bb.height, bb.depth) * 0.1;
1730
- }
1731
-
1732
- }
1733
-
1734
- // test_radix_sort(renderer.graphics);
1735
- // test_prefix_sum(renderer.graphics);
1736
- // generate_dfg_texture({
1737
- // graphics: renderer.graphics,
1738
- // });
1739
-
1740
- // load_slpv(scene, "Sponza/glTF/lightmap-2.svlm")
1741
- // load_scene_from_url('Sponza/scene-v11.shade', scene)
1742
- // .then(async () => {
1743
- // })
1744
- // .then(() => {
1745
- // // camera.fov = 55 * DEG_TO_RAD;
1746
- // camera.far = 25;
1747
- // controller.from_transform(Transform.fromJSON({
1748
- // position: {
1749
- // "x": 6.882350816359706,
1750
- // "y": 3.46377271542073,
1751
- // "z": -0.35451149125927056
1752
- // },
1753
- // rotation: {
1754
- // "x": 0,
1755
- // "y": -0.7071067811865476,
1756
- // "z": 0,
1757
- // "w": 0.7071067811865476
1758
- // }
1759
- // }));
1760
- // })
1761
- // .then(handle_scene_loaded);
1762
-
1763
-
1764
- // load_scene_from_url('public/EmeraldSquare_v4_1/scene-day-v2.shade', scene)
1765
- // .then(() => {
1766
- // camera.far = 200;
1767
- // const v_square_0 = {
1768
- // position: { x: -36.500386604645435, y: 54.39537857145933, z: -14.811733171263 },
1769
- // rotation: {
1770
- // x: 0.423022072756093,
1771
- // y: -0.00038350294642907576,
1772
- // z: 0.00017903847226245933,
1773
- // w: 0.9061192784793038
1774
- // }
1775
- // };
1776
- // controller.from_transform(Transform.fromJSON(v_square_0));
1777
- // })
1778
- // .then(handle_scene_loaded)
1779
- // .then(async () => {
1780
- //
1781
- // await load_slpv(scene, "public/EmeraldSquare_v4_1/lightmap-v2.svlm")
1782
- // });
1783
-
1784
-
1785
- // await load_slpv(scene, "flying_world_-_battle_of_the_trash_god/export/lightmap.svlm");
1786
- // load_scene_from_url('flying_world_-_battle_of_the_trash_god/export/scene.shade', scene)
1787
- // .then(() => {
1788
- // camera.far = 120;
1789
- // const v_dead_overview = {
1790
- // position: { x: -44.23572420730413, y: 16.787419516572818, z: -0.3908097424888902 },
1791
- // rotation: {
1792
- // x: -0.10289617976426199,
1793
- // y: 0.8965686124184902,
1794
- // z: -0.32052909150868936,
1795
- // w: -0.2878162624184363
1796
- // }
1797
- // }
1798
- // controller.from_transform(Transform.fromJSON(v_dead_overview));
1799
- // })
1800
- // .then(handle_scene_loaded)
1801
- // .then(async () => {
1802
- // });
1803
-
1804
-
1805
- // sample_PicaPica(scene, camera).then(handle_scene_loaded);
1806
- // sample_Sponza(scene, camera).then(handle_scene_loaded)
1807
- // sample_Plane(scene, camera).then(handle_scene_loaded);
1808
- // sample_rungholt(scene, camera).then(handle_scene_loaded);
1809
- // sample_house_diorama(scene, camera).then(handle_scene_loaded);
1810
- // sample_italian_kitchen(scene, camera).then(handle_scene_loaded);
1811
- // sample_country_kitchen_cycles(scene, camera).then(handle_scene_loaded);
1812
- // sample_salle_de_bain(scene, camera).then(handle_scene_loaded);
1813
- // sample_harley_davidson_xr1200x(scene, camera).then(handle_scene_loaded);
1814
- sample_TrashGod(scene, camera).then(handle_scene_loaded);
1815
- // sample_SeaKeep(scene, camera).then(handle_scene_loaded);
1816
- // sample_FlightHelmet(scene, camera).then(handle_scene_loaded)
1817
- // sample_Blender2(scene, camera).then(handle_scene_loaded);
1818
- // sample_pebble_scattering(scene, camera).then(handle_scene_loaded);
1819
- // sample_EldenRing0(scene, camera).then(handle_scene_loaded);
1820
- // sample_Blender35(scene, camera).then(handle_scene_loaded);
1821
- // sample_Blender41(scene, camera).then(handle_scene_loaded);
1822
- // sample_powerplant(scene, camera).then(handle_scene_loaded);
1823
- // sample_Sibenik(scene, camera).then(handle_scene_loaded);
1824
- // sample_flower_scattering(scene, camera);
1825
- // sample_Bistro(scene, camera).then(handle_scene_loaded);
1826
- // sample_JustAGirl(scene, camera);
1827
- // sample_CafeBernini(scene, camera).then(handle_scene_loaded);
1828
- // sample_Conference(scene, camera).then(handle_scene_loaded);
1829
- // sample_Classroom(scene, camera).then(handle_scene_loaded);
1830
- // sample_csgo_de_inferno(scene, camera);
1831
- // sample_csgo_de_ancient(scene, camera);
1832
- // sample_csgo_de_gwalior(scene, camera);
1833
- // sample_csgo_de_nuke(scene, camera);
1834
-
1835
- // sample_NormalTangentTest(scene, camera);
1836
- // sample_WaterBottle(scene, camera);
1837
- // sample_MaterialsVariantsShoe(scene, camera).then(handle_scene_loaded);
1838
- // sample_MetalRoughSpheres(scene, camera).then(handle_scene_loaded);
1839
-
1840
- const controller = new OrbitalCameraController(camera, document.body);
1841
-
1842
-
1843
- // animation_prototype({ renderer, scene, controller });
1844
- // animation_prototype_stress({ renderer, scene, controller });
1845
- // gltf_skinned_prototype({ renderer, scene, controller });
1846
- // gltf_skinned_stress_prototype({ renderer, scene, controller });
1847
- // handle_scene_loaded();
1848
-
1849
- // load_scene_from_url("public/Bistro_v5_2/exterior/v6/scene-bistro-v6.shade", scene)
1850
- // .then(handle_scene_loaded)
1851
- // .then(()=>{
1852
- //
1853
- // const v_main = {
1854
- // position: { x: -15.178634475900287, y: 8.19487549774558, z: 2.082348334498482 },
1855
- // rotation: { x: 0.086751267628722, y: 0.7637693518798772, z: -0.10501233847843479, w: 0.63095404227336 }
1856
- // };
1857
- //
1858
- // camera.far = 100;
1859
- // controller.distance = 1;
1860
- // controller.from_transform(Transform.fromJSON(v_main));
1861
- //
1862
- // });
1863
-
1864
- // sample_load_gltf(scene, controller, "public/Bistro_v5_2/exterior/v7/scene.gltf")
1865
- // .then(handle_scene_loaded)
1866
- // .then(() => {
1867
- //
1868
- // const v_main = {
1869
- // position: { x: -15.178634475900287, y: 8.19487549774558, z: 2.082348334498482 },
1870
- // rotation: { x: 0.086751267628722, y: 0.7637693518798772, z: -0.10501233847843479, w: 0.63095404227336 }
1871
- // };
1872
- //
1873
- // camera.far = 100;
1874
- // controller.distance = 1;
1875
- // controller.from_transform(Transform.fromJSON(v_main));
1876
- //
1877
- // load_slpv(scene, "public/Bistro_v5_2/exterior/v7/lightmap-v1.svlm");
1878
- //
1879
- // renderer.indirect_lighting_mode = ShadeIndirectLightingMode.Brick4;
1880
- //
1881
- // load_environment_map("public/environments/octahedral/night_sky.hdr", ProjectionMappingType.Octahedral)
1882
- // .then(t => {
1883
- // scene.lights.environment = t;
1884
- // })
1885
- // });
1886
-
1887
- // sample_load_gltf(scene, controller, 'glTF-Sample-Models/2.0/TransmissionTest/glTF/TransmissionTest.gltf');
1888
- // sample_load_gltf(scene, controller, 'glTF-Sample-Models/2.0/ABeautifulGame/glTF/ABeautifulGame.gltf').then(handle_scene_loaded);
1889
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/24h-burnout-bot/scene.gltf');
1890
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/simple_house/scene.gltf');
1891
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/2023_lamborghini_urus_performante/scene.gltf').then(handle_scene_loaded);
1892
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/water_bottles/scene.gltf');
1893
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/realistic_potions/scene.gltf').then(()=>{
1894
- // controller.from_transform(Transform.fromJSON({
1895
- // position: { x: 1.9657516684854834, y: -0.1831089598638198, z: 0.0026640782736288005 },
1896
- // rotation: { x: -0.045103185083318, y: -0.6400281362737125, z: -0.03768084056001766, w: 0.766100412301174 }
1897
- // }))
1898
- // }).then(handle_scene_loaded);
1899
- // sample_load_gltf(scene, controller, 'batch_2025_07_29/sadmeal/scene.gltf');
1900
- // sample_load_gltf(scene, controller, 'shade_stuff/samples/transparency_cross_01.glb');
1901
-
1902
- // sample_load_gltf(scene, controller, "customer/ozone/qatar/gltf/v7/scene.gltf")
1903
- // .then(() => {
1904
- //
1905
- // // get sun
1906
- // const sun = scene.lights.elements.find(e => e.isDirectionalLight);
1907
- //
1908
- //
1909
- // // sun.intensity = 1;
1910
- // // scene.lights.needsUpdate = true;
1911
- //
1912
- // const t = new Transform();
1913
- // t.rotation.lookRotation(new Vector3(0.40910809346944355, -0.7460735278820639, -0.5253616457749919).normalize());
1914
- // sun.transform_local.set(t.matrix);
1915
- // sun.updateMatrices();
1916
- //
1917
- //
1918
- // // const env_map = "environments/octahedral/venice_sunset_2k.hdr";
1919
- // const env_map = "environments/octahedral/goegap_4k.hdr";
1920
- // // const env_map = "environments/test4_16.hdr";
1921
- // load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
1922
- //
1923
- // scene.lights.environment = texture;
1924
- //
1925
- // renderer.indicate_view_change();
1926
- //
1927
- // });
1928
- //
1929
- // camera.transform.fromJSON({
1930
- // position: {
1931
- // x: 23.327619424582437,
1932
- // y: 12.816779165481643,
1933
- // z: 11.105323990290163,
1934
- // },
1935
- // rotation: {
1936
- // w: 0.7592648195644102,
1937
- // x: 0.19492013609844236,
1938
- // y: -0.6014031188510489,
1939
- // z: 0.15439353273832238,
1940
- // }
1941
- // });
1942
- //
1943
- // camera.far = 500;
1944
- //
1945
- // controller.look(camera.transform.position, camera.transform.position.clone().add(camera.transform.forward));
1946
- //
1947
- // })
1948
- // .then(handle_scene_loaded);
1949
-
1950
- //
1951
- // sample_load_gltf(scene, controller, [
1952
- // "customer/moicon/06-04_MTNC2021/0/model.gltf",
1953
- // "customer/moicon/06-04_MTNC2021/1/model.gltf",
1954
- // "customer/moicon/06-04_MTNC2021/2/model.gltf",
1955
- // "customer/moicon/06-04_MTNC2021/3/model.gltf",
1956
- // "customer/moicon/06-04_MTNC2021/4/model.gltf",
1957
- // "customer/moicon/06-04_MTNC2021/5/model.gltf",
1958
- // "customer/moicon/06-04_MTNC2021/6/model.gltf",
1959
- // ]).then(() => {
1960
- // // get sun
1961
- // const sun = scene.lights.elements.find(e => e.isDirectionalLight);
1962
- //
1963
- // const t = new Transform();
1964
- // t.rotation.lookRotation(new Vector3(0.4, -1, 0.63).normalize());
1965
- // sun.transform_local.set(t.matrix);
1966
- // sun.updateMatrices();
1967
- //
1968
- // // const env_map = "environments/octahedral/venice_sunset_2k.hdr";
1969
- // const env_map = "environments/octahedral/rustig_koppie_puresky_2k.hdr";
1970
- // // const env_map = "environments/test4_16.hdr";
1971
- // load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
1972
- //
1973
- // scene.lights.environment = texture;
1974
- //
1975
- // renderer.indicate_view_change();
1976
- //
1977
- // });
1978
- // })
1979
- // .then(handle_scene_loaded);
1980
- // sample_load_gltf(scene, controller, "shade_stuff/kitchen_alex_b/gltf2/scene.gltf")
1981
- // .then(handle_scene_loaded)
1982
- // .then(() => {
1983
- // camera.transform.fromJSON({
1984
- // position: { x: 12.125880736194556, y: 1.2, z: -3.605599244935128 },
1985
- // rotation: {
1986
- // x: -0.03777112857938461,
1987
- // y: 0.9481334616173833,
1988
- // z: -0.12325177369996557,
1989
- // w: -0.29056028821415014
1990
- // }
1991
- // });
1992
- // controller.look(camera.transform.position, camera.transform.position.clone().add(camera.transform.forward));
1993
- //
1994
- // const sun = scene.lights.elements[0];
1995
- //
1996
- // const t = new Transform();
1997
- //
1998
- // t.rotation.lookRotation(new Vector3(0, -0.2, -0.5).normalize(), Vector3.up);
1999
- //
2000
- // sun.transform_local.set(t.matrix);
2001
- // sun.updateMatrices();
2002
- //
2003
- // scene.lights.needsUpdate = true;
2004
- //
2005
- // });
2006
- // sample_load_gltf(scene, controller, "public/shade_stuff/kitchen and ground floor.glb").then(handle_scene_loaded);
2007
- // sample_load_gltf(scene, controller, "public/customer/tmrw/keynote_hdr-no-window.glb").then(handle_scene_loaded).then(() => {
2008
- // camera.transform.fromJSON({
2009
- // position: { x: 4.367881168916819, y: 0.592727107122554, z: 5.711337952482239 },
2010
- // rotation: {
2011
- // x: -0.0442197121079618, y: -0.6853574043601649, z: -0.041763656303478426, w: 0.7256622095451515
2012
- // }
2013
- // });
2014
- // controller.look(camera.transform.position, camera.transform.position.clone().add(camera.transform.forward));
2015
- // })
2016
- // sample_load_gltf(scene, controller, "public/cornell_box/scene.gltf").then(handle_scene_loaded);
2017
- // sample_load_gltf(scene, controller, "public/blender-3.3-splash/scene.gltf")
2018
- // .then(() => {
2019
- // load_slpv(scene, "public/blender-3.3-splash/lightmap.svlm")
2020
- // })
2021
- // .then(handle_scene_loaded);
2022
- // sample_load_gltf(scene, controller, "public/intel_sponza/main1_sponza/NewSponza_Main_glTF_003.gltf").then(handle_scene_loaded);
2023
- // sample_load_gltf(scene, controller, "public/intel_sponza/pkg_a_curtains/NewSponza_Curtains_glTF.gltf").then(handle_scene_loaded);
2024
- // sample_load_gltf(scene, controller, "public/pbr-test-spec-01/scene.gltf").then(handle_scene_loaded);
2025
- // sample_load_gltf(scene, controller, "public/glTF-Sample-Models/2.0/Fox/glTF/Fox.gltf").then(handle_scene_loaded);
2026
- // sample_load_gltf(scene, controller, "public/SEED/pica_pica_-_mini_diorama_01/scene.gltf").then(handle_scene_loaded);
2027
- // sample_load_gltf(scene, controller, "public/SEED/pica_pica_-_floor_junk_clutter_01/scene.gltf").then(handle_scene_loaded);
2028
- // sample_load_gltf(scene, controller, "public/SEED/pica_pica_-_floor_junk_clutter_02/scene.gltf").then(handle_scene_loaded);
2029
- // sample_load_gltf(scene, controller, "public/SEED/pica_pica_-_machines/scene.gltf").then(handle_scene_loaded);
2030
- // sample_load_gltf(scene, controller, "public/porsche_gt3_rs/scene.gltf").then(handle_scene_loaded);
2031
- // sample_load_gltf(scene, controller, "public/low_poly_flat/scene.gltf").then(handle_scene_loaded);
2032
- // sample_load_gltf(scene, controller, "public/breakfast_room/gltf/scene.gltf")
2033
- // .then(() => {
2034
- // camera.transform.fromJSON({
2035
- // "position": { "x": -0.6330649449219954, "y": 1.5888956869792006, "z": 5.5901729937324465 },
2036
- // "rotation": {
2037
- // "x": -0.00012363111454709365,
2038
- // "y": 0.9995860069248491,
2039
- // "z": 0.028441518626431368,
2040
- // "w": 0.004345053924334134
2041
- // },
2042
- // "scale": { "x": 1, "y": 1, "z": 1 }
2043
- // });
2044
- // camera.far = 15;
2045
- // controller.look(camera.transform.position, camera.transform.position.clone().add(camera.transform.forward));
2046
- //
2047
- // const sun = scene.lights.elements[0];
2048
- //
2049
- // const t = new Transform();
2050
- //
2051
- // t.rotation.lookRotation(new Vector3(-0.5, -0.2, -0.5).normalize(), Vector3.up);
2052
- //
2053
- // sun.transform_local.set(t.matrix);
2054
- // sun.updateMatrices();
2055
- //
2056
- // scene.lights.needsUpdate = true;
2057
- // })
2058
- // .then(handle_scene_loaded);
2059
- // sample_load_gltf(scene, controller, "public/fireplace_room/gltf/scene.gltf").then(handle_scene_loaded);
2060
- // sample_load_gltf(scene, controller, "public/hairball/gltf/scene.gltf").then(handle_scene_loaded);
2061
- // sample_load_gltf(scene, controller, "public/shadow_testing/gltf/scene.gltf").then(handle_scene_loaded);
2062
- // sample_load_gltf(scene, controller, "public/yale_lights/scene.gltf").then(handle_scene_loaded);
2063
- // sample_load_gltf(scene, controller, "public/colourdraftssimon_stalenhag_scene/scene.gltf").then(handle_scene_loaded);
2064
- // sample_load_gltf(scene, controller, "public/room_interior/scene.gltf").then(handle_scene_loaded);
2065
- // sample_load_gltf(scene, controller, "public/the_blacksmiths/scene.gltf").then(handle_scene_loaded);
2066
- // sample_load_gltf(scene, controller, "public/gi_box_01/export-01/model.gltf")
2067
- // .then(() => {
2068
- // const light = scene.lights.elements[0];
2069
- //
2070
- // const transform = new Transform();
2071
- //
2072
- // transform.lookAt(new Vector3(0.8, -1, -0.4));
2073
- //
2074
- // array_copy(
2075
- // transform.matrix, 0,
2076
- // light.transform_local, 0, 16);
2077
- // light.updateMatrices();
2078
- //
2079
- // scene.lights.needsUpdate = true;
2080
- // })
2081
- // .then(handle_scene_loaded);
2082
- // sample_load_gltf(scene, controller, "public/low_poly_classroom/no-glass/model.gltf").then(handle_scene_loaded);
2083
- // sample_load_gltf(scene, controller, "public/sd_macross_city_standoff_diorama/scene.gltf").then(handle_scene_loaded);
2084
- // sample_load_gltf(scene, controller, "public/vokselia_spawn/model.gltf").then(handle_scene_loaded);
2085
- // sample_load_gltf(scene, controller, "public/siege_at_night_medievalremixchallenge/scene.gltf").then(handle_scene_loaded);
2086
- // sample_load_gltf(scene, controller, "public/room/scene.gltf").then(handle_scene_loaded);
2087
- // sample_load_gltf(scene, controller, "public/living_and_kitchen/scene.gltf").then(handle_scene_loaded);
2088
- // sample_load_gltf(scene, controller, "public/batch_2025_10_25/Tree1/gltf/scene.gltf").then(handle_scene_loaded).then(() => {
2089
- // const light = scene.lights.elements[0];
2090
- //
2091
- // const transform = Transform.fromJSON({
2092
- // position: { x: 0, y: 0, z: 0 },
2093
- // rotation: { x: 0, y: 0, z: 0, w: 1 }
2094
- // });
2095
- //
2096
- // camera.far = 80;
2097
- //
2098
- // transform.lookAt(new Vector3(0.4, -1, -0.4));
2099
- //
2100
- // array_copy(
2101
- // transform.matrix, 0,
2102
- // light.transform_local, 0, 16);
2103
- //
2104
- // light.updateMatrices();
2105
- //
2106
- // scene.lights.needsUpdate = true;
2107
- //
2108
- // controller.from_transform(Transform.fromJSON({
2109
- // position: { x: -20.357444352928436, y: 14.160615331200855, z: -1.1000043982504222 },
2110
- // rotation: { x: 0.08374805292613074, y: 0.6978096507844427, z: -0.08271257426951092, w: 0.7065455292908497 }
2111
- // }));
2112
- // });
2113
- // sample_load_gltf(scene, controller, "public/EmeraldSquare_v4_1/gltf-day/scene.gltf").then(handle_scene_loaded)
2114
- // .then(() => {
2115
- //
2116
- // load_environment_map("public/EmeraldSquare_v4_1/octahedral-symmetrical_garden_4k.hdr", ProjectionMappingType.Octahedral).then(texture => {
2117
- // scene.lights.environment = texture;
2118
- // renderer.indicate_view_change();
2119
- // });
2120
- //
2121
- // const v_square_0 = {
2122
- // position: { x: -36.500386604645435, y: 54.39537857145933, z: -14.811733171263 },
2123
- // rotation: {
2124
- // x: 0.423022072756093,
2125
- // y: -0.00038350294642907576,
2126
- // z: 0.00017903847226245933,
2127
- // w: 0.9061192784793038
2128
- // }
2129
- // };
2130
- //
2131
- // const v_square_1 = {
2132
- // position: { x: -28.153313300353275, y: 51.56295309567791, z: 11.3294031741776 },
2133
- // rotation: {
2134
- // x: 0.4532806960546689,
2135
- // y: -0.17149926012149977,
2136
- // z: 0.08933887254580901,
2137
- // w: 0.8701397475200272
2138
- // },
2139
- // };
2140
- //
2141
- // // load_slpv(scene, "public/EmeraldSquare_v4_1/gltf-day/lightmap.svlm")
2142
- //
2143
- // controller.from_transform(Transform.fromJSON(v_square_0))
2144
- // })
2145
- // sample_load_gltf(scene, controller, "public/SunTemple_v4/SunTemple/gltf-v2/scene.gltf")
2146
- // .then(async () => {
2147
- // renderer.indirect_lighting_mode = ShadeIndirectLightingMode.IBL;
2148
- //
2149
- // camera.far = 50;
2150
- //
2151
- // controller.movement_speed_scale = 5;
2152
- // controller.distanceLimits.set(0.5, 100);
2153
- // controller.distance = 1;
2154
- // controller.from_transform(Transform.fromJSON({
2155
- // "position": { "x": -6.794427874548205, "y": 4.669972481347289, "z": -11.696397774444222 },
2156
- // "rotation": {
2157
- // "x": 0.0005146039946247688,
2158
- // "y": 0.27604020641271343,
2159
- // "z": -0.00014779378136064382,
2160
- // "w": 0.961145939898491
2161
- // }
2162
- // }))
2163
- //
2164
- // scene.lights.environment = await load_environment_map("public/SunTemple_v4/SunTemple/SunTemple_Skybox_oct.hdr", ProjectionMappingType.Octahedral);
2165
- //
2166
- // // await renderer.getProbeRendererForScene(scene)
2167
- // // .generate_locations(64);
2168
- //
2169
- // // lpv_generate_probe_locations2({scene});
2170
- //
2171
- // // renderer.indirect_lighting_mode = ShadeIndirectLightingMode.LPV;
2172
- //
2173
- // // await delay(30000);
2174
- // // await visialize_probes()
2175
- //
2176
- // }).then(handle_scene_loaded);
2177
- // sample_load_gltf(scene, controller, "public/San_Miguel/gltf/scene.gltf").then(handle_scene_loaded);
2178
- // sample_load_gltf(scene, controller, "public/TheCarnival/scene.gltf").then(handle_scene_loaded);
2179
- // sample_load_gltf(scene, controller, "public/TheCabin/scene.gltf").then(handle_scene_loaded);
2180
- // sample_load_gltf(scene, controller, "public/dreamsong/scene.gltf").then(handle_scene_loaded);
2181
- // sample_load_gltf(scene, controller, "public/dreamsong/scene-no-bake.gltf").then(handle_scene_loaded);
2182
- // sample_load_gltf(scene, controller, "public/low-poly_fantasy_island_medieval/scene.gltf").then(handle_scene_loaded);
2183
- // sample_load_gltf(scene, controller, "public/stylized_little_japanese_town_street/scene.gltf").then(handle_scene_loaded);
2184
- // sample_load_gltf(scene, controller, "public/sunrise_temple_environment/scene.gltf").then(handle_scene_loaded);
2185
- // sample_load_gltf(scene, controller, "public/customer/ozone/garage/no-door/scene.gltf")
2186
- // .then(handle_scene_loaded)
2187
- // .then(() => {
2188
- //
2189
- // load_slpv(scene, "public/customer/ozone/garage/no-door/lightmap.svlm")
2190
- //
2191
- // controller.from_transform(Transform.fromJSON({
2192
- // position: { x: -2.0149998497238504, y: 2.0925572987592562, z: 5.066550531633194 },
2193
- // rotation: {
2194
- // x: 0.000026690813678372202,
2195
- // y: 0.9980212864655044,
2196
- // z: -0.06287552432742036,
2197
- // w: 0.0004236624742146783
2198
- // }
2199
- // }))
2200
- // })
2201
- // sample_load_gltf(scene, controller, "public/customer/ozone/Garden/scene.gltf")
2202
- // .then(handle_scene_loaded)
2203
- // .then(async ()=>{
2204
- // camera.far = 100;
2205
- //
2206
- // await load_slpv(scene, "public/customer/ozone/Garden/lightmap.svlm")
2207
- // })
2208
- // ;
2209
-
2210
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/3d_pbr_curved_sofa/scene.gltf").then(handle_scene_loaded);
2211
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/chinese_style_tea_table/scene.gltf").then(handle_scene_loaded);
2212
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/simple_dining_table/scene.gltf").then(handle_scene_loaded);
2213
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/sofa_combination/scene.gltf").then(handle_scene_loaded);
2214
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/a_low-poly_modular_kitchen_set/scene.gltf").then(handle_scene_loaded);
2215
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/abandoned_underground_train_station/scene.gltf").then(handle_scene_loaded);
2216
-
2217
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/castle/scene.gltf").then(handle_scene_loaded);
2218
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/cdb8c2ee9d8d4186b301bdef2d8a976b/scene.gltf").then(handle_scene_loaded);
2219
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/chocolate_tart/scene.gltf").then(handle_scene_loaded);
2220
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/cleopatra_and_the_asp/scene.gltf").then(handle_scene_loaded);
2221
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/dae_sculpting_final__tree_house_2024/scene.gltf").then(handle_scene_loaded);
2222
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/fantasy_castle/scene.gltf").then(handle_scene_loaded);
2223
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/gm_goldencity_day_v2/scene.gltf").then(handle_scene_loaded);
2224
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/huge_medieval_battle_scene/scene.gltf").then(handle_scene_loaded);
2225
- // sample_load_gltf(scene, controller, "public/sumatran_tiger/scene.gltf").then(handle_scene_loaded);
2226
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/koldy/scene.gltf").then(handle_scene_loaded);
2227
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/girl_portrait/scene.gltf").then(handle_scene_loaded);
2228
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/oni_girl_sculpt/scene.gltf").then(handle_scene_loaded);
2229
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/blanket_in_the_wind/scene.gltf").then(handle_scene_loaded);
2230
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/tokyo_ghoul/scene.gltf").then(handle_scene_loaded);
2231
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/low_poly_environment_jungle_scene/scene.gltf").then(handle_scene_loaded);
2232
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/low_poly_hilltop_castle/scene.gltf").then(handle_scene_loaded);
2233
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/makarov_pm/scene.gltf").then(handle_scene_loaded);
2234
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/medieval_tavern/scene.gltf").then(handle_scene_loaded);
2235
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/modern_luxury_villa_house_building_home/scene.gltf").then(handle_scene_loaded);
2236
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/modern_tower_office_apartment_building/scene.gltf").then(handle_scene_loaded);
2237
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/museum-and-hydroelectric-plant/source/scene.gltf").then(handle_scene_loaded);
2238
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/oval_place/scene.gltf").then(handle_scene_loaded);
2239
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/pawn_mate/scene.gltf").then(handle_scene_loaded);
2240
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/plaza_night_time/scene.gltf").then(handle_scene_loaded);
2241
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/prototype_robot/scene.gltf").then(handle_scene_loaded);
2242
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/ramen/scene.gltf").then(handle_scene_loaded);
2243
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/robot_character/scene.gltf").then(handle_scene_loaded);
2244
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/shoot_background__graffiti_street/scene.gltf").then(handle_scene_loaded);
2245
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/studio_setup/scene.gltf").then(handle_scene_loaded);
2246
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/suburban_shabby_house_low_poly/scene.gltf").then(handle_scene_loaded);
2247
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/the_steampunk_vault/scene.gltf").then(handle_scene_loaded);
2248
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/ururu/scene.gltf").then(handle_scene_loaded);
2249
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/vino/scene.gltf").then(handle_scene_loaded);
2250
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/the_japanese_school_corridor/scene.gltf").then(handle_scene_loaded);
2251
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/virtual_gallery_scene_01/scene.gltf").then(handle_scene_loaded);
2252
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/grand_enigma_-_contemporary/scene.gltf").then(handle_scene_loaded);
2253
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/town3f/scene.gltf").then(handle_scene_loaded);
2254
-
2255
-
2256
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/solarpunk_village/scene.gltf").then(handle_scene_loaded);
2257
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/throne_room_-_medieval_fantasy_challenge/scene.gltf").then(handle_scene_loaded);
2258
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/medieval_alley/scene.gltf").then(handle_scene_loaded);
2259
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/low_poly_simple_city/scene.gltf").then(handle_scene_loaded);
2260
- // sample_load_gltf(scene, controller, "public/batch_2024_09_03/cartoon_two-story_villa_low_polygon_3d_model/scene.gltf").then(handle_scene_loaded);
2261
-
2262
- // sample_load_gltf(scene, controller, "public/batch_2024_12_23/steam_punk_engine/scene.gltf").then(handle_scene_loaded);
2263
- // sample_load_gltf(scene, controller, "public/batch_2024_12_23/material_ball_in_3d-coat/scene.gltf").then(handle_scene_loaded);
2264
-
2265
- //
2266
-
2267
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/93002f91aa764d9295f30d875599101d/scene.gltf").then(handle_scene_loaded);
2268
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/abandoned_house/scene.gltf").then(handle_scene_loaded);
2269
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/abandoned_mansion/scene.gltf").then(handle_scene_loaded);
2270
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/abandoned_water_canal/scene.gltf").then(handle_scene_loaded);
2271
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/bathroom_-_interior_design/scene.gltf").then(handle_scene_loaded);
2272
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/bianca_e_leo/scene.gltf").then(handle_scene_loaded);
2273
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/cartoon_bedroom/scene.gltf").then(handle_scene_loaded);
2274
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/ccity_building_set_1/scene.gltf").then(handle_scene_loaded);
2275
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/city/scene.gltf").then(handle_scene_loaded);
2276
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/crystal_crossroads_-_cc0_asset_pack/scene.gltf").then(handle_scene_loaded);
2277
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/cs_assault/scene.gltf").then(handle_scene_loaded);
2278
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/dae_diorama_-_forest_loner/scene.gltf").then(handle_scene_loaded);
2279
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/diorama/scene.gltf").then(handle_scene_loaded);
2280
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/exports_b/scene.gltf").then(handle_scene_loaded);
2281
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/factory_3d_model/scene.gltf").then(handle_scene_loaded);
2282
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/guitar_house/scene.gltf").then(handle_scene_loaded);
2283
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/hintze-hall_-_vr_tour/scene.gltf").then(handle_scene_loaded);
2284
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/house_on_the_hill/scene.gltf").then(handle_scene_loaded);
2285
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/huge_warehouse/scene.gltf").then(handle_scene_loaded);
2286
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/japan_street/scene.gltf").then(handle_scene_loaded);
2287
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/japanese_street_at_night/scene.gltf").then(handle_scene_loaded);
2288
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/japanese_town/scene.gltf").then(handle_scene_loaded);
2289
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/late_night_office/scene.gltf").then(handle_scene_loaded);
2290
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/lets_go_to_the_beach_-_beach_themed_diorama/scene.gltf").then(handle_scene_loaded);
2291
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/littlest_tokyo_sunset_-_3d_editor_challenge/scene.gltf").then(handle_scene_loaded);
2292
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/low_poly_city/scene.gltf").then(handle_scene_loaded);
2293
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/medieval_house_h2_annielihta/scene.gltf").then(handle_scene_loaded);
2294
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/medieval_house_stylized/scene.gltf").then(handle_scene_loaded);
2295
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/modern_city_block/scene.gltf").then(handle_scene_loaded);
2296
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/modular_house_cube_3_by_swanbuild_australia/scene.gltf").then(handle_scene_loaded);
2297
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/neighborhood_house_types/scene.gltf").then(handle_scene_loaded);
2298
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/nord_house/scene.gltf").then(handle_scene_loaded);
2299
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/old_building/scene.gltf").then(handle_scene_loaded);
2300
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/ordinary_behavior_2_-_television/scene.gltf").then(handle_scene_loaded);
2301
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/pripyat_palace_of_culture_energetik/scene.gltf").then(handle_scene_loaded);
2302
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/pub_interior/scene.gltf").then(handle_scene_loaded);
2303
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/pub_scene/scene.gltf").then(handle_scene_loaded);
2304
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/railway_station/scene.gltf").then(handle_scene_loaded);
2305
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/room/scene.gltf").then(handle_scene_loaded);
2306
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/sci-fi-corridor._texturing_challenge/scene.gltf").then(handle_scene_loaded);
2307
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/stylized_house/scene.gltf").then(handle_scene_loaded);
2308
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/subway_rtx/scene.gltf").then(handle_scene_loaded);
2309
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/terrain_dristibute_gn/scene.gltf").then(handle_scene_loaded);
2310
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/tetris_factory/scene.gltf").then(handle_scene_loaded);
2311
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/the_boys-vought_tower/scene.gltf").then(handle_scene_loaded);
2312
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/the_time_machine_house_final/scene.gltf").then(handle_scene_loaded);
2313
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/timber_truss_roof_structure_and_frame/scene.gltf").then(handle_scene_loaded);
2314
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/toninos_greek_temple/scene.gltf").then(handle_scene_loaded);
2315
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/ufa_state_tatar_theater_nur_building/scene.gltf").then(handle_scene_loaded);
2316
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/victorian_house/scene.gltf").then(handle_scene_loaded);
2317
-
2318
- // ----
2319
-
2320
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/blue_archive__-_sunaookamishiroko/scene.gltf").then(handle_scene_loaded);
2321
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/furry_2b_nier_automata_free/scene.gltf").then(handle_scene_loaded);
2322
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/furry_jane_doe_zenless_zone_zero/scene.gltf").then(handle_scene_loaded);
2323
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/herkules/scene.gltf").then(handle_scene_loaded);
2324
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/penny/scene.gltf").then(handle_scene_loaded);
2325
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/prix/scene.gltf").then(handle_scene_loaded);
2326
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/skull_priestess/scene.gltf").then(handle_scene_loaded);
2327
-
2328
- // ----
2329
-
2330
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/bt_mp9__gamerady_submachine_gun/scene.gltf").then(handle_scene_loaded);
2331
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/crashed_abandoned_car_-_game_ready/scene.gltf").then(handle_scene_loaded);
2332
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/girly_blossom_dagger/scene.gltf").then(handle_scene_loaded);
2333
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/knife/scene.gltf").then(handle_scene_loaded);
2334
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/lumen_vgs_pack/scene.gltf").then(handle_scene_loaded);
2335
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/nissan_skyline_gtr_r35/scene.gltf").then(handle_scene_loaded);
2336
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/revolver_magnum_357/scene.gltf").then(handle_scene_loaded);
2337
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/stylized_big_sword/scene.gltf").then(handle_scene_loaded);
2338
- // sample_load_gltf(scene, controller, "public/batch_2025_01_31/vroom_vroom/scene.gltf").then(handle_scene_loaded);
2339
-
2340
- // sample_load_gltf(scene, controller, "public/batch_2025_11_11/vilhelm_13_low_res_textures/scene.gltf").then(handle_scene_loaded);
2341
- // sample_load_gltf(scene, controller, "public/batch_2025_11_11/tanabata_evening_-_kyoto_inspired_city_scene/scene.gltf").then(handle_scene_loaded);
2342
- // sample_load_gltf(scene, controller, "public/batch_2025_11_11/sci-fi_hardcover_book_collection/scene.gltf")
2343
- // .then(handle_scene_loaded)
2344
- // .then(()=>{
2345
- // controller.from_transform(Transform.fromJSON({
2346
- // position : {x: -0.24771434758651253, y: 0.6393128179766008, z: -0.14694019411292505},
2347
- // rotation : {x: 0.6038964271574744, y: 0.3245558131927012, z: -0.29437013920059546, w: 0.6658219360581955},
2348
- // }))
2349
- // });
2350
-
2351
-
2352
- // stress_test_01(scene, controller).then(handle_scene_loaded);
2353
- // add_random_meshes(batch, geometry_dragon, 1); // stress-test
2354
-
2355
-
2356
- // make_animated_instances({
2357
- // batch: scene.instances,
2358
- // bounds: new AABB3(-10, 0, -6, 10, 10, 6) ,
2359
- // scale: new NumericInterval(0.1,0.2)
2360
- // });
2361
-
2362
- // controller.distanceLimits.max = 10000;
2363
- console.log(scene, camera);
2364
-
2365
- function visible() {
2366
- const visible = scene.instances.instances.filter(mesh => {
2367
-
2368
- return aabb3_intersects_frustum_degree(
2369
- ...mesh.bounding_box,
2370
- camera.frustum
2371
- ) > 0;
2372
-
2373
- });
2374
-
2375
- console.warn(visible);
2376
- }
2377
-
2378
- window.visible = visible;
2379
-
2380
- // ReSTIR DI — stochastic screen-bounded direct shadowing for local (point+spot)
2381
- // lights. Off = brute-force shadow-mapped froxel-cluster loop; on swaps in a
2382
- // separate compiled deferred shader variant that consumes the resampled,
2383
- // ray-traced result. Noisier per-frame for now (temporal/spatial reuse pending).
2384
- const lighting_folder = gui.addFolder("direct lighting");
2385
- lighting_folder
2386
- .add(renderer, "feature_restir_di_enabled")
2387
- .name("ReSTIR DI (point/spot)")
2388
- .onChange(() => renderer.indicate_view_change());
2389
- // MegaLights-style hybrid shadows: short screen-space contact trace then RT
2390
- // fallback. Off = pure ray-traced visibility (for A/B comparison).
2391
- lighting_folder
2392
- .add(renderer.restir_di, "use_screen_space_shadow")
2393
- .name("ReSTIR hybrid SS shadows")
2394
- .onChange(() => renderer.indicate_view_change());
2395
- // Tailored edge-aware à-trous spatial denoise of the resampled radiance.
2396
- // Off = raw (noisy) resolve, for A/B. Iterations grow the filter footprint.
2397
- lighting_folder
2398
- .add(renderer.restir_di, "denoise_enabled")
2399
- .name("ReSTIR denoise")
2400
- .onChange(() => renderer.indicate_view_change());
2401
- lighting_folder
2402
- .add(renderer.restir_di, "denoise_iterations", 0, 5, 1)
2403
- .name("ReSTIR denoise iters")
2404
- .onChange(() => renderer.indicate_view_change());
2405
-
2406
- const post_process_folder = gui.addFolder("post-processing");
2407
- post_process_folder.add(renderer, "feature_ssr_enabled").name("SSR");
2408
- post_process_folder.add(renderer, "feature_sharpening_enabled").name("Sharpen");
2409
- post_process_folder.add(renderer, "feature_automatic_exposure_enabled").name("Auto Exposure");
2410
- post_process_folder.add(renderer, "feature_ssao_enabled").name("SSAO");
2411
- post_process_folder.add(renderer, "feature_bloom_enabled").name("Bloom");
2412
- // the feature_taa_enabled setter resets temporal history itself
2413
- post_process_folder.add(renderer, "feature_taa_enabled").name("TAA");
2414
- // 3D volumetric temporal reprojection (GPUViewVolumetrics.taa_enabled, read via this global)
2415
- const volumetrics_taa_params = { enabled: true };
2416
- globalThis.__VOL_TAA_ENABLED = true;
2417
- post_process_folder.add(volumetrics_taa_params, "enabled").name("Volumetric TAA").onChange((v) => {
2418
- globalThis.__VOL_TAA_ENABLED = v;
2419
- renderer.indicate_view_change();
2420
- });
2421
- // RDR2-style far field: froxel grid covers [near, froxel_far]; beyond it the aerial pass
2422
- // ray-marches the scene volumes directly. High value (>= camera.far) -> grid covers all (no-op).
2423
- const volumetrics_far_params = { froxel_far: 5000 };
2424
- globalThis.__VOL_FROXEL_FAR = 5000;
2425
- post_process_folder.add(volumetrics_far_params, "froxel_far", 20, 5000, 10).name("Froxel far (RDR2)").onChange((v) => {
2426
- globalThis.__VOL_FROXEL_FAR = v;
2427
- renderer.indicate_view_change();
2428
- });
2429
- // Fog multiscatter tuning: fewer octaves / higher decay -> less shadow fill -> stronger silver
2430
- // lining (lit-rim-vs-core contrast). Defaults 6 / 0.5 match the engine constants.
2431
- const volumetrics_ms_params = { octaves: 6, extinction_decay: 0.5 };
2432
- globalThis.__VOL_MS_OCTAVES = 6;
2433
- globalThis.__VOL_MS_EXT_DECAY = 0.5;
2434
- post_process_folder.add(volumetrics_ms_params, "octaves", 1, 6, 1).name("Fog multiscatter octaves").onChange((v) => {
2435
- globalThis.__VOL_MS_OCTAVES = v;
2436
- renderer.indicate_view_change();
2437
- });
2438
- post_process_folder.add(volumetrics_ms_params, "extinction_decay", 0.1, 0.9, 0.05).name("Fog multiscatter decay").onChange((v) => {
2439
- globalThis.__VOL_MS_EXT_DECAY = v;
2440
- renderer.indicate_view_change();
2441
- });
2442
- post_process_folder.add(renderer, "feature_motion_blur_enabled").name("Motion Blur");
2443
- post_process_folder.add(renderer.motion_blur, "strength", 0.0, 6.0, 0.05).name("Motion Blur strength");
2444
- post_process_folder.add(renderer, "feature_velocity_debug_view").name("Velocity (debug view)");
2445
-
2446
- // In-app verification harnesses for the 2026-07 deep-review fixes (results go to the console).
2447
- const review_folder = gui.addFolder("review checks");
2448
- review_folder.add({
2449
- radix_sort: () => verify_radix_sort_one_sweep(renderer.graphics),
2450
- }, "radix_sort").name("C002: radix sort (console)");
2451
- review_folder.add({
2452
- transparent_slabs: () => {
2453
- // three overlapping transparent slabs, staggered in depth, next to the fog volume —
2454
- // for judging MBOIT depth ordering (C000) from both sides
2455
- const colors = [
2456
- new Color(1, 0.1, 0.1, 0.4),
2457
- new Color(0.1, 1, 0.1, 0.4),
2458
- new Color(0.2, 0.4, 1, 0.4),
2459
- ];
2460
- for (let i = 0; i < colors.length; i++) {
2461
- const material = new StandardShadeMaterial();
2462
- material.transparency_mode = TransparencyMode.Transparent;
2463
- material.diffuse_color.copy(colors[i]);
2464
- material.roughness_factor = 0.9;
2465
-
2466
- const mesh = Mesh.from(
2467
- make_box_geometry(6, 4, 0.1),
2468
- material,
2469
- Transform.fromJSON({
2470
- position: { x: -55 + (i - 1) * 1.2, y: 4, z: -5 + (i - 1) * 2.5 }
2471
- }).matrix
2472
- );
2473
- scene.add(mesh);
2474
- }
2475
- console.log("[C000] spawned 3 transparent slabs near (-55, 4, -5) — red (near z), green, blue (far z)");
2476
- },
2477
- }, "transparent_slabs").name("C000: spawn transparent slabs");
2478
- review_folder.close();
2479
-
2480
- // Depth of field. Out of the box: tick Enabled, leave the rest on
2481
- // defaults (autofocus + f/2.0) → tasteful shallow focus. There are two
2482
- // implementations behind the `Algorithm` switch: the ray-march DepthOfField
2483
- // (`renderer.dof`) and the gather-based Unreal-style DepthOfFieldU
2484
- // (`renderer.dof_unreal`); `renderer.dof_algorithm` picks which runs. They
2485
- // share almost the entire parameter surface, so the GUI drives a small
2486
- // proxy that fans every shared edit out to BOTH subsystems — flipping
2487
- // Algorithm is then a true A/B with identical settings. The feature toggle
2488
- // stays on the renderer; the focus mode is a tagged union behind the
2489
- // `focus*` helpers.
2490
- const dof_subsystems = [renderer.dof, renderer.dof_unreal];
2491
-
2492
- // Shared scalar params: read from the ray-march one (both stay in lockstep),
2493
- // write to all subsystems.
2494
- const dof_shared = {};
2495
- for (const prop of [
2496
- "f_number", "quality", "focus_region", "focus_smoothing",
2497
- "sensor_height_mm", "physical_gain", "blade_count", "blade_rotation", "highlight_boost",
2498
- ]) {
2499
- Object.defineProperty(dof_shared, prop, {
2500
- get() {
2501
- return renderer.dof[prop];
2502
- },
2503
- set(v) {
2504
- for (const s of dof_subsystems) {
2505
- s[prop] = v;
2506
- }
2507
- },
2508
- });
2509
- }
2510
-
2511
- const dof_folder = post_process_folder.addFolder("Depth of Field");
2512
- dof_folder.add(renderer, "feature_dof_enabled").name("Enabled");
2513
- dof_folder.add(renderer, "dof_algorithm", {
2514
- "Ray-march (Tiny Glade)": "raymarch",
2515
- "Gather (Unreal-style)": "unreal"
2516
- }).name("Algorithm");
2517
- dof_folder.add(dof_shared, "f_number", 1.2, 16.0, 0.1).name("Aperture (f-number)");
2518
- dof_folder.add(dof_shared, "quality", ["low", "medium", "high", "ultra"]).name("Quality");
2519
- dof_folder.add(renderer.dof, "march_mode", ["reference", "compute", "slice"]).name("March mode (ray-march only)");
2520
-
2521
- const dof_gui = { preset: "(none)", focus_mode: "auto", manual_distance: 8.0 };
2522
- dof_folder.add(dof_gui, "preset", ["(none)", ...DOF_PRESET_NAMES]).name("Preset").onChange((v) => {
2523
- if (v !== "(none)") {
2524
- for (const s of dof_subsystems) {
2525
- s.applyPreset(v);
2526
- }
2527
- }
2528
- });
2529
-
2530
- const dof_focus_folder = dof_folder.addFolder("Focus");
2531
- dof_focus_folder.add(dof_gui, "focus_mode", ["auto", "manual", "nearest", "centre point"]).name("Focus").onChange((v) => {
2532
- for (const s of dof_subsystems) {
2533
- if (v === "auto") {
2534
- s.focusAuto();
2535
- } else if (v === "manual") {
2536
- s.focusAtDistance(dof_gui.manual_distance);
2537
- } else if (v === "nearest") {
2538
- s.focusOnNearest();
2539
- } else if (v === "centre point") {
2540
- s.focusOnScreenPoint(0.5, 0.5);
2541
- }
2542
- }
2543
- });
2544
- dof_focus_folder.add(dof_gui, "manual_distance", 0.1, 200, 0.1).name("Manual distance").onChange((v) => {
2545
- if (dof_gui.focus_mode === "manual") {
2546
- for (const s of dof_subsystems) {
2547
- s.focusAtDistance(v);
2548
- }
2549
- }
2550
- });
2551
- dof_focus_folder.add(dof_shared, "focus_region", 0.0, 20.0, 0.1).name("Sharp band (region)");
2552
- dof_focus_folder.add(dof_shared, "focus_smoothing", 0.0, 1.0, 0.01).name("Focus smoothing");
2553
-
2554
- const dof_physical_folder = dof_folder.addFolder("Lens");
2555
- dof_physical_folder.add(dof_shared, "sensor_height_mm", 8.0, 70.0, 0.5).name("Sensor height (mm)");
2556
- dof_physical_folder.add(dof_shared, "physical_gain", 0.5, 8.0, 0.1).name("Exaggeration gain");
2557
- dof_physical_folder.close();
2558
-
2559
- const dof_advanced_folder = dof_folder.addFolder("Advanced");
2560
- dof_advanced_folder.add(dof_shared, "blade_count", 0, 9, 1).name("Aperture blades");
2561
- dof_advanced_folder.add(dof_shared, "blade_rotation", 0.0, Math.PI, 0.01).name("Blade rotation");
2562
- dof_advanced_folder.add(dof_shared, "highlight_boost", 0.0, 4.0, 0.05).name("Highlight boost");
2563
- dof_advanced_folder.add(renderer.dof_unreal, "near_blur_gain", 0.0, 3.0, 0.05).name("Near bleed (gather only)");
2564
- dof_advanced_folder.close();
2565
-
2566
- gui.add(renderer, "feature_shadows_enabled").name("Shadows");
2567
- gui.add(renderer, "feature_tetrahedron_point_shadows").name("Tetra Point Shadows");
2568
- gui.add(renderer, "indirect_lighting_mode", { IBL: 0, Brick4: 1, LPV: 2 }).name("Indirect Lighting");
2569
-
2570
- gui.add({
2571
- debug_frame() {
2572
- renderer.add_debug_frame();
2573
- }
2574
- }, 'debug_frame').name("Debug Frame");
2575
-
2576
- gui.add({
2577
- add_frame() {
2578
- frame_limit += 1
2579
- }
2580
- }, "add_frame");
2581
-
2582
- gui.add({
2583
- render_pause() {
2584
- frame_limit = frame_limit === 0 ? Infinity : 0;
2585
- }
2586
- }, "render_pause");
2587
-
2588
- gui.add({
2589
- async bake_lightmap() {
2590
-
2591
- await brick4_bake_for_scene({
2592
- scene,
2593
- renderer,
2594
- });
2595
- }
2596
- }, 'bake_lightmap').name("Bake Lightmap");
2597
-
2598
- gui.add({
2599
- async generate_lpv() {
2600
- scene.light_probe_volume.positions = lpv_generate_probe_locations2({ scene });
2601
- scene.light_probe_volume.build_mesh();
2602
-
2603
- // build_lpv_mesh(scene, new Vector3(16,16,16));
2604
- }
2605
- }, 'generate_lpv').name("Generate LPV");
2606
-
2607
- gui.add({
2608
- async serialize_scene() {
2609
- scene_optimize(scene);
2610
-
2611
- console.time('serialize');
2612
- const buffer = await serialize_scene({
2613
- scene,
2614
- include_blas: true
2615
- });
2616
- console.timeEnd('serialize');
2617
-
2618
- buffer.trim();
2619
-
2620
- downloadAsFile(buffer.data, 'scene.shade', 'application/octet-stream');
2621
-
2622
- console.log(`Scene size: ${buffer.position}`, buffer)
2623
- }
2624
- }, 'serialize_scene')
2625
-
2626
- const FRAME_RATE_LIMIT = Infinity;
2627
-
2628
- const drs = new DynamicResolutionScaling();
2629
- drs.get_scale = () => renderer.internal_resolution_scale;
2630
- drs.set_scale = (v) => {
2631
- renderer.internal_resolution_scale = v;
2632
- };
2633
- // drs.target_frame_time_s = 1 / FRAME_RATE_LIMIT;
2634
-
2635
- const resolution_folder = gui.addFolder("resolution");
2636
- resolution_folder.add(drs, 'enabled').name("Dynamic Resolution");
2637
- resolution_folder.add(renderer, 'internal_resolution_scale', 0.1, 1, 0.01).name("Scale").listen();
2638
- resolution_folder.add({
2639
- get percent() {
2640
- return `${(renderer.internal_resolution_scale * 100).toFixed(0)}%`;
2641
- }
2642
- }, 'percent').name("Current %").listen().disable();
2643
-
2644
-
2645
- renderer.onFrameDebug.add((frame_index, debug_data) => {
2646
- console.table(debug_data);
2647
- });
2648
-
2649
- create_frame_loop((time_delta_s, raw_refresh_time_s) => {
2650
- // apply size
2651
-
2652
- const w = window.innerWidth;
2653
- const h = window.innerHeight;
2654
-
2655
- const RESOLUTION_SCALE = 1;
2656
-
2657
- renderer.resize(w, h);
2658
- renderer.pixel_ratio = window.devicePixelRatio * RESOLUTION_SCALE;
2659
- camera.aspect = w / h;
2660
-
2661
- //
2662
- controller.update(time_delta_s);
2663
-
2664
-
2665
- if (frame_limit <= 0) {
2666
- return;
2667
- }
2668
-
2669
-
2670
- frame_limit--;
2671
-
2672
- // DRS must go first, because it affects rendering quality and records decisions
2673
- drs.notify_frame(raw_refresh_time_s);
2674
-
2675
- stats.begin();
2676
- renderer.render(camera, scene, time_delta_s);
2677
- stats.end();
2678
-
2679
- frame_perf.record(raw_refresh_time_s);
2680
-
2681
-
2682
- }, FRAME_RATE_LIMIT);
2683
- // }, 7);
2684
-
2685
-
2686
- window.addEventListener("keydown", (ev) => {
2687
-
2688
- if (ev.key === "p") {
2689
- ev.preventDefault();
2690
- enable_picker(document.body, camera, scene);
2691
- }
2692
-
2693
- });
2694
- };
2695
-
2696
-
2697
- document.body.style.margin = "0";
2698
- document.body.style.overflow = "hidden";
2699
-
2700
-
2701
- const canvas = document.createElement('canvas');
2702
- canvas.width = window.innerWidth;
2703
- canvas.height = window.innerHeight;
2704
- document.body.appendChild(canvas);
2705
-
2706
- const stats = new Stats();
2707
- document.body.appendChild(stats.domElement);
2708
-
2709
- const frame_perf = new FramePerformanceMonitor();
2710
- frame_perf.dom.style.position = 'fixed';
2711
- frame_perf.dom.style.left = '8px';
2712
- frame_perf.dom.style.bottom = '8px';
2713
- frame_perf.dom.style.zIndex = '1000';
2714
- document.body.appendChild(frame_perf.dom);
2715
-
2716
-
2717
- // DEBUG
2718
- globalThis.frame_perf = frame_perf;
2719
-
2720
- const gui = new GUI();
2721
-
2722
- // gui.hide(); // Hide the menu for production
2723
-
2724
- init({
2725
- canvas,
2726
- gui
2727
- });