@iwsdk/core 0.1.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 (326) hide show
  1. package/LICENSE +21 -0
  2. package/dist/asset/asset-manager.d.ts +72 -0
  3. package/dist/asset/asset-manager.d.ts.map +1 -0
  4. package/dist/asset/asset-manager.js +138 -0
  5. package/dist/asset/asset-manager.js.map +1 -0
  6. package/dist/asset/cache-manager.d.ts +44 -0
  7. package/dist/asset/cache-manager.d.ts.map +1 -0
  8. package/dist/asset/cache-manager.js +80 -0
  9. package/dist/asset/cache-manager.js.map +1 -0
  10. package/dist/asset/index.d.ts +9 -0
  11. package/dist/asset/index.d.ts.map +1 -0
  12. package/dist/asset/loaders/audio-loader.d.ts +21 -0
  13. package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
  14. package/dist/asset/loaders/audio-loader.js +57 -0
  15. package/dist/asset/loaders/audio-loader.js.map +1 -0
  16. package/dist/asset/loaders/gltf-loader.d.ts +33 -0
  17. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.js +79 -0
  19. package/dist/asset/loaders/gltf-loader.js.map +1 -0
  20. package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
  21. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
  22. package/dist/asset/loaders/hdr-texture-loader.js +65 -0
  23. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
  24. package/dist/asset/loaders/texture-loader.d.ts +21 -0
  25. package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
  26. package/dist/asset/loaders/texture-loader.js +57 -0
  27. package/dist/asset/loaders/texture-loader.js.map +1 -0
  28. package/dist/audio/audio-pool.d.ts +59 -0
  29. package/dist/audio/audio-pool.d.ts.map +1 -0
  30. package/dist/audio/audio-pool.js +105 -0
  31. package/dist/audio/audio-pool.js.map +1 -0
  32. package/dist/audio/audio-system.d.ts +326 -0
  33. package/dist/audio/audio-system.d.ts.map +1 -0
  34. package/dist/audio/audio-system.js +478 -0
  35. package/dist/audio/audio-system.js.map +1 -0
  36. package/dist/audio/audio-utils.d.ts +71 -0
  37. package/dist/audio/audio-utils.d.ts.map +1 -0
  38. package/dist/audio/audio-utils.js +145 -0
  39. package/dist/audio/audio-utils.js.map +1 -0
  40. package/dist/audio/audio.d.ts +178 -0
  41. package/dist/audio/audio.d.ts.map +1 -0
  42. package/dist/audio/audio.js +104 -0
  43. package/dist/audio/audio.js.map +1 -0
  44. package/dist/audio/index.d.ts +11 -0
  45. package/dist/audio/index.d.ts.map +1 -0
  46. package/dist/ecs/component-registry.d.ts +54 -0
  47. package/dist/ecs/component-registry.d.ts.map +1 -0
  48. package/dist/ecs/component-registry.js +86 -0
  49. package/dist/ecs/component-registry.js.map +1 -0
  50. package/dist/ecs/component.d.ts +12 -0
  51. package/dist/ecs/component.d.ts.map +1 -0
  52. package/dist/ecs/entity.d.ts +17 -0
  53. package/dist/ecs/entity.d.ts.map +1 -0
  54. package/dist/ecs/entity.js +13 -0
  55. package/dist/ecs/entity.js.map +1 -0
  56. package/dist/ecs/index.d.ts +12 -0
  57. package/dist/ecs/index.d.ts.map +1 -0
  58. package/dist/ecs/system.d.ts +70 -0
  59. package/dist/ecs/system.d.ts.map +1 -0
  60. package/dist/ecs/system.js +79 -0
  61. package/dist/ecs/system.js.map +1 -0
  62. package/dist/ecs/world.d.ts +101 -0
  63. package/dist/ecs/world.d.ts.map +1 -0
  64. package/dist/ecs/world.js +165 -0
  65. package/dist/ecs/world.js.map +1 -0
  66. package/dist/environment/dome-gradient.d.ts +39 -0
  67. package/dist/environment/dome-gradient.d.ts.map +1 -0
  68. package/dist/environment/dome-gradient.js +30 -0
  69. package/dist/environment/dome-gradient.js.map +1 -0
  70. package/dist/environment/dome-texture.d.ts +39 -0
  71. package/dist/environment/dome-texture.d.ts.map +1 -0
  72. package/dist/environment/dome-texture.js +30 -0
  73. package/dist/environment/dome-texture.js.map +1 -0
  74. package/dist/environment/environment-system.d.ts +82 -0
  75. package/dist/environment/environment-system.d.ts.map +1 -0
  76. package/dist/environment/environment-system.js +389 -0
  77. package/dist/environment/environment-system.js.map +1 -0
  78. package/dist/environment/gradient-environment.d.ts +37 -0
  79. package/dist/environment/gradient-environment.d.ts.map +1 -0
  80. package/dist/environment/gradient-environment.js +99 -0
  81. package/dist/environment/gradient-environment.js.map +1 -0
  82. package/dist/environment/ibl-gradient.d.ts +38 -0
  83. package/dist/environment/ibl-gradient.d.ts.map +1 -0
  84. package/dist/environment/ibl-gradient.js +29 -0
  85. package/dist/environment/ibl-gradient.js.map +1 -0
  86. package/dist/environment/ibl-texture.d.ts +36 -0
  87. package/dist/environment/ibl-texture.d.ts.map +1 -0
  88. package/dist/environment/ibl-texture.js +30 -0
  89. package/dist/environment/ibl-texture.js.map +1 -0
  90. package/dist/environment/index.d.ts +12 -0
  91. package/dist/environment/index.d.ts.map +1 -0
  92. package/dist/grab/distance-grabbable.d.ts +115 -0
  93. package/dist/grab/distance-grabbable.d.ts.map +1 -0
  94. package/dist/grab/distance-grabbable.js +102 -0
  95. package/dist/grab/distance-grabbable.js.map +1 -0
  96. package/dist/grab/grab-system.d.ts +320 -0
  97. package/dist/grab/grab-system.d.ts.map +1 -0
  98. package/dist/grab/grab-system.js +239 -0
  99. package/dist/grab/grab-system.js.map +1 -0
  100. package/dist/grab/handles.d.ts +43 -0
  101. package/dist/grab/handles.d.ts.map +1 -0
  102. package/dist/grab/handles.js +132 -0
  103. package/dist/grab/handles.js.map +1 -0
  104. package/dist/grab/index.d.ts +13 -0
  105. package/dist/grab/index.d.ts.map +1 -0
  106. package/dist/grab/index.js +23 -0
  107. package/dist/grab/index.js.map +1 -0
  108. package/dist/grab/one-hand-grabbable.d.ts +80 -0
  109. package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
  110. package/dist/grab/one-hand-grabbable.js +80 -0
  111. package/dist/grab/one-hand-grabbable.js.map +1 -0
  112. package/dist/grab/pointer-events-patch.d.ts +16 -0
  113. package/dist/grab/pointer-events-patch.d.ts.map +1 -0
  114. package/dist/grab/pointer-events-patch.js +223 -0
  115. package/dist/grab/pointer-events-patch.js.map +1 -0
  116. package/dist/grab/two-hands-grabbable.d.ts +103 -0
  117. package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
  118. package/dist/grab/two-hands-grabbable.js +100 -0
  119. package/dist/grab/two-hands-grabbable.js.map +1 -0
  120. package/dist/index.d.ts +27 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +82 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/init/index.d.ts +9 -0
  125. package/dist/init/index.d.ts.map +1 -0
  126. package/dist/init/world-initializer.d.ts +76 -0
  127. package/dist/init/world-initializer.d.ts.map +1 -0
  128. package/dist/init/world-initializer.js +403 -0
  129. package/dist/init/world-initializer.js.map +1 -0
  130. package/dist/init/xr.d.ts +87 -0
  131. package/dist/init/xr.d.ts.map +1 -0
  132. package/dist/init/xr.js +193 -0
  133. package/dist/init/xr.js.map +1 -0
  134. package/dist/input/index.d.ts +9 -0
  135. package/dist/input/index.d.ts.map +1 -0
  136. package/dist/input/input-system.d.ts +52 -0
  137. package/dist/input/input-system.d.ts.map +1 -0
  138. package/dist/input/input-system.js +176 -0
  139. package/dist/input/input-system.js.map +1 -0
  140. package/dist/input/state-tags.d.ts +56 -0
  141. package/dist/input/state-tags.d.ts.map +1 -0
  142. package/dist/input/state-tags.js +63 -0
  143. package/dist/input/state-tags.js.map +1 -0
  144. package/dist/level/index.d.ts +12 -0
  145. package/dist/level/index.d.ts.map +1 -0
  146. package/dist/level/level-entity-creator.d.ts +27 -0
  147. package/dist/level/level-entity-creator.d.ts.map +1 -0
  148. package/dist/level/level-entity-creator.js +110 -0
  149. package/dist/level/level-entity-creator.js.map +1 -0
  150. package/dist/level/level-glxf-importer.d.ts +22 -0
  151. package/dist/level/level-glxf-importer.d.ts.map +1 -0
  152. package/dist/level/level-glxf-importer.js +40 -0
  153. package/dist/level/level-glxf-importer.js.map +1 -0
  154. package/dist/level/level-root.d.ts +18 -0
  155. package/dist/level/level-root.d.ts.map +1 -0
  156. package/dist/level/level-root.js +25 -0
  157. package/dist/level/level-root.js.map +1 -0
  158. package/dist/level/level-system.d.ts +54 -0
  159. package/dist/level/level-system.d.ts.map +1 -0
  160. package/dist/level/level-system.js +134 -0
  161. package/dist/level/level-system.js.map +1 -0
  162. package/dist/level/level-tag.d.ts +25 -0
  163. package/dist/level/level-tag.d.ts.map +1 -0
  164. package/dist/level/level-tag.js +28 -0
  165. package/dist/level/level-tag.js.map +1 -0
  166. package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
  167. package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
  168. package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
  169. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
  170. package/dist/locomotion/index.d.ts +11 -0
  171. package/dist/locomotion/index.d.ts.map +1 -0
  172. package/dist/locomotion/locomotion.d.ts +239 -0
  173. package/dist/locomotion/locomotion.d.ts.map +1 -0
  174. package/dist/locomotion/locomotion.js +256 -0
  175. package/dist/locomotion/locomotion.js.map +1 -0
  176. package/dist/locomotion/materials/line.d.ts +24 -0
  177. package/dist/locomotion/materials/line.d.ts.map +1 -0
  178. package/dist/locomotion/materials/line.js +307 -0
  179. package/dist/locomotion/materials/line.js.map +1 -0
  180. package/dist/locomotion/slide.d.ts +76 -0
  181. package/dist/locomotion/slide.d.ts.map +1 -0
  182. package/dist/locomotion/slide.js +131 -0
  183. package/dist/locomotion/slide.js.map +1 -0
  184. package/dist/locomotion/teleport.d.ts +68 -0
  185. package/dist/locomotion/teleport.d.ts.map +1 -0
  186. package/dist/locomotion/teleport.js +150 -0
  187. package/dist/locomotion/teleport.js.map +1 -0
  188. package/dist/locomotion/turn.d.ts +77 -0
  189. package/dist/locomotion/turn.d.ts.map +1 -0
  190. package/dist/locomotion/turn.js +126 -0
  191. package/dist/locomotion/turn.js.map +1 -0
  192. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
  193. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
  194. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
  195. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
  196. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
  197. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
  198. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
  199. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
  200. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
  216. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
  217. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
  218. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
  219. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
  220. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
  224. package/dist/physics/index.d.ts +11 -0
  225. package/dist/physics/index.d.ts.map +1 -0
  226. package/dist/physics/physics-system.d.ts +314 -0
  227. package/dist/physics/physics-system.d.ts.map +1 -0
  228. package/dist/physics/physics-system.js +419 -0
  229. package/dist/physics/physics-system.js.map +1 -0
  230. package/dist/physics/physicsBody.d.ts +83 -0
  231. package/dist/physics/physicsBody.d.ts.map +1 -0
  232. package/dist/physics/physicsBody.js +60 -0
  233. package/dist/physics/physicsBody.js.map +1 -0
  234. package/dist/physics/physicsManipulation.d.ts +51 -0
  235. package/dist/physics/physicsManipulation.d.ts.map +1 -0
  236. package/dist/physics/physicsManipulation.js +46 -0
  237. package/dist/physics/physicsManipulation.js.map +1 -0
  238. package/dist/physics/physicsShape.d.ts +133 -0
  239. package/dist/physics/physicsShape.d.ts.map +1 -0
  240. package/dist/physics/physicsShape.js +97 -0
  241. package/dist/physics/physicsShape.js.map +1 -0
  242. package/dist/physics/utils.d.ts +21 -0
  243. package/dist/physics/utils.d.ts.map +1 -0
  244. package/dist/physics/utils.js +130 -0
  245. package/dist/physics/utils.js.map +1 -0
  246. package/dist/runtime/index.d.ts +8 -0
  247. package/dist/runtime/index.d.ts.map +1 -0
  248. package/dist/runtime/three.d.ts +8 -0
  249. package/dist/runtime/three.d.ts.map +1 -0
  250. package/dist/runtime/three.js +18 -0
  251. package/dist/runtime/three.js.map +1 -0
  252. package/dist/scene-understanding/anchor.d.ts +42 -0
  253. package/dist/scene-understanding/anchor.d.ts.map +1 -0
  254. package/dist/scene-understanding/anchor.js +45 -0
  255. package/dist/scene-understanding/anchor.js.map +1 -0
  256. package/dist/scene-understanding/index.d.ts +11 -0
  257. package/dist/scene-understanding/index.d.ts.map +1 -0
  258. package/dist/scene-understanding/mesh.d.ts +67 -0
  259. package/dist/scene-understanding/mesh.d.ts.map +1 -0
  260. package/dist/scene-understanding/mesh.js +55 -0
  261. package/dist/scene-understanding/mesh.js.map +1 -0
  262. package/dist/scene-understanding/plane.d.ts +39 -0
  263. package/dist/scene-understanding/plane.d.ts.map +1 -0
  264. package/dist/scene-understanding/plane.js +42 -0
  265. package/dist/scene-understanding/plane.js.map +1 -0
  266. package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
  267. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
  268. package/dist/scene-understanding/scene-understanding-system.js +342 -0
  269. package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
  270. package/dist/transform/index.d.ts +10 -0
  271. package/dist/transform/index.d.ts.map +1 -0
  272. package/dist/transform/synced-quaternion.d.ts +35 -0
  273. package/dist/transform/synced-quaternion.d.ts.map +1 -0
  274. package/dist/transform/synced-quaternion.js +128 -0
  275. package/dist/transform/synced-quaternion.js.map +1 -0
  276. package/dist/transform/synced-vector3.d.ts +34 -0
  277. package/dist/transform/synced-vector3.d.ts.map +1 -0
  278. package/dist/transform/synced-vector3.js +106 -0
  279. package/dist/transform/synced-vector3.js.map +1 -0
  280. package/dist/transform/transform.d.ts +100 -0
  281. package/dist/transform/transform.d.ts.map +1 -0
  282. package/dist/transform/transform.js +194 -0
  283. package/dist/transform/transform.js.map +1 -0
  284. package/dist/types/webxr-augmentations.d.ts +23 -0
  285. package/dist/types/webxr-augmentations.d.ts.map +1 -0
  286. package/dist/ui/document.d.ts +112 -0
  287. package/dist/ui/document.d.ts.map +1 -0
  288. package/dist/ui/document.js +298 -0
  289. package/dist/ui/document.js.map +1 -0
  290. package/dist/ui/follow.d.ts +197 -0
  291. package/dist/ui/follow.d.ts.map +1 -0
  292. package/dist/ui/follow.js +143 -0
  293. package/dist/ui/follow.js.map +1 -0
  294. package/dist/ui/index.d.ts +18 -0
  295. package/dist/ui/index.d.ts.map +1 -0
  296. package/dist/ui/screenspace.d.ts +219 -0
  297. package/dist/ui/screenspace.d.ts.map +1 -0
  298. package/dist/ui/screenspace.js +215 -0
  299. package/dist/ui/screenspace.js.map +1 -0
  300. package/dist/ui/ui.d.ts +209 -0
  301. package/dist/ui/ui.d.ts.map +1 -0
  302. package/dist/ui/ui.js +185 -0
  303. package/dist/ui/ui.js.map +1 -0
  304. package/dist/vendor/basis/README.md +46 -0
  305. package/dist/vendor/basis/basis_transcoder.js +19 -0
  306. package/dist/vendor/basis/basis_transcoder.wasm +0 -0
  307. package/dist/vendor/draco/README.md +32 -0
  308. package/dist/vendor/draco/draco_decoder.js +34 -0
  309. package/dist/vendor/draco/draco_decoder.wasm +0 -0
  310. package/dist/vendor/draco/draco_encoder.js +33 -0
  311. package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
  312. package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
  313. package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
  314. package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
  315. package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.d.ts.map +1 -0
  318. package/dist/version.js +4 -0
  319. package/dist/version.js.map +1 -0
  320. package/dist/visibility/index.d.ts +8 -0
  321. package/dist/visibility/index.d.ts.map +1 -0
  322. package/dist/visibility/visibility.d.ts +37 -0
  323. package/dist/visibility/visibility.d.ts.map +1 -0
  324. package/dist/visibility/visibility.js +52 -0
  325. package/dist/visibility/visibility.js.map +1 -0
  326. package/package.json +46 -0
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ declare const EnvironmentSystem_base: import("elics").SystemConstructor<import("elics").SystemSchema, {
8
+ domeTextures: {
9
+ required: import("elics").Component<{}>[];
10
+ };
11
+ domeGradients: {
12
+ required: import("elics").Component<{}>[];
13
+ };
14
+ iblTextures: {
15
+ required: import("elics").Component<{}>[];
16
+ };
17
+ iblGradients: {
18
+ required: import("elics").Component<{}>[];
19
+ };
20
+ }, import("../ecs/world.js").World, import("../ecs/system.js").System<import("elics").SystemSchema, {
21
+ domeTextures: {
22
+ required: import("elics").Component<{}>[];
23
+ };
24
+ domeGradients: {
25
+ required: import("elics").Component<{}>[];
26
+ };
27
+ iblTextures: {
28
+ required: import("elics").Component<{}>[];
29
+ };
30
+ iblGradients: {
31
+ required: import("elics").Component<{}>[];
32
+ };
33
+ }>>;
34
+ /**
35
+ * Unified background and image‑based lighting system.
36
+ *
37
+ * @remarks
38
+ * - Background is driven by {@link DomeTexture} (HDR/LDR equirect) or {@link DomeGradient} (procedural sphere) and writes to `scene.background`.
39
+ * - IBL is driven by {@link IBLTexture} ("room" or HDR/LDR equirect via PMREM) or {@link IBLGradient} (PMREM of a gradient scene) and writes to `scene.environment`.
40
+ * - Rotation and intensity hooks forward to `scene.backgroundRotation`, `scene.backgroundIntensity`, and `scene.environmentRotation`, `scene.environmentIntensity`.
41
+ * - In immersive AR, background visuals are hidden while environment lighting remains active.
42
+ * - PMREM targets are regenerated only when sources change; the dome mesh and geometry are reused.
43
+ *
44
+ * @category Environment & Lighting
45
+ * @example
46
+ * ```ts
47
+ * // Background: HDR skybox; IBL: Room environment
48
+ * const root = world.activeLevel!.value;
49
+ * root.addComponent(DomeTexture, { src: '/envs/sky.hdr', intensity: 0.9 });
50
+ * root.addComponent(IBLTexture, { src: 'room', intensity: 1.2 });
51
+ *
52
+ * // Rotate background 45° around Y; rotate IBL 90°
53
+ * root.setValue(DomeTexture, 'rotation', [0, Math.PI / 4, 0]);
54
+ * root.setValue(IBLTexture, 'rotation', [0, Math.PI / 2, 0]);
55
+ * root.setValue(DomeTexture, '_needsUpdate', true);
56
+ * root.setValue(IBLTexture, '_needsUpdate', true);
57
+ * ```
58
+ */
59
+ export declare class EnvironmentSystem extends EnvironmentSystem_base {
60
+ private state;
61
+ private pmrem;
62
+ private gradientGeometry?;
63
+ private tmpColor;
64
+ init(): void;
65
+ update(): void;
66
+ private processBackground;
67
+ private hasDomeTextureBackgroundChanged;
68
+ private updateDomeTextureBackground;
69
+ private updateBackgroundProps;
70
+ private updateDomeGradient;
71
+ private processIBL;
72
+ private hasIBLTextureChanged;
73
+ private updateIBLTexture;
74
+ private updateIBLProps;
75
+ private updateIBLGradient;
76
+ private setEnvironment;
77
+ private updateBackgroundForXRMode;
78
+ private ensureGradientDome;
79
+ private clearGradientDome;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=environment-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-system.d.ts","sourceRoot":"","sources":["../../src/environment/environment-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAkB,SAAQ,sBAKrC;IACA,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAI,IAAI,IAAI;IAiBZ,MAAM,IAAI,IAAI;YA4CA,iBAAiB;IAwB/B,OAAO,CAAC,+BAA+B;YASzB,2BAA2B;IAoBzC,OAAO,CAAC,qBAAqB;YAWf,kBAAkB;YA4BlB,UAAU;IAwBxB,OAAO,CAAC,oBAAoB;YASd,gBAAgB;IAwB9B,OAAO,CAAC,cAAc;YAaR,iBAAiB;IA+C/B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -0,0 +1,389 @@
1
+ import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';
2
+ import { AssetManager } from '../asset/asset-manager.js';
3
+ import { CacheManager } from '../asset/cache-manager.js';
4
+ import { createSystem } from '../ecs/system.js';
5
+ import '../ecs/world.js';
6
+ import 'elics';
7
+ import '../ecs/component-registry.js';
8
+ import '../level/level-system.js';
9
+ import '../level/level-tag.js';
10
+ import '@iwsdk/glxf';
11
+ import '@pmndrs/uikit';
12
+ import '@preact/signals-core';
13
+ import { Color, PMREMGenerator, EquirectangularReflectionMapping, Mesh, SphereGeometry, BackSide } from 'three';
14
+ import '../ui/ui.js';
15
+ import '../ui/follow.js';
16
+ import '../ui/screenspace.js';
17
+ import { LevelRoot } from '../level/level-root.js';
18
+ import '../runtime/three.js';
19
+ import { DomeGradient } from './dome-gradient.js';
20
+ import { DomeTexture } from './dome-texture.js';
21
+ import { GradientEnvironment, createGradientMaterial } from './gradient-environment.js';
22
+ import { IBLGradient } from './ibl-gradient.js';
23
+ import { IBLTexture } from './ibl-texture.js';
24
+
25
+ /**
26
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
27
+ *
28
+ * This source code is licensed under the MIT license found in the
29
+ * LICENSE file in the root directory of this source tree.
30
+ */
31
+ /**
32
+ * Unified background and image‑based lighting system.
33
+ *
34
+ * @remarks
35
+ * - Background is driven by {@link DomeTexture} (HDR/LDR equirect) or {@link DomeGradient} (procedural sphere) and writes to `scene.background`.
36
+ * - IBL is driven by {@link IBLTexture} ("room" or HDR/LDR equirect via PMREM) or {@link IBLGradient} (PMREM of a gradient scene) and writes to `scene.environment`.
37
+ * - Rotation and intensity hooks forward to `scene.backgroundRotation`, `scene.backgroundIntensity`, and `scene.environmentRotation`, `scene.environmentIntensity`.
38
+ * - In immersive AR, background visuals are hidden while environment lighting remains active.
39
+ * - PMREM targets are regenerated only when sources change; the dome mesh and geometry are reused.
40
+ *
41
+ * @category Environment & Lighting
42
+ * @example
43
+ * ```ts
44
+ * // Background: HDR skybox; IBL: Room environment
45
+ * const root = world.activeLevel!.value;
46
+ * root.addComponent(DomeTexture, { src: '/envs/sky.hdr', intensity: 0.9 });
47
+ * root.addComponent(IBLTexture, { src: 'room', intensity: 1.2 });
48
+ *
49
+ * // Rotate background 45° around Y; rotate IBL 90°
50
+ * root.setValue(DomeTexture, 'rotation', [0, Math.PI / 4, 0]);
51
+ * root.setValue(IBLTexture, 'rotation', [0, Math.PI / 2, 0]);
52
+ * root.setValue(DomeTexture, '_needsUpdate', true);
53
+ * root.setValue(IBLTexture, '_needsUpdate', true);
54
+ * ```
55
+ */
56
+ class EnvironmentSystem extends createSystem({
57
+ domeTextures: { required: [DomeTexture, LevelRoot] },
58
+ domeGradients: { required: [DomeGradient, LevelRoot] },
59
+ iblTextures: { required: [IBLTexture, LevelRoot] },
60
+ iblGradients: { required: [IBLGradient, LevelRoot] },
61
+ }) {
62
+ constructor() {
63
+ super(...arguments);
64
+ this.state = {};
65
+ this.tmpColor = new Color();
66
+ }
67
+ init() {
68
+ this.pmrem = new PMREMGenerator(this.renderer);
69
+ this.cleanupFuncs.push(() => {
70
+ var _a, _b;
71
+ this.pmrem.dispose();
72
+ (_a = this.state.environmentTarget) === null || _a === void 0 ? void 0 : _a.dispose();
73
+ this.state.environmentTarget = undefined;
74
+ this.clearGradientDome();
75
+ (_b = this.gradientGeometry) === null || _b === void 0 ? void 0 : _b.dispose();
76
+ this.gradientGeometry = undefined;
77
+ });
78
+ // XR background toggle
79
+ this.cleanupFuncs.push(this.visibilityState.subscribe(() => this.updateBackgroundForXRMode()));
80
+ }
81
+ update() {
82
+ var _a;
83
+ // Choose background source: DomeTexture > DomeGradient
84
+ let backgroundEntity;
85
+ for (const e of this.queries.domeTextures.entities) {
86
+ backgroundEntity = e;
87
+ break;
88
+ }
89
+ if (!backgroundEntity) {
90
+ for (const e of this.queries.domeGradients.entities) {
91
+ backgroundEntity = e;
92
+ break;
93
+ }
94
+ }
95
+ if (backgroundEntity) {
96
+ this.processBackground(backgroundEntity);
97
+ }
98
+ // Choose IBL source: IBLTexture > IBLGradient
99
+ let iblEntity;
100
+ for (const e of this.queries.iblTextures.entities) {
101
+ iblEntity = e;
102
+ break;
103
+ }
104
+ if (!iblEntity) {
105
+ for (const e of this.queries.iblGradients.entities) {
106
+ iblEntity = e;
107
+ break;
108
+ }
109
+ }
110
+ if (iblEntity) {
111
+ this.processIBL(iblEntity);
112
+ }
113
+ // Keep gradient dome centered and sized
114
+ if (this.state.gradientDome) {
115
+ this.state.gradientDome.position.copy(this.camera.position);
116
+ const r = Math.max(1e-3, (((_a = this.camera) === null || _a === void 0 ? void 0 : _a.far) || 1000) * 0.95);
117
+ this.state.gradientDome.scale.setScalar(r);
118
+ }
119
+ }
120
+ // Background handling
121
+ async processBackground(entity) {
122
+ try {
123
+ if (entity.hasComponent(DomeTexture)) {
124
+ const needs = entity.getValue(DomeTexture, '_needsUpdate');
125
+ if (needs) {
126
+ const changed = this.hasDomeTextureBackgroundChanged(entity);
127
+ if (changed) {
128
+ await this.updateDomeTextureBackground(entity);
129
+ }
130
+ this.updateBackgroundProps(entity);
131
+ entity.setValue(DomeTexture, '_needsUpdate', false);
132
+ }
133
+ }
134
+ else if (entity.hasComponent(DomeGradient)) {
135
+ const needs = entity.getValue(DomeGradient, '_needsUpdate');
136
+ if (needs) {
137
+ await this.updateDomeGradient(entity, /*forIBL*/ false);
138
+ entity.setValue(DomeGradient, '_needsUpdate', false);
139
+ }
140
+ }
141
+ }
142
+ catch (e) {
143
+ console.error('[EnvironmentSystem] Failed background update:', e);
144
+ }
145
+ }
146
+ hasDomeTextureBackgroundChanged(entity) {
147
+ const src = entity.getValue(DomeTexture, 'src') || '';
148
+ const changed = src !== this.state.backgroundSource;
149
+ if (changed) {
150
+ this.state.backgroundSource = src;
151
+ }
152
+ return changed;
153
+ }
154
+ async updateDomeTextureBackground(entity) {
155
+ const src = entity.getValue(DomeTexture, 'src') || '';
156
+ if (!src) {
157
+ this.scene.background = null;
158
+ return;
159
+ }
160
+ const lower = src.toLowerCase();
161
+ const isHDR = lower.endsWith('.hdr') || lower.endsWith('.exr');
162
+ const url = CacheManager.resolveUrl(src);
163
+ const texture = isHDR
164
+ ? await AssetManager.loadHDRTexture(url)
165
+ : await AssetManager.loadTexture(url);
166
+ this.state.backgroundTexture = texture;
167
+ // For LDR equirect backgrounds, ensure world-locked mapping; HDR/EXR already mapped by loader
168
+ if (!isHDR) {
169
+ texture.mapping = EquirectangularReflectionMapping;
170
+ }
171
+ this.scene.background = texture;
172
+ }
173
+ updateBackgroundProps(entity) {
174
+ var _a, _b, _c;
175
+ const blurriness = (_a = entity.getValue(DomeTexture, 'blurriness')) !== null && _a !== void 0 ? _a : 0;
176
+ const intensity = (_b = entity.getValue(DomeTexture, 'intensity')) !== null && _b !== void 0 ? _b : 1;
177
+ const rot = entity.getVectorView(DomeTexture, 'rotation');
178
+ this.scene.backgroundBlurriness = blurriness;
179
+ this.scene.backgroundIntensity = intensity;
180
+ if (rot) {
181
+ (_c = this.scene.backgroundRotation) === null || _c === void 0 ? void 0 : _c.set(rot[0] || 0, rot[1] || 0, rot[2] || 0);
182
+ }
183
+ }
184
+ async updateDomeGradient(entity, forIBL) {
185
+ const skyV = entity.getVectorView(DomeGradient, 'sky');
186
+ const equatorV = entity.getVectorView(DomeGradient, 'equator');
187
+ const groundV = entity.getVectorView(DomeGradient, 'ground');
188
+ const intensity = entity.getValue(DomeGradient, 'intensity') || 1.0;
189
+ const skyHex = this.tmpColor.setRGB(skyV[0], skyV[1], skyV[2]).getHex();
190
+ const equatorHex = this.tmpColor
191
+ .setRGB(equatorV[0], equatorV[1], equatorV[2])
192
+ .getHex();
193
+ const groundHex = this.tmpColor
194
+ .setRGB(groundV[0], groundV[1], groundV[2])
195
+ .getHex();
196
+ if (!forIBL) {
197
+ // Background gradient dome mesh
198
+ this.ensureGradientDome(skyHex, equatorHex, groundHex, intensity);
199
+ // Ensure correct visibility for AR sessions (hide in AR)
200
+ if (this.state.gradientDome) {
201
+ this.state.gradientDome.visible = !this.state.isAR;
202
+ }
203
+ }
204
+ }
205
+ // IBL handling
206
+ async processIBL(entity) {
207
+ try {
208
+ if (entity.hasComponent(IBLTexture)) {
209
+ const needs = entity.getValue(IBLTexture, '_needsUpdate');
210
+ if (needs) {
211
+ const changed = this.hasIBLTextureChanged(entity);
212
+ if (changed) {
213
+ await this.updateIBLTexture(entity);
214
+ }
215
+ this.updateIBLProps(entity);
216
+ entity.setValue(IBLTexture, '_needsUpdate', false);
217
+ }
218
+ }
219
+ else if (entity.hasComponent(IBLGradient)) {
220
+ const needs = entity.getValue(IBLGradient, '_needsUpdate');
221
+ if (needs) {
222
+ await this.updateIBLGradient(entity);
223
+ entity.setValue(IBLGradient, '_needsUpdate', false);
224
+ }
225
+ }
226
+ }
227
+ catch (e) {
228
+ console.error('[EnvironmentSystem] Failed IBL update:', e);
229
+ }
230
+ }
231
+ hasIBLTextureChanged(entity) {
232
+ const src = entity.getValue(IBLTexture, 'src') || '';
233
+ const changed = src !== this.state.environmentSource;
234
+ if (changed) {
235
+ this.state.environmentSource = src;
236
+ }
237
+ return changed;
238
+ }
239
+ async updateIBLTexture(entity) {
240
+ var _a;
241
+ const src = (entity.getValue(IBLTexture, 'src') || '').trim();
242
+ if (!src) {
243
+ this.setEnvironment(null);
244
+ return;
245
+ }
246
+ if (src === 'room') {
247
+ // Build RoomEnvironment scene and PMREM it
248
+ const room = new RoomEnvironment();
249
+ const target = this.pmrem.fromScene(room);
250
+ (_a = room.dispose) === null || _a === void 0 ? void 0 : _a.call(room);
251
+ this.setEnvironment(target);
252
+ return;
253
+ }
254
+ const lower2 = src.toLowerCase();
255
+ const isHDR = lower2.endsWith('.hdr') || lower2.endsWith('.exr');
256
+ const url = CacheManager.resolveUrl(src);
257
+ const tex = isHDR
258
+ ? await AssetManager.loadHDRTexture(url)
259
+ : await AssetManager.loadTexture(url);
260
+ const target = this.pmrem.fromEquirectangular(tex);
261
+ this.setEnvironment(target);
262
+ }
263
+ updateIBLProps(entity) {
264
+ var _a, _b;
265
+ const intensity = (_a = entity.getValue(IBLTexture, 'intensity')) !== null && _a !== void 0 ? _a : 1;
266
+ const rot = entity.getVectorView(IBLTexture, 'rotation');
267
+ this.scene.environmentIntensity = intensity;
268
+ if (rot) {
269
+ (_b = this.scene.environmentRotation) === null || _b === void 0 ? void 0 : _b.set(rot[0] || 0, rot[1] || 0, rot[2] || 0);
270
+ }
271
+ }
272
+ async updateIBLGradient(entity) {
273
+ var _a;
274
+ const skyV = entity.getVectorView(IBLGradient, 'sky');
275
+ const equatorV = entity.getVectorView(IBLGradient, 'equator');
276
+ const groundV = entity.getVectorView(IBLGradient, 'ground');
277
+ const intensity = entity.getValue(IBLGradient, 'intensity') || 1.0;
278
+ const skyHex = new Color().setRGB(skyV[0], skyV[1], skyV[2]).getHex();
279
+ const equatorHex = new Color(equatorV[0], equatorV[1], equatorV[2]).getHex();
280
+ const groundHex = new Color(groundV[0], groundV[1], groundV[2]).getHex();
281
+ let gradientScene = this.state.gradientEnvironmentScene;
282
+ if (!gradientScene) {
283
+ gradientScene = new GradientEnvironment(skyHex, equatorHex, groundHex, intensity);
284
+ this.state.gradientEnvironmentScene = gradientScene;
285
+ // Cache mesh for uniform updates
286
+ this.state.gradientEnvironmentMesh = gradientScene.children.find((o) => o instanceof Mesh);
287
+ }
288
+ else {
289
+ const mat = (_a = this.state.gradientEnvironmentMesh) === null || _a === void 0 ? void 0 : _a.material;
290
+ if (mat) {
291
+ mat.uniforms.skyColor.value.setHex(skyHex).multiplyScalar(intensity);
292
+ mat.uniforms.equatorColor.value
293
+ .setHex(equatorHex)
294
+ .multiplyScalar(intensity);
295
+ mat.uniforms.groundColor.value
296
+ .setHex(groundHex)
297
+ .multiplyScalar(intensity);
298
+ }
299
+ }
300
+ const target = this.pmrem.fromScene(gradientScene);
301
+ this.setEnvironment(target);
302
+ // Apply IBL intensity for gradient as well
303
+ this.scene.environmentIntensity = intensity;
304
+ }
305
+ setEnvironment(target) {
306
+ var _a;
307
+ (_a = this.state.environmentTarget) === null || _a === void 0 ? void 0 : _a.dispose();
308
+ this.state.environmentTarget = undefined;
309
+ if (target) {
310
+ this.state.environmentTarget = target;
311
+ this.scene.environment = target.texture;
312
+ }
313
+ else {
314
+ this.scene.environment = null;
315
+ }
316
+ }
317
+ // XR background handling
318
+ updateBackgroundForXRMode() {
319
+ var _a, _b, _c;
320
+ const session = (_c = (_b = (_a = this.xrManager).getSession) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.world.session;
321
+ const blend = session === null || session === void 0 ? void 0 : session.environmentBlendMode;
322
+ const isAR = blend === 'alpha-blend' ||
323
+ blend === 'additive' ||
324
+ blend === 'subtractive';
325
+ if (isAR === this.state.isAR) {
326
+ return;
327
+ }
328
+ this.state.isAR = isAR;
329
+ if (isAR) {
330
+ if (this.scene.background !== null &&
331
+ this.state.savedBackground === undefined) {
332
+ this.state.savedBackground = this.scene.background;
333
+ this.scene.background = null;
334
+ }
335
+ // Hide procedural gradient dome in AR as well
336
+ if (this.state.gradientDome) {
337
+ this.state.gradientDome.visible = false;
338
+ }
339
+ }
340
+ else if (this.state.savedBackground !== undefined) {
341
+ this.scene.background = this.state.savedBackground;
342
+ this.state.savedBackground = undefined;
343
+ // Restore gradient dome visibility when exiting AR
344
+ if (this.state.gradientDome) {
345
+ this.state.gradientDome.visible = true;
346
+ }
347
+ }
348
+ }
349
+ // Gradient dome mesh utilities (background)
350
+ ensureGradientDome(skyHex, equatorHex, groundHex, intensity) {
351
+ var _a;
352
+ if (!this.gradientGeometry) {
353
+ this.gradientGeometry = new SphereGeometry(1, 32, 15);
354
+ }
355
+ if (!this.state.gradientDome) {
356
+ const material = createGradientMaterial(skyHex, equatorHex, groundHex, intensity, BackSide);
357
+ const dome = new Mesh(this.gradientGeometry, material);
358
+ dome.scale.setScalar(Math.max(1e-3, (((_a = this.camera) === null || _a === void 0 ? void 0 : _a.far) || 1000) * 0.95));
359
+ dome.renderOrder = -1e9;
360
+ dome.frustumCulled = false;
361
+ this.scene.add(dome);
362
+ this.state.gradientDome = dome;
363
+ }
364
+ else {
365
+ const mat = this.state.gradientDome.material;
366
+ mat.uniforms.skyColor.value.setHex(skyHex).multiplyScalar(intensity);
367
+ mat.uniforms.equatorColor.value
368
+ .setHex(equatorHex)
369
+ .multiplyScalar(intensity);
370
+ mat.uniforms.groundColor.value
371
+ .setHex(groundHex)
372
+ .multiplyScalar(intensity);
373
+ }
374
+ }
375
+ clearGradientDome() {
376
+ if (this.state.gradientDome) {
377
+ this.state.gradientDome.removeFromParent();
378
+ this.state.gradientDome.material.dispose();
379
+ this.state.gradientDome = undefined;
380
+ }
381
+ if (this.state.gradientEnvironmentScene) {
382
+ this.state.gradientEnvironmentScene.dispose();
383
+ this.state.gradientEnvironmentScene = undefined;
384
+ }
385
+ }
386
+ }
387
+
388
+ export { EnvironmentSystem };
389
+ //# sourceMappingURL=environment-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-system.js","sources":["../../src/environment/environment-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { BackSide, FrontSide, Scene, ShaderMaterial } from '../runtime/index.js';
8
+ /**
9
+ * Gradient shader uniforms and code used for background domes and environments.
10
+ * @category Environment & Lighting
11
+ */
12
+ export declare const GRADIENT_SHADER: {
13
+ vertexShader: string;
14
+ fragmentShader: string;
15
+ };
16
+ /**
17
+ * Create a gradient material with Unity‑style sky/equator/ground colors.
18
+ * @param skyHex Sky color as hex.
19
+ * @param equatorHex Equator color as hex.
20
+ * @param groundHex Ground color as hex.
21
+ * @param intensity Intensity multiplier applied to all colors.
22
+ * @param side Material side (BackSide for background dome; FrontSide for env scene).
23
+ * @category Environment & Lighting
24
+ */
25
+ export declare function createGradientMaterial(skyHex: number, equatorHex: number, groundHex: number, intensity: number, side?: typeof BackSide | typeof FrontSide): ShaderMaterial;
26
+ /**
27
+ * A Scene containing a gradient sphere for PMREM processing.
28
+ *
29
+ * @remarks
30
+ * Uses the same shader as the background dome to ensure coherent lighting.
31
+ * @category Environment & Lighting
32
+ */
33
+ export declare class GradientEnvironment extends Scene {
34
+ constructor(skyHex?: number, equatorHex?: number, groundHex?: number, intensity?: number);
35
+ dispose(): void;
36
+ }
37
+ //# sourceMappingURL=gradient-environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-environment.d.ts","sourceRoot":"","sources":["../../src/environment/gradient-environment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EAER,SAAS,EAET,KAAK,EACL,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe;;;CA8B3B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,OAAO,QAAQ,GAAG,OAAO,SAAqB,GACnD,cAAc,CAahB;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAE1C,MAAM,GAAE,MAAiB,EACzB,UAAU,GAAE,MAAiB,EAC7B,SAAS,GAAE,MAAiB,EAC5B,SAAS,GAAE,MAAY;IAkBzB,OAAO,IAAI,IAAI;CAchB"}
@@ -0,0 +1,99 @@
1
+ import '../runtime/three.js';
2
+ import { FrontSide, Scene, SphereGeometry, Mesh, ShaderMaterial, Color, BackSide } from 'three';
3
+
4
+ /**
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ /**
11
+ * Gradient shader uniforms and code used for background domes and environments.
12
+ * @category Environment & Lighting
13
+ */
14
+ const GRADIENT_SHADER = {
15
+ vertexShader: /* glsl */ `
16
+ varying vec3 vWorldPosition;
17
+ void main() {
18
+ vec4 worldPosition = modelMatrix * vec4(position, 1.0);
19
+ vWorldPosition = worldPosition.xyz;
20
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
21
+ }
22
+ `,
23
+ fragmentShader: /* glsl */ `
24
+ uniform vec3 skyColor;
25
+ uniform vec3 equatorColor;
26
+ uniform vec3 groundColor;
27
+ varying vec3 vWorldPosition;
28
+
29
+ void main() {
30
+ float h = normalize(vWorldPosition).y;
31
+ vec3 color;
32
+
33
+ if (h > 0.0) {
34
+ // Sky to equator interpolation
35
+ color = mix(equatorColor, skyColor, h);
36
+ } else {
37
+ // Equator to ground interpolation
38
+ color = mix(equatorColor, groundColor, -h);
39
+ }
40
+
41
+ gl_FragColor = vec4(color, 1.0);
42
+ }
43
+ `,
44
+ };
45
+ /**
46
+ * Create a gradient material with Unity‑style sky/equator/ground colors.
47
+ * @param skyHex Sky color as hex.
48
+ * @param equatorHex Equator color as hex.
49
+ * @param groundHex Ground color as hex.
50
+ * @param intensity Intensity multiplier applied to all colors.
51
+ * @param side Material side (BackSide for background dome; FrontSide for env scene).
52
+ * @category Environment & Lighting
53
+ */
54
+ function createGradientMaterial(skyHex, equatorHex, groundHex, intensity, side = FrontSide) {
55
+ return new ShaderMaterial({
56
+ uniforms: {
57
+ skyColor: { value: new Color(skyHex).multiplyScalar(intensity) },
58
+ equatorColor: { value: new Color(equatorHex).multiplyScalar(intensity) },
59
+ groundColor: { value: new Color(groundHex).multiplyScalar(intensity) },
60
+ },
61
+ vertexShader: GRADIENT_SHADER.vertexShader,
62
+ fragmentShader: GRADIENT_SHADER.fragmentShader,
63
+ side,
64
+ depthWrite: side === BackSide ? false : true,
65
+ depthTest: side === BackSide ? false : true,
66
+ });
67
+ }
68
+ /**
69
+ * A Scene containing a gradient sphere for PMREM processing.
70
+ *
71
+ * @remarks
72
+ * Uses the same shader as the background dome to ensure coherent lighting.
73
+ * @category Environment & Lighting
74
+ */
75
+ class GradientEnvironment extends Scene {
76
+ constructor(skyHex = 0x87ceeb, equatorHex = 0xffa500, groundHex = 0x228b22, intensity = 1.0) {
77
+ super();
78
+ // Create gradient sphere using shared gradient material
79
+ const geometry = new SphereGeometry(100, 32, 15);
80
+ const material = createGradientMaterial(skyHex, equatorHex, groundHex, intensity, BackSide);
81
+ const gradientSphere = new Mesh(geometry, material);
82
+ this.add(gradientSphere);
83
+ }
84
+ dispose() {
85
+ const resources = new Set();
86
+ this.traverse((object) => {
87
+ if (object.isMesh) {
88
+ resources.add(object.geometry);
89
+ resources.add(object.material);
90
+ }
91
+ });
92
+ for (const resource of resources) {
93
+ resource.dispose();
94
+ }
95
+ }
96
+ }
97
+
98
+ export { GRADIENT_SHADER, GradientEnvironment, createGradientMaterial };
99
+ //# sourceMappingURL=gradient-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-environment.js","sources":["../../src/environment/gradient-environment.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAYH;;;AAGG;AACI,MAAM,eAAe,GAAG;IAC7B,YAAY,aAAa;;;;;;;AAOxB,EAAA,CAAA;IACD,cAAc,aAAa;;;;;;;;;;;;;;;;;;;;AAoB1B,EAAA,CAAA;;AAGH;;;;;;;;AAQG;AACG,SAAU,sBAAsB,CACpC,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,IAAA,GAA2C,SAAS,EAAA;IAEpD,OAAO,IAAI,cAAc,CAAC;AACxB,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAChE,YAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACxE,YAAA,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACvE,SAAA;QACD,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,IAAI;QACJ,UAAU,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;QAC5C,SAAS,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;AAC5C,KAAA,CAAC;AACJ;AAEA;;;;;;AAMG;AACG,MAAO,mBAAoB,SAAQ,KAAK,CAAA;IAC5C,WAAA,CACE,MAAA,GAAiB,QAAQ,EACzB,UAAA,GAAqB,QAAQ,EAC7B,SAAA,GAAoB,QAAQ,EAC5B,SAAA,GAAoB,GAAG,EAAA;AAEvB,QAAA,KAAK,EAAE;;QAGP,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,sBAAsB,CACrC,MAAM,EACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,CACT;QAED,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAO;AAEhC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAW,KAAI;AAC5B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,QAAQ,CAAC,OAAO,EAAE;QACpB;IACF;AACD;;;;"}