angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261

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 (397) hide show
  1. package/README.md +62 -4
  2. package/abstractions/README.md +278 -2
  3. package/abstractions/index.d.ts +11 -6
  4. package/abstractions/lib/catmull-rom-line.d.ts +648 -0
  5. package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
  6. package/abstractions/lib/edges.d.ts +850 -0
  7. package/abstractions/lib/gradient-texture.d.ts +24 -0
  8. package/abstractions/lib/grid.d.ts +339 -0
  9. package/abstractions/lib/helper.d.ts +25 -0
  10. package/abstractions/lib/line.d.ts +41 -0
  11. package/abstractions/lib/prism-geometry.d.ts +30 -0
  12. package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
  13. package/abstractions/lib/text-3d.d.ts +338 -0
  14. package/abstractions/lib/text.d.ts +55 -0
  15. package/cameras/README.md +91 -2
  16. package/cameras/index.d.ts +4 -4
  17. package/cameras/lib/camera-content.d.ts +10 -0
  18. package/cameras/lib/cube-camera.d.ts +38 -0
  19. package/cameras/lib/orthographic-camera.d.ts +40 -0
  20. package/cameras/lib/perspective-camera.d.ts +36 -0
  21. package/controls/README.md +95 -2
  22. package/controls/index.d.ts +2 -1
  23. package/controls/lib/camera-controls.d.ts +31 -0
  24. package/controls/lib/orbit-controls.d.ts +38 -0
  25. package/esm2022/abstractions/index.mjs +12 -7
  26. package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
  27. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
  28. package/esm2022/abstractions/lib/edges.mjs +70 -0
  29. package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
  30. package/esm2022/abstractions/lib/grid.mjs +103 -0
  31. package/esm2022/abstractions/lib/helper.mjs +80 -0
  32. package/esm2022/abstractions/lib/line.mjs +123 -0
  33. package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
  34. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
  35. package/esm2022/abstractions/lib/text-3d.mjs +98 -0
  36. package/esm2022/abstractions/lib/text.mjs +92 -0
  37. package/esm2022/cameras/index.mjs +5 -5
  38. package/esm2022/cameras/lib/camera-content.mjs +14 -0
  39. package/esm2022/cameras/lib/cube-camera.mjs +111 -0
  40. package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
  42. package/esm2022/controls/index.mjs +3 -2
  43. package/esm2022/controls/lib/camera-controls.mjs +127 -0
  44. package/esm2022/controls/lib/orbit-controls.mjs +126 -0
  45. package/esm2022/loaders/index.mjs +6 -5
  46. package/esm2022/loaders/lib/font-loader.mjs +49 -0
  47. package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
  48. package/esm2022/loaders/lib/loader.mjs +109 -0
  49. package/esm2022/loaders/lib/progress.mjs +51 -0
  50. package/esm2022/loaders/lib/texture-loader.mjs +32 -0
  51. package/esm2022/materials/index.mjs +7 -7
  52. package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
  53. package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
  54. package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
  55. package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
  56. package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
  57. package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
  58. package/esm2022/misc/index.mjs +10 -14
  59. package/esm2022/misc/lib/animations.mjs +74 -0
  60. package/esm2022/misc/lib/bake-shadows.mjs +26 -0
  61. package/esm2022/misc/lib/computed-attribute.mjs +56 -0
  62. package/esm2022/misc/lib/constants.mjs +5 -0
  63. package/esm2022/misc/lib/decal.mjs +135 -0
  64. package/esm2022/misc/lib/deprecated.mjs +15 -0
  65. package/esm2022/misc/lib/depth-buffer.mjs +39 -0
  66. package/esm2022/misc/lib/fbo.mjs +89 -0
  67. package/esm2022/misc/lib/sampler.mjs +121 -0
  68. package/esm2022/shaders/index.mjs +3 -18
  69. package/esm2022/shaders/lib/grid-material.mjs +81 -0
  70. package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
  71. package/esm2022/staging/index.mjs +19 -22
  72. package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
  73. package/esm2022/staging/lib/backdrop.mjs +73 -0
  74. package/esm2022/staging/lib/bb-anchor.mjs +58 -0
  75. package/esm2022/staging/lib/bounds.mjs +286 -0
  76. package/esm2022/staging/lib/camera-shake.mjs +69 -0
  77. package/esm2022/staging/lib/caustics.mjs +188 -0
  78. package/esm2022/staging/lib/center.mjs +113 -0
  79. package/esm2022/staging/lib/contact-shadows.mjs +201 -0
  80. package/esm2022/staging/lib/environment.mjs +465 -0
  81. package/esm2022/staging/lib/float.mjs +60 -0
  82. package/esm2022/staging/lib/lightformer.mjs +107 -0
  83. package/esm2022/staging/lib/matcap-texture.mjs +81 -0
  84. package/esm2022/staging/lib/normal-texture.mjs +85 -0
  85. package/esm2022/staging/lib/randomized-lights.mjs +104 -0
  86. package/esm2022/staging/lib/render-texture.mjs +213 -0
  87. package/esm2022/staging/lib/sky.mjs +86 -0
  88. package/esm2022/staging/lib/spot-light.mjs +450 -0
  89. package/esm2022/staging/lib/stage.mjs +236 -0
  90. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
  91. package/esm2022/vanilla-exports/index.mjs +3 -0
  92. package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +260 -307
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +174 -110
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-loaders.mjs +151 -129
  99. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  100. package/fesm2022/angular-three-soba-materials.mjs +511 -764
  101. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  102. package/fesm2022/angular-three-soba-misc.mjs +405 -2149
  103. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
  105. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
  107. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
  109. package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
  110. package/loaders/README.md +130 -2
  111. package/loaders/index.d.ts +5 -4
  112. package/loaders/lib/font-loader.d.ts +27 -0
  113. package/loaders/lib/gltf-loader.d.ts +21 -0
  114. package/loaders/lib/loader.d.ts +29 -0
  115. package/loaders/lib/progress.d.ts +9 -0
  116. package/loaders/lib/texture-loader.d.ts +13 -0
  117. package/materials/README.md +160 -2
  118. package/materials/index.d.ts +6 -6
  119. package/materials/lib/custom-shader-material.d.ts +19 -0
  120. package/materials/lib/mesh-distort-material.d.ts +18 -0
  121. package/materials/lib/mesh-reflector-material.d.ts +50 -0
  122. package/materials/lib/mesh-refraction-material.d.ts +42 -0
  123. package/materials/lib/mesh-transmission-material.d.ts +77 -0
  124. package/materials/lib/mesh-wobble-material.d.ts +15 -0
  125. package/metadata.json +1 -1
  126. package/misc/README.md +217 -2
  127. package/misc/index.d.ts +9 -13
  128. package/misc/lib/animations.d.ts +14 -0
  129. package/misc/lib/computed-attribute.d.ts +69 -0
  130. package/misc/lib/constants.d.ts +1 -0
  131. package/misc/lib/decal.d.ts +27 -0
  132. package/misc/lib/deprecated.d.ts +14 -0
  133. package/misc/lib/depth-buffer.d.ts +8 -0
  134. package/misc/lib/fbo.d.ts +47 -0
  135. package/misc/lib/sampler.d.ts +73 -0
  136. package/package.json +60 -38
  137. package/shaders/index.d.ts +2 -17
  138. package/shaders/lib/grid-material.d.ts +69 -0
  139. package/shaders/lib/mesh-refraction-material.d.ts +11 -0
  140. package/staging/README.md +472 -2
  141. package/staging/index.d.ts +18 -21
  142. package/staging/lib/accumulative-shadows.d.ts +75 -0
  143. package/staging/lib/backdrop.d.ts +22 -0
  144. package/staging/lib/bb-anchor.d.ts +17 -0
  145. package/staging/lib/bounds.d.ts +47 -0
  146. package/staging/lib/camera-shake.d.ts +29 -0
  147. package/staging/lib/caustics.d.ts +53 -0
  148. package/staging/lib/center.d.ts +422 -0
  149. package/staging/lib/contact-shadows.d.ts +45 -0
  150. package/staging/lib/environment.d.ts +159 -0
  151. package/staging/lib/float.d.ts +19 -0
  152. package/staging/lib/lightformer.d.ts +334 -0
  153. package/staging/lib/matcap-texture.d.ts +32 -0
  154. package/staging/lib/normal-texture.d.ts +37 -0
  155. package/staging/lib/randomized-lights.d.ts +54 -0
  156. package/staging/lib/render-texture.d.ts +64 -0
  157. package/staging/lib/sky.d.ts +32 -0
  158. package/staging/lib/spot-light.d.ts +120 -0
  159. package/staging/lib/stage.d.ts +376 -0
  160. package/vanilla-exports/README.md +3 -0
  161. package/vanilla-exports/index.d.ts +27 -0
  162. package/web-types.json +1 -1
  163. package/abstractions/billboard/billboard.d.ts +0 -28
  164. package/abstractions/detailed/detailed.d.ts +0 -26
  165. package/abstractions/edges/edges.d.ts +0 -34
  166. package/abstractions/grid/grid.d.ts +0 -50
  167. package/abstractions/text/text.d.ts +0 -82
  168. package/abstractions/text-3d/text-3d.d.ts +0 -84
  169. package/assets/distort.vert.glsl +0 -1
  170. package/cameras/camera/camera-content.d.ts +0 -13
  171. package/cameras/camera/camera.d.ts +0 -26
  172. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  173. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  174. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  175. package/controls/orbit-controls/orbit-controls.d.ts +0 -54
  176. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  177. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  178. package/esm2022/abstractions/edges/edges.mjs +0 -88
  179. package/esm2022/abstractions/grid/grid.mjs +0 -180
  180. package/esm2022/abstractions/text/text.mjs +0 -274
  181. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
  182. package/esm2022/cameras/camera/camera-content.mjs +0 -21
  183. package/esm2022/cameras/camera/camera.mjs +0 -77
  184. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  185. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  186. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  187. package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
  188. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  189. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
  190. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  191. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
  192. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
  193. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
  194. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
  195. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  196. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
  197. package/esm2022/gizmos/index.mjs +0 -4
  198. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
  199. package/esm2022/loaders/loader/loader.mjs +0 -138
  200. package/esm2022/loaders/progress/progress.mjs +0 -52
  201. package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
  202. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  203. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  204. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  205. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  206. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  207. package/esm2022/materials/point-material/point-material.mjs +0 -50
  208. package/esm2022/misc/animations/animations.mjs +0 -59
  209. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  210. package/esm2022/misc/caustics/caustics.mjs +0 -387
  211. package/esm2022/misc/decal/decal.mjs +0 -187
  212. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  213. package/esm2022/misc/example/example.mjs +0 -160
  214. package/esm2022/misc/fbo/fbo.mjs +0 -47
  215. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  216. package/esm2022/misc/html/html.mjs +0 -304
  217. package/esm2022/misc/sampler/sampler.mjs +0 -142
  218. package/esm2022/misc/shadow/shadow.mjs +0 -111
  219. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  220. package/esm2022/misc/trail/trail.mjs +0 -209
  221. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  222. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  223. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  224. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  225. package/esm2022/modifiers/index.mjs +0 -2
  226. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  227. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  228. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  229. package/esm2022/performances/index.mjs +0 -8
  230. package/esm2022/performances/instances/instances.mjs +0 -220
  231. package/esm2022/performances/instances/position-mesh.mjs +0 -52
  232. package/esm2022/performances/points/points-input.mjs +0 -64
  233. package/esm2022/performances/points/points.mjs +0 -326
  234. package/esm2022/performances/points/position-point.mjs +0 -54
  235. package/esm2022/performances/segments/segment-object.mjs +0 -9
  236. package/esm2022/performances/segments/segments.mjs +0 -182
  237. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  238. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  239. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  240. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  241. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  242. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  243. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  244. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  245. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  246. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  247. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  248. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  249. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  250. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  251. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  252. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  253. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  254. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  255. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  256. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  257. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  258. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
  259. package/esm2022/staging/bounds/bounds.mjs +0 -308
  260. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  261. package/esm2022/staging/center/center.mjs +0 -165
  262. package/esm2022/staging/cloud/cloud.mjs +0 -158
  263. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  264. package/esm2022/staging/environment/assets.mjs +0 -13
  265. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  266. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  267. package/esm2022/staging/environment/environment-input.mjs +0 -119
  268. package/esm2022/staging/environment/environment-map.mjs +0 -53
  269. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  270. package/esm2022/staging/environment/environment.mjs +0 -61
  271. package/esm2022/staging/environment/utils.mjs +0 -106
  272. package/esm2022/staging/float/float.mjs +0 -94
  273. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  274. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  275. package/esm2022/staging/sky/sky.mjs +0 -119
  276. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  277. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  278. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  279. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  280. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  281. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  282. package/esm2022/staging/stage/stage.mjs +0 -389
  283. package/esm2022/staging/stars/stars.mjs +0 -147
  284. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  285. package/esm2022/staging/wireframe/wireframe.mjs +0 -228
  286. package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
  287. package/esm2022/utils/content/content.mjs +0 -15
  288. package/esm2022/utils/index.mjs +0 -2
  289. package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
  290. package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
  291. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  292. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  293. package/fesm2022/angular-three-soba-performances.mjs +0 -956
  294. package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
  295. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  296. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  297. package/gizmos/README.md +0 -3
  298. package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
  299. package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  300. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  301. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
  302. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
  303. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
  304. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
  305. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
  306. package/gizmos/index.d.ts +0 -3
  307. package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
  308. package/loaders/loader/loader.d.ts +0 -33
  309. package/loaders/progress/progress.d.ts +0 -9
  310. package/loaders/texture-loader/texture-loader.d.ts +0 -7
  311. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  312. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  313. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  314. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  315. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  316. package/materials/point-material/point-material.d.ts +0 -24
  317. package/misc/animations/animations.d.ts +0 -15
  318. package/misc/caustics/caustics.d.ts +0 -87
  319. package/misc/decal/decal.d.ts +0 -49
  320. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  321. package/misc/example/example.d.ts +0 -81
  322. package/misc/fbo/fbo.d.ts +0 -17
  323. package/misc/html/html-wrapper.d.ts +0 -559
  324. package/misc/html/html.d.ts +0 -214
  325. package/misc/sampler/sampler.d.ts +0 -67
  326. package/misc/shadow/shadow.d.ts +0 -37
  327. package/misc/stats-gl/stats-gl.d.ts +0 -24
  328. package/misc/trail/trail.d.ts +0 -57
  329. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  330. package/misc/trail-texture/trail-texture.d.ts +0 -50
  331. package/modifiers/README.md +0 -3
  332. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  333. package/modifiers/index.d.ts +0 -1
  334. package/performances/README.md +0 -3
  335. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  336. package/performances/adaptive-events/adaptive-events.d.ts +0 -9
  337. package/performances/index.d.ts +0 -7
  338. package/performances/instances/instances.d.ts +0 -79
  339. package/performances/instances/position-mesh.d.ts +0 -10
  340. package/performances/points/points-input.d.ts +0 -32
  341. package/performances/points/points.d.ts +0 -92
  342. package/performances/points/position-point.d.ts +0 -11
  343. package/performances/segments/segment-object.d.ts +0 -7
  344. package/performances/segments/segments.d.ts +0 -124
  345. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  346. package/shaders/caustics/caustics-material.d.ts +0 -4
  347. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  348. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  349. package/shaders/discard-material/discard-material.d.ts +0 -3
  350. package/shaders/grid-material/grid-material.d.ts +0 -37
  351. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  352. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  353. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  354. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  355. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  356. package/shaders/shader-material/shader-material.d.ts +0 -6
  357. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  358. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  359. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  360. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  361. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  362. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  363. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  364. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  365. package/staging/backdrop/backdrop.d.ts +0 -30
  366. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  367. package/staging/bounds/bounds.d.ts +0 -134
  368. package/staging/camera-shake/camera-shake.d.ts +0 -43
  369. package/staging/center/center.d.ts +0 -70
  370. package/staging/cloud/cloud.d.ts +0 -51
  371. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  372. package/staging/environment/assets.d.ts +0 -13
  373. package/staging/environment/environment-cube.d.ts +0 -15
  374. package/staging/environment/environment-ground.d.ts +0 -13
  375. package/staging/environment/environment-input.d.ts +0 -68
  376. package/staging/environment/environment-map.d.ts +0 -16
  377. package/staging/environment/environment-portal.d.ts +0 -18
  378. package/staging/environment/environment.d.ts +0 -8
  379. package/staging/environment/utils.d.ts +0 -7
  380. package/staging/float/float.d.ts +0 -31
  381. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  382. package/staging/normal-texture/normal-texture.d.ts +0 -16
  383. package/staging/sky/sky.d.ts +0 -48
  384. package/staging/sparkles/sparkles.d.ts +0 -63
  385. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  386. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  387. package/staging/spot-light/spot-light-input.d.ts +0 -38
  388. package/staging/spot-light/spot-light.d.ts +0 -39
  389. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  390. package/staging/stage/stage.d.ts +0 -130
  391. package/staging/stars/stars.d.ts +0 -45
  392. package/staging/wireframe/wireframe-input.d.ts +0 -65
  393. package/staging/wireframe/wireframe.d.ts +0 -28
  394. package/utils/README.md +0 -3
  395. package/utils/content/content.d.ts +0 -8
  396. package/utils/index.d.ts +0 -1
  397. /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
