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
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/accumulative-shadows/progressive-light-map.ts","../../../../libs/soba/staging/src/accumulative-shadows/accumulative-shadows.ts","../../../../libs/soba/staging/src/accumulative-shadows/randomized-lights.ts","../../../../libs/soba/staging/src/backdrop/backdrop.ts","../../../../libs/soba/staging/src/bb-anchor/bb-anchor.ts","../../../../libs/soba/staging/src/bounds/bounds.ts","../../../../libs/soba/staging/src/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/center/center.ts","../../../../libs/soba/staging/src/cloud/cloud.ts","../../../../libs/soba/staging/src/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/environment/assets.ts","../../../../libs/soba/staging/src/environment/environment-input.ts","../../../../libs/soba/staging/src/environment/utils.ts","../../../../libs/soba/staging/src/environment/environment-cube.ts","../../../../libs/soba/staging/src/environment/environment-map.ts","../../../../libs/soba/staging/src/environment/environment-ground.ts","../../../../libs/soba/staging/src/environment/environment-portal.ts","../../../../libs/soba/staging/src/environment/environment.ts","../../../../libs/soba/staging/src/float/float.ts","../../../../libs/soba/staging/src/matcap-texture/matcap-texture.ts","../../../../libs/soba/staging/src/normal-texture/normal-texture.ts","../../../../libs/soba/staging/src/sky/sky.ts","../../../../libs/soba/staging/src/sparkles/sparkles.ts","../../../../libs/soba/staging/src/spot-light/shadow-mesh-input.ts","../../../../libs/soba/staging/src/spot-light/spot-light-input.ts","../../../../libs/soba/staging/src/spot-light/volumetric-mesh.ts","../../../../libs/soba/staging/src/spot-light/spot-light.ts","../../../../libs/soba/staging/src/spot-light/shadow-mesh.ts","../../../../libs/soba/staging/src/stage/stage.ts","../../../../libs/soba/staging/src/stars/stars.ts","../../../../libs/soba/staging/src/wireframe/wireframe-input.ts","../../../../libs/soba/staging/src/wireframe/wireframe.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { DiscardMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n\treturn object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n\treturn !!object.geometry;\n}\n\n// Based on \"Progressive Light Map Accumulator\", by [zalo](https://github.com/zalo/)\nexport class ProgressiveLightMap {\n\trenderer: THREE.WebGLRenderer;\n\tres: number;\n\tscene: THREE.Scene;\n\tobject: THREE.Mesh | null;\n\tbuffer1Active: boolean;\n\tprogressiveLightMap1: THREE.WebGLRenderTarget;\n\tprogressiveLightMap2: THREE.WebGLRenderTarget;\n\tdiscardMat: THREE.ShaderMaterial;\n\ttargetMat: THREE.MeshLambertMaterial;\n\tpreviousShadowMap: { value: THREE.Texture };\n\taveragingWindow: { value: number };\n\tclearColor: THREE.Color;\n\tclearAlpha: number;\n\tlights: { object: THREE.Light; intensity: number }[];\n\tmeshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n\tconstructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n\t\tthis.renderer = renderer;\n\t\tthis.res = res;\n\t\tthis.scene = scene;\n\t\tthis.buffer1Active = false;\n\t\tthis.lights = [];\n\t\tthis.meshes = [];\n\t\tthis.object = null;\n\t\tthis.clearColor = new THREE.Color();\n\t\tthis.clearAlpha = 0;\n\n\t\t// Create the Progressive LightMap Texture\n\t\tconst format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n\t\tthis.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n\t\t\ttype: format,\n\t\t});\n\t\tthis.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n\t\t\ttype: format,\n\t\t});\n\n\t\t// Inject some spicy new logic into a standard phong material\n\t\tthis.discardMat = new DiscardMaterial();\n\t\tthis.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n\t\tthis.previousShadowMap = { value: this.progressiveLightMap1.texture };\n\t\tthis.averagingWindow = { value: 100 };\n\t\tthis.targetMat.onBeforeCompile = (shader) => {\n\t\t\t// Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n\t\t\tshader.vertexShader =\n\t\t\t\t'varying vec2 vUv;\\n' +\n\t\t\t\tshader.vertexShader.slice(0, -1) +\n\t\t\t\t'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n\t\t\t// Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n\t\t\tconst bodyStart = shader.fragmentShader.indexOf('void main() {');\n\t\t\tshader.fragmentShader =\n\t\t\t\t'varying vec2 vUv;\\n' +\n\t\t\t\tshader.fragmentShader.slice(0, bodyStart) +\n\t\t\t\t'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n\t\t\t\tshader.fragmentShader.slice(bodyStart - 1, -1) +\n\t\t\t\t`\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n\t\t\t// Set the Previous Frame's Texture Buffer and Averaging Window\n\t\t\t// Set the Previous Frame's Texture Buffer and Averaging Window\n\t\t\tshader.uniforms['previousShadowMap'] = this.previousShadowMap;\n\t\t\tshader.uniforms['averagingWindow'] = this.averagingWindow;\n\t\t};\n\t}\n\n\tclear() {\n\t\tthis.renderer.getClearColor(this.clearColor);\n\t\tthis.clearAlpha = this.renderer.getClearAlpha();\n\t\tthis.renderer.setClearColor('black', 1);\n\t\tthis.renderer.setRenderTarget(this.progressiveLightMap1);\n\t\tthis.renderer.clear();\n\t\tthis.renderer.setRenderTarget(this.progressiveLightMap2);\n\t\tthis.renderer.clear();\n\t\tthis.renderer.setRenderTarget(null);\n\t\tthis.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n\t\tthis.lights = [];\n\t\tthis.meshes = [];\n\t\tthis.scene.traverse((object) => {\n\t\t\tif (isGeometry(object)) {\n\t\t\t\tthis.meshes.push({ object, material: object.material });\n\t\t\t} else if (isLight(object)) {\n\t\t\t\tthis.lights.push({ object, intensity: object.intensity });\n\t\t\t}\n\t\t});\n\t}\n\n\tprepare() {\n\t\tthis.lights.forEach((light) => (light.object.intensity = 0));\n\t\tthis.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n\t}\n\n\tfinish() {\n\t\tthis.lights.forEach((light) => (light.object.intensity = light.intensity));\n\t\tthis.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n\t}\n\n\tconfigure(object: THREE.Mesh) {\n\t\tthis.object = object;\n\t}\n\n\tupdate(camera: THREE.Camera, blendWindow = 100) {\n\t\tif (!this.object) return;\n\t\t// Set each object's material to the UV Unwrapped Surface Mapping Version\n\t\tthis.averagingWindow.value = blendWindow;\n\t\tthis.object.material = this.targetMat;\n\t\t// Ping-pong two surface buffers for reading/writing\n\t\tconst activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n\t\tconst inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n\t\t// Render the object's surface maps\n\t\tconst oldBg = this.scene.background;\n\t\tthis.scene.background = null;\n\t\tthis.renderer.setRenderTarget(activeMap);\n\t\tthis.previousShadowMap.value = inactiveMap.texture;\n\t\tthis.buffer1Active = !this.buffer1Active;\n\t\tthis.renderer.render(this.scene, camera);\n\t\tthis.renderer.setRenderTarget(null);\n\t\tthis.scene.background = oldBg;\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInput,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tuntracked,\n\ttype Signal,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsignalStore,\n\ttype NgtGroup,\n} from 'angular-three';\nimport { SoftShadowMaterial, type NgtSoftShadowMaterialState } from 'angular-three-soba/shaders';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nextend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });\n\nexport type NgtsAccumulativeShadowsState = {\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\tframes: number;\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\tblend: number;\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\tlimit: number;\n\t/** Scale of the plane, */\n\tscale: number;\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\ttemporal: boolean;\n\t/** Opacity of the plane, 1 */\n\topacity: number;\n\t/** Discards alpha pixels, 0.65 */\n\talphaTest: number;\n\t/** Shadow color, black */\n\tcolor: string;\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\tcolorBlend: number;\n\t/** Buffer resolution, 1024 */\n\tresolution: number;\n\t/** Texture tonemapping */\n\ttoneMapped: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-accumulative-shadows': NgtsAccumulativeShadowsState & NgtGroup;\n\t}\n}\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport const [injectNgtsAccumulativeShadowsApi, provideNgtsAccumulativeShadowsApi] = createInjectionToken(\n\t(shadows: NgtsAccumulativeShadows) => shadows.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsAccumulativeShadows)] },\n);\n\n@Component({\n\tselector: 'ngts-accumulative-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group [traverse]=\"nullTraverse\" [ref]=\"accumulativeShadowsRef\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t\t<ngt-mesh [receiveShadow]=\"true\" [ref]=\"meshRef\" [scale]=\"scale()\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-soft-shadow-material\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t\t[toneMapped]=\"toneMapped()\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[blend]=\"colorBlend()\"\n\t\t\t\t\t[map]=\"map()\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tproviders: [provideNgtsAccumulativeShadowsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows {\n\tprivate inputs = signalStore<NgtsAccumulativeShadowsState>({\n\t\tframes: 40,\n\t\tlimit: Infinity,\n\t\tblend: 20,\n\t\tscale: 10,\n\t\topacity: 1,\n\t\talphaTest: 0.75,\n\t\tcolor: 'black',\n\t\tcolorBlend: 2,\n\t\tresolution: 1024,\n\t\ttoneMapped: true,\n\t\ttemporal: false,\n\t});\n\n\tnullTraverse = () => null;\n\tMath = Math;\n\n\t@Input() accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\t@Input({ alias: 'blend' }) set _blend(blend: number) {\n\t\tthis.inputs.set({ blend });\n\t}\n\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t/** Scale of the plane, */\n\t@Input({ alias: 'scale' }) set _scale(scale: number) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\t@Input({ alias: 'temporal' }) set _temporal(temporal: boolean) {\n\t\tthis.inputs.set({ temporal });\n\t}\n\n\t/** Opacity of the plane, 1 */\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t/** Discards alpha pixels, 0.65 */\n\t@Input({ alias: 'alphaTest' }) set _alphaTest(alphaTest: number) {\n\t\tthis.inputs.set({ alphaTest });\n\t}\n\n\t/** Shadow color, black */\n\t@Input({ alias: 'color' }) set _color(color: string) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\t@Input({ alias: 'colorBlend' }) set _colorBlend(colorBlend: number) {\n\t\tthis.inputs.set({ colorBlend });\n\t}\n\n\t/** Buffer resolution, 1024 */\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t/** Texture tonemapping */\n\t@Input({ alias: 'toneMapped' }) set _toneMapped(toneMapped: boolean) {\n\t\tthis.inputs.set({ toneMapped });\n\t}\n\n\tmeshRef = injectNgtRef<THREE.Mesh<THREE.PlaneGeometry, NgtSoftShadowMaterialState & THREE.ShaderMaterial>>();\n\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate scene = this.store.select('scene');\n\tprivate camera = this.store.select('camera');\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate resolution = this.inputs.select('resolution');\n\tprivate alphaTest = this.inputs.select('alphaTest');\n\tprivate opacity = this.inputs.select('opacity');\n\tprivate temporal = this.inputs.select('temporal');\n\tprivate blend = this.inputs.select('blend');\n\tprivate frames = this.inputs.select('frames');\n\n\tpLM = computed(() => new ProgressiveLightMap(untracked(this.gl), untracked(this.scene), this.resolution()));\n\n\tscale = this.inputs.select('scale');\n\ttoneMapped = this.inputs.select('toneMapped');\n\tcolor = this.inputs.select('color');\n\tcolorBlend = this.inputs.select('colorBlend');\n\tmap = computed(() => this.pLM().progressiveLightMap2.texture);\n\n\tapi = computed(() => {\n\t\tconst [pLM, alphaTest, opacity, camera, temporal, blend, frames] = [\n\t\t\tthis.pLM(),\n\t\t\tthis.alphaTest(),\n\t\t\tthis.opacity(),\n\t\t\tthis.camera(),\n\t\t\tthis.temporal(),\n\t\t\tthis.blend(),\n\t\t\tthis.frames(),\n\t\t];\n\t\tconst api = {\n\t\t\tlights: new Map<string, Signal<NgtsAccumulativeShadowsLightApi>>(),\n\t\t\ttemporal,\n\t\t\tframes: Math.max(2, frames),\n\t\t\tblend: Math.max(2, frames === Infinity ? blend : frames),\n\t\t\tcount: 0,\n\t\t\tgetMesh: () => this.meshRef.nativeElement,\n\t\t\treset: () => {\n\t\t\t\tif (!this.meshRef.nativeElement) return;\n\t\t\t\t// Clear buffers, reset opacities, set frame count to 0\n\t\t\t\tpLM.clear();\n\t\t\t\tconst material = this.meshRef.nativeElement.material;\n\t\t\t\tmaterial.opacity = 0;\n\t\t\t\tmaterial.alphaTest = 0;\n\t\t\t\tapi.count = 0;\n\t\t\t},\n\t\t\tupdate: (frames = 1) => {\n\t\t\t\tif (!this.meshRef.nativeElement) return;\n\t\t\t\t// Adapt the opacity-blend ratio to the number of frames\n\t\t\t\tconst material = this.meshRef.nativeElement.material;\n\t\t\t\tif (!api.temporal) {\n\t\t\t\t\tmaterial.opacity = opacity;\n\t\t\t\t\tmaterial.alphaTest = alphaTest;\n\t\t\t\t} else {\n\t\t\t\t\tmaterial.opacity = Math.min(opacity, material.opacity + opacity / api.blend);\n\t\t\t\t\tmaterial.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / api.blend);\n\t\t\t\t}\n\n\t\t\t\t// Switch accumulative lights on\n\t\t\t\tthis.accumulativeShadowsRef.nativeElement.visible = true;\n\t\t\t\t// Collect scene lights and meshes\n\t\t\t\tpLM.prepare();\n\n\t\t\t\t// Update the lightmap and the accumulative lights\n\t\t\t\tfor (let i = 0; i < frames; i++) {\n\t\t\t\t\tapi.lights.forEach((light) => light().update());\n\t\t\t\t\tpLM.update(camera, api.blend);\n\t\t\t\t}\n\n\t\t\t\t// Switch lights off\n\t\t\t\tthis.accumulativeShadowsRef.nativeElement.visible = false;\n\t\t\t\t// Restore lights and meshes\n\t\t\t\tpLM.finish();\n\t\t\t},\n\t\t};\n\n\t\treturn api;\n\t});\n\n\tconstructor() {\n\t\tthis.configure();\n\t\tthis.resetAndUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate configure() {\n\t\teffect(() => {\n\t\t\tconst [pLM, mesh] = [this.pLM(), this.meshRef.nativeElement];\n\t\t\tif (!mesh) return;\n\t\t\tpLM.configure(mesh);\n\t\t});\n\t}\n\n\tprivate resetAndUpdate() {\n\t\teffect(() => {\n\t\t\tconst [, , mesh] = [\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tgetLocalState(untracked(this.scene)).objects(),\n\t\t\t\tthis.meshRef.nativeElement,\n\t\t\t];\n\t\t\tif (!mesh) return;\n\t\t\tconst api = untracked(this.api);\n\t\t\t// Reset internals, buffers, ...\n\t\t\tapi.reset();\n\t\t\t// Update lightmap\n\t\t\tif (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [api, limit] = [this.api(), this.inputs.get('limit')];\n\t\t\tif ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n\t\t\t\tthis.invalidate();\n\t\t\t\tapi.update();\n\t\t\t\tapi.count++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';\nimport { NgtArgs, NgtRepeat, extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { injectNgtsAccumulativeShadowsApi } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport type NgtsRandomizedLightsState = {\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\tframes: number;\n\t/** Light position, [0, 0, 0] */\n\tposition: [x: number, y: number, z: number];\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\tradius: number;\n\t/** Amount of lights, 8 */\n\tamount: number;\n\t/** Light intensity, 1 */\n\tintensity: number;\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\tambient: number;\n\t/** If the lights cast shadows, this is true by default */\n\tcastShadow: boolean;\n\t/** Default shadow bias, 0 */\n\tbias: number;\n\t/** Default map size, 512 */\n\tmapSize: number;\n\t/** Default size of the shadow camera, 10 */\n\tsize: number;\n\t/** Default shadow camera near, 0.5 */\n\tnear: number;\n\t/** Default shadow camera far, 500 */\n\tfar: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-randomized-lights': NgtsRandomizedLightsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-randomized-lights',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"lightsRef\">\n\t\t\t<ngt-directional-light\n\t\t\t\t*ngFor=\"let i; repeat: amount()\"\n\t\t\t\t[castShadow]=\"castShadow()\"\n\t\t\t\t[intensity]=\"intensity() / amount()\"\n\t\t\t>\n\t\t\t\t<ngt-value [rawValue]=\"bias()\" attach=\"shadow.bias\" />\n\t\t\t\t<ngt-vector2 *args=\"shadowsMapSize()\" attach=\"shadow.mapSize\" />\n\t\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n\t\t\t</ngt-directional-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtRepeat, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights {\n\tprivate inputs = signalStore<NgtsRandomizedLightsState>({\n\t\tcastShadow: true,\n\t\tbias: 0.001,\n\t\tmapSize: 512,\n\t\tsize: 5,\n\t\tnear: 0.5,\n\t\tfar: 500,\n\t\tframes: 1,\n\t\tposition: [0, 0, 0],\n\t\tradius: 1,\n\t\tamount: 8,\n\t\tintensity: 1,\n\t\tambient: 0.5,\n\t});\n\tMath = Math;\n\n\t@Input() lightsRef = injectNgtRef<Group>();\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t/** Light position, [0, 0, 0] */\n\t@Input({ alias: 'position' }) set _position(position: [x: number, y: number, z: number]) {\n\t\tthis.inputs.set({ position });\n\t}\n\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\t@Input({ alias: 'radius' }) set _radius(radius: number) {\n\t\tthis.inputs.set({ radius });\n\t}\n\n\t/** Amount of lights, 8 */\n\t@Input({ alias: 'amount' }) set _amount(amount: number) {\n\t\tthis.inputs.set({ amount });\n\t}\n\n\t/** Light intensity, 1 */\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\t@Input({ alias: 'ambient' }) set _ambient(ambient: number) {\n\t\tthis.inputs.set({ ambient });\n\t}\n\n\t/** If the lights cast shadows, this is true by default */\n\t@Input({ alias: 'castShadow' }) set _castShadow(castShadow: boolean) {\n\t\tthis.inputs.set({ castShadow });\n\t}\n\n\t/** Default shadow bias, 0 */\n\t@Input({ alias: 'bias' }) set _bias(bias: number) {\n\t\tthis.inputs.set({ bias });\n\t}\n\n\t/** Default map size, 512 */\n\t@Input({ alias: 'mapSize' }) set _mapSize(mapSize: number) {\n\t\tthis.inputs.set({ mapSize });\n\t}\n\n\t/** Default size of the shadow camera, 10 */\n\t@Input({ alias: 'size' }) set _size(size: number) {\n\t\tthis.inputs.set({ size });\n\t}\n\n\t/** Default shadow camera near, 0.5 */\n\t@Input({ alias: 'near' }) set _near(near: number) {\n\t\tthis.inputs.set({ near });\n\t}\n\n\t/** Default shadow camera far, 500 */\n\t@Input({ alias: 'far' }) set _far(far: number) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\tprivate position = this.inputs.select('position');\n\tprivate ambient = this.inputs.select('ambient');\n\tprivate radius = this.inputs.select('radius');\n\tprivate mapSize = this.inputs.select('mapSize');\n\tprivate size = this.inputs.select('size');\n\tprivate near = this.inputs.select('near');\n\tprivate far = this.inputs.select('far');\n\n\tprivate length = computed(() => new THREE.Vector3(...this.position()).length());\n\n\tprivate shadowsApi = injectNgtsAccumulativeShadowsApi();\n\n\tamount = this.inputs.select('amount');\n\tcastShadow = this.inputs.select('castShadow');\n\tintensity = this.inputs.select('intensity');\n\tbias = this.inputs.select('bias');\n\n\tshadowsMapSize = computed(() => [this.mapSize(), this.mapSize()]);\n\tcameraArgs = computed(() => [-this.size(), this.size(), this.size(), -this.size(), this.near(), this.far()]);\n\n\tapi = computed(() => {\n\t\tconst [lights, ambient, radius, length, position] = [\n\t\t\tthis.lightsRef.nativeElement,\n\t\t\tthis.ambient(),\n\t\t\tthis.radius(),\n\t\t\tthis.length(),\n\t\t\tthis.position(),\n\t\t];\n\n\t\tconst update = () => {\n\t\t\tif (lights) {\n\t\t\t\tfor (let l = 0; l < lights.children.length; l++) {\n\t\t\t\t\tconst light = lights.children[l] as THREE.DirectionalLight;\n\t\t\t\t\tif (Math.random() > ambient) {\n\t\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\t\tposition[0] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t\tposition[1] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t\tposition[2] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n\t\t\t\t\t\tconst phi = 2 * Math.PI * Math.random();\n\t\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\t\tMath.cos(lambda) * Math.cos(phi) * length,\n\t\t\t\t\t\t\tMath.abs(Math.cos(lambda) * Math.sin(phi) * length),\n\t\t\t\t\t\t\tMath.sin(lambda) * length,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn { update };\n\t});\n\n\tconstructor() {\n\t\tthis.updateLightMap();\n\t}\n\n\tprivate updateLightMap() {\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.lightsRef.nativeElement;\n\t\t\tif (!lights) return;\n\t\t\tconst shadowsApi = this.shadowsApi();\n\t\t\tif (shadowsApi) {\n\t\t\t\tshadowsApi.lights.set(lights.uuid, this.api);\n\t\t\t\tonCleanup(() => shadowsApi.lights.delete(lights.uuid));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, effect } from '@angular/core';\nimport { NgtArgs, checkUpdate, extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport { Group, Mesh, PlaneGeometry, type BufferAttribute } from 'three';\n\nconst easeInExpo = (x: number) => (x === 0 ? 0 : Math.pow(2, 10 * x - 10));\n\nexport type NgtsBackdropState = {\n\tfloor: number;\n\tsegments: number;\n\treceiveShadow: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-backdrop': NgtsBackdropState & NgtGroup;\n\t}\n}\n\nextend({ Group, Mesh, PlaneGeometry });\n\n@Component({\n\tselector: 'ngts-backdrop',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-mesh [receiveShadow]=\"receiveShadow()\" [rotation]=\"[-Math.PI / 2, 0, Math.PI / 2]\">\n\t\t\t\t<ngt-plane-geometry [ref]=\"planeRef\" *args=\"[1, 1, segments(), segments()]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBackdrop {\n\tMath = Math;\n\n\tprivate inputs = signalStore<NgtsBackdropState>({ floor: 0.25, segments: 20, receiveShadow: false });\n\n\t@Input({ alias: 'floor' }) set _floor(floor: number) {\n\t\tthis.inputs.set({ floor });\n\t}\n\n\t@Input({ alias: 'segments' }) set _segments(segments: number) {\n\t\tthis.inputs.set({ segments });\n\t}\n\n\t@Input({ alias: 'receiveShadow' }) set _receiveShadow(receiveShadow: boolean) {\n\t\tthis.inputs.set({ receiveShadow });\n\t}\n\n\tprivate floor = this.inputs.select('floor');\n\n\tplaneRef = injectNgtRef<PlaneGeometry>();\n\tsegments = this.inputs.select('segments');\n\treceiveShadow = this.inputs.select('receiveShadow');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst plane = this.planeRef.nativeElement;\n\t\t\tif (!plane) return;\n\t\t\tconst [segments, floor] = [this.segments(), this.floor()];\n\t\t\tconst offset = segments / segments / 2;\n\t\t\tconst position = plane.attributes['position'] as BufferAttribute;\n\t\t\tlet i = 0;\n\t\t\tfor (let x = 0; x < segments + 1; x++) {\n\t\t\t\tfor (let y = 0; y < segments + 1; y++) {\n\t\t\t\t\tposition.setXYZ(\n\t\t\t\t\t\ti++,\n\t\t\t\t\t\tx / segments - offset + (x === 0 ? -floor : 0),\n\t\t\t\t\t\ty / segments - offset,\n\t\t\t\t\t\teaseInExpo(x / segments),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckUpdate(position);\n\t\t\tplane.computeVertexNormals();\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nconst boundingBox = new THREE.Box3();\nconst boundingBoxSize = new THREE.Vector3();\n\nexport type NgtsBBAnchorState = {\n\tanchor: THREE.Vector3 | [number, number, number];\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-bb-anchor': NgtsBBAnchorState & NgtGroup;\n\t}\n}\n\nextend({ Group });\n\n@Component({\n\tselector: 'ngts-bb-anchor',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"groupRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBBAnchor {\n\tprivate inputs = signalStore<NgtsBBAnchorState>();\n\n\t@Input({ required: true, alias: 'anchor' }) set _anchor(anchor: NgtsBBAnchorState['anchor']) {\n\t\tthis.inputs.set({ anchor });\n\t}\n\n\tgroupRef = injectNgtRef<Group>();\n\tprivate parentRef = injectNgtRef<THREE.Object3D | null>();\n\tprivate anchor = this.inputs.select('anchor');\n\tprivate xyz = computed(() => {\n\t\tconst anchor = this.anchor();\n\t\treturn Array.isArray(anchor) ? anchor : [anchor.x, anchor.y, anchor.z];\n\t});\n\n\tconstructor() {\n\t\tthis.reattachParent();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate reattachParent() {\n\t\teffect(() => {\n\t\t\tconst group = this.groupRef.nativeElement;\n\t\t\tif (!group) return;\n\t\t\tif (group.parent?.parent) {\n\t\t\t\tthis.parentRef.nativeElement = group.parent.parent;\n\t\t\t\tgroup.parent.parent.add(group);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [parent, group, anchor] = [this.parentRef.nativeElement, this.groupRef.nativeElement, this.xyz()];\n\n\t\t\tif (parent) {\n\t\t\t\tboundingBox.setFromObject(parent);\n\t\t\t\tboundingBox.getSize(boundingBoxSize);\n\n\t\t\t\tgroup.position.set(\n\t\t\t\t\tparent.position.x + (boundingBoxSize.x * anchor[0]) / 2,\n\t\t\t\t\tparent.position.y + (boundingBoxSize.y * anchor[1]) / 2,\n\t\t\t\t\tparent.position.z + (boundingBoxSize.z * anchor[2]) / 2,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tuntracked,\n\ttype Signal,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\tsignalStore,\n\ttype NgtGroup,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsBoundsSize = {\n\tbox: THREE.Box3;\n\tsize: THREE.Vector3;\n\tcenter: THREE.Vector3;\n\tdistance: number;\n};\n\ntype ControlsProto = {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\tmaxDistance: number;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: any): def is THREE.Box3 => def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n\treturn Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n\tv.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n\tv.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n\tv.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport type NgtsBoundsState = {\n\tdamping: number;\n\tfit: boolean;\n\tclip: boolean;\n\tobserve: boolean;\n\tmargin: number;\n\teps: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-bounds': NgtsBoundsState & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsBoundsApi, provideNgtsBoundsApi] = createInjectionToken((bounds: NgtsBounds) => bounds.api, {\n\tisRoot: false,\n\tdeps: [forwardRef(() => NgtsBounds)],\n});\n\n@Component({\n\tselector: 'ngts-bounds',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"boundsRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tproviders: [provideNgtsBoundsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds {\n\tprivate inputs = signalStore<NgtsBoundsState>({\n\t\tdamping: 6,\n\t\tfit: false,\n\t\tclip: false,\n\t\tobserve: false,\n\t\tmargin: 1.2,\n\t\teps: 0.01,\n\t});\n\n\t@Input() boundsRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'damping' }) set _damping(damping: number) {\n\t\tthis.inputs.set({ damping });\n\t}\n\n\t@Input({ alias: 'fit' }) set _fit(fit: boolean) {\n\t\tthis.inputs.set({ fit });\n\t}\n\n\t@Input({ alias: 'clip' }) set _clip(clip: boolean) {\n\t\tthis.inputs.set({ clip });\n\t}\n\n\t@Input({ alias: 'observe' }) set _observe(observe: boolean) {\n\t\tthis.inputs.set({ observe });\n\t}\n\n\t@Input({ alias: 'margin' }) set _margin(margin: number) {\n\t\tthis.inputs.set({ margin });\n\t}\n\n\t@Input({ alias: 'eps' }) set _eps(eps: number) {\n\t\tthis.inputs.set({ eps });\n\t}\n\n\t@Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n\tprivate store = injectNgtStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate size = this.store.select('size');\n\tprivate camera = this.store.select('camera');\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate fit = this.inputs.select('fit');\n\tprivate clip = this.inputs.select('clip');\n\tprivate observe = this.inputs.select('observe');\n\tprivate margin = this.inputs.select('margin');\n\tprivate damping = this.inputs.select('damping');\n\n\tprivate current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\tprivate goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\tprivate box = new THREE.Box3();\n\n\tapi = computed(() => {\n\t\tconst { box, boundsRef, current, goal, fitted } = this;\n\t\tconst [camera, margin, controls, invalidate, damping] = [\n\t\t\tthis.camera(),\n\t\t\tthis.margin(),\n\t\t\tthis.controls(),\n\t\t\tthis.invalidate(),\n\t\t\tthis.damping(),\n\t\t];\n\n\t\tfunction getSize() {\n\t\t\tconst size = box.getSize(new THREE.Vector3());\n\t\t\tconst center = box.getCenter(new THREE.Vector3());\n\t\t\tconst maxSize = Math.max(size.x, size.y, size.z);\n\t\t\tconst fitHeightDistance = is.orthographicCamera(camera)\n\t\t\t\t? maxSize * 4\n\t\t\t\t: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n\t\t\tconst fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n\t\t\tconst distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n\t\t\treturn { box, size, center, distance };\n\t\t}\n\n\t\treturn {\n\t\t\tgetSize,\n\t\t\trefresh(object?: THREE.Object3D | THREE.Box3) {\n\t\t\t\tif (isBox3(object)) box.copy(object);\n\t\t\t\telse {\n\t\t\t\t\tconst target = object || boundsRef.nativeElement;\n\t\t\t\t\tif (!target) return this;\n\t\t\t\t\ttarget.updateWorldMatrix(true, true);\n\t\t\t\t\tbox.setFromObject(target);\n\t\t\t\t}\n\t\t\t\tif (box.isEmpty()) {\n\t\t\t\t\tconst max = camera.position.length() || 10;\n\t\t\t\t\tbox.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n\t\t\t\t}\n\n\t\t\t\tif (controls?.constructor.name === 'OrthographicTrackballControls') {\n\t\t\t\t\t// Put camera on a sphere along which it should move\n\t\t\t\t\tconst { distance } = getSize();\n\t\t\t\t\tconst direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n\t\t\t\t\tconst newPos = controls.target.clone().add(direction);\n\t\t\t\t\tcamera.position.copy(newPos);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tclip() {\n\t\t\t\tconst { distance } = getSize();\n\t\t\t\tif (controls) controls.maxDistance = distance * 10;\n\t\t\t\tcamera.near = distance / 100;\n\t\t\t\tcamera.far = distance * 100;\n\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\tif (controls) controls.update();\n\t\t\t\tinvalidate();\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tto({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n\t\t\t\tcurrent.camera.copy(camera.position);\n\t\t\t\tconst { center } = getSize();\n\t\t\t\tgoal.camera.set(...position);\n\n\t\t\t\tif (target) {\n\t\t\t\t\tgoal.focus.set(...target);\n\t\t\t\t} else {\n\t\t\t\t\tgoal.focus.copy(center);\n\t\t\t\t}\n\n\t\t\t\tif (damping) {\n\t\t\t\t\tcurrent.animating = true;\n\t\t\t\t} else {\n\t\t\t\t\tcamera.position.set(...position);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfit() {\n\t\t\t\tcurrent.camera.copy(camera.position);\n\t\t\t\tif (controls) current.focus.copy(controls.target);\n\n\t\t\t\tconst { center, distance } = getSize();\n\t\t\t\tconst direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n\t\t\t\tgoal.camera.copy(center).sub(direction);\n\t\t\t\tgoal.focus.copy(center);\n\n\t\t\t\tif (is.orthographicCamera(camera)) {\n\t\t\t\t\tcurrent.zoom = camera.zoom;\n\n\t\t\t\t\tlet maxHeight = 0,\n\t\t\t\t\t\tmaxWidth = 0;\n\t\t\t\t\tconst vertices = [\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.min.z),\n\t\t\t\t\t];\n\t\t\t\t\t// Transform the center and each corner to camera space\n\t\t\t\t\tcenter.applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t\tfor (const v of vertices) {\n\t\t\t\t\t\tv.applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t\t\tmaxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n\t\t\t\t\t\tmaxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight *= 2;\n\t\t\t\t\tmaxWidth *= 2;\n\t\t\t\t\tconst zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n\t\t\t\t\tconst zoomForWidth = (camera.right - camera.left) / maxWidth;\n\t\t\t\t\tgoal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n\t\t\t\t\tif (!damping) {\n\t\t\t\t\t\tcamera.zoom = goal.zoom;\n\t\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (damping) {\n\t\t\t\t\tcurrent.animating = true;\n\t\t\t\t} else {\n\t\t\t\t\tcamera.position.copy(goal.camera);\n\t\t\t\t\tcamera.lookAt(goal.focus);\n\t\t\t\t\tif (controls) {\n\t\t\t\t\t\tcontrols.target.copy(goal.focus);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (fitted.observed) {\n\t\t\t\t\tfitted.emit(this.getSize());\n\t\t\t\t}\n\t\t\t\tinvalidate();\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tthis.preventDragHijacking();\n\t\tthis.scalePointer();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate preventDragHijacking() {\n\t\teffect((onCleanup) => {\n\t\t\tconst controls = this.controls();\n\t\t\tif (controls) {\n\t\t\t\tconst callback = () => (this.current.animating = false);\n\t\t\t\tcontrols.addEventListener('start', callback);\n\t\t\t\tonCleanup(() => controls.removeEventListener('start', callback));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate scalePointer() {\n\t\tlet count = 0;\n\t\teffect(() => {\n\t\t\tconst [observe, fit, clip, api] = [\n\t\t\t\tthis.observe(),\n\t\t\t\tthis.fit(),\n\t\t\t\tthis.clip(),\n\t\t\t\tuntracked(this.api),\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.size(),\n\t\t\t];\n\n\t\t\tif (observe || count++ === 0) {\n\t\t\t\tapi.refresh();\n\t\t\t\tif (fit) api.fit();\n\t\t\t\tif (clip) api.clip();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [{ damping, eps }, camera, controls, invalidate] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\n\t\t\tif (this.current.animating) {\n\t\t\t\tdamp(this.current.focus, this.goal.focus, damping, delta);\n\t\t\t\tdamp(this.current.camera, this.goal.camera, damping, delta);\n\t\t\t\tthis.current.zoom = THREE.MathUtils.damp(this.current.zoom, this.goal.zoom, damping, delta);\n\t\t\t\tcamera.position.copy(this.current.camera);\n\n\t\t\t\tif (is.orthographicCamera(camera)) {\n\t\t\t\t\tcamera.zoom = this.current.zoom;\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tif (!controls) {\n\t\t\t\t\tcamera.lookAt(this.current.focus);\n\t\t\t\t} else {\n\t\t\t\t\tcontrols.target.copy(this.current.focus);\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\n\t\t\t\tinvalidate();\n\t\t\t\tif (is.orthographicCamera(camera) && !(Math.abs(this.current.zoom - this.goal.zoom) < eps)) return;\n\t\t\t\tif (!is.orthographicCamera(camera) && !equals(this.current.camera, this.goal.camera, eps)) return;\n\t\t\t\tif (controls && !equals(this.current.focus, this.goal.focus, eps)) return;\n\t\t\t\tthis.current.animating = false;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed, effect, type Signal } from '@angular/core';\nimport { injectBeforeRender, injectNgtStore, signalStore } from 'angular-three';\nimport { SimplexNoise } from 'three-stdlib';\n\ntype ControlsProto = {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nexport type NgtsCameraShakeState = {\n\tdecay?: boolean;\n\tintensity: number;\n\tdecayRate: number;\n\tmaxYaw: number;\n\tmaxPitch: number;\n\tmaxRoll: number;\n\tyawFrequency: number;\n\tpitchFrequency: number;\n\trollFrequency: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-camera-shake': NgtsCameraShakeState;\n\t}\n}\n\n@Directive({\n\tselector: 'ngts-camera-shake',\n\tstandalone: true,\n})\nexport class NgtsCameraShake {\n\tprivate inputs = signalStore<NgtsCameraShakeState>({\n\t\tintensity: 1,\n\t\tdecayRate: 0.65,\n\t\tmaxYaw: 0.1,\n\t\tmaxPitch: 0.1,\n\t\tmaxRoll: 0.1,\n\t\tyawFrequency: 0.1,\n\t\tpitchFrequency: 0.1,\n\t\trollFrequency: 0.1,\n\t});\n\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t@Input({ alias: 'decay' }) set _decay(decay: boolean) {\n\t\tthis.inputs.set({ decay });\n\t}\n\n\t@Input({ alias: 'decayRate' }) set _decayRate(decayRate: number) {\n\t\tthis.inputs.set({ decayRate });\n\t}\n\n\t@Input({ alias: 'maxYaw' }) set _maxYaw(maxYaw: number) {\n\t\tthis.inputs.set({ maxYaw });\n\t}\n\n\t@Input({ alias: 'maxPitch' }) set _maxPitch(maxPitch: number) {\n\t\tthis.inputs.set({ maxPitch });\n\t}\n\n\t@Input({ alias: 'maxRoll' }) set _maxRoll(maxRoll: number) {\n\t\tthis.inputs.set({ maxRoll });\n\t}\n\n\t@Input({ alias: 'yawFrequency' }) set _yawFrequency(yawFrequency: number) {\n\t\tthis.inputs.set({ yawFrequency });\n\t}\n\n\t@Input({ alias: 'pitchFrequency' }) set _pitchFrequency(pitchFrequency: number) {\n\t\tthis.inputs.set({ pitchFrequency });\n\t}\n\n\t@Input({ alias: 'rollFrequency' }) set _rollFrequency(rollFrequency: number) {\n\t\tthis.inputs.set({ rollFrequency });\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate camera = this.store.select('camera');\n\tprivate controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\n\tprivate initialRotation = this.store.get('camera').rotation.clone();\n\tprivate yawNoise = new SimplexNoise();\n\tprivate rollNoise = new SimplexNoise();\n\tprivate pitchNoise = new SimplexNoise();\n\n\tprivate intensity = this.inputs.select('intensity');\n\tprivate constrainedIntensity = computed(() => {\n\t\tconst intensity = this.intensity();\n\t\tif (intensity < 0 || intensity > 1) {\n\t\t\treturn intensity < 0 ? 0 : 1;\n\t\t}\n\t\treturn intensity;\n\t});\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t\tthis.setEvents();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ clock, delta }) => {\n\t\t\tconst [\n\t\t\t\t{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate },\n\t\t\t\tintensity,\n\t\t\t\tcamera,\n\t\t\t] = [this.inputs.get(), this.constrainedIntensity(), this.camera()];\n\n\t\t\tconst shake = Math.pow(intensity, 2);\n\t\t\tconst yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n\t\t\tconst pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n\t\t\tconst roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n\t\t\tcamera.rotation.set(\n\t\t\t\tthis.initialRotation.x + pitch,\n\t\t\t\tthis.initialRotation.y + yaw,\n\t\t\t\tthis.initialRotation.z + roll,\n\t\t\t);\n\n\t\t\tif (decay && intensity > 0) {\n\t\t\t\tthis.inputs.set((state) => ({ intensity: state.intensity - decayRate * delta }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [camera, controls] = [this.camera(), this.controls()];\n\t\t\tif (controls) {\n\t\t\t\tconst callback = () => void (this.initialRotation = camera.rotation.clone());\n\t\t\t\tcontrols.addEventListener('change', callback);\n\t\t\t\tcallback();\n\t\t\t\tonCleanup(() => void controls.removeEventListener('change', callback));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, effect } from '@angular/core';\nimport { extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsCenteredEvent = {\n\t/** The next parent above <Center> */\n\tparent: THREE.Object3D;\n\t/** The outmost container group of the <Center> component */\n\tcontainer: THREE.Object3D;\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tboundingBox: THREE.Box3;\n\tboundingSphere: THREE.Sphere;\n\tcenter: THREE.Vector3;\n\tverticalAlignment: number;\n\thorizontalAlignment: number;\n\tdepthAlignment: number;\n};\n\nexport type NgtsCenterState = {\n\ttop?: boolean;\n\tright?: boolean;\n\tbottom?: boolean;\n\tleft?: boolean;\n\tfront?: boolean;\n\tback?: boolean;\n\t/** Disable all axes */\n\tdisable?: boolean;\n\t/** Disable x-axis centering */\n\tdisableX?: boolean;\n\t/** Disable y-axis centering */\n\tdisableY?: boolean;\n\t/** Disable z-axis centering */\n\tdisableZ?: boolean;\n\t/** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n\tprecise?: boolean;\n\t/** Optional cacheKey to keep the component from recalculating on every render */\n\tcacheKey?: any;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-center': NgtsCenterState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-center',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"centerRef\" ngtCompound>\n\t\t\t<ngt-group [ref]=\"outerRef\">\n\t\t\t\t<ngt-group [ref]=\"innerRef\">\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter {\n\tprivate inputs = signalStore<NgtsCenterState>({\n\t\tprecise: true,\n\t\tcacheKey: 0,\n\t});\n\n\t@Input() centerRef = injectNgtRef<Group>();\n\touterRef = injectNgtRef<Group>();\n\tinnerRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'top' }) set _top(top: boolean) {\n\t\tthis.inputs.set({ top });\n\t}\n\n\t@Input({ alias: 'right' }) set _right(right: boolean) {\n\t\tthis.inputs.set({ right });\n\t}\n\n\t@Input({ alias: 'bottom' }) set _bottom(bottom: boolean) {\n\t\tthis.inputs.set({ bottom });\n\t}\n\n\t@Input({ alias: 'left' }) set _left(left: boolean) {\n\t\tthis.inputs.set({ left });\n\t}\n\n\t@Input({ alias: 'front' }) set _front(front: boolean) {\n\t\tthis.inputs.set({ front });\n\t}\n\n\t@Input({ alias: 'back' }) set _back(back: boolean) {\n\t\tthis.inputs.set({ back });\n\t}\n\n\t@Input({ alias: 'disableX' }) set _disableX(disableX: boolean) {\n\t\tthis.inputs.set({ disableX });\n\t}\n\n\t@Input({ alias: 'disableY' }) set _disableY(disableY: boolean) {\n\t\tthis.inputs.set({ disableY });\n\t}\n\n\t@Input({ alias: 'disableZ' }) set _disableZ(disableZ: boolean) {\n\t\tthis.inputs.set({ disableZ });\n\t}\n\n\t@Input({ alias: 'disable' }) set _disable(disable: boolean) {\n\t\tthis.inputs.set({ disable });\n\t}\n\n\t@Input({ alias: 'precise' }) set _precise(precise: boolean) {\n\t\tthis.inputs.set({ precise });\n\t}\n\n\t@Input({ alias: 'cacheKey' }) set _cacheKey(cacheKey: any) {\n\t\tthis.inputs.set({ cacheKey });\n\t}\n\n\t@Output() centered = new EventEmitter<NgtsCenteredEvent>();\n\n\tconstructor() {\n\t\tthis.setPosition();\n\t}\n\n\tprivate setPosition() {\n\t\tconst innerChildren = this.innerRef.children();\n\n\t\teffect(() => {\n\t\t\tconst [\n\t\t\t\touter,\n\t\t\t\tinner,\n\t\t\t\tcenterRef,\n\t\t\t\t{ precise, top, bottom, left, front, right, back, disable, disableX, disableY, disableZ },\n\t\t\t] = [\n\t\t\t\tthis.outerRef.nativeElement,\n\t\t\t\tthis.innerRef.nativeElement,\n\t\t\t\tthis.centerRef.nativeElement,\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tinnerChildren(),\n\t\t\t];\n\n\t\t\tif (outer && inner && centerRef) {\n\t\t\t\touter.matrixWorld.identity();\n\t\t\t\tconst box3 = new THREE.Box3().setFromObject(inner, precise);\n\t\t\t\tconst center = new THREE.Vector3();\n\t\t\t\tconst sphere = new THREE.Sphere();\n\t\t\t\tconst width = box3.max.x - box3.min.x;\n\t\t\t\tconst height = box3.max.y - box3.min.y;\n\t\t\t\tconst depth = box3.max.z - box3.min.z;\n\t\t\t\tbox3.getCenter(center);\n\t\t\t\tbox3.getBoundingSphere(sphere);\n\t\t\t\tconst vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n\t\t\t\tconst hAlign = left ? -width / 2 : right ? width / 2 : 0;\n\t\t\t\tconst dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n\t\t\t\touter.position.set(\n\t\t\t\t\tdisable || disableX ? 0 : -center.x + hAlign,\n\t\t\t\t\tdisable || disableY ? 0 : -center.y + vAlign,\n\t\t\t\t\tdisable || disableZ ? 0 : -center.z + dAlign,\n\t\t\t\t);\n\n\t\t\t\tif (this.centered.observed) {\n\t\t\t\t\tthis.centered.emit({\n\t\t\t\t\t\tparent: centerRef.parent!,\n\t\t\t\t\t\tcontainer: centerRef,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tdepth,\n\t\t\t\t\t\tboundingBox: box3,\n\t\t\t\t\t\tboundingSphere: sphere,\n\t\t\t\t\t\tcenter: center,\n\t\t\t\t\t\tverticalAlignment: vAlign,\n\t\t\t\t\t\thorizontalAlignment: hAlign,\n\t\t\t\t\t\tdepthAlignment: dAlign,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { extend, injectNgtRef, signalStore, type NgtBeforeRenderEvent, type NgtGroup } from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Group, Mesh, MeshStandardMaterial, PlaneGeometry } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n(injectNgtsTextureLoader as any).preload(() => CLOUD_URL);\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\nexport type NgtsCloudState = {\n\topacity: number;\n\tspeed: number;\n\twidth: number;\n\tdepth: number;\n\tsegments: number;\n\ttexture: string;\n\tcolor: THREE.ColorRepresentation;\n\tdepthTest: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-cloud': NgtsCloudState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-cloud',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group\n\t\t\t\t[position]=\"[0, 0, (segments() / 2) * depth()]\"\n\t\t\t\t[ref]=\"groupRef\"\n\t\t\t\t(beforeRender)=\"onBeforeRender($event)\"\n\t\t\t>\n\t\t\t\t<ngts-billboard\n\t\t\t\t\t*ngFor=\"let cloud of clouds(); let i = index\"\n\t\t\t\t\t[position]=\"[cloud.x, cloud.y, -i * depth()]\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n\t\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t\t<ngt-mesh-standard-material\n\t\t\t\t\t\t\t[map]=\"texture()\"\n\t\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t\t[opacity]=\"(cloud.scale / 6) * cloud.density * opacity()\"\n\t\t\t\t\t\t\t[depthTest]=\"depthTest()\"\n\t\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ngt-mesh>\n\t\t\t\t</ngts-billboard>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgFor, NgtsBillboard, NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud {\n\tprivate inputs = signalStore<NgtsCloudState>({\n\t\topacity: 0.5,\n\t\tspeed: 0.4,\n\t\twidth: 10,\n\t\tdepth: 1.5,\n\t\tsegments: 20,\n\t\ttexture: CLOUD_URL,\n\t\tcolor: '#ffffff',\n\t\tdepthTest: true,\n\t});\n\n\t@Input() groupRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'depth' }) set _depth(depth: number) {\n\t\tthis.inputs.set({ depth });\n\t}\n\n\t@Input({ alias: 'segments' }) set _segments(segments: number) {\n\t\tthis.inputs.set({ segments });\n\t}\n\n\t@Input({ alias: 'texture' }) set _texture(texture: string) {\n\t\tthis.inputs.set({ texture });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'depthTest' }) set _depthTest(depthTest: boolean) {\n\t\tthis.inputs.set({ depthTest });\n\t}\n\n\tprivate width = this.inputs.select('width');\n\tprivate speed = this.inputs.select('speed');\n\n\tsegments = this.inputs.select('segments');\n\tdepth = this.inputs.select('depth');\n\tdepthTest = this.inputs.select('depthTest');\n\topacity = this.inputs.select('opacity');\n\tcolor = this.inputs.select('color');\n\ttexture = injectNgtsTextureLoader(this.inputs.select('texture'));\n\n\tclouds = computed(() =>\n\t\t[...new Array(this.segments())].map((_, index) => ({\n\t\t\tx: this.width() / 2 - Math.random() * this.width(),\n\t\t\ty: this.width() / 2 - Math.random() * this.width(),\n\t\t\tscale: 0.4 + Math.sin(((index + 1) / this.segments()) * Math.PI) * ((0.2 + Math.random()) * 10),\n\t\t\tdensity: Math.max(0.2, Math.random()),\n\t\t\trotation: Math.max(0.002, 0.005 * Math.random()) * this.speed(),\n\t\t})),\n\t);\n\tonBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n\t\tconst clouds = this.clouds();\n\t\tobject.children.forEach((cloud, index) => {\n\t\t\tcloud.children[0].rotation.z += clouds[index].rotation;\n\t\t\tcloud.children[0].scale.setScalar(\n\t\t\t\tclouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10,\n\t\t\t);\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport {\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\nexport type NgtsContactShadowsState = {\n\topacity: number;\n\twidth: number;\n\theight: number;\n\tblur: number;\n\tfar: number;\n\tsmooth: boolean;\n\tresolution: number;\n\tframes: number;\n\tscale: number | [x: number, y: number];\n\tcolor: THREE.ColorRepresentation;\n\tdepthWrite: boolean;\n\trenderOrder: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-contact-shadows': NgtsContactShadowsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-contact-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n\t\t\t<ngt-mesh\n\t\t\t\t[renderOrder]=\"renderOrder() ?? 0\"\n\t\t\t\t[geometry]=\"contactShadows().planeGeometry\"\n\t\t\t\t[scale]=\"[1, -1, 1]\"\n\t\t\t\t[rotation]=\"[-Math.PI / 2, 0, 0]\"\n\t\t\t>\n\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t[map]=\"contactShadows().renderTarget.texture\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[opacity]=\"opacity() ?? 1\"\n\t\t\t\t\t[depthWrite]=\"depthWrite() ?? false\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" [ref]=\"shadowCameraRef\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows {\n\tprivate inputs = signalStore<NgtsContactShadowsState>({\n\t\tscale: 10,\n\t\tframes: Infinity,\n\t\topacity: 1,\n\t\twidth: 1,\n\t\theight: 1,\n\t\tblur: 1,\n\t\tfar: 10,\n\t\tresolution: 512,\n\t\tsmooth: true,\n\t\tcolor: '#000000',\n\t\tdepthWrite: false,\n\t\trenderOrder: 0,\n\t});\n\n\t@Input() contactShadowsRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'height' }) set _height(height: number) {\n\t\tthis.inputs.set({ height });\n\t}\n\n\t@Input({ alias: 'blur' }) set _blur(blur: number) {\n\t\tthis.inputs.set({ blur });\n\t}\n\n\t@Input({ alias: 'far' }) set _far(far: number) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\t@Input({ alias: 'smooth' }) set _smooth(smooth: boolean) {\n\t\tthis.inputs.set({ smooth });\n\t}\n\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: number | [x: number, y: number]) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'depthWrite' }) set _depthWrite(depthWrite: boolean) {\n\t\tthis.inputs.set({ depthWrite });\n\t}\n\n\t@Input({ alias: 'renderOrder' }) set _renderOrder(renderOrder: number) {\n\t\tthis.inputs.set({ renderOrder });\n\t}\n\n\tMath = Math;\n\n\tprivate store = injectNgtStore();\n\n\tshadowCameraRef = injectNgtRef<OrthographicCamera>();\n\n\tprivate scale = this.inputs.select('scale');\n\tprivate width = this.inputs.select('width');\n\tprivate height = this.inputs.select('height');\n\tprivate far = this.inputs.select('far');\n\tprivate resolution = this.inputs.select('resolution');\n\tprivate color = this.inputs.select('color');\n\n\tprivate scaledWidth = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn this.width() * (Array.isArray(scale) ? scale[0] : scale || 1);\n\t});\n\tprivate scaledHeight = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn this.height() * (Array.isArray(scale) ? scale[1] : scale || 1);\n\t});\n\n\trenderOrder = this.inputs.select('renderOrder');\n\topacity = this.inputs.select('opacity');\n\tdepthWrite = this.inputs.select('depthWrite');\n\n\tcameraArgs = computed(() => {\n\t\tconst width = this.scaledWidth();\n\t\tconst height = this.scaledHeight();\n\t\treturn [-width / 2, width / 2, height / 2, -height / 2, 0, this.far()];\n\t});\n\tcontactShadows = computed(() => {\n\t\tconst color = this.color();\n\t\tconst resolution = this.resolution();\n\t\tconst renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\tconst renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\trenderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n\t\tconst planeGeometry = new THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2);\n\t\tconst blurPlane = new Mesh(planeGeometry);\n\t\tconst depthMaterial = new THREE.MeshDepthMaterial();\n\t\tdepthMaterial.depthTest = depthMaterial.depthWrite = false;\n\t\tdepthMaterial.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms = {\n\t\t\t\t...shader.uniforms,\n\t\t\t\tucolor: { value: new THREE.Color(color) },\n\t\t\t};\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`void main() {`, //\n\t\t\t\t`uniform vec3 ucolor;\n void main() {\n `,\n\t\t\t);\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n\t\t\t\t// Colorize the shadow, multiply by the falloff so that the center can remain darker\n\t\t\t\t'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );',\n\t\t\t);\n\t\t};\n\n\t\tconst horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n\t\tconst verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n\t\tverticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n\t\treturn {\n\t\t\trenderTarget,\n\t\t\tplaneGeometry,\n\t\t\tdepthMaterial,\n\t\t\tblurPlane,\n\t\t\thorizontalBlurMaterial,\n\t\t\tverticalBlurMaterial,\n\t\t\trenderTargetBlur,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(this.beforeRender.bind(this, 0));\n\t}\n\n\tprivate beforeRender(count: number, { scene, gl }: NgtRenderState) {\n\t\tconst { frames = Infinity, blur = 1, smooth = true } = this.inputs.get();\n\t\tconst { depthMaterial, renderTarget } = this.contactShadows();\n\t\tconst shadowCamera = this.shadowCameraRef.nativeElement;\n\t\tif (shadowCamera && (frames === Infinity || count < frames)) {\n\t\t\tconst initialBackground = scene.background;\n\t\t\tscene.background = null;\n\t\t\tconst initialOverrideMaterial = scene.overrideMaterial;\n\t\t\tscene.overrideMaterial = depthMaterial;\n\t\t\tgl.setRenderTarget(renderTarget);\n\t\t\tgl.render(scene, shadowCamera);\n\t\t\tscene.overrideMaterial = initialOverrideMaterial;\n\n\t\t\tthis.blurShadows(blur);\n\t\t\tif (smooth) this.blurShadows(blur * 0.4);\n\n\t\t\tgl.setRenderTarget(null);\n\t\t\tscene.background = initialBackground;\n\t\t\tcount++;\n\t\t}\n\t}\n\n\tprivate blurShadows(blur: number) {\n\t\tconst { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n\t\t\tthis.contactShadows();\n\t\tconst gl = this.store.get('gl');\n\t\tconst shadowCamera = this.shadowCameraRef.nativeElement;\n\n\t\tblurPlane.visible = true;\n\n\t\tblurPlane.material = horizontalBlurMaterial;\n\t\thorizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n\t\thorizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\n\t\tgl.setRenderTarget(renderTargetBlur);\n\t\tgl.render(blurPlane, shadowCamera);\n\n\t\tblurPlane.material = verticalBlurMaterial;\n\t\tverticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n\t\tverticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(blurPlane, shadowCamera);\n\n\t\tblurPlane.visible = false;\n\t}\n}\n","export const ENVIRONMENT_PRESETS = {\n\tapartment: 'lebombo_1k.hdr',\n\tcity: 'potsdamer_platz_1k.hdr',\n\tdawn: 'kiara_1_dawn_1k.hdr',\n\tforest: 'forest_slope_1k.hdr',\n\tlobby: 'st_fagans_interior_1k.hdr',\n\tnight: 'dikhololo_night_1k.hdr',\n\tpark: 'rooitou_park_1k.hdr',\n\tstudio: 'studio_small_03_1k.hdr',\n\tsunset: 'venice_sunset_1k.hdr',\n\twarehouse: 'empty_warehouse_01_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ENVIRONMENT_PRESETS;\n","import { Directive, ElementRef, Input, computed } from '@angular/core';\nimport { signalStore } from 'angular-three';\nimport type { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport type { NgtsEnvironmentPresetsType } from './assets';\n\nexport type NgtsEnvironmentInputState = {\n\tframes?: number;\n\tnear?: number;\n\tfar?: number;\n\tresolution?: number;\n\tbackground?: boolean | 'only';\n\tblur?: number;\n\tmap?: Texture;\n\tfiles?: string | string[];\n\tpath?: string;\n\tpreset?: NgtsEnvironmentPresetsType;\n\tscene?: Scene | ElementRef<Scene>;\n\textensions?: (loader: Loader) => void;\n\tground?: boolean | { radius?: number; height?: number; scale?: number };\n\tencoding?: TextureEncoding;\n};\n\n@Directive()\nexport abstract class NgtsEnvironmentInput {\n\tinputs = signalStore<NgtsEnvironmentInputState>({});\n\n\t@Input({ alias: 'frames' }) set _frames(frames: NgtsEnvironmentInputState['frames']) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@Input({ alias: 'near' }) set _near(near: NgtsEnvironmentInputState['near']) {\n\t\tthis.inputs.set({ near });\n\t}\n\n\t@Input({ alias: 'far' }) set _far(far: NgtsEnvironmentInputState['far']) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: NgtsEnvironmentInputState['resolution']) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t@Input({ alias: 'background' }) set _background(background: NgtsEnvironmentInputState['background']) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\t@Input({ alias: 'blur' }) set _blur(blur: NgtsEnvironmentInputState['blur']) {\n\t\tthis.inputs.set({ blur });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: NgtsEnvironmentInputState['map']) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'files' }) set _files(files: NgtsEnvironmentInputState['files']) {\n\t\tthis.inputs.set({ files });\n\t}\n\n\t@Input({ alias: 'path' }) set _path(path: NgtsEnvironmentInputState['path']) {\n\t\tthis.inputs.set({ path });\n\t}\n\n\t@Input({ alias: 'preset' }) set _preset(preset: NgtsEnvironmentInputState['preset']) {\n\t\tthis.inputs.set({ preset });\n\t}\n\n\t@Input({ alias: 'scene' }) set _scene(scene: NgtsEnvironmentInputState['scene']) {\n\t\tthis.inputs.set({ scene });\n\t}\n\n\t@Input({ alias: 'extensions' }) set _extensions(extensions: NgtsEnvironmentInputState['extensions']) {\n\t\tthis.inputs.set({ extensions });\n\t}\n\n\t@Input({ alias: 'ground' }) set _ground(ground: NgtsEnvironmentInputState['ground']) {\n\t\tthis.inputs.set({ ground });\n\t}\n\n\t@Input({ alias: 'encoding' }) set _encoding(encoding: NgtsEnvironmentInputState['encoding']) {\n\t\tthis.inputs.set({ encoding });\n\t}\n\n\tframes = this.inputs.select('frames');\n\tnear = this.inputs.select('near');\n\tfar = this.inputs.select('far');\n\tresolution = this.inputs.select('resolution');\n\tbackground = this.inputs.select('background');\n\tblur = this.inputs.select('blur');\n\tmap = this.inputs.select('map');\n\tfiles = this.inputs.select('files');\n\tpath = this.inputs.select('path');\n\tpreset = this.inputs.select('preset');\n\tscene = this.inputs.select('scene');\n\textensions = this.inputs.select('extensions');\n\tground = this.inputs.select('ground');\n\tencoding = this.inputs.select('encoding');\n\n\tparams = computed(() => ({\n\t\tfiles: this.files(),\n\t\tpath: this.path(),\n\t\tpreset: this.preset(),\n\t\textensions: this.extensions(),\n\t\tencoding: this.encoding(),\n\t}));\n}\n","import {\n\tChangeDetectorRef,\n\tDestroyRef,\n\tElementRef,\n\tInjector,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';\nimport { CubeReflectionMapping, CubeTexture, CubeTextureLoader, EquirectangularReflectionMapping } from 'three';\nimport { EXRLoader, RGBELoader } from 'three-stdlib';\nimport { ENVIRONMENT_PRESETS } from './assets';\nimport { type NgtsEnvironmentInputState } from './environment-input';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n\treturn is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n\tbackground: boolean | 'only',\n\tscene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n\tdefaultScene: THREE.Scene,\n\ttexture: THREE.Texture,\n\tblur = 0,\n) {\n\tconst target = resolveScene(scene || defaultScene);\n\tconst oldbg = target.background;\n\tconst oldenv = target.environment;\n\tconst oldBlur = target.backgroundBlurriness || 0;\n\n\tif (background !== 'only') target.environment = texture;\n\tif (background) target.background = texture;\n\tif (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n\treturn () => {\n\t\tif (background !== 'only') target.environment = oldenv;\n\t\tif (background) target.background = oldbg;\n\t\tif (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n\t};\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n\tPick<NgtsEnvironmentInputState, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';\n\nexport function injectNgtsEnvironment(paramsFactory: () => Partial<NgtsInjectEnvironmentParams>, injector?: Injector) {\n\tinjector = assertInjectionContext(injectNgtsEnvironment, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst textureRef = injectNgtRef<THREE.Texture | CubeTexture>();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\ttextureRef.nativeElement.dispose();\n\t\t});\n\n\t\tconst params = computed(() => {\n\t\t\tlet { files, preset, encoding, path, extensions } = paramsFactory() as NgtsInjectEnvironmentParams;\n\n\t\t\tif (files == null) {\n\t\t\t\tfiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n\t\t\t}\n\n\t\t\tif (path == null) {\n\t\t\t\tpath = '';\n\t\t\t}\n\n\t\t\tif (preset) {\n\t\t\t\tif (!(preset in ENVIRONMENT_PRESETS))\n\t\t\t\t\tthrow new Error('Preset must be one of: ' + Object.keys(ENVIRONMENT_PRESETS).join(', '));\n\t\t\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\t\t\tpath = CUBEMAP_ROOT;\n\t\t\t}\n\n\t\t\treturn { files, preset, encoding, path, extensions } as NgtsInjectEnvironmentParams;\n\t\t});\n\n\t\tconst loaderResult = injectNgtLoader(\n\t\t\t// @ts-expect-error\n\t\t\t() => {\n\t\t\t\tconst { files = '' } = params();\n\n\t\t\t\tconst isCubeMap = Array.isArray(files);\n\t\t\t\tconst extension = Array.isArray(files)\n\t\t\t\t\t? 'cube'\n\t\t\t\t\t: files.startsWith('data:application/exr')\n\t\t\t\t\t? 'exr'\n\t\t\t\t\t: files.startsWith('data:application/hdr')\n\t\t\t\t\t? 'hdr'\n\t\t\t\t\t: files.split('.').pop()?.split('?')?.shift()?.toLowerCase();\n\t\t\t\treturn isCubeMap\n\t\t\t\t\t? CubeTextureLoader\n\t\t\t\t\t: extension === 'hdr'\n\t\t\t\t\t? RGBELoader\n\t\t\t\t\t: extension === 'exr'\n\t\t\t\t\t? EXRLoader\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tconst { files } = params();\n\t\t\t\treturn Array.isArray(files) ? [files] : files;\n\t\t\t},\n\t\t\t{\n\t\t\t\textensions: (loader) => {\n\t\t\t\t\tconst { path, extensions } = params();\n\t\t\t\t\tloader.setPath(path);\n\t\t\t\t\tif (extensions) extensions(loader);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tconst sRGBEncoding = 3001;\n\t\tconst LinearEncoding = 3000;\n\n\t\teffect(() => {\n\t\t\tconst result = loaderResult();\n\t\t\tif (!result) return;\n\t\t\tconst { files, encoding } = params();\n\t\t\tconst texture: THREE.Texture | THREE.CubeTexture = Array.isArray(files) ? result[0] : result;\n\t\t\ttexture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n\t\t\tif ('colorSpace' in texture) {\n\t\t\t\ttexture.colorSpace = encoding ?? Array.isArray(files) ? 'srgb' : 'srgb-linear';\n\t\t\t} else {\n\t\t\t\t(texture as any).encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;\n\t\t\t}\n\n\t\t\ttextureRef.nativeElement = texture;\n\t\t\tsafeDetectChanges(cdr);\n\t\t});\n\n\t\treturn textureRef;\n\t});\n}\n","import { Directive, Input, effect, inject } from '@angular/core';\nimport { injectNgtStore, signalStore } from 'angular-three';\nimport { NgtsEnvironmentInput, type NgtsEnvironmentInputState } from './environment-input';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n\tselector: 'ngts-environment-cube',\n\tstandalone: true,\n})\nexport class NgtsEnvironmentCube {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\n\tprivate inputs = signalStore<Pick<NgtsEnvironmentInputState, 'background'>>({ background: false });\n\n\t@Input({ alias: 'background' }) set _background(background: boolean) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate scene = this.store.select('scene');\n\n\tprivate background = this.inputs.select('background');\n\tprivate textureRef = injectNgtsEnvironment(this.environmentInput.params);\n\n\tconstructor() {\n\t\tthis.setEnvProps();\n\t}\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [defaultScene, scene, background, blur, texture] = [\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.textureRef.nativeElement,\n\t\t\t];\n\t\t\tif (!texture) return;\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n}\n","import { Directive, Input, effect, inject } from '@angular/core';\nimport { injectNgtStore, signalStore } from 'angular-three';\nimport { NgtsEnvironmentInput, type NgtsEnvironmentInputState } from './environment-input';\nimport { setEnvProps } from './utils';\n\n@Directive({\n\tselector: 'ngts-environment-map',\n\tstandalone: true,\n})\nexport class NgtsEnvironmentMap {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate store = injectNgtStore();\n\n\tprivate inputs = signalStore<Pick<NgtsEnvironmentInputState, 'map' | 'background'>>({ background: false });\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'background' }) set _background(background: boolean) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\tconstructor() {\n\t\tthis.setEnvProps();\n\t}\n\n\tprivate scene = this.store.select('scene');\n\tprivate background = this.inputs.select('background');\n\tprivate map = this.inputs.select('map');\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [defaultScene, scene, background, blur, texture] = [\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.map(),\n\t\t\t];\n\t\t\tif (!texture) return;\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n\tselector: 'ngts-environment-ground',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-environment-map [map]=\"texture()\" [background]=\"!!environmentInput.background()\" />\n\t\t<ngt-ground-projected-env *args=\"groundArgs()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n\t`,\n\timports: [NgtsEnvironmentMap, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate defaultTexture = injectNgtsEnvironment(this.environmentInput.params);\n\n\ttexture = computed(() => {\n\t\tconst defaultTexture = this.defaultTexture.nativeElement;\n\t\treturn this.environmentInput.map() || defaultTexture;\n\t});\n\n\tgroundArgs = computed(() => (this.texture() ? [this.texture()] : []));\n\theight = computed(() => (this.environmentInput.ground() as any)?.height);\n\tradius = computed(() => (this.environmentInput.ground() as any)?.radius);\n\tscale = computed(() => (this.environmentInput.ground() as any)?.scale ?? 1000);\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject } from '@angular/core';\nimport {\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\tNgtPortal,\n\tNgtPortalContent,\n\tprepare,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n\tselector: 'ngts-environment-portal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualSceneRef\">\n\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t<ng-content />\n\t\t\t\t<ngt-cube-camera *args=\"cameraArgs()\" [ref]=\"cubeCameraRef\" />\n\t\t\t\t<ng-container *ngIf=\"environmentInput.files() || environmentInput.preset(); else environmentMap\">\n\t\t\t\t\t<ngts-environment-cube [background]=\"true\" />\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #environmentMap>\n\t\t\t\t\t<ngts-environment-map *ngIf=\"environmentInput.map() as map\" [background]=\"true\" [map]=\"map\" />\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate scene = this.store.select('scene');\n\n\tvirtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n\tcubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n\tprivate fbo = computed(() => {\n\t\tconst fbo = new THREE.WebGLCubeRenderTarget(this.environmentInput.resolution());\n\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\treturn fbo;\n\t});\n\tcameraArgs = computed(() => [this.environmentInput.near()!, this.environmentInput.far()!, this.fbo()]);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.environmentInput.inputs.patch({\n\t\t\t\tnear: 1,\n\t\t\t\tfar: 1000,\n\t\t\t\tresolution: 256,\n\t\t\t\tframes: 1,\n\t\t\t\tbackground: false,\n\t\t\t\tpreset: undefined,\n\t\t\t});\n\t\t});\n\t\tthis.setEnvProps();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [virtualScene, blur, frames, background, scene, fbo, defaultScene, gl, cubeCamera] = [\n\t\t\t\tthis.virtualSceneRef.nativeElement,\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.environmentInput.frames(),\n\t\t\t\tthis.environmentInput.background(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.fbo(),\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.gl(),\n\t\t\t\tthis.cubeCameraRef.nativeElement,\n\t\t\t];\n\t\t\tif (!cubeCamera || !virtualScene) return;\n\t\t\tif (frames === 1) cubeCamera.update(gl, virtualScene);\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, fbo.texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 1;\n\t\tinjectBeforeRender(({ gl }) => {\n\t\t\tconst { frames } = this.environmentInput.inputs.get();\n\t\t\tif (frames === Infinity || count < frames!) {\n\t\t\t\tconst camera = this.cubeCameraRef.nativeElement;\n\t\t\t\tconst virtualScene = this.virtualSceneRef.nativeElement;\n\t\t\t\tif (camera && virtualScene) {\n\t\t\t\t\tcamera.update(gl, virtualScene);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, TemplateRef } from '@angular/core';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Component({\n\tselector: 'ngts-environment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-environment-ground *ngIf=\"ground(); else noGround\" />\n\t\t<ng-template #noGround>\n\t\t\t<ngts-environment-map *ngIf=\"map() as map; else noMap\" [map]=\"map\" [background]=\"!!background()\" />\n\t\t\t<ng-template #noMap>\n\t\t\t\t<ngts-environment-portal *ngIf=\"content; else noPortal\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t\t</ngts-environment-portal>\n\t\t\t\t<ng-template #noPortal>\n\t\t\t\t\t<ngts-environment-cube [background]=\"!!background()\" />\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</ng-template>\n\t`,\n\timports: [\n\t\tNgtsEnvironmentMap,\n\t\tNgtsEnvironmentGround,\n\t\tNgtsEnvironmentCube,\n\t\tNgtsEnvironmentPortal,\n\t\tNgIf,\n\t\tNgTemplateOutlet,\n\t],\n\tproviders: [{ provide: NgtsEnvironmentInput, useExisting: NgtsEnvironment }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInput {\n\t@ContentChild(NgtsSobaContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsFloatState = {\n\tenabled: boolean;\n\tspeed: number;\n\trotationIntensity: number;\n\tfloatIntensity: number;\n\tfloatingRange: [number?, number?];\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-float': NgtsFloatState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-float',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group [ref]=\"floatRef\" [matrixAutoUpdate]=\"false\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat {\n\tprivate inputs = signalStore<NgtsFloatState>({\n\t\tenabled: true,\n\t\tspeed: 1,\n\t\trotationIntensity: 1,\n\t\tfloatIntensity: 1,\n\t\tfloatingRange: [-0.1, 0.1],\n\t});\n\n\t@Input() floatRef = injectNgtRef<Group>();\n\t@Input({ alias: 'enabled' }) set _enabled(enabled: boolean) {\n\t\tthis.inputs.set({ enabled });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t@Input({ alias: 'rotationIntensity' }) set _rotationIntensity(rotationIntensity: number) {\n\t\tthis.inputs.set({ rotationIntensity });\n\t}\n\n\t@Input({ alias: 'floatIntensity' }) set _floatIntensity(floatIntensity: number) {\n\t\tthis.inputs.set({ floatIntensity });\n\t}\n\n\t@Input({ alias: 'floatingRange' }) set _floatingRange(floatingRange: [number?, number?]) {\n\t\tthis.inputs.set({ floatingRange });\n\t}\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tconst offset = Math.random() * 10_000;\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst float = this.floatRef.nativeElement;\n\t\t\tif (!float) return;\n\n\t\t\tconst { enabled, speed, rotationIntensity, floatingRange, floatIntensity } = this.inputs.get();\n\n\t\t\tif (!enabled || speed === 0) return;\n\t\t\tconst t = offset + clock.getElapsedTime();\n\t\t\tfloat.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n\t\t\tfloat.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n\t\t\tfloat.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n\t\t\tlet yPosition = Math.sin((t / 4) * speed) / 10;\n\t\t\tyPosition = THREE.MathUtils.mapLinear(\n\t\t\t\tyPosition,\n\t\t\t\t-0.1,\n\t\t\t\t0.1,\n\t\t\t\tfloatingRange?.[0] ?? -0.1,\n\t\t\t\tfloatingRange?.[1] ?? 0.1,\n\t\t\t);\n\t\t\tfloat.position.y = yPosition * floatIntensity;\n\t\t\tfloat.updateMatrix();\n\t\t});\n\t}\n}\n","import { computed, effect, runInInjectionContext, signal, untracked, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext } from 'angular-three';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\n\nfunction getFormatString(format: number) {\n\tswitch (format) {\n\t\tcase 64:\n\t\t\treturn '-64px';\n\t\tcase 128:\n\t\t\treturn '-128px';\n\t\tcase 256:\n\t\t\treturn '-256px';\n\t\tcase 512:\n\t\t\treturn '-512px';\n\t\tdefault:\n\t\t\treturn '';\n\t}\n}\n\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport type NgtsMatcapTextureState = {\n\tid: string | number;\n\tformat: number;\n\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n};\n\nconst defaultState: NgtsMatcapTextureState = {\n\tid: 0,\n\tformat: 1024,\n};\n\nexport function injectNgtsMatcapTexture(\n\tmatcapTextureState: () => Partial<NgtsMatcapTextureState>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsMatcapTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => ({ ...defaultState, ...matcapTextureState() }));\n\n\t\tconst matcapList = signal<Record<string, string>>({});\n\n\t\tconst DEFAULT_MATCAP = () => matcapList()[0];\n\t\tconst numTot = () => Object.keys(matcapList()).length;\n\n\t\teffect(() => {\n\t\t\tif (!untracked(numTot)) {\n\t\t\t\tfetch(LIST_URL)\n\t\t\t\t\t.then((res) => res.json())\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tmatcapList.set(data);\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst fileHash = () => {\n\t\t\tconst id = state().id;\n\t\t\tif (typeof id === 'string') {\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\tif (typeof id === 'number' && matcapList()[id]) {\n\t\t\t\treturn matcapList()[id];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tconst fileName = () => `${fileHash() || DEFAULT_MATCAP()}${getFormatString(state().format)}.png`;\n\t\tconst url = () => `${MATCAP_ROOT}/${state().format}/${fileName()}`;\n\n\t\tlet texture: Signal<THREE.Texture | null>;\n\t\tconst matcapTexture = computed(() => {\n\t\t\tif (url().includes('undefined')) return null;\n\t\t\tif (!texture) {\n\t\t\t\ttexture = injectNgtsTextureLoader(url, { onLoad: state().onLoad, injector });\n\t\t\t}\n\t\t\treturn texture();\n\t\t});\n\n\t\treturn { texture: matcapTexture, numTot, url };\n\t});\n}\n","import { computed, effect, runInInjectionContext, signal, untracked, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext } from 'angular-three';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport * as THREE from 'three';\n\nconst NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';\n\nexport type NgtsNormalTextureState = {\n\tid: string | number;\n\trepeat: number[];\n\tanisotropy: number;\n\toffset: number[];\n\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n};\n\nconst defaultState: NgtsNormalTextureState = {\n\tid: 0,\n\trepeat: [1, 1],\n\tanisotropy: 1,\n\toffset: [0, 0],\n};\n\nexport function injectNgtsNormalTexture(\n\tnormalTextureState: () => Partial<NgtsNormalTextureState>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsNormalTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => ({ ...defaultState, ...normalTextureState() }));\n\t\tconst normalsList = signal<Record<string, string>>({});\n\n\t\tconst DEFAULT_NORMAL = () => normalsList()[0];\n\t\tconst numTot = () => Object.keys(normalsList()).length;\n\n\t\teffect(() => {\n\t\t\tif (!untracked(numTot)) {\n\t\t\t\tfetch(LIST_URL)\n\t\t\t\t\t.then((res) => res.json())\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tnormalsList.set(data);\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst imageName = () => normalsList()[state().id] || DEFAULT_NORMAL();\n\t\tconst url = () => `${NORMAL_ROOT}/normals/${imageName()}`;\n\n\t\tlet texture: Signal<THREE.Texture | null>;\n\t\tconst normalTexture = computed(() => {\n\t\t\tif (url().includes('undefined')) return null;\n\t\t\tif (!texture) {\n\t\t\t\ttexture = injectNgtsTextureLoader(url, { onLoad: state().onLoad, injector });\n\t\t\t}\n\t\t\treturn texture();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst _texture = normalTexture();\n\t\t\tif (!_texture) return;\n\n\t\t\tconst { repeat, offset, anisotropy } = state();\n\t\t\t_texture.wrapS = _texture.wrapT = THREE.RepeatWrapping;\n\t\t\t_texture.repeat = new THREE.Vector2(repeat[0], repeat[1]);\n\t\t\t_texture.offset = new THREE.Vector2(offset[0], offset[1]);\n\t\t\t_texture.anisotropy = anisotropy;\n\t\t});\n\n\t\treturn { texture: normalTexture, numTot, url };\n\t});\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, injectNgtRef, signalStore, type NgtMesh } from 'angular-three';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nfunction calcPosFromAngles(inclination: number, azimuth: number, vector = new THREE.Vector3()) {\n\tconst theta = Math.PI * (inclination - 0.5);\n\tconst phi = 2 * Math.PI * (azimuth - 0.5);\n\n\tvector.x = Math.cos(phi);\n\tvector.y = Math.sin(theta);\n\tvector.z = Math.sin(phi);\n\n\treturn vector;\n}\n\nexport interface NgtsSkyState {\n\tdistance: number;\n\tsunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>;\n\tinclination: number;\n\tazimuth: number;\n\tmieCoefficient: number;\n\tmieDirectionalG: number;\n\trayleigh: number;\n\tturbidity: number;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends three-stdlib|Sky\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-sky': NgtsSkyState & Sky & NgtMesh;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sky',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[sky]\" [ref]=\"skyRef\" [scale]=\"scale()\" ngtCompound>\n\t\t\t<ngt-value [rawValue]=\"mieCoefficient()\" attach=\"material.uniforms.mieCoefficient.value\" />\n\t\t\t<ngt-value [rawValue]=\"mieDirectionalG()\" attach=\"material.uniforms.mieDirectionalG.value\" />\n\t\t\t<ngt-value [rawValue]=\"rayleigh()\" attach=\"material.uniforms.rayleigh.value\" />\n\t\t\t<ngt-value [rawValue]=\"sunPosition()\" attach=\"material.uniforms.sunPosition.value\" />\n\t\t\t<ngt-value [rawValue]=\"turbidity()\" attach=\"material.uniforms.turbidity.value\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky {\n\tprivate inputs = signalStore<NgtsSkyState>({\n\t\tinclination: 0.6,\n\t\tazimuth: 0.1,\n\t\tdistance: 1000,\n\t\tmieCoefficient: 0.005,\n\t\tmieDirectionalG: 0.8,\n\t\trayleigh: 0.5,\n\t\tturbidity: 10,\n\t});\n\n\t@Input() skyRef = injectNgtRef<Sky>();\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'sunPosition' }) set _sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n\t\tthis.inputs.set({ sunPosition });\n\t}\n\n\t@Input({ alias: 'inclination' }) set _inclination(inclination: number) {\n\t\tthis.inputs.set({ inclination });\n\t}\n\n\t@Input({ alias: 'azimuth' }) set _azimuth(azimuth: number) {\n\t\tthis.inputs.set({ azimuth });\n\t}\n\n\t@Input({ alias: 'mieCoefficient' }) set _mieCoefficient(mieCoefficient: number) {\n\t\tthis.inputs.set({ mieCoefficient });\n\t}\n\n\t@Input({ alias: 'mieDirectionalG' }) set _mieDirectionalG(mieDirectionalG: number) {\n\t\tthis.inputs.set({ mieDirectionalG });\n\t}\n\n\t@Input({ alias: 'rayleigh' }) set _rayleigh(rayleigh: number) {\n\t\tthis.inputs.set({ rayleigh });\n\t}\n\n\t@Input({ alias: 'turbidity' }) set _turbidity(turbidity: number) {\n\t\tthis.inputs.set({ turbidity });\n\t}\n\n\tprivate inclination = this.inputs.select('inclination');\n\tprivate azimuth = this.inputs.select('azimuth');\n\tprivate sunPos = this.inputs.select('sunPosition');\n\tprivate distance = this.inputs.select('distance');\n\n\tsunPosition = computed(() => this.sunPos() || calcPosFromAngles(this.inclination(), this.azimuth()));\n\tscale = computed(() => new THREE.Vector3().setScalar(this.distance()));\n\tmieCoefficient = this.inputs.select('mieCoefficient');\n\tmieDirectionalG = this.inputs.select('mieDirectionalG');\n\trayleigh = this.inputs.select('rayleigh');\n\tturbidity = this.inputs.select('turbidity');\n\n\tsky = new Sky();\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, isSignal, type Signal } from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtKey,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsignalStore,\n\ttype NgtPoints,\n} from 'angular-three';\nimport { SparklesMaterial, type NgtSparklesMaterialState } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\n\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n\tv instanceof THREE.Vector2 || v instanceof THREE.Vector3 || v instanceof THREE.Vector4;\n\nconst normalizeVector = (v: any): number[] => {\n\tif (Array.isArray(v)) return v;\n\telse if (isVector(v)) return v.toArray();\n\treturn [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T extends any>(\n\tcount: number,\n\tprop?: T | Float32Array,\n\tsetDefault?: (v: T) => number,\n) {\n\tif (prop !== undefined) {\n\t\tif (isFloat32Array(prop)) {\n\t\t\treturn prop as Float32Array;\n\t\t}\n\n\t\tif (prop instanceof THREE.Color) {\n\t\t\tconst a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n\t\t\treturn Float32Array.from(a);\n\t\t}\n\n\t\tif (isVector(prop) || Array.isArray(prop)) {\n\t\t\tconst a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n\t\t\treturn Float32Array.from(a);\n\t\t}\n\n\t\treturn Float32Array.from({ length: count }, () => prop as number);\n\t}\n\n\treturn Float32Array.from({ length: count }, setDefault!);\n}\n\nexport type NgtsSparklesState = {\n\t/** Number of particles (default: 100) */\n\tcount: number;\n\t/** Speed of particles (default: 1) */\n\tspeed: number | Float32Array;\n\t/** Opacity of particles (default: 1) */\n\topacity: number | Float32Array;\n\t/** Color of particles (default: 100) */\n\tcolor?: THREE.ColorRepresentation | Float32Array;\n\t/** Size of particles (default: randomized between 0 and 1) */\n\tsize?: number | Float32Array;\n\t/** The space the particles occupy (default: 1) */\n\tscale: number | [number, number, number] | THREE.Vector3;\n\t/** Movement factor (default: 1) */\n\tnoise: number | [number, number, number] | THREE.Vector3 | Float32Array;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-sparkles': NgtsSparklesState & NgtPoints;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sparkles',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points *key=\"key()\" ngtCompound [ref]=\"sparklesRef\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.position\" *args=\"[positions(), 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.size\" *args=\"[sizes(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.opacity\" *args=\"[opacities(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.speed\" *args=\"[speeds(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.color\" *args=\"[colors(), 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.noise\" *args=\"[noises(), 3]\" />\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ngt-sparkles-material [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr()\" />\n\t\t</ngt-points>\n\t`,\n\timports: [NgtArgs, NgtKey],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles {\n\tprivate inputs = signalStore<NgtsSparklesState>({\n\t\tnoise: 1,\n\t\tcount: 100,\n\t\tspeed: 1,\n\t\topacity: 1,\n\t\tscale: 1,\n\t});\n\n\t@Input() sparklesRef = injectNgtRef<Points>();\n\n\t/** Number of particles (default: 100) */\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t/** Speed of particles (default: 1) */\n\t@Input({ alias: 'speed' }) set _speed(speed: number | Float32Array) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t/** Opacity of particles (default: 1) */\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number | Float32Array) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t/** Color of particles (default: 100) */\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation | Float32Array) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t/** Size of particles (default: randomized between 0 and 1) */\n\t@Input({ alias: 'size' }) set _size(size: number | Float32Array) {\n\t\tthis.inputs.set({ size });\n\t}\n\n\t/** The space the particles occupy (default: 1) */\n\t@Input({ alias: 'scale' }) set _scale(scale: number | [number, number, number] | THREE.Vector3) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t/** Movement factor (default: 1) */\n\t@Input({ alias: 'noise' }) set _noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n\t\tthis.inputs.set({ noise });\n\t}\n\n\tprivate store = injectNgtStore();\n\n\tdpr = this.store.select('viewport', 'dpr');\n\n\tprivate scale = this.inputs.select('scale');\n\tprivate count = this.inputs.select('count');\n\tprivate color = this.inputs.select('color');\n\n\tpositions = computed(() =>\n\t\tFloat32Array.from(\n\t\t\tArray.from({ length: this.count() }, () =>\n\t\t\t\tnormalizeVector(this.scale()).map(THREE.MathUtils.randFloatSpread),\n\t\t\t).flat(),\n\t\t),\n\t);\n\tsizes = this.getComputed('size', this.count, Math.random);\n\topacities = this.getComputed('opacity', this.count);\n\tspeeds = this.getComputed('speed', this.count);\n\tnoises = this.getComputed('noise', () => this.count() * 3);\n\tcolors = this.getComputed(\n\t\tcomputed(() => {\n\t\t\tconst color = this.color();\n\t\t\treturn !isFloat32Array(color) ? new THREE.Color(color) : color;\n\t\t}),\n\t\t() => (this.color() === undefined ? this.count() * 3 : this.count()),\n\t\t() => 1,\n\t);\n\tkey = computed(() => `particle-${this.count()}-${JSON.stringify(this.scale())}`);\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst sparkles = this.sparklesRef.nativeElement;\n\t\t\tif (!sparkles || !sparkles.material) return;\n\t\t\t(sparkles.material as NgtSparklesMaterialState).time = clock.elapsedTime;\n\t\t});\n\t}\n\n\tprivate getComputed<TKey extends keyof NgtsSparklesState>(\n\t\tnameOrComputed: TKey | Signal<NgtsSparklesState[TKey]>,\n\t\tcount: () => number,\n\t\tsetDefault?: (value: NgtsSparklesState[TKey]) => number,\n\t) {\n\t\tconst value =\n\t\t\ttypeof nameOrComputed !== 'string' && isSignal(nameOrComputed)\n\t\t\t\t? nameOrComputed\n\t\t\t\t: this.inputs.select(nameOrComputed);\n\t\treturn computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));\n\t}\n}\n","import { Directive, Input } from '@angular/core';\nimport { signalStore } from 'angular-three';\n\nexport type NgtsSpotLightShadowMeshInputState = {\n\tdistance: number;\n\talphaTest: number;\n\tscale: number;\n\tmap: THREE.Texture;\n\tshader: string;\n\twidth: number;\n\theight: number;\n};\n\n@Directive()\nexport abstract class NgtsSpotLightShadowMeshInput {\n\tinputs = signalStore<NgtsSpotLightShadowMeshInputState>({});\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'alphaTest' }) set _alphaTest(alphaTest: number) {\n\t\tthis.inputs.set({ alphaTest });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: number) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'shader' }) set _shader(shader: string) {\n\t\tthis.inputs.set({ shader });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'height' }) set _height(height: number) {\n\t\tthis.inputs.set({ height });\n\t}\n\n\tdistance = this.inputs.select('distance');\n\talphaTest = this.inputs.select('alphaTest');\n\tscale = this.inputs.select('scale');\n\tmap = this.inputs.select('map');\n\tshader = this.inputs.select('shader');\n\twidth = this.inputs.select('width');\n\theight = this.inputs.select('height');\n}\n","import { Directive, Input } from '@angular/core';\nimport { signalStore } from 'angular-three';\n\nexport type NgtsSpotLightInputState = {\n\tdepthBuffer?: THREE.DepthTexture;\n\tangle: number;\n\tdistance: number;\n\tattenuation: number;\n\tanglePower: number;\n\tradiusTop: number;\n\tradiusBottom: number;\n\topacity: number;\n\tcolor: string | number;\n\tdebug: boolean;\n};\n\n@Directive()\nexport abstract class NgtsSpotLightInput {\n\tinputs = signalStore<NgtsSpotLightInputState>({});\n\n\t@Input({ alias: 'depthBuffer' }) set _depthBuffer(depthBuffer: THREE.DepthTexture) {\n\t\tthis.inputs.set({ depthBuffer });\n\t}\n\n\t@Input({ alias: 'angle' }) set _angle(angle: number) {\n\t\tthis.inputs.set({ angle });\n\t}\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'attenuation' }) set _attenuation(attenuation: number) {\n\t\tthis.inputs.set({ attenuation });\n\t}\n\n\t@Input({ alias: 'anglePower' }) set _anglePower(anglePower: number) {\n\t\tthis.inputs.set({ anglePower });\n\t}\n\n\t@Input({ alias: 'radiusTop' }) set _radiusTop(radiusTop: number) {\n\t\tthis.inputs.set({ radiusTop });\n\t}\n\n\t@Input({ alias: 'radiusBottom' }) set _radiusBottom(radiusBottom: number) {\n\t\tthis.inputs.set({ radiusBottom });\n\t}\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: string | number) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\tdebug = this.inputs.select('debug');\n\tcolor = this.inputs.select('color');\n\topacity = this.inputs.select('opacity');\n\tradiusBottom = this.inputs.select('radiusBottom');\n\tradiusTop = this.inputs.select('radiusTop');\n\tanglePower = this.inputs.select('anglePower');\n\tattenuation = this.inputs.select('attenuation');\n\tdistance = this.inputs.select('distance');\n\tangle = this.inputs.select('angle');\n\tdepthBuffer = this.inputs.select('depthBuffer');\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, computed, effect, inject } from '@angular/core';\nimport { NgtArgs, extend, injectBeforeRender, injectNgtRef, injectNgtStore } from 'angular-three';\nimport { SpotLightMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\n\nextend({ Mesh });\n\n@Component({\n\tselector: 'ngts-volumetric-mesh',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"mesh\" [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\">\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.opacity()\" attach=\"uniforms.opacity.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.color()\" attach=\"uniforms.lightColor.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.attenuation()\" attach=\"uniforms.attenuation.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.anglePower()\" attach=\"uniforms.anglePower.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"spotLightInput.depthBuffer()\" attach=\"uniforms.depth.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"near()\" attach=\"uniforms.cameraNear.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"far()\" attach=\"uniforms.cameraFar.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"resolution()\" attach=\"uniforms.resolution.value\" />\n\t\t\t</ngt-primitive>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsVolumetricMesh {\n\tspotLightInput = inject(NgtsSpotLightInput);\n\tmesh = injectNgtRef<Mesh>();\n\tmaterial = new SpotLightMaterial();\n\tnullRaycast = () => null;\n\n\tprivate vec = new THREE.Vector3();\n\tprivate store = injectNgtStore();\n\tprivate size = this.store.select('size');\n\tprivate dpr = this.store.select('viewport', 'dpr');\n\n\tprivate radiusTop = computed(() => {\n\t\tconst radiusTop = this.spotLightInput.radiusTop();\n\t\treturn radiusTop === undefined ? 0.1 : radiusTop;\n\t});\n\tprivate radiusBottom = computed(() => {\n\t\tconst [angle, radiusBottom] = [this.spotLightInput.angle(), this.spotLightInput.radiusBottom()];\n\t\treturn radiusBottom === undefined ? angle * 7 : radiusBottom;\n\t});\n\n\tnear = this.store.select('camera', 'near');\n\tfar = this.store.select('camera', 'far');\n\tresolution = computed(() =>\n\t\tthis.spotLightInput.depthBuffer() ? [this.size().width * this.dpr(), this.size().height * this.dpr()] : [0, 0],\n\t);\n\tgeometry = computed(() => {\n\t\tconst [radiusTop, radiusBottom, distance] = [\n\t\t\tthis.radiusTop(),\n\t\t\tthis.radiusBottom(),\n\t\t\tthis.spotLightInput.distance(),\n\t\t];\n\n\t\tconst geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\t\treturn geometry;\n\t});\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t\teffect(() => {\n\t\t\tthis.spotLightInput.inputs.patch({\n\t\t\t\topacity: 1,\n\t\t\t\tcolor: 'white',\n\t\t\t\tdistance: 5,\n\t\t\t\tangle: 0.15,\n\t\t\t\tattenuation: 5,\n\t\t\t\tanglePower: 5,\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tthis.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));\n\t\t\tthis.mesh.nativeElement.lookAt((this.mesh.nativeElement.parent as any).target.getWorldPosition(this.vec));\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, forwardRef, signal } from '@angular/core';\nimport { NgtArgs, createInjectionToken, extend, injectNgtRef, type NgtSpotLight } from 'angular-three';\nimport { Group, SpotLight, SpotLightHelper } from 'three';\nimport { NgtsSpotLightInput, type NgtsSpotLightInputState } from './spot-light-input';\nimport { NgtsVolumetricMesh } from './volumetric-mesh';\n\nextend({ SpotLight, SpotLightHelper, Group });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-spot-light\n\t\t */\n\t\t'ngts-spot-light': NgtsSpotLightInputState & NgtSpotLight;\n\t}\n}\n\nexport const [injectNgtsSpotLightApi, provideNgtsSpotLightApi] = createInjectionToken(\n\t(spotLight: NgtsSpotLight) => ({ spotLight: spotLight.spotLightRef, debug: spotLight.debug }),\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSpotLight)] },\n);\n\n@Component({\n\tselector: 'ngts-spot-light',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ng-container *ngIf=\"debug() && spotLightRef.nativeElement\">\n\t\t\t\t<ngt-spot-light-helper *args=\"[spotLightRef.nativeElement]\" />\n\t\t\t</ng-container>\n\t\t\t<ngt-spot-light\n\t\t\t\t[ref]=\"spotLightRef\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[distance]=\"distance()\"\n\t\t\t\t[angle]=\"angle()\"\n\t\t\t\t[castShadow]=\"true\"\n\t\t\t\tngtCompound\n\t\t\t>\n\t\t\t\t<ngts-volumetric-mesh *ngIf=\"volumetric()\" />\n\t\t\t</ngt-spot-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtsVolumetricMesh, NgIf, NgtArgs],\n\tproviders: [provideNgtsSpotLightApi(), { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLight extends NgtsSpotLightInput {\n\t@Input() spotLightRef = injectNgtRef<SpotLight>();\n\n\tvolumetric = signal(true);\n\t@Input({ alias: 'volumetric' }) set _volumetric(volumetric: boolean) {\n\t\tthis.volumetric.set(volumetric);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.inputs.set({\n\t\t\topacity: 1,\n\t\t\tcolor: 'white',\n\t\t\tdistance: 5,\n\t\t\tangle: 0.15,\n\t\t\tattenuation: 5,\n\t\t\tanglePower: 5,\n\t\t\tdebug: false,\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport {\n\tassertInjectionContext,\n\tcheckUpdate,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\ttype NgtInjectedRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { NgtsSpotLightShadowMeshInput, type NgtsSpotLightShadowMeshInputState } from './shadow-mesh-input';\nimport { injectNgtsSpotLightApi } from './spot-light';\n\nconst isSpotLight = (child: THREE.Object3D | null): child is THREE.SpotLight => {\n\treturn (child as THREE.SpotLight)?.isSpotLight;\n};\n\nfunction injectShadowMeshCommon(\n\tspotLightRef: NgtInjectedRef<THREE.SpotLight>,\n\tmeshRef: NgtInjectedRef<THREE.Mesh>,\n\twidth: () => number,\n\theight: () => number,\n\tdistance: () => number,\n\tinjector?: Injector,\n) {\n\tinjector = assertInjectionContext(injectShadowMeshCommon, injector);\n\trunInInjectionContext(injector, () => {\n\t\tconst pos = new THREE.Vector3();\n\t\tconst dir = new THREE.Vector3();\n\n\t\teffect(() => {\n\t\t\tconst spotLight = spotLightRef.nativeElement;\n\t\t\tif (!spotLight) return;\n\t\t\tif (isSpotLight(spotLight)) {\n\t\t\t\tspotLight.shadow.mapSize.set(width(), height());\n\t\t\t\tif (spotLight.shadow.map) {\n\t\t\t\t\tspotLight.shadow.map.setSize(width(), height());\n\t\t\t\t}\n\t\t\t\tspotLight.shadow.needsUpdate = true;\n\t\t\t} else {\n\t\t\t\tthrow new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst spotLight = spotLightRef.nativeElement;\n\t\t\tconst mesh = meshRef.nativeElement;\n\n\t\t\tif (!spotLight) return;\n\n\t\t\tconst A = spotLight.position;\n\t\t\tconst B = spotLight.target.position;\n\n\t\t\tdir.copy(B).sub(A);\n\t\t\tconst len = dir.length();\n\t\t\tdir.normalize().multiplyScalar(len * distance());\n\t\t\tpos.copy(A).add(dir);\n\n\t\t\tif (mesh) {\n\t\t\t\tmesh.position.copy(pos);\n\t\t\t\tmesh.lookAt(spotLight.target.position);\n\t\t\t}\n\t\t});\n\t});\n}\n\nextend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-mesh-no-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"shadowMeshInput.alphaTest()\"\n\t\t\t\t[alphaMap]=\"shadowMeshInput.map()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshNoShader {\n\tshadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n\n\tmeshRef = injectNgtRef<THREE.Mesh>();\n\tDoubleSide = THREE.DoubleSide;\n\n\tprivate spotLightApi = injectNgtsSpotLightApi();\n\tdebug = this.spotLightApi.debug;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.shadowMeshInput.inputs.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst map = this.shadowMeshInput.map();\n\t\t\tif (map) {\n\t\t\t\tmap.wrapS = map.wrapT = THREE.RepeatWrapping;\n\t\t\t\tcheckUpdate(map);\n\t\t\t}\n\t\t});\n\n\t\tinjectShadowMeshCommon(\n\t\t\tthis.spotLightApi.spotLight,\n\t\t\tthis.meshRef,\n\t\t\tthis.shadowMeshInput.width,\n\t\t\tthis.shadowMeshInput.height,\n\t\t\tthis.shadowMeshInput.distance,\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-mesh-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"shadowMeshInput.alphaTest()\"\n\t\t\t\t[alphaMap]=\"renderTarget().texture\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapS\" />\n\t\t\t\t<ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapT\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshShader {\n\tshadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n\tmeshRef = injectNgtRef<THREE.Mesh>();\n\n\tDoubleSide = THREE.DoubleSide;\n\tRepeatWrapping = THREE.RepeatWrapping;\n\n\tprivate spotLightApi = injectNgtsSpotLightApi();\n\tdebug = this.spotLightApi.debug;\n\trenderTarget = computed(() => {\n\t\tconst [width, height] = [this.shadowMeshInput.width(), this.shadowMeshInput.height()];\n\n\t\treturn new THREE.WebGLRenderTarget(width, height, {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tencoding: THREE.LinearEncoding,\n\t\t\tstencilBuffer: false,\n\t\t\t// depthTexture: null!\n\t\t});\n\t});\n\n\tprivate uniforms = {\n\t\tuShadowMap: { value: this.shadowMeshInput.map() },\n\t\tuTime: { value: 0 },\n\t};\n\n\tprivate fsQuad = computed(() => {\n\t\tconst shader = this.shadowMeshInput.shader();\n\t\tif (!shader) return null;\n\t\treturn new FullScreenQuad(\n\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n\t\t\t\tfragmentShader: shader,\n\t\t\t}),\n\t\t);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.shadowMeshInput.inputs.patch({\n\t\t\t\tdistance: 0.4,\n\t\t\t\talphaTest: 0.5,\n\t\t\t\twidth: 512,\n\t\t\t\theight: 512,\n\t\t\t\tscale: 4,\n\t\t\t\tshader: /* glsl */ `\n varying vec2 vUv;\n\n uniform sampler2D uShadowMap;\n uniform float uTime;\n\n void main() {\n vec3 color = texture2D(uShadowMap, vUv).xyz;\n gl_FragColor = vec4(color, 1.);\n }\n `,\n\t\t\t});\n\t\t});\n\n\t\tinjectShadowMeshCommon(\n\t\t\tthis.spotLightApi.spotLight,\n\t\t\tthis.meshRef,\n\t\t\tthis.shadowMeshInput.width,\n\t\t\tthis.shadowMeshInput.height,\n\t\t\tthis.shadowMeshInput.distance,\n\t\t);\n\n\t\tinjectBeforeRender(({ delta, gl }) => {\n\t\t\tthis.uniforms.uTime.value += delta;\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tif (fsQuad && renderTarget) {\n\t\t\t\tgl.setRenderTarget(renderTarget);\n\t\t\t\tfsQuad.render(gl);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst map = this.shadowMeshInput.map();\n\t\t\tif (map) {\n\t\t\t\tthis.uniforms.uShadowMap.value = map;\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tonCleanup(() => {\n\t\t\t\tif (fsQuad) {\n\t\t\t\t\tfsQuad.dispose();\n\t\t\t\t\tfsQuad.material.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tonCleanup(() => {\n\t\t\t\trenderTarget.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-spot-light-shadow': NgtsSpotLightShadowMeshInputState;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-spot-light-shadow-mesh-shader *ngIf=\"shader(); else noShader\" />\n\t\t<ng-template #noShader>\n\t\t\t<ngts-spot-light-shadow-mesh-no-shader />\n\t\t</ng-template>\n\t`,\n\timports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],\n\tproviders: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],\n})\nexport class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tcomputed,\n\ttype OnChanges,\n} from '@angular/core';\nimport { NgtArgs, extend, signalStore } from 'angular-three';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport {\n\tNgtsAccumulativeShadows,\n\ttype NgtsAccumulativeShadowsState,\n} from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights, type NgtsRandomizedLightsState } from '../accumulative-shadows/randomized-lights';\nimport { NgtsBounds, injectNgtsBoundsApi } from '../bounds/bounds';\nimport { NgtsCenter, type NgtsCenterState, type NgtsCenteredEvent } from '../center/center';\nimport { NgtsContactShadows, type NgtsContactShadowsState } from '../contact-shadows/contact-shadows';\nimport type { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { type NgtsEnvironmentInputState } from '../environment/environment-input';\n\nconst presets = {\n\trembrandt: {\n\t\tmain: [1, 2, 1],\n\t\tfill: [-2, -0.5, -2],\n\t},\n\tportrait: {\n\t\tmain: [-1, 2, 0.5],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tupfront: {\n\t\tmain: [0, 2, 1],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tsoft: {\n\t\tmain: [-2, 4, 4],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n};\n\ntype NgtsStageShadowsState = Partial<NgtsAccumulativeShadowsState> &\n\tPartial<NgtsRandomizedLightsState> &\n\tPartial<NgtsContactShadowsState> & {\n\t\ttype: 'contact' | 'accumulative';\n\t\t/** Shadow plane offset, default: 0 */\n\t\toffset?: number;\n\t\t/** Shadow bias, default: -0.0001 */\n\t\tbias?: number;\n\t\t/** Shadow normal bias, default: 0 */\n\t\tnormalBias?: number;\n\t\t/** Shadow map size, default: 1024 */\n\t\tsize?: number;\n\t};\n\nexport type NgtsStageState = {\n\t/** Lighting setup, default: \"rembrandt\" */\n\tpreset:\n\t\t| 'rembrandt'\n\t\t| 'portrait'\n\t\t| 'upfront'\n\t\t| 'soft'\n\t\t| { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n\t/** Controls the ground shadows, default: \"contact\" */\n\tshadows: boolean | 'contact' | 'accumulative' | NgtsStageShadowsState;\n\t/** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n\tadjustCamera: boolean | number;\n\t/** The default environment, default: \"city\" */\n\tenvironment: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInputState>;\n\t/** The lighting intensity, default: 0.5 */\n\tintensity: number;\n\t/** To adjust centering, default: undefined */\n\tcenter?: Partial<NgtsCenterState>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-stage': NgtsStageState;\n\t}\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Directive({ selector: 'ngts-stage-refit', standalone: true })\nexport class NgtsStageRefit implements OnChanges {\n\tboundsApi = injectNgtsBoundsApi();\n\n\t@Input() radius = 0;\n\t@Input() adjustCamera: boolean | number = true;\n\n\tngOnChanges() {\n\t\tif (this.adjustCamera) {\n\t\t\tthis.boundsApi().refresh().clip().fit();\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'ngts-stage',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-ambient-light [intensity]=\"intensity() / 3\" />\n\t\t<ngt-spot-light\n\t\t\t[penumbra]=\"1\"\n\t\t\t[position]=\"[\n\t\t\t\tconfig().main[0] * boundingState.get('radius'),\n\t\t\t\tconfig().main[1] * boundingState.get('radius'),\n\t\t\t\tconfig().main[2] * boundingState.get('radius')\n\t\t\t]\"\n\t\t\t[intensity]=\"intensity() * 2\"\n\t\t\t[castShadow]=\"!!shadows()\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"shadowsState().shadowBias\" attach=\"shadow.bias\" />\n\t\t\t<ngt-value [rawValue]=\"shadowsState().normalBias\" attach=\"shadow.normalBias\" />\n\t\t\t<ngt-vector2 *args=\"[shadowsState().shadowSize, shadowsState().shadowSize]\" attach=\"shadow.mapSize\" />\n\t\t</ngt-spot-light>\n\t\t<ngt-point-light\n\t\t\t[position]=\"[\n\t\t\t\tconfig().fill[0] * boundingState.get('radius'),\n\t\t\t\tconfig().fill[1] * boundingState.get('radius'),\n\t\t\t\tconfig().fill[2] * boundingState.get('radius')\n\t\t\t]\"\n\t\t\t[intensity]=\"intensity()\"\n\t\t/>\n\n\t\t<ngts-bounds\n\t\t\t[fit]=\"!!adjustCamera()\"\n\t\t\t[clip]=\"!!adjustCamera()\"\n\t\t\t[margin]=\"Number(adjustCamera())\"\n\t\t\t[observe]=\"true\"\n\t\t>\n\t\t\t<ngts-stage-refit [radius]=\"boundingState.get('radius')\" [adjustCamera]=\"adjustCamera()\" />\n\t\t\t<ngts-center\n\t\t\t\t[position]=\"[0, shadowsState().shadowOffset / 2, 0]\"\n\t\t\t\t[top]=\"!!center()?.top\"\n\t\t\t\t[right]=\"!!center()?.right\"\n\t\t\t\t[bottom]=\"!!center()?.bottom\"\n\t\t\t\t[left]=\"!!center()?.left\"\n\t\t\t\t[front]=\"!!center()?.front\"\n\t\t\t\t[back]=\"!!center()?.back\"\n\t\t\t\t[disableX]=\"!!center()?.disableX\"\n\t\t\t\t[disableY]=\"!!center()?.disableY\"\n\t\t\t\t[disableZ]=\"!!center()?.disableZ\"\n\t\t\t\t[precise]=\"!!center()?.precise\"\n\t\t\t\t(centered)=\"onCentered($event)\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngts-center>\n\t\t</ngts-bounds>\n\n\t\t<ngt-group [position]=\"[0, -boundingState.get('height') / 2 - shadowsState().shadowOffset / 2, 0]\">\n\t\t\t<ngts-contact-shadows\n\t\t\t\t*ngIf=\"shadowsState().contactShadow\"\n\t\t\t\t[scale]=\"boundingState.get('radius') * 4\"\n\t\t\t\t[far]=\"boundingState.get('radius')\"\n\t\t\t\t[blur]=\"2\"\n\t\t\t\t[opacity]=\"shadowsState().opacity!\"\n\t\t\t\t[width]=\"shadowsState().width!\"\n\t\t\t\t[height]=\"shadowsState().height!\"\n\t\t\t\t[smooth]=\"shadowsState().smooth!\"\n\t\t\t\t[resolution]=\"shadowsState().resolution!\"\n\t\t\t\t[frames]=\"shadowsState().frames!\"\n\t\t\t\t[scale]=\"shadowsState().scale!\"\n\t\t\t\t[color]=\"shadowsState().color!\"\n\t\t\t\t[depthWrite]=\"shadowsState().depthWrite!\"\n\t\t\t\t[renderOrder]=\"shadowsState().renderOrder!\"\n\t\t\t/>\n\t\t\t<ngts-accumulative-shadows\n\t\t\t\t*ngIf=\"shadowsState().accumulativeShadow\"\n\t\t\t\t[temporal]=\"true\"\n\t\t\t\t[frames]=\"100\"\n\t\t\t\t[alphaTest]=\"0.9\"\n\t\t\t\t[toneMapped]=\"true\"\n\t\t\t\t[scale]=\"boundingState.get('radius') * 4\"\n\t\t\t\t[opacity]=\"shadowsState().opacity!\"\n\t\t\t\t[alphaTest]=\"shadowsState().alphaTest!\"\n\t\t\t\t[color]=\"shadowsState().color!\"\n\t\t\t\t[colorBlend]=\"shadowsState().colorBlend!\"\n\t\t\t\t[resolution]=\"shadowsState().resolution!\"\n\t\t\t>\n\t\t\t\t<ngts-randomized-lights\n\t\t\t\t\t[amount]=\"shadowsState().amount ?? 8\"\n\t\t\t\t\t[radius]=\"shadowsState().radius ?? boundingState.get('radius')\"\n\t\t\t\t\t[ambient]=\"shadowsState().ambient ?? 0.5\"\n\t\t\t\t\t[intensity]=\"shadowsState().intensity ?? 1\"\n\t\t\t\t\t[position]=\"[\n\t\t\t\t\t\tconfig().main[0] * boundingState.get('radius'),\n\t\t\t\t\t\tconfig().main[1] * boundingState.get('radius'),\n\t\t\t\t\t\tconfig().main[2] * boundingState.get('radius')\n\t\t\t\t\t]\"\n\t\t\t\t\t[size]=\"boundingState.get('radius') * 4\"\n\t\t\t\t\t[bias]=\"-shadowsState().shadowBias\"\n\t\t\t\t\t[mapSize]=\"shadowsState().shadowSize\"\n\t\t\t\t/>\n\t\t\t</ngts-accumulative-shadows>\n\t\t</ngt-group>\n\n\t\t<ngts-environment\n\t\t\t*ngIf=\"environmentState() as environment\"\n\t\t\t[frames]=\"environment.frames\"\n\t\t\t[near]=\"environment.near\"\n\t\t\t[far]=\"environment.far\"\n\t\t\t[resolution]=\"environment.resolution\"\n\t\t\t[background]=\"environment.background\"\n\t\t\t[blur]=\"environment.blur\"\n\t\t\t[map]=\"environment.map\"\n\t\t\t[files]=\"environment.files\"\n\t\t\t[path]=\"environment.path\"\n\t\t\t[preset]=\"environment.preset\"\n\t\t\t[scene]=\"environment.scene\"\n\t\t\t[extensions]=\"environment.extensions\"\n\t\t\t[ground]=\"environment.ground\"\n\t\t\t[encoding]=\"environment.encoding\"\n\t\t/>\n\t`,\n\timports: [\n\t\tNgtArgs,\n\t\tNgIf,\n\t\tNgtsBounds,\n\t\tNgtsStageRefit,\n\t\tNgtsCenter,\n\t\tNgtsContactShadows,\n\t\tNgtsAccumulativeShadows,\n\t\tNgtsRandomizedLights,\n\t\tNgtsEnvironment,\n\t],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage {\n\tNumber = Number;\n\n\tprivate inputs = signalStore<NgtsStageState>({\n\t\tadjustCamera: true,\n\t\tintensity: 0.5,\n\t\tshadows: 'contact',\n\t\tenvironment: 'city',\n\t\tpreset: 'rembrandt',\n\t});\n\n\t@Input({ alias: 'preset' }) set _preset(preset: NgtsStageState['preset']) {\n\t\tthis.inputs.set({ preset });\n\t}\n\n\t@Input({ alias: 'shadows' }) set _shadows(shadows: NgtsStageState['shadows']) {\n\t\tthis.inputs.set({ shadows });\n\t}\n\n\t@Input({ alias: 'adjustCamera' }) set _adjustCamera(adjustCamera: NgtsStageState['adjustCamera']) {\n\t\tthis.inputs.set({ adjustCamera });\n\t}\n\n\t@Input({ alias: 'environment' }) set _environment(environment: NgtsStageState['environment']) {\n\t\tthis.inputs.set({ environment });\n\t}\n\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: NgtsStageState['intensity']) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t@Input({ alias: 'center' }) set _center(center: NgtsStageState['center']) {\n\t\tthis.inputs.set({ center });\n\t}\n\n\t@Output() centered = new EventEmitter<NgtsCenteredEvent>();\n\n\tprivate preset = this.inputs.select('preset');\n\tprivate environment = this.inputs.select('environment');\n\n\tboundingState = signalStore({ radius: 0, width: 0, height: 0, depth: 0 });\n\tconfig = computed(() => {\n\t\tconst preset = this.preset();\n\t\treturn typeof preset === 'string' ? presets[preset] : preset;\n\t});\n\tshadows = this.inputs.select('shadows');\n\tintensity = this.inputs.select('intensity');\n\tadjustCamera = this.inputs.select('adjustCamera');\n\tcenter = this.inputs.select('center');\n\n\tshadowsState = computed(() => {\n\t\tconst shadows = this.shadows();\n\t\tconst {\n\t\t\tbias: shadowBias = -0.0001,\n\t\t\tnormalBias = 0,\n\t\t\tsize: shadowSize = 1024,\n\t\t\toffset: shadowOffset = 0,\n\t\t\t...restProps\n\t\t} = (typeof shadows === 'string' ? {} : shadows || {}) as NgtsStageShadowsState;\n\t\treturn {\n\t\t\tcontactShadow: shadows === 'contact' || restProps.type === 'contact',\n\t\t\taccumulativeShadow: shadows === 'accumulative' || restProps.type === 'accumulative',\n\t\t\tshadowBias,\n\t\t\tnormalBias,\n\t\t\tshadowSize,\n\t\t\tshadowOffset,\n\t\t\t...restProps,\n\t\t};\n\t});\n\tenvironmentState = computed(() => {\n\t\tconst environment = this.environment();\n\t\treturn !environment ? null : typeof environment === 'string' ? { preset: environment } : environment;\n\t});\n\n\tonCentered($event: NgtsCenteredEvent) {\n\t\tconst { width, height, depth, boundingSphere } = $event;\n\t\tthis.boundingState.set({ radius: boundingSphere.radius, width, height, depth });\n\t\tif (this.centered.observed) this.centered.emit($event);\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, extend, injectNgtRef, signalStore, type NgtBeforeRenderEvent } from 'angular-three';\nimport { StarFieldMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nexport type NgtsStarsState = {\n\tradius: number;\n\tdepth: number;\n\tcount: number;\n\tfactor: number;\n\tsaturation: number;\n\tfade: boolean;\n\tspeed: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-stars': NgtsStarsState;\n\t}\n}\n\nconst genStar = (r: number) =>\n\tnew THREE.Vector3().setFromSpherical(\n\t\tnew THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI),\n\t);\n\n@Component({\n\tselector: 'ngts-stars',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"starsRef\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.position\" *args=\"[attributes().positions, 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.color\" *args=\"[attributes().colors, 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.size\" *args=\"[attributes().sizes, 1]\" />\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[blending]=\"AdditiveBlending\"\n\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t(beforeRender)=\"onBeforeRender($event)\"\n\t\t\t>\n\t\t\t\t<ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"fade()\" />\n\t\t\t</ngt-primitive>\n\t\t</ngt-points>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars {\n\tprivate inputs = signalStore<NgtsStarsState>({\n\t\tradius: 100,\n\t\tdepth: 50,\n\t\tcount: 5000,\n\t\tsaturation: 0,\n\t\tfactor: 4,\n\t\tfade: false,\n\t\tspeed: 1,\n\t});\n\tAdditiveBlending = THREE.AdditiveBlending;\n\tmaterial = new StarFieldMaterial();\n\n\t@Input() starsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'radius' }) set _radius(radius: number) {\n\t\tthis.inputs.set({ radius });\n\t}\n\n\t@Input({ alias: 'depth' }) set _depth(depth: number) {\n\t\tthis.inputs.set({ depth });\n\t}\n\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t@Input({ alias: 'factor' }) set _factor(factor: number) {\n\t\tthis.inputs.set({ factor });\n\t}\n\n\t@Input({ alias: 'saturation' }) set _saturation(saturation: number) {\n\t\tthis.inputs.set({ saturation });\n\t}\n\n\t@Input('fade') set starsFade(fade: boolean) {\n\t\tthis.inputs.set({ fade });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\tprivate count = this.inputs.select('count');\n\tprivate depth = this.inputs.select('depth');\n\tprivate factor = this.inputs.select('factor');\n\tprivate radius = this.inputs.select('radius');\n\tprivate saturation = this.inputs.select('saturation');\n\n\tfade = this.inputs.select('fade');\n\tattributes = computed(() => {\n\t\tconst positions: number[] = [];\n\t\tconst colors: number[] = [];\n\t\tconst sizes = Array.from({ length: this.count() }, () => (0.5 + 0.5 * Math.random()) * this.factor());\n\t\tconst color = new THREE.Color();\n\t\tlet r = this.radius() + this.depth();\n\t\tconst increment = this.depth() / this.count();\n\t\tfor (let i = 0; i < this.count(); i++) {\n\t\t\tr -= increment * Math.random();\n\t\t\tpositions.push(...genStar(r).toArray());\n\t\t\tcolor.setHSL(i / this.count(), this.saturation(), 0.9);\n\t\t\tcolors.push(color.r, color.g, color.b);\n\t\t}\n\t\treturn {\n\t\t\tpositions: new Float32Array(positions),\n\t\t\tcolors: new Float32Array(colors),\n\t\t\tsizes: new Float32Array(sizes),\n\t\t};\n\t});\n\n\tonBeforeRender({ object, state }: NgtBeforeRenderEvent<InstanceType<typeof StarFieldMaterial>>) {\n\t\tobject.uniforms['time'].value = state.clock.getElapsedTime() * this.inputs.get('speed');\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { is, signalStore, type NgtRef } from 'angular-three';\nimport type { WireframeMaterialState } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nexport type NgtsWireframeState = {\n\tgeometry?: NgtRef<THREE.BufferGeometry>;\n\tsimplify: boolean;\n} & Required<WireframeMaterialState>;\n\n@Directive()\nexport abstract class NgtsWireframeInput {\n\tinputs = signalStore<NgtsWireframeState>({\n\t\tsimplify: false,\n\t\tstrokeOpacity: 1,\n\t\tfillOpacity: 0.25,\n\t\tfillMix: 0,\n\t\tthickness: 0.05,\n\t\tcolorBackfaces: false,\n\t\tdashInvert: true,\n\t\tdash: false,\n\t\tdashRepeats: 4,\n\t\tdashLength: 0.5,\n\t\tsqueeze: false,\n\t\tsqueezeMin: 0.2,\n\t\tsqueezeMax: 1,\n\t\tstroke: new THREE.Color('#ff0000'),\n\t\tbackfaceStroke: new THREE.Color('#0000ff'),\n\t\tfill: new THREE.Color('#00ff00'),\n\t});\n\n\t@Input({ alias: 'geometry' }) set _geometry(geometry: NgtRef<THREE.BufferGeometry>) {\n\t\tthis.inputs.set({ geometry });\n\t}\n\n\t@Input({ alias: 'simplify' }) set _simplify(simplify: boolean) {\n\t\tthis.inputs.set({ simplify });\n\t}\n\n\t@Input({ alias: 'fillOpacity' }) set _fillOpacity(fillOpacity: number) {\n\t\tthis.inputs.set({ fillOpacity });\n\t}\n\n\t@Input({ alias: 'fillMix' }) set _fillMix(fillMix: number) {\n\t\tthis.inputs.set({ fillMix });\n\t}\n\n\t@Input({ alias: 'strokeOpacity' }) set _strokeOpacity(strokeOpacity: number) {\n\t\tthis.inputs.set({ strokeOpacity });\n\t}\n\n\t@Input({ alias: 'thickness' }) set _thickness(thickness: number) {\n\t\tthis.inputs.set({ thickness });\n\t}\n\n\t@Input({ alias: 'colorBackfaces' }) set _colorBackfaces(colorBackfaces: boolean) {\n\t\tthis.inputs.set({ colorBackfaces });\n\t}\n\n\t@Input({ alias: 'dashInvert' }) set _dashInvert(dashInvert: boolean) {\n\t\tthis.inputs.set({ dashInvert });\n\t}\n\n\t@Input({ alias: 'dash' }) set _dash(dash: boolean) {\n\t\tthis.inputs.set({ dash });\n\t}\n\n\t@Input({ alias: 'dashRepeats' }) set _dashRepeats(dashRepeats: number) {\n\t\tthis.inputs.set({ dashRepeats });\n\t}\n\n\t@Input({ alias: 'dashLength' }) set _dashLength(dashLength: number) {\n\t\tthis.inputs.set({ dashLength });\n\t}\n\n\t@Input({ alias: 'squeeze' }) set _squeeze(squeeze: boolean) {\n\t\tthis.inputs.set({ squeeze });\n\t}\n\n\t@Input({ alias: 'squeezeMin' }) set _squeezeMin(squeezeMin: number) {\n\t\tthis.inputs.set({ squeezeMin });\n\t}\n\n\t@Input({ alias: 'squeezeMax' }) set _squeezeMax(squeezeMax: number) {\n\t\tthis.inputs.set({ squeezeMax });\n\t}\n\n\t@Input({ alias: 'stroke' }) set _stroke(stroke: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ stroke });\n\t}\n\n\t@Input({ alias: 'backfaceStroke' }) set _backfaceStroke(backfaceStroke: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ backfaceStroke });\n\t}\n\n\t@Input({ alias: 'fill' }) set _fill(fill: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ fill });\n\t}\n\n\tsimplify = this.inputs.select('simplify');\n\tgeometry = this.inputs.select('geometry');\n\tcustomGeometry = computed(() => {\n\t\tconst geometry = this.geometry();\n\t\treturn is.ref(geometry) ? geometry.nativeElement : geometry;\n\t});\n\n\tstrokeOpacity = this.inputs.select('strokeOpacity');\n\tfillOpacity = this.inputs.select('fillOpacity');\n\tfillMix = this.inputs.select('fillMix');\n\tthickness = this.inputs.select('thickness');\n\tcolorBackfaces = this.inputs.select('colorBackfaces');\n\tdashInvert = this.inputs.select('dashInvert');\n\tdash = this.inputs.select('dash');\n\tdashRepeats = this.inputs.select('dashRepeats');\n\tdashLength = this.inputs.select('dashLength');\n\tsqueeze = this.inputs.select('squeeze');\n\tsqueezeMin = this.inputs.select('squeezeMin');\n\tsqueezeMax = this.inputs.select('squeezeMax');\n\tstroke = this.inputs.select('stroke');\n\tbackfaceStroke = this.inputs.select('backfaceStroke');\n\tfill = this.inputs.select('fill');\n\n\tmaterialState = computed(() => {\n\t\tconst [\n\t\t\tstrokeOpacity,\n\t\t\tfillOpacity,\n\t\t\tfillMix,\n\t\t\tthickness,\n\t\t\tcolorBackfaces,\n\t\t\tdashInvert,\n\t\t\tdash,\n\t\t\tdashRepeats,\n\t\t\tdashLength,\n\t\t\tsqueeze,\n\t\t\tsqueezeMin,\n\t\t\tsqueezeMax,\n\t\t\tstroke,\n\t\t\tbackfaceStroke,\n\t\t\tfill,\n\t\t] = [\n\t\t\tthis.strokeOpacity(),\n\t\t\tthis.fillOpacity(),\n\t\t\tthis.fillMix(),\n\t\t\tthis.thickness(),\n\t\t\tthis.colorBackfaces(),\n\t\t\tthis.dashInvert(),\n\t\t\tthis.dash(),\n\t\t\tthis.dashRepeats(),\n\t\t\tthis.dashLength(),\n\t\t\tthis.squeeze(),\n\t\t\tthis.squeezeMin(),\n\t\t\tthis.squeezeMax(),\n\t\t\tthis.stroke(),\n\t\t\tthis.backfaceStroke(),\n\t\t\tthis.fill(),\n\t\t];\n\t\treturn {\n\t\t\tstrokeOpacity,\n\t\t\tfillOpacity,\n\t\t\tfillMix,\n\t\t\tthickness,\n\t\t\tcolorBackfaces,\n\t\t\tdashInvert,\n\t\t\tdash,\n\t\t\tdashRepeats,\n\t\t\tdashLength,\n\t\t\tsqueeze,\n\t\t\tsqueezeMin,\n\t\t\tsqueezeMax,\n\t\t\tstroke,\n\t\t\tbackfaceStroke,\n\t\t\tfill,\n\t\t};\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, effect, inject, signal, untracked } from '@angular/core';\nimport { extend, injectNgtRef, is, type NgtRef } from 'angular-three';\nimport {\n\tWireframeMaterial,\n\tWireframeMaterialShaders,\n\tinjectNgtsWireframeUniforms,\n\tsetWireframeOverride,\n} from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\nimport { NgtsWireframeInput, type NgtsWireframeState } from './wireframe-input';\n\nextend({ WireframeMaterial, Object3D });\n\ntype WithGeometry =\n\t| THREE.Mesh<THREE.BufferGeometry, THREE.Material>\n\t| THREE.Line<THREE.BufferGeometry, THREE.Material>\n\t| THREE.Points<THREE.BufferGeometry, THREE.Material>;\n\nfunction isWithGeometry(object?: THREE.Object3D | null): object is WithGeometry {\n\treturn !!(object as THREE.Mesh)?.geometry;\n}\n\nfunction isWireframeGeometry(geometry: any): geometry is THREE.WireframeGeometry {\n\treturn (geometry as THREE.WireframeGeometry).type === 'WireframeGeometry';\n}\n\nfunction getUniforms() {\n\tconst u: Record<string, any> = {};\n\tfor (const key in WireframeMaterialShaders.uniforms) {\n\t\tu[key] = { value: (WireframeMaterialShaders.uniforms as any)[key] };\n\t}\n\treturn u;\n}\n\nfunction getBarycentricCoordinates(geometry: THREE.BufferGeometry, removeEdge?: boolean) {\n\tconst position = geometry.getAttribute('position');\n\tconst count = position.count;\n\n\tconst barycentric: number[] = [];\n\n\tfor (let i = 0; i < count; i++) {\n\t\tconst even = i % 2 === 0;\n\t\tconst Q = removeEdge ? 1 : 0;\n\t\tif (even) {\n\t\t\tbarycentric.push(0, 0, 1, 0, 1, 0, 1, 0, Q);\n\t\t} else {\n\t\t\tbarycentric.push(0, 1, 0, 0, 0, 1, 1, 0, Q);\n\t\t}\n\t}\n\n\treturn new THREE.BufferAttribute(Float32Array.from(barycentric), 3);\n}\n\nfunction getInputGeometry(inputGeometry: NgtRef<THREE.BufferGeometry | THREE.Object3D>) {\n\tconst geo = (is.ref(inputGeometry) ? inputGeometry.nativeElement : inputGeometry)!;\n\n\tif (!is.geometry(geo)) {\n\t\t// Disallow WireframeGeometry\n\t\tif (isWireframeGeometry(geo)) {\n\t\t\tthrow new Error('Wireframe: WireframeGeometry is not supported.');\n\t\t}\n\n\t\tconst parent = geo.parent;\n\t\tif (isWithGeometry(parent)) {\n\t\t\t// Disallow WireframeGeometry\n\t\t\tif (isWireframeGeometry(parent.geometry)) {\n\t\t\t\tthrow new Error('Wireframe: WireframeGeometry is not supported.');\n\t\t\t}\n\n\t\t\treturn parent.geometry;\n\t\t}\n\t} else {\n\t\treturn geo;\n\t}\n\n\treturn;\n}\n\nfunction setBarycentricCoordinates(geometry: THREE.BufferGeometry, simplify: boolean) {\n\tif (geometry.index) {\n\t\tconsole.warn('[NGT]: ngts-wireframe requires non-indexed geometry, converting to non-indexed geometry.');\n\t\tconst nonIndexedGeo = geometry.toNonIndexed();\n\n\t\tgeometry.copy(nonIndexedGeo);\n\t\tgeometry.setIndex(null);\n\t}\n\n\tconst newBarycentric = getBarycentricCoordinates(geometry, simplify);\n\n\tgeometry.setAttribute('barycentric', newBarycentric);\n}\n\n@Component({\n\tselector: 'ngts-wireframe-without-custom-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-object3D [ref]=\"objectRef\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsWireframeWithoutCustomGeometry {\n\tobjectRef = injectNgtRef<THREE.Object3D>();\n\n\tprivate wireframeInput = inject(NgtsWireframeInput);\n\tprivate uniforms = getUniforms();\n\n\tconstructor() {\n\t\tinjectNgtsWireframeUniforms(() => this.uniforms, this.wireframeInput.materialState);\n\t\teffect((onCleanup) => {\n\t\t\tconst object = this.objectRef.nativeElement;\n\t\t\tif (!object) return;\n\t\t\tconst simplify = this.wireframeInput.simplify();\n\t\t\tconst geometry = getInputGeometry(object);\n\t\t\tif (!geometry) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'[NGT]: ngts-wireframe must be a child of a Mesh, Line or Points object or specify a geometry prop.',\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst cloned = geometry.clone();\n\n\t\t\tsetBarycentricCoordinates(geometry, simplify);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tgeometry.copy(cloned);\n\t\t\t\tcloned.dispose();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst object = this.objectRef.nativeElement;\n\t\t\tif (!object) return;\n\t\t\tconst parentMesh = object.parent as THREE.Mesh<THREE.BufferGeometry, THREE.Material>;\n\t\t\tconst cloned = parentMesh.material.clone();\n\n\t\t\tsetWireframeOverride(parentMesh.material, this.uniforms);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tparentMesh.material.dispose();\n\t\t\t\tparentMesh.material = cloned;\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-wireframe-with-custom-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh *ngIf=\"drawnGeometry() as geometry\" [geometry]=\"geometry\">\n\t\t\t<ngt-wireframe-material\n\t\t\t\tattach=\"material\"\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t[polygonOffsetFactor]=\"-4\"\n\t\t\t\t[extensions]=\"{ derivatives: true, fragDepth: false, drawBuffers: false, shaderTextureLOD: false }\"\n\t\t\t\t[strokeOpacity]=\"wireframeInput.strokeOpacity()\"\n\t\t\t\t[fillOpacity]=\"wireframeInput.fillOpacity()\"\n\t\t\t\t[fillMix]=\"wireframeInput.fillMix()\"\n\t\t\t\t[thickness]=\"wireframeInput.thickness()\"\n\t\t\t\t[colorBackfaces]=\"wireframeInput.colorBackfaces()\"\n\t\t\t\t[dashInvert]=\"wireframeInput.dashInvert()\"\n\t\t\t\t[dash]=\"wireframeInput.dash()\"\n\t\t\t\t[dashRepeats]=\"wireframeInput.dashRepeats()\"\n\t\t\t\t[dashLength]=\"wireframeInput.dashLength()\"\n\t\t\t\t[squeeze]=\"wireframeInput.squeeze()\"\n\t\t\t\t[squeezeMin]=\"wireframeInput.squeezeMin()\"\n\t\t\t\t[squeezeMax]=\"wireframeInput.squeezeMax()\"\n\t\t\t\t[stroke]=\"wireframeInput.stroke()\"\n\t\t\t\t[backfaceStroke]=\"wireframeInput.backfaceStroke()\"\n\t\t\t\t[fill]=\"wireframeInput.fill()\"\n\t\t\t/>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsWireframeWithCustomGeometry {\n\tDoubleSide = THREE.DoubleSide;\n\n\twireframeInput = inject(NgtsWireframeInput);\n\tdrawnGeometry = signal<THREE.BufferGeometry>(this.wireframeInput.customGeometry()!);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [simplify, customGeometry] = [this.wireframeInput.simplify(), this.wireframeInput.geometry()];\n\t\t\tconst geometry = getInputGeometry(customGeometry!);\n\t\t\tif (!geometry) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'[NGT]: ngts-wireframe [geometry] input must be a BufferGeometry or a ref to a BufferGeometry.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetBarycentricCoordinates(geometry, simplify);\n\n\t\t\tif (is.ref(customGeometry)) {\n\t\t\t\tuntracked(() => this.drawnGeometry.set(geometry));\n\t\t\t}\n\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-wireframe': NgtsWireframeState;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-wireframe',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-wireframe-with-custom-geometry *ngIf=\"geometry(); else withoutCustomGeometry\" />\n\t\t<ng-template #withoutCustomGeometry>\n\t\t\t<ngts-wireframe-without-custom-geometry />\n\t\t</ng-template>\n\t`,\n\timports: [NgtsWireframeWithoutCustomGeometry, NgtsWireframeWithCustomGeometry, NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tproviders: [{ provide: NgtsWireframeInput, useExisting: NgtsWireframe }],\n})\nexport class NgtsWireframe extends NgtsWireframeInput {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["LIST_URL","defaultState"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/lib/accumulative-shadows.ts","../../../../libs/soba/staging/src/lib/backdrop.ts","../../../../libs/soba/staging/src/lib/bb-anchor.ts","../../../../libs/soba/staging/src/lib/bounds.ts","../../../../libs/soba/staging/src/lib/camera-shake.ts","../../../../libs/soba/staging/src/lib/caustics.ts","../../../../libs/soba/staging/src/lib/center.ts","../../../../libs/soba/staging/src/lib/contact-shadows.ts","../../../../libs/soba/staging/src/lib/environment.ts","../../../../libs/soba/staging/src/lib/float.ts","../../../../libs/soba/staging/src/lib/lightformer.ts","../../../../libs/soba/staging/src/lib/matcap-texture.ts","../../../../libs/soba/staging/src/lib/normal-texture.ts","../../../../libs/soba/staging/src/lib/randomized-lights.ts","../../../../libs/soba/staging/src/lib/render-texture.ts","../../../../libs/soba/staging/src/lib/sky.ts","../../../../libs/soba/staging/src/lib/spot-light.ts","../../../../libs/soba/staging/src/lib/stage.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtGroup, extend, getLocalState, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { ProgressiveLightMap, SoftShadowMaterial } from 'angular-three-soba/vanilla-exports';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Mesh, PlaneGeometry } from 'three';\n\nexport interface NgtsAccumulativeShadowsOptions extends Partial<NgtGroup> {\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\tframes: number;\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\tblend: number;\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\tlimit: number;\n\t/** Scale of the plane, */\n\tscale: number;\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\ttemporal?: boolean;\n\t/** Opacity of the plane, 1 */\n\topacity: number;\n\t/** Discards alpha pixels, 0.65 */\n\talphaTest: number;\n\t/** Shadow color, black */\n\tcolor: string;\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\tcolorBlend: number;\n\t/** Buffer resolution, 1024 */\n\tresolution: number;\n\t/** Texture tonemapping */\n\ttoneMapped: boolean;\n}\n\nconst defaultOptions: NgtsAccumulativeShadowsOptions = {\n\ttemporal: false,\n\tframes: 40,\n\tlimit: Infinity,\n\tblend: 20,\n\tscale: 10,\n\topacity: 1,\n\talphaTest: 0.75,\n\tcolor: 'black',\n\tcolorBlend: 2,\n\tresolution: 1024,\n\ttoneMapped: true,\n};\n\n@Component({\n\tselector: 'ngts-accumulative-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #lights [traverse]=\"nullTraversal\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\n\t\t\t<ngt-mesh #plane [scale]=\"scale()\" [rotation]=\"[-Math.PI / 2, 0, 0]\" [receiveShadow]=\"true\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-soft-shadow-material\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t\t[toneMapped]=\"toneMapped()\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[blend]=\"colorBlend()\"\n\t\t\t\t\t[map]=\"map()\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsAccumulativeShadows {\n\tnullTraversal = () => null;\n\tMath = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'temporal',\n\t\t'frames',\n\t\t'limit',\n\t\t'blend',\n\t\t'scale',\n\t\t'opacity',\n\t\t'alphaTest',\n\t\t'color',\n\t\t'colorBlend',\n\t\t'resolution',\n\t\t'toneMapped',\n\t]);\n\n\tlights = viewChild.required<ElementRef<Group>>('lights');\n\tplane = viewChild.required<ElementRef<Mesh<PlaneGeometry, InstanceType<typeof SoftShadowMaterial>>>>('plane');\n\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\tprivate camera = this.store.select('camera');\n\tprivate scene = this.store.select('scene');\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate opacity = pick(this.options, 'opacity');\n\tprivate alphaTest = pick(this.options, 'alphaTest');\n\tprivate limit = pick(this.options, 'limit');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate previousPLM: ProgressiveLightMap | undefined;\n\tprivate pLM = computed(() => {\n\t\tif (this.previousPLM) {\n\t\t\tthis.previousPLM.clear();\n\t\t}\n\t\treturn (this.previousPLM = new ProgressiveLightMap(this.gl(), this.scene(), this.resolution()));\n\t});\n\n\tscale = pick(this.options, 'scale');\n\ttoneMapped = pick(this.options, 'toneMapped');\n\tcolor = pick(this.options, 'color');\n\tcolorBlend = pick(this.options, 'colorBlend');\n\tmap = computed(() => this.pLM().progressiveLightMap2.texture);\n\n\tlightsMap = new Map<string, () => void>();\n\ttemporal = computed(() => !!this.options().temporal);\n\tframes = computed(() => Math.max(2, this.options().frames));\n\tblend = computed(() =>\n\t\tMath.max(2, this.options().frames === Infinity ? this.options().blend : this.options().frames),\n\t);\n\tcount = 0;\n\n\tconstructor() {\n\t\textend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tthis.pLM().configure(this.plane().nativeElement);\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst sceneLS = getLocalState(this.scene());\n\t\t\t\tif (!sceneLS) return;\n\t\t\t\t// track deps\n\t\t\t\tthis.plane();\n\t\t\t\tthis.options();\n\t\t\t\tsceneLS.objects();\n\n\t\t\t\t// Reset internals, buffers, ...\n\t\t\t\tthis.reset();\n\t\t\t\t// Update lightmap\n\t\t\t\tif (!this.temporal() && this.frames() !== Infinity) this.update(this.blend());\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [frames, temporal, invalidate, limit] = [this.frames(), !!this.temporal(), this.invalidate(), this.limit()];\n\t\t\tif ((temporal || frames === Infinity) && this.count < frames && this.count < limit) {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.update();\n\t\t\t\tthis.count++;\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.previousPLM?.clear();\n\t\t});\n\t}\n\n\tgetMesh() {\n\t\treturn this.plane().nativeElement;\n\t}\n\n\treset() {\n\t\t// Clear buffers, reset opacities, set frame count to 0\n\t\tuntracked(this.pLM).clear();\n\t\tconst material = untracked(this.plane).nativeElement.material;\n\t\tmaterial.opacity = 0;\n\t\tmaterial.alphaTest = 0;\n\t\tthis.count = 0;\n\t}\n\n\tupdate(frames = 1) {\n\t\t// Adapt the opacity-blend ratio to the number of frames\n\t\tconst material = this.plane().nativeElement.material;\n\t\tif (!this.temporal()) {\n\t\t\tmaterial.opacity = this.opacity();\n\t\t\tmaterial.alphaTest = this.alphaTest();\n\t\t} else {\n\t\t\tmaterial.opacity = Math.min(this.opacity(), material.opacity + this.opacity() / this.blend());\n\t\t\tmaterial.alphaTest = Math.min(this.alphaTest(), material.alphaTest + this.alphaTest() / this.blend());\n\t\t}\n\n\t\t// Switch accumulative lights on\n\t\tthis.lights().nativeElement.visible = true;\n\t\t// Collect scene lights and meshes\n\t\tthis.pLM().prepare();\n\n\t\t// Update the lightmap and the accumulative lights\n\t\tfor (let i = 0; i < frames; i++) {\n\t\t\tthis.lightsMap.forEach((lightUpdate) => lightUpdate());\n\t\t\tthis.pLM().update(this.camera(), this.blend());\n\t\t}\n\t\t// Switch lights off\n\t\tthis.lights().nativeElement.visible = false;\n\t\t// Restore lights and meshes\n\t\tthis.pLM().finish();\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, NgtArgs, NgtGroup, omit, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferAttribute, Group, Mesh, PlaneGeometry } from 'three';\n\nfunction easeInExpo(x: number) {\n\treturn x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n}\n\nexport interface NgtsBackdropOptions extends Partial<NgtGroup> {\n\tfloor: number;\n\tsegments: number;\n\treceiveShadow?: boolean;\n}\n\nconst defaultOptions: NgtsBackdropOptions = {\n\tfloor: 0.25,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-backdrop',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh [receiveShadow]=\"receiveShadow()\" [rotation]=\"[-Math.PI / 2, 0, Math.PI / 2]\">\n\t\t\t\t<ngt-plane-geometry #plane *args=\"[1, 1, segments(), segments()]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsBackdrop {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['floor', 'segments', 'receiveShadow']);\n\n\tgroup = viewChild.required<ElementRef<Group>>('group');\n\tplane = viewChild<ElementRef<PlaneGeometry>>('plane');\n\n\treceiveShadow = pick(this.options, 'receiveShadow');\n\tsegments = pick(this.options, 'segments');\n\tprivate floor = pick(this.options, 'floor');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry });\n\n\t\tconst autoEffect = injectAutoEffect();\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst plane = this.plane()?.nativeElement;\n\t\t\t\tif (!plane) return;\n\n\t\t\t\tconst [segments, floor] = [this.segments(), this.floor()];\n\n\t\t\t\tlet i = 0;\n\t\t\t\tconst offset = segments / segments / 2;\n\t\t\t\tconst position = plane.attributes['position'] as BufferAttribute;\n\t\t\t\tfor (let x = 0; x < segments + 1; x++) {\n\t\t\t\t\tfor (let y = 0; y < segments + 1; y++) {\n\t\t\t\t\t\tposition.setXYZ(\n\t\t\t\t\t\t\ti++,\n\t\t\t\t\t\t\tx / segments - offset + (x === 0 ? -floor : 0),\n\t\t\t\t\t\t\ty / segments - offset,\n\t\t\t\t\t\t\teaseInExpo(x / segments),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcheckUpdate(position);\n\t\t\t\tplane.computeVertexNormals();\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tafterNextRender,\n\tinput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { NgtGroup, NgtVector3, extend, getLocalState, injectNextBeforeRender, omit, vector3 } from 'angular-three';\nimport { Box3, Group, Object3D, Vector3 } from 'three';\n\nextend({ Group });\n\nconst boundingBox = new Box3();\nconst boundingBoxSize = new Vector3();\n\nexport interface NgtsBBAnchorOptions extends Partial<NgtGroup> {\n\tanchor: NgtVector3;\n}\n\n@Component({\n\tselector: 'ngts-bb-anchor',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #bbAnchor [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBBAnchor {\n\toptions = input.required<NgtsBBAnchorOptions>();\n\tparameters = omit(this.options, ['anchor']);\n\n\tbbAnchorRef = viewChild.required<ElementRef<Group>>('bbAnchor');\n\n\tparent = signal<Object3D | null>(null);\n\tprivate anchor = vector3(this.options, 'anchor');\n\n\tconstructor() {\n\t\t// Reattach group created by this component to the parent's parent,\n\t\t// so it becomes a sibling of its initial parent.\n\t\t// We do that so the children have no impact on a bounding box of a parent.\n\t\tafterNextRender(() => {\n\t\t\tconst bbAnchorLS = getLocalState(this.bbAnchorRef().nativeElement);\n\t\t\tconst bbAnchorParent = bbAnchorLS?.parent();\n\t\t\tif (bbAnchorParent?.parent) {\n\t\t\t\tthis.parent.set(bbAnchorParent);\n\t\t\t\tbbAnchorParent.parent.add(this.bbAnchorRef().nativeElement);\n\t\t\t}\n\t\t});\n\n\t\tinjectNextBeforeRender(() => {\n\t\t\tconst parent = this.parent();\n\t\t\tif (parent) {\n\t\t\t\tboundingBox.setFromObject(parent);\n\t\t\t\tboundingBox.getSize(boundingBoxSize);\n\n\t\t\t\tconst anchor = this.anchor();\n\t\t\t\tconst bbAnchor = this.bbAnchorRef().nativeElement;\n\n\t\t\t\tbbAnchor.position.set(\n\t\t\t\t\tparent.position.x + (boundingBoxSize.x * anchor.x) / 2,\n\t\t\t\t\tparent.position.y + (boundingBoxSize.y * anchor.y) / 2,\n\t\t\t\t\tparent.position.z + (boundingBoxSize.z * anchor.z) / 2,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tSignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, is, NgtGroup, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Object3D, Quaternion, Vector3 } from 'three';\n\ninterface ControlsProto {\n\tupdate(): void;\n\n\ttarget: Vector3;\n\tmaxDistance: number;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\ninterface OriginT {\n\tcamPos: Vector3;\n\tcamRot: Quaternion;\n\tcamZoom: number;\n}\n\ninterface GoalT {\n\tcamPos: Vector3 | undefined;\n\tcamRot: Quaternion | undefined;\n\tcamZoom: number | undefined;\n\tcamUp: Vector3 | undefined;\n\ttarget: Vector3 | undefined;\n}\n\nenum AnimationState {\n\tNONE = 0,\n\tSTART = 1,\n\tACTIVE = 2,\n}\n\nfunction isBox3(def: unknown): def is Box3 {\n\treturn !!def && (def as Box3).isBox3;\n}\n\nfunction interpolateFuncDefault(t: number) {\n\t// Imitates the previously used THREE.MathUtils.damp\n\treturn 1 - Math.exp(-5 * t) + 0.007 * t;\n}\n\nexport interface NgtsBoundsOptions extends Partial<NgtGroup> {\n\tmaxDuration: number;\n\tmargin: number;\n\tobserve: boolean;\n\tfit: boolean;\n\tclip: boolean;\n\tinterpolateFunc: (t: number) => number;\n}\n\nconst defaultOptions: NgtsBoundsOptions = {\n\tmaxDuration: 1.0,\n\tmargin: 1.2,\n\tinterpolateFunc: interpolateFuncDefault,\n\tclip: false,\n\tfit: false,\n\tobserve: false,\n};\n\n@Component({\n\tselector: 'ngts-bounds',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBounds {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tgroup = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\tprivate camera = this.store.select('camera');\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate size = this.store.select('size');\n\tprivate controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\n\tprivate clipOption = pick(this.options, 'clip');\n\tprivate fitOption = pick(this.options, 'fit');\n\tprivate observe = pick(this.options, 'observe');\n\n\tprivate origin = {\n\t\tcamPos: new Vector3(),\n\t\tcamRot: new Quaternion(),\n\t\tcamZoom: 1,\n\t};\n\tprivate goal = {\n\t\tcamPos: undefined as Vector3 | undefined,\n\t\tcamRot: undefined as Quaternion | undefined,\n\t\tcamZoom: undefined as number | undefined,\n\t\tcamUp: undefined as Vector3 | undefined,\n\t\ttarget: undefined as Vector3 | undefined,\n\t};\n\tprivate animationState = AnimationState.NONE;\n\n\t// represent animation state from 0 to 1\n\tprivate t = 0;\n\tprivate box = new Box3();\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst autoEffect = injectAutoEffect();\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [controls, camera] = [this.controls(), untracked(this.camera)];\n\t\t\t\tif (!controls) return;\n\t\t\t\tconst callback = () => {\n\t\t\t\t\tif (controls && this.goal.target && this.animationState !== AnimationState.NONE) {\n\t\t\t\t\t\tconst front = new Vector3().setFromMatrixColumn(camera.matrix, 2);\n\t\t\t\t\t\tconst d0 = this.origin.camPos.distanceTo(controls.target);\n\t\t\t\t\t\tconst d1 = (this.goal.camPos || this.origin.camPos).distanceTo(this.goal.target);\n\t\t\t\t\t\tconst d = (1 - this.t) * d0 + this.t * d1;\n\n\t\t\t\t\t\tcontrols.target.copy(camera.position).addScaledVector(front, -d);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t\t};\n\n\t\t\t\tcontrols.addEventListener('start', callback);\n\t\t\t\treturn () => controls.removeEventListener('start', callback);\n\t\t\t});\n\n\t\t\tlet count = 0;\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [clip, fit, observe] = [\n\t\t\t\t\tthis.clipOption(),\n\t\t\t\t\tthis.fitOption(),\n\t\t\t\t\tthis.observe(),\n\t\t\t\t\tthis.size(),\n\t\t\t\t\tthis.camera(),\n\t\t\t\t\tthis.controls(),\n\t\t\t\t];\n\t\t\t\tif (observe || count++ === 0) {\n\t\t\t\t\tthis.refresh();\n\t\t\t\t\tif (fit) this.reset().fit();\n\t\t\t\t\tif (clip) this.clip();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\t// This [additional animation step START] is needed to guarantee that delta used in animation isn't absurdly high (2-3 seconds) which is actually possible if rendering happens on demand...\n\t\t\tif (this.animationState === AnimationState.START) {\n\t\t\t\tthis.animationState = AnimationState.ACTIVE;\n\t\t\t\tthis.invalidate();\n\t\t\t} else if (this.animationState === AnimationState.ACTIVE) {\n\t\t\t\tconst [{ maxDuration, interpolateFunc }, camera, controls, invalidate] = [\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.camera(),\n\t\t\t\t\tthis.controls(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t];\n\t\t\t\tthis.t += delta / maxDuration;\n\n\t\t\t\tif (this.t >= 1) {\n\t\t\t\t\tthis.goal.camPos && camera.position.copy(this.goal.camPos);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.copy(this.goal.camRot);\n\t\t\t\t\tthis.goal.camUp && camera.up.copy(this.goal.camUp);\n\t\t\t\t\tthis.goal.camZoom && is.orthographicCamera(camera) && (camera.zoom = this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t\t\tif (controls && this.goal.target) {\n\t\t\t\t\t\tcontrols.target.copy(this.goal.target);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t\t} else {\n\t\t\t\t\tconst k = interpolateFunc(this.t);\n\n\t\t\t\t\tthis.goal.camPos && camera.position.lerpVectors(this.origin.camPos, this.goal.camPos, k);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.slerpQuaternions(this.origin.camRot, this.goal.camRot, k);\n\t\t\t\t\tthis.goal.camUp && camera.up.set(0, 1, 0).applyQuaternion(camera.quaternion);\n\t\t\t\t\tthis.goal.camZoom &&\n\t\t\t\t\t\tis.orthographicCamera(camera) &&\n\t\t\t\t\t\t(camera.zoom = (1 - k) * this.origin.camZoom + k * this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSize() {\n\t\tconst [camera, { margin }] = [untracked(this.camera), untracked(this.options)];\n\n\t\tconst boxSize = this.box.getSize(new Vector3());\n\t\tconst center = this.box.getCenter(new Vector3());\n\t\tconst maxSize = Math.max(boxSize.x, boxSize.y, boxSize.z);\n\t\tconst fitHeightDistance = is.orthographicCamera(camera)\n\t\t\t? maxSize * 4\n\t\t\t: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n\t\tconst fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n\t\tconst distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n\n\t\treturn { box: this.box, size: boxSize, center, distance };\n\t}\n\n\trefresh(object?: Object3D | Box3) {\n\t\tconst [group, camera] = [untracked(this.group).nativeElement, untracked(this.camera)];\n\n\t\tif (isBox3(object)) this.box.copy(object);\n\t\telse {\n\t\t\tconst target = object || group;\n\t\t\tif (!target) return this;\n\t\t\ttarget.updateWorldMatrix(true, true);\n\t\t\tthis.box.setFromObject(target);\n\t\t}\n\t\tif (this.box.isEmpty()) {\n\t\t\tconst max = camera.position.length() || 10;\n\t\t\tthis.box.setFromCenterAndSize(new Vector3(), new Vector3(max, max, max));\n\t\t}\n\n\t\tthis.origin.camPos.copy(camera.position);\n\t\tthis.origin.camRot.copy(camera.quaternion);\n\t\tis.orthographicCamera(camera) && (this.origin.camZoom = camera.zoom);\n\n\t\tthis.goal.camPos = undefined;\n\t\tthis.goal.camRot = undefined;\n\t\tthis.goal.camZoom = undefined;\n\t\tthis.goal.camUp = undefined;\n\t\tthis.goal.target = undefined;\n\n\t\treturn this;\n\t}\n\n\treset() {\n\t\tconst [camera] = [untracked(this.camera)];\n\t\tconst { center, distance } = this.getSize();\n\n\t\tconst direction = camera.position.clone().sub(center).normalize();\n\t\tthis.goal.camPos = center.clone().addScaledVector(direction, distance);\n\t\tthis.goal.target = center.clone();\n\t\tconst mCamRot = new Matrix4().lookAt(this.goal.camPos, this.goal.target, camera.up);\n\t\tthis.goal.camRot = new Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tmoveTo(position: Vector3 | [number, number, number]) {\n\t\tthis.goal.camPos = Array.isArray(position) ? new Vector3(...position) : position.clone();\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tlookAt({ target, up }: { target: Vector3 | [number, number, number]; up?: Vector3 | [number, number, number] }) {\n\t\tconst [camera] = [untracked(this.camera)];\n\n\t\tthis.goal.target = Array.isArray(target) ? new Vector3(...target) : target.clone();\n\t\tif (up) {\n\t\t\tthis.goal.camUp = Array.isArray(up) ? new Vector3(...up) : up.clone();\n\t\t} else {\n\t\t\tthis.goal.camUp = camera.up.clone();\n\t\t}\n\t\tconst mCamRot = new Matrix4().lookAt(this.goal.camPos || camera.position, this.goal.target, this.goal.camUp);\n\t\tthis.goal.camRot = new Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tfit() {\n\t\tconst [camera, controls, { margin }] = [untracked(this.camera), untracked(this.controls), untracked(this.options)];\n\n\t\tif (!is.orthographicCamera(camera)) {\n\t\t\t// For non-orthographic cameras, fit should behave exactly like reset\n\t\t\treturn this.reset();\n\t\t}\n\n\t\t// For orthographic cameras, fit should only modify the zoom value\n\t\tlet maxHeight = 0;\n\t\tlet maxWidth = 0;\n\t\tconst vertices = [\n\t\t\tnew Vector3(this.box.min.x, this.box.min.y, this.box.min.z),\n\t\t\tnew Vector3(this.box.min.x, this.box.max.y, this.box.min.z),\n\t\t\tnew Vector3(this.box.min.x, this.box.min.y, this.box.max.z),\n\t\t\tnew Vector3(this.box.min.x, this.box.max.y, this.box.max.z),\n\t\t\tnew Vector3(this.box.max.x, this.box.max.y, this.box.max.z),\n\t\t\tnew Vector3(this.box.max.x, this.box.max.y, this.box.min.z),\n\t\t\tnew Vector3(this.box.max.x, this.box.min.y, this.box.max.z),\n\t\t\tnew Vector3(this.box.max.x, this.box.min.y, this.box.min.z),\n\t\t];\n\n\t\t// Transform the center and each corner to camera space\n\t\tconst pos = this.goal.camPos || camera.position;\n\t\tconst target = this.goal.target || controls.target;\n\t\tconst up = this.goal.camUp || camera.up;\n\t\tconst mCamWInv = target\n\t\t\t? new Matrix4().lookAt(pos, target, up).setPosition(pos).invert()\n\t\t\t: camera.matrixWorldInverse;\n\t\tfor (const v of vertices) {\n\t\t\tv.applyMatrix4(mCamWInv);\n\t\t\tmaxHeight = Math.max(maxHeight, Math.abs(v.y));\n\t\t\tmaxWidth = Math.max(maxWidth, Math.abs(v.x));\n\t\t}\n\t\tmaxHeight *= 2;\n\t\tmaxWidth *= 2;\n\t\tconst zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n\t\tconst zoomForWidth = (camera.right - camera.left) / maxWidth;\n\n\t\tthis.goal.camZoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tclip() {\n\t\tconst [camera, controls, invalidate] = [\n\t\t\tuntracked(this.camera),\n\t\t\tuntracked(this.controls),\n\t\t\tuntracked(this.invalidate),\n\t\t];\n\t\tconst { distance } = this.getSize();\n\n\t\tcamera.near = distance / 100;\n\t\tcamera.far = distance * 100;\n\t\tcamera.updateProjectionMatrix();\n\n\t\tif (controls) {\n\t\t\tcontrols.maxDistance = distance * 10;\n\t\t\tcontrols.update();\n\t\t}\n\n\t\tinvalidate();\n\n\t\treturn this;\n\t}\n}\n","import { Directive, Signal, afterNextRender, input, untracked } from '@angular/core';\nimport { injectNextBeforeRender, injectStore } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Vector3 } from 'three';\nimport { SimplexNoise } from 'three-stdlib';\n\ninterface ControlsProto {\n\tupdate(): void;\n\ttarget: Vector3;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\nexport interface NgtsCameraShakeOptions {\n\tintensity: number;\n\tdecay?: boolean;\n\tdecayRate: number;\n\tmaxYaw: number;\n\tmaxPitch: number;\n\tmaxRoll: number;\n\tyawFrequency: number;\n\tpitchFrequency: number;\n\trollFrequency: number;\n}\n\nconst defaultOptions: NgtsCameraShakeOptions = {\n\tintensity: 1,\n\tdecayRate: 0.65,\n\tmaxYaw: 0.1,\n\tmaxPitch: 0.1,\n\tmaxRoll: 0.1,\n\tyawFrequency: 0.1,\n\tpitchFrequency: 0.1,\n\trollFrequency: 0.1,\n};\n\n@Directive({ selector: 'ngts-camera-shake', standalone: true })\nexport class NgtsCameraShake {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate camera = this.store.select('camera');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\n\tprivate initialRotation = untracked(this.camera).rotation.clone();\n\tprivate intensityOption = untracked(this.options).intensity;\n\n\tget intensity() {\n\t\treturn this.intensityOption;\n\t}\n\n\tset intensity(val: number) {\n\t\tthis.intensityOption = Math.min(1, Math.max(0, val));\n\t}\n\n\tprivate yawNoise = new SimplexNoise();\n\tprivate pitchNoise = new SimplexNoise();\n\tprivate rollNoise = new SimplexNoise();\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst defaultControls = this.defaultControls();\n\t\t\t\tif (!defaultControls) return;\n\t\t\t\tconst camera = this.camera();\n\n\t\t\t\tconst callback = () => void (this.initialRotation = camera.rotation.clone());\n\t\t\t\tdefaultControls.addEventListener('change', callback);\n\t\t\t\tcallback();\n\t\t\t\treturn () => void defaultControls.removeEventListener('change', callback);\n\t\t\t});\n\t\t});\n\n\t\tinjectNextBeforeRender(({ delta, clock }) => {\n\t\t\tconst [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, camera] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.camera(),\n\t\t\t];\n\t\t\tconst shake = Math.pow(this.intensity, 2);\n\t\t\tconst yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n\t\t\tconst pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n\t\t\tconst roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n\t\t\tcamera.rotation.set(this.initialRotation.x + pitch, this.initialRotation.y + yaw, this.initialRotation.z + roll);\n\n\t\t\tif (decay && this.intensity > 0) {\n\t\t\t\tthis.intensity -= decayRate * delta;\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, NgtGroup, omit, pick, resolveRef } from 'angular-three';\nimport { injectHelper, NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { CausticsProjectionMaterial, createCausticsUpdate } from 'angular-three-soba/vanilla-exports';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tCameraHelper,\n\tColorRepresentation,\n\tCustomBlending,\n\tFloatType,\n\tGroup,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLineBasicMaterial,\n\tMesh,\n\tObject3D,\n\tOneFactor,\n\tOrthographicCamera,\n\tPlaneGeometry,\n\tScene,\n\tSrcAlphaFactor,\n\tUnsignedByteType,\n\tVector3,\n} from 'three';\n\nconst NORMAL_OPTIONS = {\n\tdepth: true,\n\tminFilter: LinearFilter,\n\tmagFilter: LinearFilter,\n\ttype: UnsignedByteType,\n};\n\nconst CAUSTIC_OPTIONS = {\n\tminFilter: LinearMipmapLinearFilter,\n\tmagFilter: LinearFilter,\n\ttype: FloatType,\n\tgenerateMipmaps: true,\n};\n\nexport interface NgtsCausticsOptions extends Partial<NgtGroup> {\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\tframes: number;\n\t/** Enables visual cues to help you stage your scene, default: false */\n\tdebug: boolean;\n\t/** Will display caustics only and skip the models, default: false */\n\tcausticsOnly: boolean;\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\tbackside: boolean;\n\t/** The IOR refraction index, default: 1.1 */\n\tior: number;\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\tbacksideIOR: number;\n\t/** The texel size, default: 0.3125 */\n\tworldRadius: number;\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\tintensity: number;\n\t/** Caustics color, default: white */\n\tcolor: ColorRepresentation;\n\t/** Buffer resolution, default: 2048 */\n\tresolution: number;\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\tlightSource: [x: number, y: number, z: number] | ElementRef<Object3D> | Object3D;\n}\n\nconst defaultOptions: NgtsCausticsOptions = {\n\tframes: 1,\n\tdebug: false,\n\tcausticsOnly: false,\n\tbackside: false,\n\tior: 1.1,\n\tbacksideIOR: 1.1,\n\tworldRadius: 0.3125,\n\tintensity: 0.05,\n\tcolor: 'white',\n\tresolution: 2024,\n\tlightSource: [5, 5, 5],\n};\n\n@Component({\n\tselector: 'ngts-caustics',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-scene #scene>\n\t\t\t\t<ngt-orthographic-camera #camera [up]=\"[0, 1, 0]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-scene>\n\n\t\t\t<ngt-mesh #plane [renderOrder]=\"2\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-caustics-projection-material\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[causticsTexture]=\"causticsTarget().texture\"\n\t\t\t\t\t[causticsTextureB]=\"causticsTargetB().texture\"\n\t\t\t\t\t[blending]=\"CustomBlending\"\n\t\t\t\t\t[blendSrc]=\"OneFactor\"\n\t\t\t\t\t[blendDst]=\"SrcAlphaFactor\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t/>\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-edges>\n\t\t\t\t\t\t<ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n\t\t\t\t\t</ngts-edges>\n\t\t\t\t}\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsEdges],\n})\nexport class NgtsCaustics {\n\tprotected readonly Math = Math;\n\tprotected readonly CustomBlending = CustomBlending;\n\tprotected readonly OneFactor = OneFactor;\n\tprotected readonly SrcAlphaFactor = SrcAlphaFactor;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'frames',\n\t\t'debug',\n\t\t'causticsOnly',\n\t\t'backside',\n\t\t'ior',\n\t\t'backsideIOR',\n\t\t'worldRadius',\n\t\t'intensity',\n\t\t'color',\n\t\t'resolution',\n\t\t'lightSource',\n\t]);\n\n\tdebug = pick(this.options, 'debug');\n\tcolor = pick(this.options, 'color');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tgroup = viewChild.required<ElementRef<Group>>('group');\n\tprivate scene = viewChild.required<ElementRef<Scene>>('scene');\n\tprivate camera = viewChild.required<ElementRef<OrthographicCamera>>('camera');\n\tprivate plane =\n\t\tviewChild.required<ElementRef<Mesh<PlaneGeometry, InstanceType<typeof CausticsProjectionMaterial>>>>('plane');\n\n\tprivate normalTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: NORMAL_OPTIONS,\n\t}));\n\n\t// Buffers for front and back faces\n\tprivate normalTarget = injectFBO(this.normalTargetParams);\n\tprivate normalTargetB = injectFBO(this.normalTargetParams);\n\n\tprivate causticsTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: CAUSTIC_OPTIONS,\n\t}));\n\tcausticsTarget = injectFBO(this.causticsTargetParams);\n\tcausticsTargetB = injectFBO(this.causticsTargetParams);\n\n\tprivate cameraHelper = injectHelper(\n\t\t() => (this.debug() ? this.camera().nativeElement : null),\n\t\t() => CameraHelper,\n\t);\n\n\tconstructor() {\n\t\textend({ CausticsProjectionMaterial, Group, Scene, Mesh, PlaneGeometry, LineBasicMaterial, OrthographicCamera });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tconst update = createCausticsUpdate(() => {\n\t\t\tconst { lightSource, ...rest } = this.options();\n\n\t\t\treturn {\n\t\t\t\tparams: Object.assign(rest, {\n\t\t\t\t\tlightSource: Array.isArray(lightSource) ? new Vector3(...lightSource) : resolveRef(lightSource),\n\t\t\t\t}),\n\t\t\t\tnormalTarget: this.normalTarget(),\n\t\t\t\tnormalTargetB: this.normalTargetB(),\n\t\t\t\tcausticsTarget: this.causticsTarget(),\n\t\t\t\tcausticsTargetB: this.causticsTargetB(),\n\t\t\t\tcamera: this.camera().nativeElement,\n\t\t\t\tscene: this.scene().nativeElement,\n\t\t\t\tgroup: this.group().nativeElement,\n\t\t\t\tplane: this.plane().nativeElement,\n\t\t\t\thelper: this.cameraHelper(),\n\t\t\t};\n\t\t});\n\n\t\tinjectBeforeRender(({ gl }) => update(gl));\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\t// track all changes\n\t\t\t\tthis.options();\n\t\t\t\tconst [group, scene, plane] = [\n\t\t\t\t\tthis.group().nativeElement,\n\t\t\t\t\tthis.scene().nativeElement,\n\t\t\t\t\tthis.plane().nativeElement,\n\t\t\t\t];\n\t\t\t\tconst groupLocalState = getLocalState(group);\n\t\t\t\tconst sceneLocalState = getLocalState(scene);\n\t\t\t\tconst planeLocalState = getLocalState(plane);\n\n\t\t\t\tif (!groupLocalState || !sceneLocalState || !planeLocalState) return;\n\n\t\t\t\tgroupLocalState.objects();\n\t\t\t\tsceneLocalState.objects();\n\t\t\t\tplaneLocalState.objects();\n\t\t\t\tplaneLocalState.nonObjects();\n\n\t\t\t\tgroup.updateWorldMatrix(false, true);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, NgtGroup, omit, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Object3D, Sphere, Vector3 } from 'three';\n\nexport interface NgtsCenterState {\n\t/** The next parent above <Center> */\n\tparent: Object3D;\n\t/** The outmost container group of the <Center> component */\n\tcontainer: Object3D;\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tboundingBox: Box3;\n\tboundingSphere: Sphere;\n\tcenter: Vector3;\n\tverticalAlignment: number;\n\thorizontalAlignment: number;\n\tdepthAlignment: number;\n}\n\nexport interface NgtsCenterOptions {\n\ttop?: boolean;\n\tright?: boolean;\n\tbottom?: boolean;\n\tleft?: boolean;\n\tfront?: boolean;\n\tback?: boolean;\n\t/** Disable all axes */\n\tdisable?: boolean;\n\t/** Disable x-axis centering */\n\tdisableX?: boolean;\n\t/** Disable y-axis centering */\n\tdisableY?: boolean;\n\t/** Disable z-axis centering */\n\tdisableZ?: boolean;\n\t/** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n\tprecise: boolean;\n\t/** Optional cacheKey to keep the component from recalculating on every render */\n\tcacheKey: any;\n}\n\nconst defaultOptions: Partial<NgtGroup> & NgtsCenterOptions = {\n\tprecise: true,\n\tcacheKey: 0,\n};\n\n@Component({\n\tselector: 'ngts-center',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #outer>\n\t\t\t\t<ngt-group #inner>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCenter {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tcentered = output<NgtsCenterState>();\n\n\tgroup = viewChild.required<ElementRef<Group>>('group');\n\touter = viewChild.required<ElementRef<Group>>('outer');\n\tinner = viewChild.required<ElementRef<Group>>('inner');\n\n\tcenterOptions = pick(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [\n\t\t\t\t\t{ precise, top, bottom, right, left, front, back, disable, disableZ, disableY, disableX },\n\t\t\t\t\tgroup,\n\t\t\t\t\touter,\n\t\t\t\t\tinner,\n\t\t\t\t] = [this.centerOptions(), this.group().nativeElement, this.outer().nativeElement, this.inner().nativeElement];\n\n\t\t\t\tconst localState = getLocalState(inner);\n\t\t\t\tconst children = localState?.objects();\n\t\t\t\tif (!children?.length) return;\n\n\t\t\t\touter.matrixWorld.identity();\n\t\t\t\tconst box3 = new Box3().setFromObject(inner, precise);\n\t\t\t\tconst center = new Vector3();\n\t\t\t\tconst sphere = new Sphere();\n\n\t\t\t\tconst width = box3.max.x - box3.min.x;\n\t\t\t\tconst height = box3.max.y - box3.min.y;\n\t\t\t\tconst depth = box3.max.z - box3.min.z;\n\n\t\t\t\tbox3.getCenter(center);\n\t\t\t\tbox3.getBoundingSphere(sphere);\n\n\t\t\t\tconst vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n\t\t\t\tconst hAlign = left ? -width / 2 : right ? width / 2 : 0;\n\t\t\t\tconst dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n\t\t\t\touter.position.set(\n\t\t\t\t\tdisable || disableX ? 0 : -center.x + hAlign,\n\t\t\t\t\tdisable || disableY ? 0 : -center.y + vAlign,\n\t\t\t\t\tdisable || disableZ ? 0 : -center.z + dAlign,\n\t\t\t\t);\n\n\t\t\t\tthis.centered.emit({\n\t\t\t\t\tparent: group.parent!,\n\t\t\t\t\tcontainer: group,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tdepth,\n\t\t\t\t\tboundingBox: box3,\n\t\t\t\t\tboundingSphere: sphere,\n\t\t\t\t\tcenter,\n\t\t\t\t\tverticalAlignment: vAlign,\n\t\t\t\t\thorizontalAlignment: hAlign,\n\t\t\t\t\tdepthAlignment: dAlign,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtGroup, extend, injectNextBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tColor,\n\tColorRepresentation,\n\tGroup,\n\tMaterial,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshDepthMaterial,\n\tOrthographicCamera,\n\tPlaneGeometry,\n\tShaderMaterial,\n\tTexture,\n\tWebGLRenderTarget,\n} from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nexport interface NgtsContactShadowsOptions extends Partial<Omit<NgtGroup, 'scale'>> {\n\topacity: number;\n\twidth: number;\n\theight: number;\n\tblur: number;\n\tnear: number;\n\tfar: number;\n\tsmooth: boolean;\n\tresolution: number;\n\tframes: number;\n\tscale: number | [x: number, y: number];\n\tcolor: ColorRepresentation;\n\tdepthWrite: boolean;\n}\n\nconst defaultOptions: NgtsContactShadowsOptions = {\n\tscale: 10,\n\tframes: Infinity,\n\topacity: 1,\n\twidth: 1,\n\theight: 1,\n\tblur: 1,\n\tnear: 0,\n\tfar: 10,\n\tresolution: 512,\n\tsmooth: true,\n\tcolor: '#000000',\n\tdepthWrite: false,\n};\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\n@Component({\n\tselector: 'ngts-contact-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #contactShadows [rotation]=\"[Math.PI / 2, 0, 0]\" [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh\n\t\t\t\t[scale]=\"[1, -1, 1]\"\n\t\t\t\t[rotation]=\"[-Math.PI / 2, 0, 0]\"\n\t\t\t\t[renderOrder]=\"renderOrder() ?? 0\"\n\t\t\t\t[geometry]=\"planeGeometry()\"\n\t\t\t>\n\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[opacity]=\"opacity()\"\n\t\t\t\t\t[depthWrite]=\"depthWrite()\"\n\t\t\t\t\t[map]=\"texture()\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" #shadowsCamera />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsContactShadows {\n\tMath = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'scale',\n\t\t'frames',\n\t\t'opacity',\n\t\t'width',\n\t\t'height',\n\t\t'blur',\n\t\t'near',\n\t\t'far',\n\t\t'resolution',\n\t\t'smooth',\n\t\t'color',\n\t\t'depthWrite',\n\t\t'renderOrder',\n\t]);\n\n\tcontactShadowsRef = viewChild.required<ElementRef<Group>>('contactShadows');\n\tshadowsCameraRef = viewChild<ElementRef<OrthographicCamera>>('shadowsCamera');\n\n\tprivate store = injectStore();\n\tprivate scene = this.store.select('scene');\n\tprivate gl = this.store.select('gl');\n\n\tprivate scaledWidth = computed(() => {\n\t\tconst { width, scale } = this.options();\n\t\treturn width * (Array.isArray(scale) ? scale[0] : scale);\n\t});\n\tprivate scaledHeight = computed(() => {\n\t\tconst { height, scale } = this.options();\n\t\treturn height * (Array.isArray(scale) ? scale[1] : scale);\n\t});\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate color = pick(this.options, 'color');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\n\tprivate shadowsOptions = computed(() => {\n\t\tconst [width, height, resolution, color] = [\n\t\t\tthis.scaledWidth(),\n\t\t\tthis.scaledHeight(),\n\t\t\tthis.resolution(),\n\t\t\tthis.color(),\n\t\t];\n\t\tconst renderTarget = new WebGLRenderTarget(resolution, resolution);\n\t\tconst renderTargetBlur = new WebGLRenderTarget(resolution, resolution);\n\t\trenderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n\n\t\tconst planeGeometry = new PlaneGeometry(width, height).rotateX(Math.PI / 2);\n\t\tconst blurPlane = new Mesh(planeGeometry);\n\t\tconst depthMaterial = new MeshDepthMaterial();\n\t\tdepthMaterial.depthTest = depthMaterial.depthWrite = false;\n\t\tdepthMaterial.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms = { ...shader.uniforms, ucolor: { value: new Color(color) } };\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`void main() {`, //\n\t\t\t\t`uniform vec3 ucolor;\n void main() {\n `,\n\t\t\t);\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n\t\t\t\t// Colorize the shadow, multiply by the falloff so that the center can remain darker\n\t\t\t\t'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );',\n\t\t\t);\n\t\t};\n\n\t\tconst horizontalBlurMaterial = new ShaderMaterial(HorizontalBlurShader);\n\t\tconst verticalBlurMaterial = new ShaderMaterial(VerticalBlurShader);\n\t\tverticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n\t\treturn {\n\t\t\trenderTarget,\n\t\t\tplaneGeometry,\n\t\t\tdepthMaterial,\n\t\t\tblurPlane,\n\t\t\thorizontalBlurMaterial,\n\t\t\tverticalBlurMaterial,\n\t\t\trenderTargetBlur,\n\t\t};\n\t});\n\n\trenderOrder = pick(this.options, 'renderOrder');\n\topacity = pick(this.options, 'opacity');\n\tdepthWrite = pick(this.options, 'depthWrite');\n\tplaneGeometry = computed(() => this.shadowsOptions().planeGeometry);\n\ttexture = computed(() => this.shadowsOptions().renderTarget.texture);\n\tcameraArgs = computed(() => {\n\t\tconst [width, height, near, far] = [this.scaledWidth(), this.scaledHeight(), this.near(), this.far()];\n\t\treturn [-width / 2, width / 2, height / 2, -height / 2, near, far];\n\t});\n\n\tprivate blurShadows(blur: number) {\n\t\tconst { renderTarget, renderTargetBlur, blurPlane, horizontalBlurMaterial, verticalBlurMaterial } =\n\t\t\tthis.shadowsOptions();\n\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\tif (!shadowsCamera) return;\n\n\t\tblurPlane.visible = true;\n\t\tblurPlane.material = horizontalBlurMaterial;\n\t\thorizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n\t\thorizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\t\tthis.gl().setRenderTarget(renderTargetBlur);\n\t\tthis.gl().render(blurPlane, shadowsCamera);\n\n\t\tblurPlane.material = verticalBlurMaterial;\n\t\tverticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n\t\tverticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\t\tthis.gl().setRenderTarget(renderTarget);\n\t\tthis.gl().render(blurPlane, shadowsCamera);\n\t\tblurPlane.visible = false;\n\t}\n\n\tconstructor() {\n\t\tlet count = 0;\n\t\tlet initialBackground: Color | Texture | null;\n\t\tlet initialOverrideMaterial: Material | null;\n\n\t\tinjectNextBeforeRender(() => {\n\t\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\t\tconst [{ frames, blur, smooth }, gl, scene, contactShadows, { depthMaterial, renderTarget }] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gl(),\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.contactShadowsRef(),\n\t\t\t\tthis.shadowsOptions(),\n\t\t\t];\n\t\t\tif (shadowsCamera && (frames === Infinity || count < frames)) {\n\t\t\t\tcount++;\n\t\t\t\tinitialBackground = scene.background;\n\t\t\t\tinitialOverrideMaterial = scene.overrideMaterial;\n\t\t\t\tcontactShadows.nativeElement.visible = false;\n\t\t\t\tscene.background = null;\n\t\t\t\tscene.overrideMaterial = depthMaterial;\n\t\t\t\tgl.setRenderTarget(renderTarget);\n\t\t\t\tgl.render(scene, shadowsCamera);\n\t\t\t\tthis.blurShadows(blur);\n\t\t\t\tif (smooth) this.blurShadows(blur * 0.4);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tcontactShadows.nativeElement.visible = true;\n\t\t\t\tscene.overrideMaterial = initialOverrideMaterial;\n\t\t\t\tscene.background = initialBackground;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tEffectRef,\n\tElementRef,\n\tInjector,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { GainMapLoader, HDRJPGLoader } from '@monogrid/gainmap-js';\nimport {\n\tNgtArgs,\n\tNgtPortal,\n\tNgtPortalContent,\n\tapplyProps,\n\textend,\n\tinjectLoader,\n\tinjectNextBeforeRender,\n\tinjectStore,\n\tis,\n\tpick,\n\tprepare,\n} from 'angular-three';\nimport { LinearEncoding, TextureEncoding, sRGBEncoding } from 'angular-three-soba/misc';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tCubeCamera,\n\tCubeReflectionMapping,\n\tCubeTexture,\n\tCubeTextureLoader,\n\tEquirectangularReflectionMapping,\n\tEuler,\n\tHalfFloatType,\n\tLoader,\n\tScene,\n\tTexture,\n\tWebGLCubeRenderTarget,\n} from 'three';\nimport { EXRLoader, GroundProjectedEnv, RGBELoader } from 'three-stdlib';\n\nconst CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';\n\nexport const ENVIRONMENT_PRESETS = {\n\tapartment: 'lebombo_1k.hdr',\n\tcity: 'potsdamer_platz_1k.hdr',\n\tdawn: 'kiara_1_dawn_1k.hdr',\n\tforest: 'forest_slope_1k.hdr',\n\tlobby: 'st_fagans_interior_1k.hdr',\n\tnight: 'dikhololo_night_1k.hdr',\n\tpark: 'rooitou_park_1k.hdr',\n\tstudio: 'studio_small_03_1k.hdr',\n\tsunset: 'venice_sunset_1k.hdr',\n\twarehouse: 'empty_warehouse_01_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresets = keyof typeof ENVIRONMENT_PRESETS;\n\nfunction resolveScene(scene: Scene | ElementRef<Scene>) {\n\treturn is.ref(scene) ? scene.nativeElement : scene;\n}\n\nfunction setEnvProps(\n\tbackground: boolean | 'only',\n\tscene: Scene | ElementRef<Scene> | undefined,\n\tdefaultScene: Scene,\n\ttexture: Texture,\n\tsceneProps: Partial<NgtsEnvironmentOptions> = {},\n) {\n\tsceneProps.backgroundBlurriness ??= sceneProps.blur ?? 0;\n\tsceneProps.backgroundIntensity ??= 1;\n\t// @ts-expect-error - it's ok, we're sending through applyProps\n\tsceneProps.backgroundRotation ??= [0, 0, 0];\n\tsceneProps.environmentIntensity ??= 1;\n\t// @ts-expect-error - it's ok, we're sending through applyProps\n\tsceneProps.environmentRotation ??= [0, 0, 0];\n\n\tconst target = resolveScene(scene || defaultScene);\n\tconst oldbg = target.background;\n\tconst oldenv = target.environment;\n\tconst oldSceneProps = {\n\t\tbackgroundBlurriness: target.backgroundBlurriness,\n\t\tbackgroundIntensity: target.backgroundIntensity,\n\t\tbackgroundRotation: target.backgroundRotation?.clone?.() ?? [0, 0, 0],\n\t\tenvironmentIntensity: target.environmentIntensity,\n\t\tenvironmentRotation: target.environmentRotation?.clone?.() ?? [0, 0, 0],\n\t};\n\n\tif (background !== 'only') target.environment = texture;\n\tif (background) target.background = texture;\n\tapplyProps(target, sceneProps);\n\n\treturn () => {\n\t\tif (background !== 'only') target.environment = oldenv;\n\t\tif (background) target.background = oldbg;\n\t\tapplyProps(target, oldSceneProps);\n\t};\n}\n\nexport interface NgtsInjectEnvironmentOptions {\n\tfiles: string | string[];\n\tpath: string;\n\tpreset?: NgtsEnvironmentPresets;\n\textensions?: (loader: Loader) => void;\n\tencoding?: TextureEncoding;\n}\n\nexport function injectEnvironment(\n\toptions: () => Partial<NgtsInjectEnvironmentOptions> = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectEnvironment, injector, () => {\n\t\tconst adjustedOptions = computed(() => {\n\t\t\tlet { files, path, preset, extensions, encoding } = options();\n\n\t\t\tif (files == null) {\n\t\t\t\tfiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n\t\t\t}\n\n\t\t\tif (path == null) {\n\t\t\t\tpath = '';\n\t\t\t}\n\n\t\t\tif (preset) {\n\t\t\t\tif (!(preset in ENVIRONMENT_PRESETS))\n\t\t\t\t\tthrow new Error('Preset must be one of: ' + Object.keys(ENVIRONMENT_PRESETS).join(', '));\n\t\t\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\t\t\tpath = CUBEMAP_ROOT;\n\t\t\t}\n\n\t\t\treturn { files, preset, encoding, path, extensions };\n\t\t});\n\n\t\tconst resultOptions = computed(() => {\n\t\t\tconst { files } = adjustedOptions();\n\t\t\tconst multiFile = Array.isArray(files);\n\n\t\t\tconst isCubeMap = multiFile && files.length === 6;\n\t\t\tconst isGainmain = multiFile && files.length === 3 && files.some((file) => file.endsWith('json'));\n\t\t\tconst firstEntry = multiFile ? files[0] : files;\n\n\t\t\tconst extension = isCubeMap\n\t\t\t\t? 'cube'\n\t\t\t\t: isGainmain\n\t\t\t\t\t? 'webp'\n\t\t\t\t\t: firstEntry.startsWith('data:application/exr')\n\t\t\t\t\t\t? 'exr'\n\t\t\t\t\t\t: firstEntry.startsWith('data:application/hdr')\n\t\t\t\t\t\t\t? 'hdr'\n\t\t\t\t\t\t\t: firstEntry.startsWith('data:image/jpeg')\n\t\t\t\t\t\t\t\t? 'jpg'\n\t\t\t\t\t\t\t\t: firstEntry.split('.').pop()?.split('?')?.shift()?.toLowerCase();\n\t\t\treturn { multiFile, extension, isCubeMap };\n\t\t});\n\n\t\tconst loader = computed(() => {\n\t\t\tconst { extension } = resultOptions();\n\t\t\tconst loader =\n\t\t\t\textension === 'cube'\n\t\t\t\t\t? CubeTextureLoader\n\t\t\t\t\t: extension === 'hdr'\n\t\t\t\t\t\t? RGBELoader\n\t\t\t\t\t\t: extension === 'exr'\n\t\t\t\t\t\t\t? EXRLoader\n\t\t\t\t\t\t\t: extension === 'jpg' || extension === 'jpeg'\n\t\t\t\t\t\t\t\t? (HDRJPGLoader as unknown as typeof Loader)\n\t\t\t\t\t\t\t\t: extension === 'webp'\n\t\t\t\t\t\t\t\t\t? (GainMapLoader as unknown as typeof Loader)\n\t\t\t\t\t\t\t\t\t: null;\n\n\t\t\tif (!loader) {\n\t\t\t\tthrow new Error('injectEnvironment: Unrecognized file extension: ' + extension);\n\t\t\t}\n\n\t\t\treturn loader as typeof Loader;\n\t\t});\n\n\t\tconst assertedInjector = inject(Injector);\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\n\t\tconst texture = signal<Texture | CubeTexture | null>(null);\n\t\tafterNextRender(() => {\n\t\t\tconst result = injectLoader(\n\t\t\t\tloader,\n\t\t\t\t// @ts-expect-error\n\t\t\t\t() => {\n\t\t\t\t\tconst { files } = adjustedOptions();\n\t\t\t\t\treturn Array.isArray(files) ? [files] : files;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tinjector: assertedInjector,\n\t\t\t\t\textensions: (loader) => {\n\t\t\t\t\t\tconst { extensions, path } = adjustedOptions();\n\t\t\t\t\t\tconst { extension } = resultOptions();\n\t\t\t\t\t\tif (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {\n\t\t\t\t\t\t\t// @ts-expect-error - Gainmap requires a renderer\n\t\t\t\t\t\t\tloader.setRenderer(gl());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tloader.setPath?.(path);\n\t\t\t\t\t\tif (extensions) extensions(loader);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\t//\n\t\t\tautoEffect(() => {\n\t\t\t\tconst loaderResult = result();\n\t\t\t\tif (!loaderResult) return;\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tconst { multiFile, extension, isCubeMap } = resultOptions();\n\t\t\t\t\tconst { encoding } = adjustedOptions();\n\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tlet textureResult = (multiFile ? loaderResult[0] : loaderResult) as Texture | CubeTexture;\n\n\t\t\t\t\tif (extension === 'jpg' || extension === 'jpeg' || extension === 'webp') {\n\t\t\t\t\t\ttextureResult = (textureResult as any).renderTarget?.texture;\n\t\t\t\t\t}\n\n\t\t\t\t\ttextureResult.mapping = isCubeMap ? CubeReflectionMapping : EquirectangularReflectionMapping;\n\n\t\t\t\t\tif ('colorSpace' in textureResult)\n\t\t\t\t\t\t(textureResult as any).colorSpace = encoding ?? isCubeMap ? 'srgb' : 'srgb-linear';\n\t\t\t\t\telse (textureResult as any).encoding = encoding ?? isCubeMap ? sRGBEncoding : LinearEncoding;\n\n\t\t\t\t\ttexture.set(textureResult);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn texture.asReadonly();\n\t});\n}\n\nexport interface NgtsEnvironmentOptions extends Partial<NgtsInjectEnvironmentOptions> {\n\tframes?: number;\n\tnear?: number;\n\tfar?: number;\n\tresolution?: number;\n\tbackground?: boolean | 'only';\n\n\t/** deprecated, use backgroundBlurriness */\n\tblur?: number;\n\tbackgroundBlurriness?: number;\n\tbackgroundIntensity?: number;\n\tbackgroundRotation?: Euler;\n\tenvironmentIntensity?: number;\n\tenvironmentRotation?: Euler;\n\n\tmap?: Texture;\n\tpreset?: NgtsEnvironmentPresets;\n\tscene?: Scene | ElementRef<Scene>;\n\tground?: boolean | { radius?: number; height?: number; scale?: number };\n}\n\nconst defaultBackground: NgtsEnvironmentOptions = {\n\tbackground: false,\n};\n\n@Directive({ standalone: true, selector: 'ngts-environment-map' })\nexport class NgtsEnvironmentMap {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tautoEffect = injectAutoEffect();\n\tstore = injectStore();\n\tdefaultScene = this.store.select('scene');\n\n\tenvConfig = computed(() => {\n\t\tconst {\n\t\t\tbackground = false,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t} = this.options();\n\n\t\treturn {\n\t\t\tbackground,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t};\n\t});\n\n\tmap = pick(this.options, 'map');\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst map = this.map();\n\t\t\t\tif (!map) return;\n\t\t\t\tconst { background = false, scene, ...config } = this.envConfig();\n\t\t\t\tconst cleanup = setEnvProps(background, scene, this.defaultScene(), map, config);\n\t\t\t\tthis.envSet.emit();\n\t\t\t\treturn () => cleanup();\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Directive({ standalone: true, selector: 'ngts-environment-cube' })\nexport class NgtsEnvironmentCube {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tautoEffect = injectAutoEffect();\n\tstore = injectStore();\n\tdefaultScene = this.store.select('scene');\n\n\tenvConfig = computed(() => {\n\t\tconst {\n\t\t\tbackground = false,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t} = this.options();\n\n\t\treturn {\n\t\t\tbackground,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t};\n\t});\n\n\tenvironmentOptions = computed(() => {\n\t\tconst { encoding, preset, files, path, extensions } = this.options();\n\t\treturn { encoding, preset, files, path, extensions };\n\t});\n\ttexture = injectEnvironment(this.environmentOptions);\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst texture = this.texture();\n\t\t\t\tif (!texture) return;\n\t\t\t\tconst { background = false, scene, ...config } = this.envConfig();\n\t\t\t\tconst cleanup = setEnvProps(background, scene, this.defaultScene(), texture, config);\n\t\t\t\tthis.envSet.emit();\n\t\t\t\treturn () => cleanup();\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-portal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene\">\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ injector, container }\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-cube-camera #cubeCamera *args=\"cameraArgs()\" />\n\n\t\t\t\t@if (files() || preset()) {\n\t\t\t\t\t<ngts-environment-cube [options]=\"envCubeOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t} @else if (map()) {\n\t\t\t\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t}\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtArgs, NgtPortal, NgtPortalContent, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentPortal {\n\tprivate defaultOptions: NgtsEnvironmentOptions = {\n\t\tnear: 1,\n\t\tfar: 1000,\n\t\tresolution: 256,\n\t\tframes: 1,\n\t\tbackground: false,\n\t};\n\toptions = input(this.defaultOptions, { transform: mergeInputs(this.defaultOptions) });\n\tcontent = input.required<TemplateRef<unknown>>();\n\tenvSet = output<void>();\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\tprivate defaultScene = this.store.select('scene');\n\tprivate gl = this.store.select('gl');\n\n\tcamera = viewChild<ElementRef<CubeCamera>>('cubeCamera');\n\n\tmap = pick(this.options, 'map');\n\tfiles = pick(this.options, 'files');\n\tpreset = pick(this.options, 'preset');\n\tprivate extensions = pick(this.options, 'extensions');\n\tprivate path = pick(this.options, 'path');\n\n\tenvMapOptions = computed(() => ({ background: true, map: this.map(), extensions: this.extensions() }));\n\tenvCubeOptions = computed(() => ({\n\t\tbackground: true,\n\t\tfiles: this.files(),\n\t\tpreset: this.preset(),\n\t\textensions: this.extensions(),\n\t\tpath: this.path(),\n\t}));\n\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = computed(() => {\n\t\tconst fbo = new WebGLCubeRenderTarget(this.resolution());\n\t\tfbo.texture.type = HalfFloatType;\n\t\treturn fbo;\n\t});\n\n\tcameraArgs = computed(() => [this.near(), this.far(), this.fbo()]);\n\n\tvirtualScene = prepare(new Scene());\n\n\tprivate setEnvEffectRef?: EffectRef;\n\n\tconstructor() {\n\t\textend({ CubeCamera });\n\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tconst [files, preset, map] = [this.files(), this.preset(), this.map()];\n\t\t\t\t// NOTE: when there's none of this, we don't render cube or map so we need to setEnv here\n\t\t\t\tif (!!files || !!preset || !!map) return;\n\t\t\t\treturn this.setPortalEnv();\n\t\t\t});\n\t\t});\n\n\t\tlet count = 1;\n\t\tinjectNextBeforeRender(() => {\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || (frames != null && count < frames)) {\n\t\t\t\tconst camera = this.camera()?.nativeElement;\n\t\t\t\tif (camera) {\n\t\t\t\t\tcamera.update(this.gl(), this.virtualScene);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t// NOTE: we use onEnvSet here to ensure that EnvironmentCube or EnvironmentMap sets the env before the portal\n\tonEnvSet() {\n\t\tif (this.setEnvEffectRef) this.setEnvEffectRef.destroy();\n\t\tthis.setEnvEffectRef = this.autoEffect(\n\t\t\t() => {\n\t\t\t\treturn this.setPortalEnv();\n\t\t\t},\n\t\t\t{ manualCleanup: true },\n\t\t);\n\t}\n\n\tprivate setPortalEnv() {\n\t\tconst camera = this.camera();\n\t\tif (!camera?.nativeElement) return;\n\n\t\tconst [\n\t\t\t{\n\t\t\t\tframes,\n\t\t\t\tbackground = false,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t},\n\t\t\tgl,\n\t\t\tfbo,\n\t\t\tdefaultScene,\n\t\t] = [this.options(), this.gl(), this.fbo(), this.defaultScene()];\n\n\t\tif (frames === 1) camera.nativeElement.update(gl, this.virtualScene);\n\t\tconst cleanup = setEnvProps(background, scene, defaultScene, fbo.texture, {\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t});\n\t\tthis.envSet.emit();\n\t\treturn cleanup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-ground',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"envSet.emit()\" />\n\t\t<ngt-ground-projected-env *args=\"args()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n\t`,\n\timports: [NgtsEnvironmentMap, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentGround {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tenvSet = output<void>();\n\n\tprivate defaultTexture = injectEnvironment(this.options);\n\tprivate texture = computed(() => this.options().map || this.defaultTexture());\n\n\targs = computed(() => [this.texture()]);\n\theight = computed(() => (this.options().ground as any)?.height);\n\tradius = computed(() => (this.options().ground as any)?.radius);\n\tscale = computed(() => (this.options().ground as any)?.scale ?? 1000);\n\n\tenvMapOptions = computed(() => {\n\t\tconst { map: _, ...options } = this.options();\n\t\treturn Object.assign(options, { map: this.texture() }) as NgtsEnvironmentOptions;\n\t});\n\n\tconstructor() {\n\t\textend({ GroundProjectedEnv });\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (options().ground) {\n\t\t\t<ngts-environment-ground [options]=\"options()\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (options().map) {\n\t\t\t<ngts-environment-map [options]=\"options()\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (content()) {\n\t\t\t<ngts-environment-portal [options]=\"options()\" [content]=\"$any(content())\" (envSet)=\"envSet.emit()\" />\n\t\t} @else {\n\t\t\t<ngts-environment-cube [options]=\"options()\" (envSet)=\"envSet.emit()\" />\n\t\t}\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtsEnvironmentPortal, NgtsEnvironmentGround],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironment {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tcontent = contentChild(TemplateRef);\n\tenvSet = output<void>();\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtGroup, extend, injectNextBeforeRender, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, MathUtils } from 'three';\n\nextend({ Group });\n\nexport interface NgtsFloatOptions extends Partial<NgtGroup> {\n\tenabled: boolean;\n\tspeed: number;\n\trotationIntensity: number;\n\tfloatIntensity: number;\n\tfloatingRange: [number?, number?];\n}\n\nconst defaultOptions: NgtsFloatOptions = {\n\tenabled: true,\n\tspeed: 1,\n\trotationIntensity: 1,\n\tfloatIntensity: 1,\n\tfloatingRange: [-0.1, 0.1],\n};\n\n@Component({\n\tselector: 'ngts-float',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #float [matrixAutoUpdate]=\"false\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsFloat {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['enabled', 'speed', 'rotationIntensity', 'floatIntensity', 'floatingRange']);\n\n\tfloatRef = viewChild.required<ElementRef<Group>>('float');\n\n\tconstructor() {\n\t\tconst offset = Math.random() * 10000;\n\t\tinjectNextBeforeRender(({ clock }) => {\n\t\t\tconst [{ enabled, speed, rotationIntensity, floatingRange, floatIntensity }] = [this.options()];\n\t\t\tif (!enabled || speed === 0) return;\n\n\t\t\tconst container = this.floatRef().nativeElement;\n\n\t\t\tconst offsetTime = offset + clock.getElapsedTime();\n\t\t\tcontainer.rotation.x = (Math.cos((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.y = (Math.sin((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.z = (Math.sin((offsetTime / 4) * speed) / 20) * rotationIntensity;\n\n\t\t\tlet yPosition = Math.sin((offsetTime / 4) * speed) / 10;\n\t\t\tyPosition = MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n\t\t\tcontainer.position.y = yPosition * floatIntensity;\n\t\t\tcontainer.updateMatrix();\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, NgtArgs, NgtMesh, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, RingGeometry, Texture } from 'three';\n\nexport interface NgtsLightformerOptions {\n\tmap?: Texture;\n\ttoneMapped: boolean;\n\tcolor: string;\n\tform: 'circle' | 'ring' | 'rect';\n\tscale: number | [number, number, number] | [number, number];\n\tintensity: number;\n\ttarget?: NgtVector3;\n}\n\nconst defaultOptions: Partial<Omit<NgtMesh, 'scale'>> & NgtsLightformerOptions = {\n\ttoneMapped: false,\n\tcolor: 'white',\n\tform: 'rect',\n\tscale: 1,\n\tintensity: 1,\n};\n\n@Component({\n\tselector: 'ngts-lightformer',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"fixedScale()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content select=\"[lightformer-geometry]\">\n\t\t\t\t@switch (form()) {\n\t\t\t\t\t@case ('circle') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('ring') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0.5, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('rect') {\n\t\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</ng-content>\n\t\t\t<ng-content select=\"[lightformer-material]\">\n\t\t\t\t<ngt-mesh-basic-material #defaultMaterial [toneMapped]=\"toneMapped()\" [map]=\"map()\" [side]=\"side\" />\n\t\t\t</ng-content>\n\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLightformer {\n\tside = DoubleSide;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['map', 'toneMapped', 'color', 'form', 'scale', 'intensity', 'target']);\n\n\tprivate intensity = pick(this.options, 'intensity');\n\tprivate color = pick(this.options, 'color');\n\tprivate target = vector3(this.options, 'target', true);\n\tprivate scale = pick(this.options, 'scale');\n\tfixedScale = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;\n\t});\n\tform = pick(this.options, 'form');\n\ttoneMapped = pick(this.options, 'toneMapped');\n\tmap = pick(this.options, 'map');\n\n\tmesh = viewChild.required<ElementRef<Mesh>>('mesh');\n\tdefaultMaterial = viewChild<ElementRef<MeshBasicMaterial>>('defaultMaterial');\n\n\tconstructor() {\n\t\textend({ Mesh, MeshBasicMaterial, RingGeometry, PlaneGeometry });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst material = this.defaultMaterial()?.nativeElement;\n\t\t\t\tif (material) {\n\t\t\t\t\tapplyProps(material, { color: this.color() });\n\t\t\t\t\tmaterial.color.multiplyScalar(this.intensity());\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst target = this.target();\n\t\t\t\tif (!target) return;\n\t\t\t\tconst mesh = this.mesh().nativeElement;\n\t\t\t\tmesh.lookAt(target);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Texture } from 'three';\n\nfunction getFormatString(format: number) {\n\tswitch (format) {\n\t\tcase 64:\n\t\t\treturn '-64px';\n\t\tcase 128:\n\t\t\treturn '-128px';\n\t\tcase 256:\n\t\t\treturn '-256px';\n\t\tcase 512:\n\t\t\treturn '-512px';\n\t\tdefault:\n\t\t\treturn '';\n\t}\n}\n\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function injectMatcapTexture(\n\tid: () => number | string = () => 0,\n\t{\n\t\tformat = () => 1024,\n\t\tonLoad,\n\t\tinjector,\n\t}: { format?: () => number; onLoad?: (texture: Texture[]) => void; injector?: Injector } = {},\n) {\n\treturn assertInjector(injectMatcapTexture, injector, () => {\n\t\tconst matcapList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tmatcapList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_MATCAP = computed(() => matcapList()[0]);\n\t\tconst numTot = computed(() => Object.keys(matcapList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn matcapList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst fileName = computed(() => `${fileHash() || DEFAULT_MATCAP()}${getFormatString(format())}.png`);\n\t\tconst url = computed(() => `${MATCAP_ROOT}/${format()}/${fileName()}`);\n\n\t\tconst matcapTexture = injectTexture(url, { onLoad });\n\n\t\treturn { url, texture: matcapTexture, numTot };\n\t});\n}\n\nexport interface NgtsMatcapTextureOptions {\n\tid?: number | string;\n\tformat?: number;\n}\n\n@Directive({ selector: 'ng-template[matcapTexture]', standalone: true })\nexport class NgtsMatcapTexture {\n\tmatcapTexture = input<NgtsMatcapTextureOptions>();\n\tmatcapTextureLoaded = output<Texture[]>();\n\n\tprivate injector = inject(Injector);\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.matcapTexture()?.id ?? 0);\n\tprivate format = computed(() => this.matcapTexture()?.format ?? 1024);\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<Texture | null> }>;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tconst { texture } = injectMatcapTexture(this.id, {\n\t\t\t\tformat: this.format,\n\t\t\t\tonLoad: this.matcapTextureLoaded.emit.bind(this.matcapTextureLoaded),\n\t\t\t\tinjector: this.injector,\n\t\t\t});\n\n\t\t\tuntracked(() => {\n\t\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\t\tthis.ref.detectChanges();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(_: NgtsMatcapTexture, ctx: unknown): ctx is { $implicit: Signal<Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { RepeatWrapping, Texture, Vector2 } from 'three';\n\nconst NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';\n\ninterface NgtsNormalTextureSettings {\n\trepeat?: number[];\n\tanisotropy?: number;\n\toffset?: number[];\n}\n\nexport function injectNormalTexture(\n\tid: () => string | number = () => 0,\n\t{\n\t\tsettings = () => ({}),\n\t\tonLoad,\n\t\tinjector,\n\t}: { settings?: () => NgtsNormalTextureSettings; onLoad?: (texture: Texture[]) => void; injector?: Injector },\n) {\n\treturn assertInjector(injectNormalTexture, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tconst normalList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tnormalList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_NORMAL = computed(() => normalList()[0]);\n\t\tconst numTot = computed(() => Object.keys(normalList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn normalList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst imageName = computed(() => fileHash() || DEFAULT_NORMAL());\n\t\tconst url = computed(() => `${NORMAL_ROOT}/normals/${imageName()}`);\n\n\t\tconst normalTexture = injectTexture(url, { onLoad });\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst texture = normalTexture();\n\t\t\t\tif (!texture) return;\n\n\t\t\t\tconst { anisotropy = 1, repeat = [1, 1], offset = [0, 0] } = settings();\n\t\t\t\ttexture.wrapS = texture.wrapT = RepeatWrapping;\n\t\t\t\ttexture.repeat = new Vector2(repeat[0], repeat[1]);\n\t\t\t\ttexture.offset = new Vector2(offset[0], offset[1]);\n\t\t\t\ttexture.anisotropy = anisotropy;\n\t\t\t});\n\t\t});\n\n\t\treturn { url, texture: normalTexture, numTot };\n\t});\n}\n\nexport interface NgtsNormalTextureOptions extends NgtsNormalTextureSettings {\n\tid?: number | string;\n}\n\n@Directive({ selector: 'ng-template[normalTexture]', standalone: true })\nexport class NgtsNormalTexture {\n\tnormalTexture = input<NgtsNormalTextureOptions>();\n\tnormalTextureLoaded = output<Texture[]>();\n\n\tprivate injector = inject(Injector);\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.normalTexture()?.id ?? 0);\n\tprivate settings = computed(() => {\n\t\tconst { id: _, ...settings } = this.normalTexture() || {};\n\t\treturn settings;\n\t});\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<Texture | null> }>;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tconst { texture } = injectNormalTexture(this.id, {\n\t\t\t\tsettings: this.settings,\n\t\t\t\tonLoad: this.normalTextureLoaded.emit.bind(this.normalTextureLoaded),\n\t\t\t\tinjector: this.injector,\n\t\t\t});\n\n\t\t\tuntracked(() => {\n\t\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\t\tthis.ref.detectChanges();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(_: NgtsNormalTexture, ctx: unknown): ctx is { $implicit: Signal<Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtGroup, extend, omit, pick } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DirectionalLight, Group, MathUtils, Object3D, OrthographicCamera, Vector2, Vector3 } from 'three';\nimport { NgtsAccumulativeShadows } from './accumulative-shadows';\n\nexport interface NgtsRandomizedLightsOptions extends Partial<NgtGroup> {\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\tframes: number;\n\t/** Light position, [0, 0, 0] */\n\tposition: [x: number, y: number, z: number];\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\tradius: number;\n\t/** Amount of lights, 8 */\n\tamount: number;\n\t/** Light intensity, 1 */\n\tintensity: number;\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\tambient: number;\n\t/** If the lights cast shadows, this is true by default */\n\tcastShadow: boolean;\n\t/** Default shadow bias, 0 */\n\tbias: number;\n\t/** Default map size, 512 */\n\tmapSize: number;\n\t/** Default size of the shadow camera, 10 */\n\tsize: number;\n\t/** Default shadow camera near, 0.5 */\n\tnear: number;\n\t/** Default shadow camera far, 500 */\n\tfar: number;\n}\n\nconst defaultOptions: NgtsRandomizedLightsOptions = {\n\tcastShadow: true,\n\tbias: 0.001,\n\tmapSize: 512,\n\tsize: 5,\n\tnear: 0.5,\n\tfar: 500,\n\tframes: 1,\n\tposition: [0, 0, 0],\n\tradius: 1,\n\tamount: 8,\n\tintensity: getVersion() >= 155 ? Math.PI : 1,\n\tambient: 0.5,\n};\n\n@Component({\n\tselector: 'ngts-randomized-lights',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #lights [parameters]=\"parameters()\">\n\t\t\t@for (i of count(); track $index) {\n\t\t\t\t<ngt-directional-light [castShadow]=\"castShadow()\" [intensity]=\"intensity() / amount()\">\n\t\t\t\t\t<ngt-value [rawValue]=\"bias()\" attach=\"shadow.bias\" />\n\t\t\t\t\t<ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n\t\t\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n\t\t\t\t</ngt-directional-light>\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRandomizedLights {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, Object.keys(defaultOptions) as Array<keyof NgtsRandomizedLightsOptions>);\n\n\tlights = viewChild.required<ElementRef<Group>>('lights');\n\n\tprivate accumulativeShadows = inject(NgtsAccumulativeShadows);\n\n\tcastShadow = pick(this.options, 'castShadow');\n\tbias = pick(this.options, 'bias');\n\tintensity = pick(this.options, 'intensity');\n\tamount = pick(this.options, 'amount');\n\n\tprivate mapSize = pick(this.options, 'mapSize');\n\tshadowMapSize = computed(() => [this.mapSize(), this.mapSize()]);\n\n\tprivate position = pick(this.options, 'position');\n\tlength = computed(() => new Vector3(...this.position()).length());\n\n\tcount = computed(() => Array.from({ length: this.amount() }, (_, index) => index));\n\n\tprivate size = pick(this.options, 'size');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tcameraArgs = computed(() => [-this.size(), this.size(), this.size(), -this.size(), this.near(), this.far()]);\n\n\tconstructor() {\n\t\textend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst lights = this.lights().nativeElement;\n\t\t\t\tthis.accumulativeShadows.lightsMap.set(lights.uuid, this.update.bind(this));\n\t\t\t\treturn () => this.accumulativeShadows.lightsMap.delete(lights.uuid);\n\t\t\t});\n\t\t});\n\t}\n\n\tupdate() {\n\t\tlet light: Object3D | undefined;\n\t\tconst lights = this.lights().nativeElement;\n\t\tif (lights) {\n\t\t\tconst [{ ambient, radius, position }, length] = [this.options(), this.length()];\n\n\t\t\tfor (let i = 0; i < lights.children.length; i++) {\n\t\t\t\tlight = lights.children[i];\n\t\t\t\tif (Math.random() > ambient) {\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tposition[0] + MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[1] + MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[2] + MathUtils.randFloatSpread(radius),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n\t\t\t\t\tconst phi = 2 * Math.PI * Math.random();\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tMath.cos(lambda) * Math.cos(phi) * length,\n\t\t\t\t\t\tMath.abs(Math.cos(lambda) * Math.sin(phi) * length),\n\t\t\t\t\t\tMath.sin(lambda) * length,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tInjector,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\tinput,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtComputeFunction,\n\tNgtPortal,\n\tNgtPortalContent,\n\tNgtTexture,\n\textend,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tomit,\n\tpick,\n\tprepare,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Object3D, Scene, WebGLRenderTarget } from 'three';\n\nextend({ Group });\n\nexport interface NgtsRenderTextureOptions extends Partial<Omit<NgtTexture, 'attach'>> {\n\t/** Optional width of the texture, defaults to viewport bounds */\n\twidth?: number;\n\t/** Optional height of the texture, defaults to viewport bounds */\n\theight?: number;\n\t/** Optional fbo samples */\n\tsamples: number;\n\t/** Optional stencil buffer, defaults to false */\n\tstencilBuffer: boolean;\n\t/** Optional depth buffer, defaults to true */\n\tdepthBuffer: boolean;\n\t/** Optional generate mipmaps, defaults to false */\n\tgenerateMipmaps: boolean;\n\t/** Optional render priority, defaults to 0 */\n\trenderPriority: number;\n\t/** Optional event priority, defaults to 0 */\n\teventPriority: number;\n\t/** Optional frame count, defaults to Infinity. If you set it to 1, it would only render a single frame, etc */\n\tframes: number;\n\t/** Optional event compute, defaults to undefined */\n\tcompute?: (event: any, state: any, previous: any) => false | undefined;\n}\n\n@Component({\n\tstandalone: true,\n\tselector: 'ngts-render-texture-container',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRenderTextureContainer {\n\tfbo = input.required<WebGLRenderTarget>();\n\trenderPriority = input.required<number>();\n\tframes = input.required<number>();\n\tinjector = input.required<Injector>();\n\n\tprivate store = injectStore();\n\n\tconstructor() {\n\t\tinjectAutoEffect()(() => {\n\t\t\t// track\n\t\t\tthis.store.state();\n\t\t\tconst renderPriority = this.renderPriority();\n\n\t\t\tlet count = 0;\n\t\t\tlet oldAutoClear: boolean;\n\t\t\tlet oldXrEnabled: boolean;\n\t\t\tlet oldRenderTarget: WebGLRenderTarget | null;\n\t\t\tlet oldIsPresenting: boolean;\n\t\t\tconst sub = injectBeforeRender(\n\t\t\t\t({ gl, scene, camera }) => {\n\t\t\t\t\tconst [fbo, frames] = [this.fbo(), this.frames()];\n\t\t\t\t\t// NOTE: render the frames ^ 2\n\t\t\t\t\tif (frames === Infinity || count < frames * frames) {\n\t\t\t\t\t\toldAutoClear = gl.autoClear;\n\t\t\t\t\t\toldXrEnabled = gl.xr.enabled;\n\t\t\t\t\t\toldRenderTarget = gl.getRenderTarget();\n\t\t\t\t\t\toldIsPresenting = gl.xr.isPresenting;\n\t\t\t\t\t\tgl.autoClear = true;\n\t\t\t\t\t\tgl.xr.enabled = false;\n\t\t\t\t\t\tgl.xr.isPresenting = false;\n\t\t\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\tgl.setRenderTarget(oldRenderTarget);\n\t\t\t\t\t\tgl.autoClear = oldAutoClear;\n\t\t\t\t\t\tgl.xr.enabled = oldXrEnabled;\n\t\t\t\t\t\tgl.xr.isPresenting = oldIsPresenting;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ priority: renderPriority, injector: this.injector() },\n\t\t\t);\n\n\t\t\treturn () => sub();\n\t\t});\n\t}\n}\n\nconst defaultOptions: NgtsRenderTextureOptions = {\n\tsamples: 8,\n\trenderPriority: 0,\n\teventPriority: 0,\n\tframes: Infinity,\n\tstencilBuffer: false,\n\tdepthBuffer: true,\n\tgenerateMipmaps: false,\n};\n\n@Directive({ selector: 'ng-template[renderTextureContent]', standalone: true })\nexport class NgtsRenderTextureContent {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsRenderTextureContent,\n\t\tctx: unknown,\n\t): ctx is { container: Object3D; injector: Injector } {\n\t\treturn true;\n\t}\n}\n\nlet incrementId = 0;\n\n@Component({\n\tselector: 'ngts-render-texture',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene()\" [state]=\"{ events: { compute: compute(), priority: eventPriority() } }\">\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\n\t\t\t\t<ngts-render-texture-container\n\t\t\t\t\t[fbo]=\"fbo()\"\n\t\t\t\t\t[renderPriority]=\"renderPriority()\"\n\t\t\t\t\t[frames]=\"frames()\"\n\t\t\t\t\t[injector]=\"injector\"\n\t\t\t\t>\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ container, injector }\"\n\t\t\t\t\t/>\n\t\t\t\t\t<ngt-group (pointerover)=\"onPointerOver()\" />\n\t\t\t\t</ngts-render-texture-container>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\n\t\t<ngt-primitive *args=\"[fbo().texture]\" [attach]=\"attach()\" [parameters]=\"parameters()\" />\n\t`,\n\timports: [NgtPortal, NgtsRenderTextureContainer, NgtPortalContent, NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRenderTexture {\n\tattach = input<string | string[]>('map');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'samples',\n\t\t'renderPriority',\n\t\t'eventPriority',\n\t\t'frames',\n\t\t'stencilBuffer',\n\t\t'depthBuffer',\n\t\t'generateMipmaps',\n\t\t'compute',\n\t\t'width',\n\t\t'height',\n\t]);\n\n\tcontent = contentChild.required(NgtsRenderTextureContent, { read: TemplateRef });\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate viewport = this.store.select('viewport');\n\n\tprivate fboParams = computed(() => ({\n\t\twidth: (this.options().width || this.size().width) * this.viewport().dpr,\n\t\theight: (this.options().height || this.size().height) * this.viewport().dpr,\n\t\tsettings: {\n\t\t\tsamples: this.options().samples,\n\t\t\tdepthBuffer: this.options().depthBuffer,\n\t\t\tstencilBuffer: this.options().stencilBuffer,\n\t\t\tgenerateMipmaps: this.options().generateMipmaps,\n\t\t},\n\t}));\n\n\trenderPriority = pick(this.options, 'renderPriority');\n\tframes = pick(this.options, 'frames');\n\tfbo = injectFBO(this.fboParams);\n\tvirtualScene = computed(() => {\n\t\tconst scene = prepare(new Scene());\n\t\tscene.name = `ngts-render-texture-virtual-scene-${incrementId++}`;\n\t\treturn scene;\n\t});\n\teventPriority = pick(this.options, 'eventPriority');\n\tcompute = computed(() => this.options().compute || this.uvCompute);\n\n\tuvCompute: NgtComputeFunction = (event, root, previous) => {\n\t\tconst fbo = this.fbo();\n\t\tif (!fbo) return;\n\t\tconst state = root.snapshot;\n\t\tconst previousState = previous?.snapshot;\n\n\t\t// Since this is only a texture it does not have an easy way to obtain the parent, which we\n\t\t// need to transform event coordinates to local coordinates. We use r3f internals to find the\n\t\t// next Object3D.\n\t\tlet parent = getLocalState(fbo.texture)?.parent();\n\t\twhile (parent && !(parent instanceof Object3D)) {\n\t\t\tparent = getLocalState(parent)?.parent();\n\t\t}\n\n\t\tif (!parent) return;\n\t\t// First we call the previous state-onion-layers compute, this is what makes it possible to nest portals\n\t\tif (previousState && !previousState.raycaster.camera) {\n\t\t\tpreviousState.events.compute?.(event, previous, previous.snapshot.previousRoot);\n\t\t}\n\t\t// We run a quick check against the parent, if it isn't hit there's no need to raycast at all\n\t\tconst [intersection] = previousState?.raycaster.intersectObject(parent) || [];\n\t\tif (!intersection) return;\n\t\t// We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces\n\t\tconst uv = intersection.uv;\n\t\tif (!uv) return;\n\t\tstate.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);\n\t};\n\n\tonPointerOver() {\n\t\t/* noop */\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { NgtArgs, NgtMesh, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Vector3 } from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: Vector3 = new Vector3()) {\n\tconst theta = Math.PI * (inclination - 0.5);\n\tconst phi = 2 * Math.PI * (azimuth - 0.5);\n\n\tvector.x = Math.cos(phi);\n\tvector.y = Math.sin(theta);\n\tvector.z = Math.sin(phi);\n\n\treturn vector;\n}\n\nexport interface NgtsSkyOptions extends Partial<Omit<NgtMesh, 'scale'>> {\n\tdistance: number;\n\tinclination: number;\n\tazimuth: number;\n\tmieCoefficient: number;\n\tmieDirectionalG: number;\n\trayleigh: number;\n\tturbidity: number;\n\tsunPosition?: NgtVector3;\n}\n\nconst defaultOptions: NgtsSkyOptions = {\n\tdistance: 1000,\n\tinclination: 0.6,\n\tazimuth: 0.1,\n\tmieCoefficient: 0.005,\n\tmieDirectionalG: 0.8,\n\trayleigh: 0.5,\n\tturbidity: 10,\n};\n\n@Component({\n\tselector: 'ngts-sky',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[sky]\" [parameters]=\"parameters()\" [scale]=\"scale()\">\n\t\t\t<ngt-value attach=\"material.uniforms.mieCoefficient.value\" [rawValue]=\"mieCoefficient()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.mieDirectionalG.value\" [rawValue]=\"mieDirectionalG()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.rayleigh.value\" [rawValue]=\"rayleigh()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.sunPosition.value\" [rawValue]=\"calculatedSunPosition()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.turbidity.value\" [rawValue]=\"turbidity()\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsSky {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'distance',\n\t\t'inclination',\n\t\t'azimuth',\n\t\t'sunPosition',\n\t\t'turbidity',\n\t\t'mieCoefficient',\n\t\t'mieDirectionalG',\n\t\t'sunPosition',\n\t]);\n\n\tdistance = pick(this.options, 'distance');\n\tturbidity = pick(this.options, 'turbidity');\n\tmieCoefficient = pick(this.options, 'mieCoefficient');\n\tmieDirectionalG = pick(this.options, 'mieDirectionalG');\n\trayleigh = pick(this.options, 'rayleigh');\n\n\tscale = computed(() => new Vector3().setScalar(this.distance()));\n\n\tprivate inclination = pick(this.options, 'inclination');\n\tprivate azimuth = pick(this.options, 'azimuth');\n\tprivate sunPosition = vector3(this.options, 'sunPosition', true);\n\tcalculatedSunPosition = computed(() => {\n\t\tconst sunPosition = this.sunPosition();\n\t\tif (sunPosition) return sunPosition;\n\t\treturn calcPosFromAngles(this.inclination(), this.azimuth());\n\t});\n\n\tsky = new Sky();\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, NgtArgs, NgtSpotLight, omit, pick } from 'angular-three';\nimport { NgtsHelper } from 'angular-three-soba/abstractions';\nimport { SpotLightMaterial } from 'angular-three-soba/vanilla-exports';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tColorRepresentation,\n\tCylinderGeometry,\n\tDepthTexture,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tObject3D,\n\tPlaneGeometry,\n\tRepeatWrapping,\n\tRGBAFormat,\n\tShaderMaterial,\n\tSpotLight,\n\tSpotLightHelper,\n\tTexture,\n\tVector3,\n\tWebGLRenderTarget,\n} from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nfunction isSpotLight(child: Object3D | null): child is SpotLight {\n\treturn (child as SpotLight)?.isSpotLight;\n}\n\nexport interface NgtsSpotLightOptions extends Partial<NgtSpotLight> {\n\tdepthBuffer?: DepthTexture;\n\tattenuation?: number;\n\tanglePower?: number;\n\tradiusTop?: number;\n\tradiusBottom?: number;\n\topacity?: number;\n\tcolor?: ColorRepresentation;\n\tvolumetric?: boolean;\n\tdebug?: boolean;\n}\n\nexport type NgtsVolumetricMeshOptions = Omit<NgtsSpotLightOptions, 'volumetric'>;\n\nconst defaultVolumetricMeshOptions: NgtsVolumetricMeshOptions = {\n\topacity: 1,\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tcolor: 'white',\n};\n\n@Component({\n\tselector: 'ngts-volumetric-mesh',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\">\n\t\t\t\t<ngt-value attach=\"uniforms.opacity.value\" [rawValue]=\"opacity()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.lightColor.value\" [rawValue]=\"color()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.attenuation.value\" [rawValue]=\"attenuation()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.anglePower.value\" [rawValue]=\"anglePower()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.depth.value\" [rawValue]=\"depthBuffer()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraNear.value\" [rawValue]=\"camera().near\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraFar.value\" [rawValue]=\"camera().far\" />\n\t\t\t\t<ngt-value\n\t\t\t\t\tattach=\"uniforms.resolution.value\"\n\t\t\t\t\t[rawValue]=\"depthBuffer() ? [size().width * dpr(), size().height * dpr()] : [0, 0]\"\n\t\t\t\t/>\n\t\t\t</ngt-primitive>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsVolumetricMesh {\n\tnullRaycast = () => null;\n\n\toptions = input(defaultVolumetricMeshOptions, { transform: mergeInputs(defaultVolumetricMeshOptions) });\n\n\tmesh = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate store = injectStore();\n\tsize = this.store.select('size');\n\tdpr = this.store.select('viewport', 'dpr');\n\tcamera = this.store.select('camera');\n\n\tprivate radiusTop = pick(this.options, 'radiusTop');\n\tprivate radiusBottom = pick(this.options, 'radiusBottom');\n\tprivate angle = pick(this.options, 'angle');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate normalizedRadiusTop = computed(() => (this.radiusTop() === undefined ? 0.1 : this.radiusTop()));\n\tprivate normalizedRadiusBottom = computed(() =>\n\t\tthis.radiusBottom() === undefined ? this.angle()! * 7 : this.radiusBottom(),\n\t);\n\n\tmaterial = new SpotLightMaterial();\n\topacity = pick(this.options, 'opacity');\n\tcolor = pick(this.options, 'color');\n\tattenuation = pick(this.options, 'attenuation');\n\tanglePower = pick(this.options, 'anglePower');\n\tdepthBuffer = pick(this.options, 'depthBuffer');\n\n\tgeometry = computed(() => {\n\t\tconst geometry = new CylinderGeometry(\n\t\t\tthis.normalizedRadiusTop(),\n\t\t\tthis.normalizedRadiusBottom(),\n\t\t\tthis.distance(),\n\t\t\t128,\n\t\t\t64,\n\t\t\ttrue,\n\t\t);\n\t\tgeometry.applyMatrix4(new Matrix4().makeTranslation(0, -this.distance()! / 2, 0));\n\t\tgeometry.applyMatrix4(new Matrix4().makeRotationX(-Math.PI / 2));\n\t\treturn geometry;\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh });\n\n\t\tconst vec = new Vector3();\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst mesh = this.mesh().nativeElement;\n\t\t\tconst material = this.material;\n\n\t\t\tmaterial.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(vec));\n\t\t\tif (mesh.parent) {\n\t\t\t\tmesh.lookAt((mesh.parent as any).target.getWorldPosition(vec));\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction injectSpotLightCommon(\n\tspotLight: () => ElementRef<SpotLight> | null,\n\tmesh: () => ElementRef<Mesh> | null,\n\twidth: () => number,\n\theight: () => number,\n\tdistance: () => number,\n) {\n\tconst pos = new Vector3();\n\tconst dir = new Vector3();\n\n\tconst autoEffect = injectAutoEffect();\n\n\tafterNextRender(() => {\n\t\tautoEffect(() => {\n\t\t\tconst [_spotLight, _width, _height] = [spotLight()?.nativeElement, width(), height()];\n\t\t\tif (!_spotLight) return;\n\t\t\tif (isSpotLight(_spotLight)) {\n\t\t\t\t_spotLight.shadow.mapSize.set(_width, _height);\n\t\t\t\tif (_spotLight.shadow.map) {\n\t\t\t\t\t_spotLight.shadow.map.setSize(_width, _height);\n\t\t\t\t}\n\t\t\t\t_spotLight.shadow.needsUpdate = true;\n\t\t\t} else {\n\t\t\t\tthrow new Error('NgtsSpotLightShadow must be a child of a NgtsSpotLight');\n\t\t\t}\n\t\t});\n\t});\n\n\tinjectBeforeRender(() => {\n\t\tconst [_spotLight, _mesh] = [spotLight()?.nativeElement, mesh()?.nativeElement];\n\t\tif (!_spotLight || !_mesh) return;\n\n\t\tconst A = _spotLight.position;\n\t\tconst B = _spotLight.target.position;\n\n\t\tdir.copy(B).sub(A);\n\t\tconst len = dir.length();\n\t\tdir.normalize().multiplyScalar(len * distance());\n\t\tpos.copy(A).add(dir);\n\n\t\t_mesh.position.copy(pos);\n\t\t_mesh.lookAt(_spotLight.target.position);\n\t});\n}\n\ninterface NgtsShadowMeshOptions {\n\tdistance: number;\n\talphaTest: number;\n\tscale: number;\n\twidth: number;\n\theight: number;\n\tmap?: Texture;\n}\n\nconst defaultSpotLightShadowOptions: NgtsShadowMeshOptions = {\n\tdistance: 0.4,\n\talphaTest: 0.5,\n\tscale: 1,\n\twidth: 512,\n\theight: 512,\n};\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"texture()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowShader {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tshader = input.required<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmesh = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tdebug = this.spotLight.debug;\n\n\tscale = pick(this.options, 'scale');\n\talphaTest = pick(this.options, 'alphaTest');\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate map = pick(this.options, 'map');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate renderTarget = computed(() => {\n\t\treturn new WebGLRenderTarget(this.width(), this.height(), {\n\t\t\tformat: RGBAFormat,\n\t\t\tstencilBuffer: false,\n\t\t\t// depthTexture: null!\n\t\t});\n\t});\n\n\ttexture = computed(() => {\n\t\tconst renderTarget = this.renderTarget();\n\t\trenderTarget.texture.wrapT = renderTarget.texture.wrapS = RepeatWrapping;\n\t\treturn renderTarget.texture;\n\t});\n\n\tprivate fsQuad = computed(() => {\n\t\treturn new FullScreenQuad(\n\t\t\tnew ShaderMaterial({\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: /* language=glsl glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n\t\t\t\tfragmentShader: this.shader(),\n\t\t\t}),\n\t\t);\n\t});\n\n\tprivate uniforms = {\n\t\tuShadowMap: { value: undefined as Texture | undefined },\n\t\tuTime: { value: 0 },\n\t};\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tinjectSpotLightCommon(this.spotLight.spotLight, this.mesh, this.width, this.height, this.distance);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tthis.uniforms.uShadowMap.value = this.map();\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst fsQuad = this.fsQuad();\n\t\t\t\treturn () => {\n\t\t\t\t\tfsQuad.material.dispose();\n\t\t\t\t\tfsQuad.dispose();\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst renderTarget = this.renderTarget();\n\t\t\t\treturn () => {\n\t\t\t\t\trenderTarget.dispose();\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, delta }) => {\n\t\t\tthis.uniforms.uTime.value += delta;\n\n\t\t\tgl.setRenderTarget(this.renderTarget());\n\t\t\tthis.fsQuad().render(gl);\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-no-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"map()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowNoShader {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmesh = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tdebug = this.spotLight.debug;\n\n\talphaTest = pick(this.options, 'alphaTest');\n\tscale = pick(this.options, 'scale');\n\tmap = computed(() => {\n\t\tconst map = this.options().map;\n\t\tif (map) {\n\t\t\tmap.wrapS = map.wrapT = RepeatWrapping;\n\t\t}\n\t\treturn map;\n\t});\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate distance = pick(this.options, 'distance');\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\t\tinjectSpotLightCommon(this.spotLight.spotLight, this.mesh, this.width, this.height, this.distance);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (shader(); as shader) {\n\t\t\t<ngts-spot-light-shadow-shader [shader]=\"shader\" [options]=\"options()\" />\n\t\t} @else {\n\t\t\t<ngts-spot-light-shadow-no-shader [options]=\"options()\" />\n\t\t}\n\t`,\n\timports: [NgtsSpotLightShadowShader, NgtsSpotLightShadowNoShader],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadow {\n\tshader = input<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n}\n\nconst defaultOptions: NgtsSpotLightOptions = {\n\topacity: 1,\n\tcolor: 'white',\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tvolumetric: true,\n\tdebug: false,\n};\n\n@Component({\n\tselector: 'ngts-spot-light',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ngt-spot-light\n\t\t\t\t#spotLight\n\t\t\t\t[angle]=\"angle()\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[distance]=\"distance()\"\n\t\t\t\t[castShadow]=\"true\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t>\n\t\t\t\t@if (volumetric()) {\n\t\t\t\t\t<ngts-volumetric-mesh [options]=\"volumetricOptions()\" />\n\t\t\t\t}\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-helper [type]=\"SpotLightHelper\" />\n\t\t\t\t}\n\t\t\t</ngt-spot-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsVolumetricMesh, NgtsHelper],\n})\nexport class NgtsSpotLight {\n\tprotected readonly SpotLightHelper = SpotLightHelper;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'volumetric',\n\t\t'debug',\n\t]);\n\tvolumetricOptions = pick(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'debug',\n\t]);\n\n\tspotLight = viewChild.required<ElementRef<SpotLight>>('spotLight');\n\n\tdebug = pick(this.options, 'debug');\n\tangle = pick(this.options, 'angle');\n\tcolor = pick(this.options, 'color');\n\tdistance = pick(this.options, 'distance');\n\tvolumetric = pick(this.options, 'volumetric');\n\n\tconstructor() {\n\t\textend({ Group, SpotLight });\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtGroup, omit, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows, NgtsAccumulativeShadowsOptions } from './accumulative-shadows';\nimport { NgtsBounds } from './bounds';\nimport { NgtsCenter, NgtsCenterOptions, NgtsCenterState } from './center';\nimport { NgtsContactShadows, NgtsContactShadowsOptions } from './contact-shadows';\nimport { NgtsEnvironment, NgtsEnvironmentOptions, NgtsEnvironmentPresets } from './environment';\nimport { NgtsRandomizedLights, NgtsRandomizedLightsOptions } from './randomized-lights';\n\nconst presets = {\n\trembrandt: {\n\t\tmain: [1, 2, 1],\n\t\tfill: [-2, -0.5, -2],\n\t},\n\tportrait: {\n\t\tmain: [-1, 2, 0.5],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tupfront: {\n\t\tmain: [0, 2, 1],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tsoft: {\n\t\tmain: [-2, 4, 4],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n} as const;\n\ntype NgtsStageShadowsOptions = Partial<NgtsAccumulativeShadowsOptions> &\n\tPartial<NgtsRandomizedLightsOptions> &\n\tPartial<NgtsContactShadowsOptions> & {\n\t\ttype: 'contact' | 'accumulative';\n\t\t/** Shadow plane offset, default: 0 */\n\t\toffset: number;\n\t\t/** Shadow bias, default: -0.0001 */\n\t\tbias: number;\n\t\t/** Shadow normal bias, default: 0 */\n\t\tnormalBias: number;\n\t\t/** Shadow map size, default: 1024 */\n\t\tsize: number;\n\t};\n\nexport interface NgtsStageOptions extends Partial<NgtGroup> {\n\t/** Lighting setup, default: \"rembrandt\" */\n\tpreset:\n\t\t| 'rembrandt'\n\t\t| 'portrait'\n\t\t| 'upfront'\n\t\t| 'soft'\n\t\t| { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n\t/** Controls the ground shadows, default: \"contact\" */\n\tshadows: boolean | 'contact' | 'accumulative' | NgtsStageShadowsOptions;\n\t/** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n\tadjustCamera: boolean | number;\n\t/** The default environment, default: \"city\" */\n\tenvironment: NgtsEnvironmentPresets | Partial<NgtsEnvironmentOptions> | null;\n\t/** The lighting intensity, default: 0.5 */\n\tintensity: number;\n\t/** To adjust centering, default: undefined */\n\tcenter?: Partial<NgtsCenterOptions>;\n}\n\nconst defaultOptions: NgtsStageOptions = {\n\tpreset: 'rembrandt',\n\tshadows: 'contact',\n\tadjustCamera: true,\n\tenvironment: 'city',\n\tintensity: 0.5,\n};\n\n@Directive({ standalone: true, selector: 'ngts-stage-refit' })\nexport class NgtsStageRefit {\n\tradius = input.required<number>();\n\tadjustCamera = input.required<boolean>();\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst bounds = inject(NgtsBounds);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [, adjustCamera] = [this.radius(), this.adjustCamera()];\n\t\t\t\tif (adjustCamera) bounds.refresh().clip().fit();\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-stage',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-ambient-light [intensity]=\"intensity() / 3\" />\n\t\t<ngt-spot-light\n\t\t\t[penumbra]=\"1\"\n\t\t\t[position]=\"[config().main[0] * radius(), config().main[1] * radius(), config().main[2] * radius()]\"\n\t\t\t[intensity]=\"intensity() * 2\"\n\t\t\t[castShadow]=\"!!shadows()\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"shadowBias()\" attach=\"shadow.bias\" />\n\t\t\t<ngt-value [rawValue]=\"normalBias()\" attach=\"shadow.normalBias\" />\n\t\t\t<ngt-vector2 *args=\"[shadowSize(), shadowSize()]\" attach=\"shadow.mapSize\" />\n\t\t</ngt-spot-light>\n\t\t<ngt-point-light\n\t\t\t[position]=\"[config().fill[0] * radius(), config().fill[1] * radius(), config().fill[2] * radius()]\"\n\t\t\t[intensity]=\"intensity()\"\n\t\t/>\n\n\t\t<ngts-bounds [options]=\"boundsOptions()\">\n\t\t\t<ngts-stage-refit [radius]=\"radius()\" [adjustCamera]=\"!!adjustCamera()\" />\n\t\t\t<ngts-center [options]=\"centerOptions()\" (centered)=\"onCenter($event)\">\n\t\t\t\t<ng-content />\n\t\t\t</ngts-center>\n\t\t</ngts-bounds>\n\n\t\t<ngt-group [position]=\"[0, -height() / 2 - shadowOffset() / 2, 0]\">\n\t\t\t@if (contactShadow()) {\n\t\t\t\t<ngts-contact-shadows [options]=\"shadowOptions()\" />\n\t\t\t}\n\n\t\t\t@if (accumulativeShadow()) {\n\t\t\t\t<ngts-accumulative-shadows [options]=\"shadowOptions()\">\n\t\t\t\t\t<ngts-randomized-lights [options]=\"randomizedLightsOptions()\" />\n\t\t\t\t</ngts-accumulative-shadows>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t@if (environment()) {\n\t\t\t<ngts-environment [options]=\"environmentOptions()\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tNgtArgs,\n\t\tNgtsBounds,\n\t\tNgtsStageRefit,\n\t\tNgtsCenter,\n\t\tNgtsContactShadows,\n\t\tNgtsAccumulativeShadows,\n\t\tNgtsEnvironment,\n\t\tNgtsRandomizedLights,\n\t],\n})\nexport class NgtsStage {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['preset', 'shadows', 'adjustCamera', 'environment', 'intensity', 'center']);\n\n\tcentered = output<NgtsCenterState>();\n\n\tprivate dims = signal({ radius: 0, width: 0, height: 0, depth: 0 });\n\tradius = pick(this.dims, 'radius');\n\theight = pick(this.dims, 'height');\n\n\tcenter = pick(this.options, 'center');\n\tadjustCamera = pick(this.options, 'adjustCamera');\n\tmargin = computed(() => Number(this.adjustCamera()));\n\tintensity = pick(this.options, 'intensity');\n\tshadows = pick(this.options, 'shadows');\n\tenvironment = pick(this.options, 'environment');\n\tpreset = pick(this.options, 'preset');\n\n\tconfig = computed(() => {\n\t\tconst preset = this.preset();\n\t\treturn typeof preset === 'string' ? presets[preset] : preset;\n\t});\n\n\tshadowBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).bias ?? -0.0001);\n\tnormalBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).normalBias ?? 0);\n\tshadowSize = computed(() => (this.shadows() as NgtsStageShadowsOptions).size ?? 1024);\n\tshadowOffset = computed(() => (this.shadows() as NgtsStageShadowsOptions).offset ?? 0);\n\tcontactShadow = computed(\n\t\t() => this.shadows() === 'contact' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'contact',\n\t);\n\taccumulativeShadow = computed(\n\t\t() => this.shadows() === 'accumulative' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'accumulative',\n\t);\n\tshadowOptions = computed(() => {\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\n\t\tif (this.contactShadow()) {\n\t\t\treturn { scale: this.radius() * 4, far: this.radius(), blur: 2, ...shadows };\n\t\t}\n\n\t\tif (this.accumulativeShadow()) {\n\t\t\treturn { temporal: true, frames: 100, alphaTest: 0.9, toneMapped: true, scale: this.radius() * 4, ...shadows };\n\t\t}\n\n\t\treturn typeof shadows === 'object' ? shadows : {};\n\t});\n\trandomizedLightsOptions = computed(() => {\n\t\tif (!this.accumulativeShadow()) return {};\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\t\treturn {\n\t\t\tamount: shadows.amount ?? 8,\n\t\t\tradius: shadows.radius ?? this.radius(),\n\t\t\tambient: shadows.ambient ?? 0.5,\n\t\t\tintensity: shadows.intensity ?? 1,\n\t\t\tposition: [\n\t\t\t\tthis.config().main[0] * this.radius(),\n\t\t\t\tthis.config().main[1] * this.radius(),\n\t\t\t\tthis.config().main[2] * this.radius(),\n\t\t\t],\n\t\t\tsize: this.radius() * 4,\n\t\t\tbias: -this.shadowBias(),\n\t\t\tmapSize: this.shadowSize(),\n\t\t} as Partial<NgtsRandomizedLightsOptions>;\n\t});\n\tenvironmentOptions = computed(() => {\n\t\tconst environment = this.environment();\n\t\treturn !environment ? {} : typeof environment === 'string' ? { preset: environment } : environment;\n\t});\n\n\tboundsOptions = computed(() => ({\n\t\tfit: !!this.adjustCamera(),\n\t\tclip: !!this.adjustCamera(),\n\t\tmargin: Number(this.adjustCamera()),\n\t\tobserve: true,\n\t\t...this.parameters(),\n\t}));\n\tcenterOptions = computed(\n\t\t() =>\n\t\t\t({\n\t\t\t\t...(this.center() || {}),\n\t\t\t\tposition: [0, this.shadowOffset() / 2, 0],\n\t\t\t}) as Partial<NgtsCenterOptions>,\n\t);\n\n\tconstructor() {\n\t\textend({ AmbientLight, SpotLight, PointLight, Group, Vector2 });\n\t}\n\n\tonCenter($event: NgtsCenterState) {\n\t\tconst { width, height, depth, boundingSphere } = $event;\n\t\tthis.dims.set({ radius: boundingSphere.radius, width, height, depth });\n\t\tthis.centered.emit($event);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","LIST_URL"],"mappings":"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"}