@@ -0,0 +1,213 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, TemplateRef, computed, contentChild, input, } from '@angular/core';
3
+ import { NgtArgs, NgtPortal, NgtPortalContent, extend, getLocalState, injectBeforeRender, injectStore, omit, pick, prepare, } from 'angular-three';
4
+ import { injectFBO } from 'angular-three-soba/misc';
5
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
6
+ import { mergeInputs } from 'ngxtension/inject-inputs';
7
+ import { Group, Object3D, Scene } from 'three';
8
+ import * as i0 from "@angular/core";
9
+ extend({ Group });
10
+ export class NgtsRenderTextureContainer {
11
+ constructor() {
12
+ this.fbo = input.required();
13
+ this.renderPriority = input.required();
14
+ this.frames = input.required();
15
+ this.injector = input.required();
16
+ this.store = injectStore();
17
+ injectAutoEffect()(() => {
18
+ // track
19
+ this.store.state();
20
+ const renderPriority = this.renderPriority();
21
+ let count = 0;
22
+ let oldAutoClear;
23
+ let oldXrEnabled;
24
+ let oldRenderTarget;
25
+ let oldIsPresenting;
26
+ const sub = injectBeforeRender(({ gl, scene, camera }) => {
27
+ const [fbo, frames] = [this.fbo(), this.frames()];
28
+ // NOTE: render the frames ^ 2
29
+ if (frames === Infinity || count < frames * frames) {
30
+ oldAutoClear = gl.autoClear;
31
+ oldXrEnabled = gl.xr.enabled;
32
+ oldRenderTarget = gl.getRenderTarget();
33
+ oldIsPresenting = gl.xr.isPresenting;
34
+ gl.autoClear = true;
35
+ gl.xr.enabled = false;
36
+ gl.xr.isPresenting = false;
37
+ gl.setRenderTarget(fbo);
38
+ gl.render(scene, camera);
39
+ gl.setRenderTarget(oldRenderTarget);
40
+ gl.autoClear = oldAutoClear;
41
+ gl.xr.enabled = oldXrEnabled;
42
+ gl.xr.isPresenting = oldIsPresenting;
43
+ count++;
44
+ }
45
+ }, { priority: renderPriority, injector: this.injector() });
46
+ return () => sub();
47
+ });
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTextureContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtsRenderTextureContainer, isStandalone: true, selector: "ngts-render-texture-container", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: true, transformFunction: null }, renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: true, transformFunction: null }, frames: { classPropertyName: "frames", publicName: "frames", isSignal: true, isRequired: true, transformFunction: null }, injector: { classPropertyName: "injector", publicName: "injector", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
51
+ <ng-content />
52
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTextureContainer, decorators: [{
55
+ type: Component,
56
+ args: [{
57
+ standalone: true,
58
+ selector: 'ngts-render-texture-container',
59
+ template: `
60
+ <ng-content />
61
+ `,
62
+ changeDetection: ChangeDetectionStrategy.OnPush,
63
+ }]
64
+ }], ctorParameters: () => [] });
65
+ const defaultOptions = {
66
+ samples: 8,
67
+ renderPriority: 0,
68
+ eventPriority: 0,
69
+ frames: Infinity,
70
+ stencilBuffer: false,
71
+ depthBuffer: true,
72
+ generateMipmaps: false,
73
+ };
74
+ export class NgtsRenderTextureContent {
75
+ static ngTemplateContextGuard(_, ctx) {
76
+ return true;
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTextureContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
79
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtsRenderTextureContent, isStandalone: true, selector: "ng-template[renderTextureContent]", ngImport: i0 }); }
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTextureContent, decorators: [{
82
+ type: Directive,
83
+ args: [{ selector: 'ng-template[renderTextureContent]', standalone: true }]
84
+ }] });
85
+ let incrementId = 0;
86
+ export class NgtsRenderTexture {
87
+ constructor() {
88
+ this.attach = input('map');
89
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
90
+ this.parameters = omit(this.options, [
91
+ 'samples',
92
+ 'renderPriority',
93
+ 'eventPriority',
94
+ 'frames',
95
+ 'stencilBuffer',
96
+ 'depthBuffer',
97
+ 'generateMipmaps',
98
+ 'compute',
99
+ 'width',
100
+ 'height',
101
+ ]);
102
+ this.content = contentChild.required(NgtsRenderTextureContent, { read: TemplateRef });
103
+ this.store = injectStore();
104
+ this.size = this.store.select('size');
105
+ this.viewport = this.store.select('viewport');
106
+ this.fboParams = computed(() => ({
107
+ width: (this.options().width || this.size().width) * this.viewport().dpr,
108
+ height: (this.options().height || this.size().height) * this.viewport().dpr,
109
+ settings: {
110
+ samples: this.options().samples,
111
+ depthBuffer: this.options().depthBuffer,
112
+ stencilBuffer: this.options().stencilBuffer,
113
+ generateMipmaps: this.options().generateMipmaps,
114
+ },
115
+ }));
116
+ this.renderPriority = pick(this.options, 'renderPriority');
117
+ this.frames = pick(this.options, 'frames');
118
+ this.fbo = injectFBO(this.fboParams);
119
+ this.virtualScene = computed(() => {
120
+ const scene = prepare(new Scene());
121
+ scene.name = `ngts-render-texture-virtual-scene-${incrementId++}`;
122
+ return scene;
123
+ });
124
+ this.eventPriority = pick(this.options, 'eventPriority');
125
+ this.compute = computed(() => this.options().compute || this.uvCompute);
126
+ this.uvCompute = (event, root, previous) => {
127
+ const fbo = this.fbo();
128
+ if (!fbo)
129
+ return;
130
+ const state = root.snapshot;
131
+ const previousState = previous?.snapshot;
132
+ // Since this is only a texture it does not have an easy way to obtain the parent, which we
133
+ // need to transform event coordinates to local coordinates. We use r3f internals to find the
134
+ // next Object3D.
135
+ let parent = getLocalState(fbo.texture)?.parent();
136
+ while (parent && !(parent instanceof Object3D)) {
137
+ parent = getLocalState(parent)?.parent();
138
+ }
139
+ if (!parent)
140
+ return;
141
+ // First we call the previous state-onion-layers compute, this is what makes it possible to nest portals
142
+ if (previousState && !previousState.raycaster.camera) {
143
+ previousState.events.compute?.(event, previous, previous.snapshot.previousRoot);
144
+ }
145
+ // We run a quick check against the parent, if it isn't hit there's no need to raycast at all
146
+ const [intersection] = previousState?.raycaster.intersectObject(parent) || [];
147
+ if (!intersection)
148
+ return;
149
+ // We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces
150
+ const uv = intersection.uv;
151
+ if (!uv)
152
+ return;
153
+ state.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);
154
+ };
155
+ }
156
+ onPointerOver() {
157
+ /* noop */
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTexture, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsRenderTexture, isStandalone: true, selector: "ngts-render-texture", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: NgtsRenderTextureContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
161
+ <ngt-portal [container]="virtualScene()" [state]="{ events: { compute: compute(), priority: eventPriority() } }">
162
+ <ng-template portalContent let-injector="injector" let-container="container">
163
+ <ngts-render-texture-container
164
+ [fbo]="fbo()"
165
+ [renderPriority]="renderPriority()"
166
+ [frames]="frames()"
167
+ [injector]="injector"
168
+ >
169
+ <ng-container
170
+ [ngTemplateOutlet]="content()"
171
+ [ngTemplateOutletInjector]="injector"
172
+ [ngTemplateOutletContext]="{ container, injector }"
173
+ />
174
+ <ngt-group (pointerover)="onPointerOver()" />
175
+ </ngts-render-texture-container>
176
+ </ng-template>
177
+ </ngt-portal>
178
+
179
+ <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
180
+ `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"] }, { kind: "component", type: NgtsRenderTextureContainer, selector: "ngts-render-texture-container", inputs: ["fbo", "renderPriority", "frames", "injector"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
+ }
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsRenderTexture, decorators: [{
183
+ type: Component,
184
+ args: [{
185
+ selector: 'ngts-render-texture',
186
+ standalone: true,
187
+ template: `
188
+ <ngt-portal [container]="virtualScene()" [state]="{ events: { compute: compute(), priority: eventPriority() } }">
189
+ <ng-template portalContent let-injector="injector" let-container="container">
190
+ <ngts-render-texture-container
191
+ [fbo]="fbo()"
192
+ [renderPriority]="renderPriority()"
193
+ [frames]="frames()"
194
+ [injector]="injector"
195
+ >
196
+ <ng-container
197
+ [ngTemplateOutlet]="content()"
198
+ [ngTemplateOutletInjector]="injector"
199
+ [ngTemplateOutletContext]="{ container, injector }"
200
+ />
201
+ <ngt-group (pointerover)="onPointerOver()" />
202
+ </ngts-render-texture-container>
203
+ </ng-template>
204
+ </ngt-portal>
205
+
206
+ <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
207
+ `,
208
+ imports: [NgtPortal, NgtsRenderTextureContainer, NgtPortalContent, NgtArgs, NgTemplateOutlet],
209
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
210
+ changeDetection: ChangeDetectionStrategy.OnPush,
211
+ }]
212
+ }] });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL3JlbmRlci10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBRVQsV0FBVyxFQUNYLFFBQVEsRUFDUixZQUFZLEVBQ1osS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixPQUFPLEVBRVAsU0FBUyxFQUNULGdCQUFnQixFQUVoQixNQUFNLEVBQ04sYUFBYSxFQUNiLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsSUFBSSxFQUNKLElBQUksRUFDSixPQUFPLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sT0FBTyxDQUFDOztBQUVsRSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBaUNsQixNQUFNLE9BQU8sMEJBQTBCO0lBUXRDO1FBUEEsUUFBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDMUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO1FBRTlCLFVBQUssR0FBRyxX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QUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUYsQ0FBQyxDQUFDO0tBS0Y7SUFIQSxhQUFhO1FBQ1osVUFBVTtJQUNYLENBQUM7OEdBMUVXLGlCQUFpQjtrR0FBakIsaUJBQWlCLHlYQWdCRyx3QkFBd0IsMkJBQVUsV0FBVyw2Q0F6Q25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW9CVCw0REFDUyxTQUFTLDJIQTlGUCwwQkFBMEIsbUlBOEZXLGdCQUFnQix1RUFBRSxPQUFPLGdGQUFFLGdCQUFnQjs7MkZBSWhGLGlCQUFpQjtrQkE1QjdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQztvQkFDN0YsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RGlyZWN0aXZlLFxuXHRJbmplY3Rvcixcblx0VGVtcGxhdGVSZWYsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdE5ndEFyZ3MsXG5cdE5ndENvbXB1dGVGdW5jdGlvbixcblx0Tmd0UG9ydGFsLFxuXHROZ3RQb3J0YWxDb250ZW50LFxuXHROZ3RUZXh0dXJlLFxuXHRleHRlbmQsXG5cdGdldExvY2FsU3RhdGUsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0U3RvcmUsXG5cdG9taXQsXG5cdHBpY2ssXG5cdHByZXBhcmUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0RkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgR3JvdXAsIE9iamVjdDNELCBTY2VuZSwgV2ViR0xSZW5kZXJUYXJnZXQgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNSZW5kZXJUZXh0dXJlT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8T21pdDxOZ3RUZXh0dXJlLCAnYXR0YWNoJz4+IHtcblx0LyoqIE9wdGlvbmFsIHdpZHRoIG9mIHRoZSB0ZXh0dXJlLCBkZWZhdWx0cyB0byB2aWV3cG9ydCBib3VuZHMgKi9cblx0d2lkdGg/OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBoZWlnaHQgb2YgdGhlIHRleHR1cmUsIGRlZmF1bHRzIHRvIHZpZXdwb3J0IGJvdW5kcyAqL1xuXHRoZWlnaHQ/OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBmYm8gc2FtcGxlcyAqL1xuXHRzYW1wbGVzOiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBzdGVuY2lsIGJ1ZmZlciwgZGVmYXVsdHMgdG8gZmFsc2UgKi9cblx0c3RlbmNpbEJ1ZmZlcjogYm9vbGVhbjtcblx0LyoqIE9wdGlvbmFsIGRlcHRoIGJ1ZmZlciwgZGVmYXVsdHMgdG8gdHJ1ZSAqL1xuXHRkZXB0aEJ1ZmZlcjogYm9vbGVhbjtcblx0LyoqIE9wdGlvbmFsIGdlbmVyYXRlIG1pcG1hcHMsIGRlZmF1bHRzIHRvIGZhbHNlICovXG5cdGdlbmVyYXRlTWlwbWFwczogYm9vbGVhbjtcblx0LyoqIE9wdGlvbmFsIHJlbmRlciBwcmlvcml0eSwgZGVmYXVsdHMgdG8gMCAqL1xuXHRyZW5kZXJQcmlvcml0eTogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgZXZlbnQgcHJpb3JpdHksIGRlZmF1bHRzIHRvIDAgKi9cblx0ZXZlbnRQcmlvcml0eTogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgZnJhbWUgY291bnQsIGRlZmF1bHRzIHRvIEluZmluaXR5LiBJZiB5b3Ugc2V0IGl0IHRvIDEsIGl0IHdvdWxkIG9ubHkgcmVuZGVyIGEgc2luZ2xlIGZyYW1lLCBldGMgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBldmVudCBjb21wdXRlLCBkZWZhdWx0cyB0byB1bmRlZmluZWQgKi9cblx0Y29tcHV0ZT86IChldmVudDogYW55LCBzdGF0ZTogYW55LCBwcmV2aW91czogYW55KSA9PiBmYWxzZSB8IHVuZGVmaW5lZDtcbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnbmd0cy1yZW5kZXItdGV4dHVyZS1jb250YWluZXInLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250ZW50IC8+XG5cdGAsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRhaW5lciB7XG5cdGZibyA9IGlucHV0LnJlcXVpcmVkPFdlYkdMUmVuZGVyVGFyZ2V0PigpO1xuXHRyZW5kZXJQcmlvcml0eSA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblx0ZnJhbWVzID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXHRpbmplY3RvciA9IGlucHV0LnJlcXVpcmVkPEluamVjdG9yPigpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdEF1dG9FZmZlY3QoKSgoKSA9PiB7XG5cdFx0XHQvLyB0cmFja1xuXHRcdFx0dGhpcy5zdG9yZS5zdGF0ZSgpO1xuXHRcdFx0Y29uc3QgcmVuZGVyUHJpb3JpdHkgPSB0aGlzLnJlbmRlclByaW9yaXR5KCk7XG5cblx0XHRcdGxldCBjb3VudCA9IDA7XG5cdFx0XHRsZXQgb2xkQXV0b0NsZWFyOiBib29sZWFuO1xuXHRcdFx0bGV0IG9sZFhyRW5hYmxlZDogYm9vbGVhbjtcblx0XHRcdGxldCBvbGRSZW5kZXJUYXJnZXQ6IFdlYkdMUmVuZGVyVGFyZ2V0IHwgbnVsbDtcblx0XHRcdGxldCBvbGRJc1ByZXNlbnRpbmc6IGJvb2xlYW47XG5cdFx0XHRjb25zdCBzdWIgPSBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHRcdCh7IGdsLCBzY2VuZSwgY2FtZXJhIH0pID0+IHtcblx0XHRcdFx0XHRjb25zdCBbZmJvLCBmcmFtZXNdID0gW3RoaXMuZmJvKCksIHRoaXMuZnJhbWVzKCldO1xuXHRcdFx0XHRcdC8vIE5PVEU6IHJlbmRlciAgdGhlIGZyYW1lcyBeIDJcblx0XHRcdFx0XHRpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcyAqIGZyYW1lcykge1xuXHRcdFx0XHRcdFx0b2xkQXV0b0NsZWFyID0gZ2wuYXV0b0NsZWFyO1xuXHRcdFx0XHRcdFx0b2xkWHJFbmFibGVkID0gZ2wueHIuZW5hYmxlZDtcblx0XHRcdFx0XHRcdG9sZFJlbmRlclRhcmdldCA9IGdsLmdldFJlbmRlclRhcmdldCgpO1xuXHRcdFx0XHRcdFx0b2xkSXNQcmVzZW50aW5nID0gZ2wueHIuaXNQcmVzZW50aW5nO1xuXHRcdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGdsLnhyLmVuYWJsZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGdsLnhyLmlzUHJlc2VudGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGZibyk7XG5cdFx0XHRcdFx0XHRnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQob2xkUmVuZGVyVGFyZ2V0KTtcblx0XHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IG9sZEF1dG9DbGVhcjtcblx0XHRcdFx0XHRcdGdsLnhyLmVuYWJsZWQgPSBvbGRYckVuYWJsZWQ7XG5cdFx0XHRcdFx0XHRnbC54ci5pc1ByZXNlbnRpbmcgPSBvbGRJc1ByZXNlbnRpbmc7XG5cdFx0XHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0eyBwcmlvcml0eTogcmVuZGVyUHJpb3JpdHksIGluamVjdG9yOiB0aGlzLmluamVjdG9yKCkgfSxcblx0XHRcdCk7XG5cblx0XHRcdHJldHVybiAoKSA9PiBzdWIoKTtcblx0XHR9KTtcblx0fVxufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1JlbmRlclRleHR1cmVPcHRpb25zID0ge1xuXHRzYW1wbGVzOiA4LFxuXHRyZW5kZXJQcmlvcml0eTogMCxcblx0ZXZlbnRQcmlvcml0eTogMCxcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0c3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG5cdGRlcHRoQnVmZmVyOiB0cnVlLFxuXHRnZW5lcmF0ZU1pcG1hcHM6IGZhbHNlLFxufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbcmVuZGVyVGV4dHVyZUNvbnRlbnRdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKFxuXHRcdF86IE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCxcblx0XHRjdHg6IHVua25vd24sXG5cdCk6IGN0eCBpcyB7IGNvbnRhaW5lcjogT2JqZWN0M0Q7IGluamVjdG9yOiBJbmplY3RvciB9IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG5sZXQgaW5jcmVtZW50SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXJlbmRlci10ZXh0dXJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvcnRhbCBbY29udGFpbmVyXT1cInZpcnR1YWxTY2VuZSgpXCIgW3N0YXRlXT1cInsgZXZlbnRzOiB7IGNvbXB1dGU6IGNvbXB1dGUoKSwgcHJpb3JpdHk6IGV2ZW50UHJpb3JpdHkoKSB9IH1cIj5cblx0XHRcdDxuZy10ZW1wbGF0ZSBwb3J0YWxDb250ZW50IGxldC1pbmplY3Rvcj1cImluamVjdG9yXCIgbGV0LWNvbnRhaW5lcj1cImNvbnRhaW5lclwiPlxuXHRcdFx0XHQ8bmd0cy1yZW5kZXItdGV4dHVyZS1jb250YWluZXJcblx0XHRcdFx0XHRbZmJvXT1cImZibygpXCJcblx0XHRcdFx0XHRbcmVuZGVyUHJpb3JpdHldPVwicmVuZGVyUHJpb3JpdHkoKVwiXG5cdFx0XHRcdFx0W2ZyYW1lc109XCJmcmFtZXMoKVwiXG5cdFx0XHRcdFx0W2luamVjdG9yXT1cImluamVjdG9yXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXJcblx0XHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnQoKVwiXG5cdFx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCJcblx0XHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNvbnRhaW5lciwgaW5qZWN0b3IgfVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8bmd0LWdyb3VwIChwb2ludGVyb3Zlcik9XCJvblBvaW50ZXJPdmVyKClcIiAvPlxuXHRcdFx0XHQ8L25ndHMtcmVuZGVyLXRleHR1cmUtY29udGFpbmVyPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L25ndC1wb3J0YWw+XG5cblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltmYm8oKS50ZXh0dXJlXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIiAvPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0UG9ydGFsLCBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRhaW5lciwgTmd0UG9ydGFsQ29udGVudCwgTmd0QXJncywgTmdUZW1wbGF0ZU91dGxldF0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNSZW5kZXJUZXh0dXJlIHtcblx0YXR0YWNoID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCdtYXAnKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFtcblx0XHQnc2FtcGxlcycsXG5cdFx0J3JlbmRlclByaW9yaXR5Jyxcblx0XHQnZXZlbnRQcmlvcml0eScsXG5cdFx0J2ZyYW1lcycsXG5cdFx0J3N0ZW5jaWxCdWZmZXInLFxuXHRcdCdkZXB0aEJ1ZmZlcicsXG5cdFx0J2dlbmVyYXRlTWlwbWFwcycsXG5cdFx0J2NvbXB1dGUnLFxuXHRcdCd3aWR0aCcsXG5cdFx0J2hlaWdodCcsXG5cdF0pO1xuXG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoTmd0c1JlbmRlclRleHR1cmVDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIHZpZXdwb3J0ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cblx0cHJpdmF0ZSBmYm9QYXJhbXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdHdpZHRoOiAodGhpcy5vcHRpb25zKCkud2lkdGggfHwgdGhpcy5zaXplKCkud2lkdGgpICogdGhpcy52aWV3cG9ydCgpLmRwcixcblx0XHRoZWlnaHQ6ICh0aGlzLm9wdGlvbnMoKS5oZWlnaHQgfHwgdGhpcy5zaXplKCkuaGVpZ2h0KSAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdFx0c2V0dGluZ3M6IHtcblx0XHRcdHNhbXBsZXM6IHRoaXMub3B0aW9ucygpLnNhbXBsZXMsXG5cdFx0XHRkZXB0aEJ1ZmZlcjogdGhpcy5vcHRpb25zKCkuZGVwdGhCdWZmZXIsXG5cdFx0XHRzdGVuY2lsQnVmZmVyOiB0aGlzLm9wdGlvbnMoKS5zdGVuY2lsQnVmZmVyLFxuXHRcdFx0Z2VuZXJhdGVNaXBtYXBzOiB0aGlzLm9wdGlvbnMoKS5nZW5lcmF0ZU1pcG1hcHMsXG5cdFx0fSxcblx0fSkpO1xuXG5cdHJlbmRlclByaW9yaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdyZW5kZXJQcmlvcml0eScpO1xuXHRmcmFtZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZyYW1lcycpO1xuXHRmYm8gPSBpbmplY3RGQk8odGhpcy5mYm9QYXJhbXMpO1xuXHR2aXJ0dWFsU2NlbmUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgc2NlbmUgPSBwcmVwYXJlKG5ldyBTY2VuZSgpKTtcblx0XHRzY2VuZS5uYW1lID0gYG5ndHMtcmVuZGVyLXRleHR1cmUtdmlydHVhbC1zY2VuZS0ke2luY3JlbWVudElkKyt9YDtcblx0XHRyZXR1cm4gc2NlbmU7XG5cdH0pO1xuXHRldmVudFByaW9yaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdldmVudFByaW9yaXR5Jyk7XG5cdGNvbXB1dGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5jb21wdXRlIHx8IHRoaXMudXZDb21wdXRlKTtcblxuXHR1dkNvbXB1dGU6IE5ndENvbXB1dGVGdW5jdGlvbiA9IChldmVudCwgcm9vdCwgcHJldmlvdXMpID0+IHtcblx0XHRjb25zdCBmYm8gPSB0aGlzLmZibygpO1xuXHRcdGlmICghZmJvKSByZXR1cm47XG5cdFx0Y29uc3Qgc3RhdGUgPSByb290LnNuYXBzaG90O1xuXHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSBwcmV2aW91cz8uc25hcHNob3Q7XG5cblx0XHQvLyBTaW5jZSB0aGlzIGlzIG9ubHkgYSB0ZXh0dXJlIGl0IGRvZXMgbm90IGhhdmUgYW4gZWFzeSB3YXkgdG8gb2J0YWluIHRoZSBwYXJlbnQsIHdoaWNoIHdlXG5cdFx0Ly8gbmVlZCB0byB0cmFuc2Zvcm0gZXZlbnQgY29vcmRpbmF0ZXMgdG8gbG9jYWwgY29vcmRpbmF0ZXMuIFdlIHVzZSByM2YgaW50ZXJuYWxzIHRvIGZpbmQgdGhlXG5cdFx0Ly8gbmV4dCBPYmplY3QzRC5cblx0XHRsZXQgcGFyZW50ID0gZ2V0TG9jYWxTdGF0ZShmYm8udGV4dHVyZSk/LnBhcmVudCgpO1xuXHRcdHdoaWxlIChwYXJlbnQgJiYgIShwYXJlbnQgaW5zdGFuY2VvZiBPYmplY3QzRCkpIHtcblx0XHRcdHBhcmVudCA9IGdldExvY2FsU3RhdGUocGFyZW50KT8ucGFyZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcblx0XHQvLyBGaXJzdCB3ZSBjYWxsIHRoZSBwcmV2aW91cyBzdGF0ZS1vbmlvbi1sYXllcnMgY29tcHV0ZSwgdGhpcyBpcyB3aGF0IG1ha2VzIGl0IHBvc3NpYmxlIHRvIG5lc3QgcG9ydGFsc1xuXHRcdGlmIChwcmV2aW91c1N0YXRlICYmICFwcmV2aW91c1N0YXRlLnJheWNhc3Rlci5jYW1lcmEpIHtcblx0XHRcdHByZXZpb3VzU3RhdGUuZXZlbnRzLmNvbXB1dGU/LihldmVudCwgcHJldmlvdXMsIHByZXZpb3VzLnNuYXBzaG90LnByZXZpb3VzUm9vdCk7XG5cdFx0fVxuXHRcdC8vIFdlIHJ1biBhIHF1aWNrIGNoZWNrIGFnYWluc3QgdGhlIHBhcmVudCwgaWYgaXQgaXNuJ3QgaGl0IHRoZXJlJ3Mgbm8gbmVlZCB0byByYXljYXN0IGF0IGFsbFxuXHRcdGNvbnN0IFtpbnRlcnNlY3Rpb25dID0gcHJldmlvdXNTdGF0ZT8ucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdChwYXJlbnQpIHx8IFtdO1xuXHRcdGlmICghaW50ZXJzZWN0aW9uKSByZXR1cm47XG5cdFx0Ly8gV2UgdGFrZSB0aGF0IGhpdHMgdXYgY29vcmRzLCBzZXQgdXAgdGhpcyBsYXllcnMgcmF5Y2FzdGVyLCBldCB2b2lsw6AsIHdlIGhhdmUgcmF5Y2FzdGluZyBvbiBhcmJpdHJhcnkgc3VyZmFjZXNcblx0XHRjb25zdCB1diA9IGludGVyc2VjdGlvbi51djtcblx0XHRpZiAoIXV2KSByZXR1cm47XG5cdFx0c3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoc3RhdGUucG9pbnRlci5zZXQodXYueCAqIDIgLSAxLCB1di55ICogMiAtIDEpLCBzdGF0ZS5jYW1lcmEpO1xuXHR9O1xuXG5cdG9uUG9pbnRlck92ZXIoKSB7XG5cdFx0Lyogbm9vcCAqL1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
2
+ import { NgtArgs, omit, pick, vector3 } from 'angular-three';
3
+ import { mergeInputs } from 'ngxtension/inject-inputs';
4
+ import { Vector3 } from 'three';
5
+ import { Sky } from 'three-stdlib';
6
+ import * as i0 from "@angular/core";
7
+ export function calcPosFromAngles(inclination, azimuth, vector = new Vector3()) {
8
+ const theta = Math.PI * (inclination - 0.5);
9
+ const phi = 2 * Math.PI * (azimuth - 0.5);
10
+ vector.x = Math.cos(phi);
11
+ vector.y = Math.sin(theta);
12
+ vector.z = Math.sin(phi);
13
+ return vector;
14
+ }
15
+ const defaultOptions = {
16
+ distance: 1000,
17
+ inclination: 0.6,
18
+ azimuth: 0.1,
19
+ mieCoefficient: 0.005,
20
+ mieDirectionalG: 0.8,
21
+ rayleigh: 0.5,
22
+ turbidity: 10,
23
+ };
24
+ export class NgtsSky {
25
+ constructor() {
26
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
27
+ this.parameters = omit(this.options, [
28
+ 'distance',
29
+ 'inclination',
30
+ 'azimuth',
31
+ 'sunPosition',
32
+ 'turbidity',
33
+ 'mieCoefficient',
34
+ 'mieDirectionalG',
35
+ 'sunPosition',
36
+ ]);
37
+ this.distance = pick(this.options, 'distance');
38
+ this.turbidity = pick(this.options, 'turbidity');
39
+ this.mieCoefficient = pick(this.options, 'mieCoefficient');
40
+ this.mieDirectionalG = pick(this.options, 'mieDirectionalG');
41
+ this.rayleigh = pick(this.options, 'rayleigh');
42
+ this.scale = computed(() => new Vector3().setScalar(this.distance()));
43
+ this.inclination = pick(this.options, 'inclination');
44
+ this.azimuth = pick(this.options, 'azimuth');
45
+ this.sunPosition = vector3(this.options, 'sunPosition', true);
46
+ this.calculatedSunPosition = computed(() => {
47
+ const sunPosition = this.sunPosition();
48
+ if (sunPosition)
49
+ return sunPosition;
50
+ return calcPosFromAngles(this.inclination(), this.azimuth());
51
+ });
52
+ this.sky = new Sky();
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsSky, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
56
+ <ngt-primitive *args="[sky]" [parameters]="parameters()" [scale]="scale()">
57
+ <ngt-value attach="material.uniforms.mieCoefficient.value" [rawValue]="mieCoefficient()" />
58
+ <ngt-value attach="material.uniforms.mieDirectionalG.value" [rawValue]="mieDirectionalG()" />
59
+ <ngt-value attach="material.uniforms.rayleigh.value" [rawValue]="rayleigh()" />
60
+ <ngt-value attach="material.uniforms.sunPosition.value" [rawValue]="calculatedSunPosition()" />
61
+ <ngt-value attach="material.uniforms.turbidity.value" [rawValue]="turbidity()" />
62
+ <ng-content />
63
+ </ngt-primitive>
64
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsSky, decorators: [{
67
+ type: Component,
68
+ args: [{
69
+ selector: 'ngts-sky',
70
+ standalone: true,
71
+ template: `
72
+ <ngt-primitive *args="[sky]" [parameters]="parameters()" [scale]="scale()">
73
+ <ngt-value attach="material.uniforms.mieCoefficient.value" [rawValue]="mieCoefficient()" />
74
+ <ngt-value attach="material.uniforms.mieDirectionalG.value" [rawValue]="mieDirectionalG()" />
75
+ <ngt-value attach="material.uniforms.rayleigh.value" [rawValue]="rayleigh()" />
76
+ <ngt-value attach="material.uniforms.sunPosition.value" [rawValue]="calculatedSunPosition()" />
77
+ <ngt-value attach="material.uniforms.turbidity.value" [rawValue]="turbidity()" />
78
+ <ng-content />
79
+ </ngt-primitive>
80
+ `,
81
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
82
+ changeDetection: ChangeDetectionStrategy.OnPush,
83
+ imports: [NgtArgs],
84
+ }]
85
+ }] });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2xpYi9za3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQXVCLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRW5DLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE9BQWUsRUFBRSxTQUFrQixJQUFJLE9BQU8sRUFBRTtJQUN0RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQztBQWFELE1BQU0sY0FBYyxHQUFtQjtJQUN0QyxRQUFRLEVBQUUsSUFBSTtJQUNkLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osY0FBYyxFQUFFLEtBQUs7SUFDckIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsUUFBUSxFQUFFLEdBQUc7SUFDYixTQUFTLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFtQkYsTUFBTSxPQUFPLE9BQU87SUFqQnBCO1FBa0JDLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLFVBQVU7WUFDVixhQUFhO1lBQ2IsU0FBUztZQUNULGFBQWE7WUFDYixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixhQUFhO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELGFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUxQyxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxXQUFXO2dCQUFFLE9BQU8sV0FBVyxDQUFDO1lBQ3BDLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7S0FDaEI7OEdBL0JZLE9BQU87a0dBQVAsT0FBTyw4TUFkVDs7Ozs7Ozs7O0VBU1QsNERBR1MsT0FBTzs7MkZBRUwsT0FBTztrQkFqQm5CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7OztFQVNUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0TWVzaCwgTmd0VmVjdG9yMywgb21pdCwgcGljaywgdmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFNreSB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjUG9zRnJvbUFuZ2xlcyhpbmNsaW5hdGlvbjogbnVtYmVyLCBhemltdXRoOiBudW1iZXIsIHZlY3RvcjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCkpIHtcblx0Y29uc3QgdGhldGEgPSBNYXRoLlBJICogKGluY2xpbmF0aW9uIC0gMC41KTtcblx0Y29uc3QgcGhpID0gMiAqIE1hdGguUEkgKiAoYXppbXV0aCAtIDAuNSk7XG5cblx0dmVjdG9yLnggPSBNYXRoLmNvcyhwaGkpO1xuXHR2ZWN0b3IueSA9IE1hdGguc2luKHRoZXRhKTtcblx0dmVjdG9yLnogPSBNYXRoLnNpbihwaGkpO1xuXG5cdHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NreU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE9taXQ8Tmd0TWVzaCwgJ3NjYWxlJz4+IHtcblx0ZGlzdGFuY2U6IG51bWJlcjtcblx0aW5jbGluYXRpb246IG51bWJlcjtcblx0YXppbXV0aDogbnVtYmVyO1xuXHRtaWVDb2VmZmljaWVudDogbnVtYmVyO1xuXHRtaWVEaXJlY3Rpb25hbEc6IG51bWJlcjtcblx0cmF5bGVpZ2g6IG51bWJlcjtcblx0dHVyYmlkaXR5OiBudW1iZXI7XG5cdHN1blBvc2l0aW9uPzogTmd0VmVjdG9yMztcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNTa3lPcHRpb25zID0ge1xuXHRkaXN0YW5jZTogMTAwMCxcblx0aW5jbGluYXRpb246IDAuNixcblx0YXppbXV0aDogMC4xLFxuXHRtaWVDb2VmZmljaWVudDogMC4wMDUsXG5cdG1pZURpcmVjdGlvbmFsRzogMC44LFxuXHRyYXlsZWlnaDogMC41LFxuXHR0dXJiaWRpdHk6IDEwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1za3knLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW3NreV1cIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIiBbc2NhbGVdPVwic2NhbGUoKVwiPlxuXHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5taWVDb2VmZmljaWVudC52YWx1ZVwiIFtyYXdWYWx1ZV09XCJtaWVDb2VmZmljaWVudCgpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMubWllRGlyZWN0aW9uYWxHLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cIm1pZURpcmVjdGlvbmFsRygpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMucmF5bGVpZ2gudmFsdWVcIiBbcmF3VmFsdWVdPVwicmF5bGVpZ2goKVwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLnN1blBvc2l0aW9uLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImNhbGN1bGF0ZWRTdW5Qb3NpdGlvbigpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMudHVyYmlkaXR5LnZhbHVlXCIgW3Jhd1ZhbHVlXT1cInR1cmJpZGl0eSgpXCIgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTa3kge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdkaXN0YW5jZScsXG5cdFx0J2luY2xpbmF0aW9uJyxcblx0XHQnYXppbXV0aCcsXG5cdFx0J3N1blBvc2l0aW9uJyxcblx0XHQndHVyYmlkaXR5Jyxcblx0XHQnbWllQ29lZmZpY2llbnQnLFxuXHRcdCdtaWVEaXJlY3Rpb25hbEcnLFxuXHRcdCdzdW5Qb3NpdGlvbicsXG5cdF0pO1xuXG5cdGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXHR0dXJiaWRpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3R1cmJpZGl0eScpO1xuXHRtaWVDb2VmZmljaWVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWllQ29lZmZpY2llbnQnKTtcblx0bWllRGlyZWN0aW9uYWxHID0gcGljayh0aGlzLm9wdGlvbnMsICdtaWVEaXJlY3Rpb25hbEcnKTtcblx0cmF5bGVpZ2ggPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JheWxlaWdoJyk7XG5cblx0c2NhbGUgPSBjb21wdXRlZCgoKSA9PiBuZXcgVmVjdG9yMygpLnNldFNjYWxhcih0aGlzLmRpc3RhbmNlKCkpKTtcblxuXHRwcml2YXRlIGluY2xpbmF0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdpbmNsaW5hdGlvbicpO1xuXHRwcml2YXRlIGF6aW11dGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F6aW11dGgnKTtcblx0cHJpdmF0ZSBzdW5Qb3NpdGlvbiA9IHZlY3RvcjModGhpcy5vcHRpb25zLCAnc3VuUG9zaXRpb24nLCB0cnVlKTtcblx0Y2FsY3VsYXRlZFN1blBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHN1blBvc2l0aW9uID0gdGhpcy5zdW5Qb3NpdGlvbigpO1xuXHRcdGlmIChzdW5Qb3NpdGlvbikgcmV0dXJuIHN1blBvc2l0aW9uO1xuXHRcdHJldHVybiBjYWxjUG9zRnJvbUFuZ2xlcyh0aGlzLmluY2xpbmF0aW9uKCksIHRoaXMuYXppbXV0aCgpKTtcblx0fSk7XG5cblx0c2t5ID0gbmV3IFNreSgpO1xufVxuIl19