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,182 +0,0 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, Component, Injector, Input, NgZone, computed, effect, forwardRef, inject, signal, untracked, } from '@angular/core';
2
- import { NgtArgs, createInjectionToken, extend, injectBeforeRender, injectNgtRef, is, signalStore, } from 'angular-three';
3
- import * as THREE from 'three';
4
- import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
5
- import { SegmentObject } from './segment-object';
6
- import * as i0 from "@angular/core";
7
- const normPos = (pos) => pos instanceof THREE.Vector3
8
- ? pos
9
- : new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
10
- extend({ SegmentObject });
11
- export const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken((segments) => segments.api, { isRoot: false, deps: [forwardRef(() => NgtsSegments)] });
12
- export class NgtsSegment {
13
- constructor() {
14
- this.inputs = signalStore({});
15
- this.segmentRef = injectNgtRef();
16
- this.segmentsApi = injectNgtsSegmentsApi();
17
- this.injector = inject(Injector);
18
- this.zone = inject(NgZone);
19
- this.start = this.inputs.select('start');
20
- this.end = this.inputs.select('end');
21
- this.normalizedStart = computed(() => normPos(this.start()));
22
- this.normalizedEnd = computed(() => normPos(this.end()));
23
- this.color = this.inputs.select('color');
24
- }
25
- set _start(start) {
26
- this.inputs.set({ start });
27
- }
28
- set _end(end) {
29
- this.inputs.set({ end });
30
- }
31
- set _color(color) {
32
- this.inputs.set({ color });
33
- }
34
- ngOnInit() {
35
- effect((onCleanup) => {
36
- const cleanup = this.zone.runOutsideAngular(() => {
37
- const api = this.segmentsApi();
38
- return api.subscribe(this.segmentRef);
39
- });
40
- onCleanup(cleanup);
41
- }, { injector: this.injector });
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
45
- <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
46
- `, isInline: true }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, decorators: [{
49
- type: Component,
50
- args: [{
51
- selector: 'ngts-segment',
52
- standalone: true,
53
- template: `
54
- <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
55
- `,
56
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
57
- }]
58
- }], propDecorators: { segmentRef: [{
59
- type: Input
60
- }], _start: [{
61
- type: Input,
62
- args: [{ alias: 'start' }]
63
- }], _end: [{
64
- type: Input,
65
- args: [{ alias: 'end' }]
66
- }], _color: [{
67
- type: Input,
68
- args: [{ alias: 'color' }]
69
- }] } });
70
- export class NgtsSegments {
71
- set _limit(limit) {
72
- this.inputs.set({ limit });
73
- }
74
- set _lineWidth(lineWidth) {
75
- this.inputs.set({ lineWidth });
76
- }
77
- constructor() {
78
- this.inputs = signalStore({ limit: 1000, lineWidth: 1 });
79
- this.segmentsRef = injectNgtRef();
80
- this.segments = signal([]);
81
- this.limit = this.inputs.select('limit');
82
- this.positions = computed(() => Array(this.limit() * 6).fill(0));
83
- this.colors = computed(() => Array(this.limit() * 6).fill(0));
84
- this.resolution = new THREE.Vector2(512, 512);
85
- this.lineWidth = this.inputs.select('lineWidth');
86
- this.line = new Line2();
87
- this.material = new LineMaterial();
88
- this.geometry = new LineSegmentsGeometry();
89
- this.api = computed(() => ({
90
- subscribe: (segmentRef) => {
91
- untracked(() => {
92
- this.segments.update((s) => [...s, segmentRef]);
93
- });
94
- return () => {
95
- untracked(() => {
96
- this.segments.update((s) => s.filter((segment) => segment !== segmentRef));
97
- });
98
- };
99
- },
100
- }));
101
- this.beforeRender();
102
- }
103
- beforeRender() {
104
- injectBeforeRender(() => {
105
- const [segments, limit, positions, colors] = [
106
- this.segments(),
107
- this.limit(),
108
- this.positions(),
109
- this.colors(),
110
- ];
111
- for (let i = 0; i < limit; i++) {
112
- const segmentRef = segments[i];
113
- const segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;
114
- if (segment) {
115
- positions[i * 6 + 0] = segment.start.x;
116
- positions[i * 6 + 1] = segment.start.y;
117
- positions[i * 6 + 2] = segment.start.z;
118
- positions[i * 6 + 3] = segment.end.x;
119
- positions[i * 6 + 4] = segment.end.y;
120
- positions[i * 6 + 5] = segment.end.z;
121
- colors[i * 6 + 0] = segment.color.r;
122
- colors[i * 6 + 1] = segment.color.g;
123
- colors[i * 6 + 2] = segment.color.b;
124
- colors[i * 6 + 3] = segment.color.r;
125
- colors[i * 6 + 4] = segment.color.g;
126
- colors[i * 6 + 5] = segment.color.b;
127
- }
128
- }
129
- this.geometry.setColors(colors);
130
- this.geometry.setPositions(positions);
131
- this.line.computeLineDistances();
132
- });
133
- }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
136
- <ngt-primitive *args="[line]" [ref]="segmentsRef">
137
- <ngt-primitive *args="[geometry]" attach="geometry" />
138
- <ngt-primitive
139
- *args="[material]"
140
- attach="material"
141
- ngtCompound
142
- [vertexColors]="true"
143
- [resolution]="resolution"
144
- [linewidth]="lineWidth()"
145
- />
146
- <ng-content />
147
- </ngt-primitive>
148
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
149
- }
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, decorators: [{
151
- type: Component,
152
- args: [{
153
- selector: 'ngts-segments',
154
- standalone: true,
155
- template: `
156
- <ngt-primitive *args="[line]" [ref]="segmentsRef">
157
- <ngt-primitive *args="[geometry]" attach="geometry" />
158
- <ngt-primitive
159
- *args="[material]"
160
- attach="material"
161
- ngtCompound
162
- [vertexColors]="true"
163
- [resolution]="resolution"
164
- [linewidth]="lineWidth()"
165
- />
166
- <ng-content />
167
- </ngt-primitive>
168
- `,
169
- imports: [NgtArgs],
170
- providers: [provideNgtsSegmentsApi()],
171
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
172
- }]
173
- }], ctorParameters: function () { return []; }, propDecorators: { segmentsRef: [{
174
- type: Input
175
- }], _limit: [{
176
- type: Input,
177
- args: [{ alias: 'limit' }]
178
- }], _lineWidth: [{
179
- type: Input,
180
- args: [{ alias: 'lineWidth' }]
181
- }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sT0FBTyxFQUNQLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixFQUFFLEVBQ0YsV0FBVyxHQUlYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFxQmpELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBOEIsRUFBMEIsRUFBRSxDQUMxRSxHQUFHLFlBQVksS0FBSyxDQUFDLE9BQU87SUFDM0IsQ0FBQyxDQUFDLEdBQUc7SUFDTCxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUE4QixDQUFDLENBQUM7QUFFMUcsTUFBTSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDLEdBQUcsb0JBQW9C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QztnQkFDM0UsSUFBSSxPQUFPLEVBQUU7b0JBQ1osU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFdkMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFckMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDcEM7YUFDRDtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBNUVXLFlBQVk7a0dBQVosWUFBWSwwS0FIYixDQUFDLHNCQUFzQixFQUFFLENBQUMsMEJBZjNCOzs7Ozs7Ozs7Ozs7O0VBYVQsNERBQ1MsT0FBTzs7MkZBSUwsWUFBWTtrQkFyQnhCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7RUFhVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFJUyxXQUFXO3NCQUFuQixLQUFLO2dCQUV5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJVSxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdENvbXBvbmVudCxcblx0SW5qZWN0b3IsXG5cdElucHV0LFxuXHROZ1pvbmUsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGZvcndhcmRSZWYsXG5cdGluamVjdCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHR5cGUgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdE5ndEFyZ3MsXG5cdGNyZWF0ZUluamVjdGlvblRva2VuLFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpcyxcblx0c2lnbmFsU3RvcmUsXG5cdHR5cGUgTmd0Q29sb3IsXG5cdHR5cGUgTmd0UmVmLFxuXHR0eXBlIE5ndFZlY3RvcjMsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTGluZTIsIExpbmVNYXRlcmlhbCwgTGluZVNlZ21lbnRzR2VvbWV0cnkgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuaW1wb3J0IHsgU2VnbWVudE9iamVjdCB9IGZyb20gJy4vc2VnbWVudC1vYmplY3QnO1xuXG5leHBvcnQgdHlwZSBOZ3RzU2VnbWVudFN0YXRlID0ge1xuXHRzdGFydD86IE5ndFZlY3RvcjM7XG5cdGVuZD86IE5ndFZlY3RvcjM7XG5cdGNvbG9yPzogTmd0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzU2VnbWVudHNTdGF0ZSA9IHtcblx0bGltaXQ6IG51bWJlcjtcblx0bGluZVdpZHRoOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3Qtc2VnbWVudC1vYmplY3QnOiBTZWdtZW50T2JqZWN0O1xuXHRcdCduZ3RzLXNlZ21lbnQnOiBOZ3RzU2VnbWVudFN0YXRlO1xuXHRcdCduZ3RzLXNlZ21lbnRzJzogTmd0c1NlZ21lbnRzU3RhdGU7XG5cdH1cbn1cblxuY29uc3Qgbm9ybVBvcyA9IChwb3M6IE5ndHNTZWdtZW50U3RhdGVbJ3N0YXJ0J10pOiBTZWdtZW50T2JqZWN0WydzdGFydCddID0+XG5cdHBvcyBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjNcblx0XHQ/IHBvc1xuXHRcdDogbmV3IFRIUkVFLlZlY3RvcjMoLi4uKCh0eXBlb2YgcG9zID09PSAnbnVtYmVyJyA/IFtwb3MsIHBvcywgcG9zXSA6IHBvcykgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSk7XG5cbmV4dGVuZCh7IFNlZ21lbnRPYmplY3QgfSk7XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0c1NlZ21lbnRzQXBpLCBwcm92aWRlTmd0c1NlZ21lbnRzQXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoc2VnbWVudHM6IE5ndHNTZWdtZW50cykgPT4gc2VnbWVudHMuYXBpLFxuXHR7IGlzUm9vdDogZmFsc2UsIGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndHNTZWdtZW50cyldIH0sXG4pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNlZ21lbnQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtc2VnbWVudC1vYmplY3QgW3JlZl09XCJzZWdtZW50UmVmXCIgW2NvbG9yXT1cImNvbG9yKClcIiBbc3RhcnRdPVwibm9ybWFsaXplZFN0YXJ0KClcIiBbZW5kXT1cIm5vcm1hbGl6ZWRFbmQoKVwiIC8+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NlZ21lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTZWdtZW50U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoKSBzZWdtZW50UmVmID0gaW5qZWN0Tmd0UmVmPFNlZ21lbnRPYmplY3Q+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdzdGFydCcgfSkgc2V0IF9zdGFydChzdGFydDogTmd0VmVjdG9yMykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0YXJ0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdlbmQnIH0pIHNldCBfZW5kKGVuZDogTmd0VmVjdG9yMykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGVuZCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IE5ndENvbG9yKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRwcml2YXRlIHNlZ21lbnRzQXBpID0gaW5qZWN0Tmd0c1NlZ21lbnRzQXBpKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuXHRwcml2YXRlIHN0YXJ0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzdGFydCcpO1xuXHRwcml2YXRlIGVuZCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZW5kJyk7XG5cblx0bm9ybWFsaXplZFN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4gbm9ybVBvcyh0aGlzLnN0YXJ0KCkpKTtcblx0bm9ybWFsaXplZEVuZCA9IGNvbXB1dGVkKCgpID0+IG5vcm1Qb3ModGhpcy5lbmQoKSkpO1xuXHRjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGFwaSA9IHRoaXMuc2VnbWVudHNBcGkoKTtcblx0XHRcdFx0XHRyZXR1cm4gYXBpLnN1YnNjcmliZSh0aGlzLnNlZ21lbnRSZWYpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0b25DbGVhbnVwKGNsZWFudXApO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2VnbWVudHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2xpbmVdXCIgW3JlZl09XCJzZWdtZW50c1JlZlwiPlxuXHRcdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZ2VvbWV0cnldXCIgYXR0YWNoPVwiZ2VvbWV0cnlcIiAvPlxuXHRcdFx0PG5ndC1wcmltaXRpdmVcblx0XHRcdFx0KmFyZ3M9XCJbbWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRuZ3RDb21wb3VuZFxuXHRcdFx0XHRbdmVydGV4Q29sb3JzXT1cInRydWVcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uXCJcblx0XHRcdFx0W2xpbmV3aWR0aF09XCJsaW5lV2lkdGgoKVwiXG5cdFx0XHQvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndHNTZWdtZW50c0FwaSgpXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU2VnbWVudHMge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTZWdtZW50c1N0YXRlPih7IGxpbWl0OiAxMDAwLCBsaW5lV2lkdGg6IDEgfSk7XG5cblx0QElucHV0KCkgc2VnbWVudHNSZWYgPSBpbmplY3ROZ3RSZWY8TGluZTI+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdsaW1pdCcgfSkgc2V0IF9saW1pdChsaW1pdDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGltaXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2xpbmVXaWR0aCcgfSkgc2V0IF9saW5lV2lkdGgobGluZVdpZHRoOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBsaW5lV2lkdGggfSk7XG5cdH1cblxuXHRwcml2YXRlIHNlZ21lbnRzID0gc2lnbmFsPE5ndFJlZjxTZWdtZW50T2JqZWN0PltdPihbXSk7XG5cdHByaXZhdGUgbGltaXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbWl0Jyk7XG5cblx0cHJpdmF0ZSBwb3NpdGlvbnMgPSBjb21wdXRlZCgoKSA9PiBBcnJheSh0aGlzLmxpbWl0KCkgKiA2KS5maWxsKDApKTtcblx0cHJpdmF0ZSBjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiBBcnJheSh0aGlzLmxpbWl0KCkgKiA2KS5maWxsKDApKTtcblxuXHRyZXNvbHV0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjIoNTEyLCA1MTIpO1xuXHRsaW5lV2lkdGggPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbmVXaWR0aCcpO1xuXHRsaW5lID0gbmV3IExpbmUyKCk7XG5cdG1hdGVyaWFsID0gbmV3IExpbmVNYXRlcmlhbCgpO1xuXHRnZW9tZXRyeSA9IG5ldyBMaW5lU2VnbWVudHNHZW9tZXRyeSgpO1xuXG5cdGFwaSA9IGNvbXB1dGVkKCgpID0+ICh7XG5cdFx0c3Vic2NyaWJlOiAoc2VnbWVudFJlZjogTmd0UmVmPFNlZ21lbnRPYmplY3Q+KSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNlZ21lbnRzLnVwZGF0ZSgocykgPT4gWy4uLnMsIHNlZ21lbnRSZWZdKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2VnbWVudHMudXBkYXRlKChzKSA9PiBzLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudCAhPT0gc2VnbWVudFJlZikpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH07XG5cdFx0fSxcblx0fSkpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3NlZ21lbnRzLCBsaW1pdCwgcG9zaXRpb25zLCBjb2xvcnNdID0gW1xuXHRcdFx0XHR0aGlzLnNlZ21lbnRzKCksXG5cdFx0XHRcdHRoaXMubGltaXQoKSxcblx0XHRcdFx0dGhpcy5wb3NpdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5jb2xvcnMoKSxcblx0XHRcdF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2VnbWVudFJlZiA9IHNlZ21lbnRzW2ldO1xuXHRcdFx0XHRjb25zdCBzZWdtZW50ID0gaXMucmVmKHNlZ21lbnRSZWYpID8gc2VnbWVudFJlZi5uYXRpdmVFbGVtZW50IDogc2VnbWVudFJlZjtcblx0XHRcdFx0aWYgKHNlZ21lbnQpIHtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAwXSA9IHNlZ21lbnQuc3RhcnQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAxXSA9IHNlZ21lbnQuc3RhcnQueTtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAyXSA9IHNlZ21lbnQuc3RhcnQuejtcblxuXHRcdFx0XHRcdHBvc2l0aW9uc1tpICogNiArIDNdID0gc2VnbWVudC5lbmQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuZW5kLnk7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgNV0gPSBzZWdtZW50LmVuZC56O1xuXG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMF0gPSBzZWdtZW50LmNvbG9yLnI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMV0gPSBzZWdtZW50LmNvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMl0gPSBzZWdtZW50LmNvbG9yLmI7XG5cblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyAzXSA9IHNlZ21lbnQuY29sb3Iucjtcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuY29sb3IuZztcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA1XSA9IHNlZ21lbnQuY29sb3IuYjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5nZW9tZXRyeS5zZXRDb2xvcnMoY29sb3JzKTtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9zaXRpb25zKHBvc2l0aW9ucyk7XG5cdFx0XHR0aGlzLmxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,61 +0,0 @@
1
- import { BufferAttribute, BufferGeometry, Camera, HalfFloatType, LinearFilter, Mesh, PerspectiveCamera, Scene, Vector2, WebGLRenderTarget, WebGLRenderer, } from 'three';
2
- import { ConvolutionMaterial } from '../convolution-material/convolution-material';
3
- export class BlurPass {
4
- constructor({ gl, resolution, width = 500, height = 500, minDepthThreshold = 0, maxDepthThreshold = 1, depthScale = 0, depthToBlurRatioBias = 0.25, }) {
5
- this.renderToScreen = false;
6
- this.renderTargetA = new WebGLRenderTarget(resolution, resolution, {
7
- minFilter: LinearFilter,
8
- magFilter: LinearFilter,
9
- stencilBuffer: false,
10
- depthBuffer: false,
11
- type: HalfFloatType,
12
- });
13
- this.renderTargetB = this.renderTargetA.clone();
14
- this.convolutionMaterial = new ConvolutionMaterial();
15
- this.convolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);
16
- this.convolutionMaterial.setResolution(new Vector2(width, height));
17
- this.scene = new Scene();
18
- this.camera = new PerspectiveCamera();
19
- this.convolutionMaterial.uniforms['minDepthThreshold'].value = minDepthThreshold;
20
- this.convolutionMaterial.uniforms['maxDepthThreshold'].value = maxDepthThreshold;
21
- this.convolutionMaterial.uniforms['depthScale'].value = depthScale;
22
- this.convolutionMaterial.uniforms['depthToBlurRatioBias'].value = depthToBlurRatioBias;
23
- this.convolutionMaterial.defines['USE_DEPTH'] = depthScale > 0;
24
- const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);
25
- const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);
26
- const geometry = new BufferGeometry();
27
- geometry.setAttribute('position', new BufferAttribute(vertices, 3));
28
- geometry.setAttribute('uv', new BufferAttribute(uvs, 2));
29
- this.screen = new Mesh(geometry, this.convolutionMaterial);
30
- this.screen.frustumCulled = false;
31
- this.scene.add(this.screen);
32
- }
33
- render(renderer, inputBuffer, outputBuffer) {
34
- const scene = this.scene;
35
- const camera = this.camera;
36
- const renderTargetA = this.renderTargetA;
37
- const renderTargetB = this.renderTargetB;
38
- let material = this.convolutionMaterial;
39
- let uniforms = material.uniforms;
40
- uniforms['depthBuffer'].value = inputBuffer.depthTexture;
41
- const kernel = material.kernel;
42
- let lastRT = inputBuffer;
43
- let destRT;
44
- let i, l;
45
- // Apply the multi-pass blur.
46
- for (i = 0, l = kernel.length - 1; i < l; ++i) {
47
- // Alternate between targets.
48
- destRT = (i & 1) === 0 ? renderTargetA : renderTargetB;
49
- uniforms['kernel'].value = kernel[i];
50
- uniforms['inputBuffer'].value = lastRT.texture;
51
- renderer.setRenderTarget(destRT);
52
- renderer.render(scene, camera);
53
- lastRT = destRT;
54
- }
55
- uniforms['kernel'].value = kernel[i];
56
- uniforms['inputBuffer'].value = lastRT.texture;
57
- renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);
58
- renderer.render(scene, camera);
59
- }
60
- }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci1wYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2JsdXItcGFzcy9ibHVyLXBhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixjQUFjLEVBQ2QsTUFBTSxFQUNOLGFBQWEsRUFDYixZQUFZLEVBQ1osSUFBSSxFQUNKLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixhQUFhLEdBQ2IsTUFBTSxPQUFPLENBQUM7QUFFZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQWFuRixNQUFNLE9BQU8sUUFBUTtJQVNwQixZQUFZLEVBQ1gsRUFBRSxFQUNGLFVBQVUsRUFDVixLQUFLLEdBQUcsR0FBRyxFQUNYLE1BQU0sR0FBRyxHQUFHLEVBQ1osaUJBQWlCLEdBQUcsQ0FBQyxFQUNyQixpQkFBaUIsR0FBRyxDQUFDLEVBQ3JCLFVBQVUsR0FBRyxDQUFDLEVBQ2Qsb0JBQW9CLEdBQUcsSUFBSSxHQUNaO1FBWGhCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBWS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQ2xFLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEtBQUss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QUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsNkJBQTZCO1lBQzdCLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDaEI7UUFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDL0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEJ1ZmZlckF0dHJpYnV0ZSxcblx0QnVmZmVyR2VvbWV0cnksXG5cdENhbWVyYSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNZXNoLFxuXHRQZXJzcGVjdGl2ZUNhbWVyYSxcblx0U2NlbmUsXG5cdFZlY3RvcjIsXG5cdFdlYkdMUmVuZGVyVGFyZ2V0LFxuXHRXZWJHTFJlbmRlcmVyLFxufSBmcm9tICd0aHJlZSc7XG5cbmltcG9ydCB7IENvbnZvbHV0aW9uTWF0ZXJpYWwgfSBmcm9tICcuLi9jb252b2x1dGlvbi1tYXRlcmlhbC9jb252b2x1dGlvbi1tYXRlcmlhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1clBhc3NQcm9wcyB7XG5cdGdsOiBXZWJHTFJlbmRlcmVyO1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdHdpZHRoPzogbnVtYmVyO1xuXHRoZWlnaHQ/OiBudW1iZXI7XG5cdG1pbkRlcHRoVGhyZXNob2xkPzogbnVtYmVyO1xuXHRtYXhEZXB0aFRocmVzaG9sZD86IG51bWJlcjtcblx0ZGVwdGhTY2FsZT86IG51bWJlcjtcblx0ZGVwdGhUb0JsdXJSYXRpb0JpYXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCbHVyUGFzcyB7XG5cdHJlYWRvbmx5IHJlbmRlclRhcmdldEE6IFdlYkdMUmVuZGVyVGFyZ2V0O1xuXHRyZWFkb25seSByZW5kZXJUYXJnZXRCOiBXZWJHTFJlbmRlclRhcmdldDtcblx0cmVhZG9ubHkgY29udm9sdXRpb25NYXRlcmlhbDogQ29udm9sdXRpb25NYXRlcmlhbDtcblx0cmVhZG9ubHkgc2NlbmU6IFNjZW5lO1xuXHRyZWFkb25seSBjYW1lcmE6IENhbWVyYTtcblx0cmVhZG9ubHkgc2NyZWVuOiBNZXNoO1xuXHRyZW5kZXJUb1NjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHtcblx0XHRnbCxcblx0XHRyZXNvbHV0aW9uLFxuXHRcdHdpZHRoID0gNTAwLFxuXHRcdGhlaWdodCA9IDUwMCxcblx0XHRtaW5EZXB0aFRocmVzaG9sZCA9IDAsXG5cdFx0bWF4RGVwdGhUaHJlc2hvbGQgPSAxLFxuXHRcdGRlcHRoU2NhbGUgPSAwLFxuXHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzID0gMC4yNSxcblx0fTogQmx1clBhc3NQcm9wcykge1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QSA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCB7XG5cdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHRkZXB0aEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdH0pO1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0QS5jbG9uZSgpO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCA9IG5ldyBDb252b2x1dGlvbk1hdGVyaWFsKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnNldFRleGVsU2l6ZSgxLjAgLyB3aWR0aCwgMS4wIC8gaGVpZ2h0KTtcblx0XHR0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWwuc2V0UmVzb2x1dGlvbihuZXcgVmVjdG9yMih3aWR0aCwgaGVpZ2h0KSk7XG5cdFx0dGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgpO1xuXHRcdHRoaXMuY2FtZXJhID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtaW5EZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWluRGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtYXhEZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWF4RGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydkZXB0aFNjYWxlJ10udmFsdWUgPSBkZXB0aFNjYWxlO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC51bmlmb3Jtc1snZGVwdGhUb0JsdXJSYXRpb0JpYXMnXS52YWx1ZSA9IGRlcHRoVG9CbHVyUmF0aW9CaWFzO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5kZWZpbmVzWydVU0VfREVQVEgnXSA9IGRlcHRoU2NhbGUgPiAwO1xuXHRcdGNvbnN0IHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShbLTEsIC0xLCAwLCAzLCAtMSwgMCwgLTEsIDMsIDBdKTtcblx0XHRjb25zdCB1dnMgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAyLCAwLCAwLCAyXSk7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcblx0XHRnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSh2ZXJ0aWNlcywgMykpO1xuXHRcdGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgndXYnLCBuZXcgQnVmZmVyQXR0cmlidXRlKHV2cywgMikpO1xuXHRcdHRoaXMuc2NyZWVuID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCk7XG5cdFx0dGhpcy5zY3JlZW4uZnJ1c3R1bUN1bGxlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMuc2NyZWVuKTtcblx0fVxuXG5cdHJlbmRlcihyZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgaW5wdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0LCBvdXRwdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0KSB7XG5cdFx0Y29uc3Qgc2NlbmUgPSB0aGlzLnNjZW5lO1xuXHRcdGNvbnN0IGNhbWVyYSA9IHRoaXMuY2FtZXJhO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldEEgPSB0aGlzLnJlbmRlclRhcmdldEE7XG5cdFx0Y29uc3QgcmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0Qjtcblx0XHRsZXQgbWF0ZXJpYWwgPSB0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWw7XG5cdFx0bGV0IHVuaWZvcm1zID0gbWF0ZXJpYWwudW5pZm9ybXM7XG5cdFx0dW5pZm9ybXNbJ2RlcHRoQnVmZmVyJ10udmFsdWUgPSBpbnB1dEJ1ZmZlci5kZXB0aFRleHR1cmU7XG5cdFx0Y29uc3Qga2VybmVsID0gbWF0ZXJpYWwua2VybmVsO1xuXHRcdGxldCBsYXN0UlQgPSBpbnB1dEJ1ZmZlcjtcblx0XHRsZXQgZGVzdFJUO1xuXHRcdGxldCBpLCBsO1xuXHRcdC8vIEFwcGx5IHRoZSBtdWx0aS1wYXNzIGJsdXIuXG5cdFx0Zm9yIChpID0gMCwgbCA9IGtlcm5lbC5sZW5ndGggLSAxOyBpIDwgbDsgKytpKSB7XG5cdFx0XHQvLyBBbHRlcm5hdGUgYmV0d2VlbiB0YXJnZXRzLlxuXHRcdFx0ZGVzdFJUID0gKGkgJiAxKSA9PT0gMCA/IHJlbmRlclRhcmdldEEgOiByZW5kZXJUYXJnZXRCO1xuXHRcdFx0dW5pZm9ybXNbJ2tlcm5lbCddLnZhbHVlID0ga2VybmVsW2ldO1xuXHRcdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRcdHJlbmRlcmVyLnNldFJlbmRlclRhcmdldChkZXN0UlQpO1xuXHRcdFx0cmVuZGVyZXIucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0bGFzdFJUID0gZGVzdFJUO1xuXHRcdH1cblx0XHR1bmlmb3Jtc1sna2VybmVsJ10udmFsdWUgPSBrZXJuZWxbaV07XG5cdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRyZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQodGhpcy5yZW5kZXJUb1NjcmVlbiA/IG51bGwgOiBvdXRwdXRCdWZmZXIpO1xuXHRcdHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0fVxufVxuIl19
@@ -1,130 +0,0 @@
1
- import * as THREE from 'three';
2
- import { shaderMaterial } from '../shader-material/shader-material';
3
- export const CausticsMaterial = shaderMaterial({
4
- cameraMatrixWorld: new THREE.Matrix4(),
5
- cameraProjectionMatrixInv: new THREE.Matrix4(),
6
- normalTexture: null,
7
- depthTexture: null,
8
- lightDir: new THREE.Vector3(0, 1, 0),
9
- lightPlaneNormal: new THREE.Vector3(0, 1, 0),
10
- lightPlaneConstant: 0,
11
- near: 0.1,
12
- far: 100,
13
- modelMatrix: new THREE.Matrix4(),
14
- worldRadius: 1 / 40,
15
- ior: 1.1,
16
- bounces: 0,
17
- resolution: 1024,
18
- size: 10,
19
- intensity: 0.5,
20
- },
21
- /* glsl */ `
22
- varying vec2 vUv;
23
- void main() {
24
- vUv = uv;
25
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
26
- }`,
27
- /* glsl */ `
28
- uniform mat4 cameraMatrixWorld;
29
- uniform mat4 cameraProjectionMatrixInv;
30
- uniform vec3 lightDir;
31
- uniform vec3 lightPlaneNormal;
32
- uniform float lightPlaneConstant;
33
- uniform float near;
34
- uniform float far;
35
- uniform float time;
36
- uniform float worldRadius;
37
- uniform float resolution;
38
- uniform float size;
39
- uniform float intensity;
40
- uniform float ior;
41
- precision highp isampler2D;
42
- precision highp usampler2D;
43
- uniform sampler2D normalTexture;
44
- uniform sampler2D depthTexture;
45
- uniform float bounces;
46
- varying vec2 vUv;
47
- vec3 WorldPosFromDepth(float depth, vec2 coord) {
48
- float z = depth * 2.0 - 1.0;
49
- vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
50
- vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
51
- // Perspective division
52
- viewSpacePosition /= viewSpacePosition.w;
53
- vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
54
- return worldSpacePosition.xyz;
55
- }
56
- float sdPlane( vec3 p, vec3 n, float h ) {
57
- // n must be normalized
58
- return dot(p,n) + h;
59
- }
60
- float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
61
- return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
62
- }
63
- vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
64
- rayOrigin = ro;
65
- rayDirection = rd;
66
- rayDirection = refract(rayDirection, normal, 1.0 / ior);
67
- rayOrigin = pos + rayDirection * 0.1;
68
- return rayDirection;
69
- }
70
- void main() {
71
- // Each sample consists of random offset in the x and y direction
72
- float caustic = 0.0;
73
- float causticTexelSize = (1.0 / resolution) * size * 2.0;
74
- float texelsNeeded = worldRadius / causticTexelSize;
75
- float sampleRadius = texelsNeeded / resolution;
76
- float sum = 0.0;
77
- if (texture2D(depthTexture, vUv).x == 1.0) {
78
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
79
- return;
80
- }
81
- vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
82
- vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
83
- vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
84
- vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
85
- vec2 uv1 = vUv + offset1 * sampleRadius;
86
- vec2 uv2 = vUv + offset2 * sampleRadius;
87
- vec2 uv3 = vUv + offset3 * sampleRadius;
88
- vec2 uv4 = vUv + offset4 * sampleRadius;
89
- vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
90
- vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
91
- vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
92
- vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
93
- float depth1 = texture2D(depthTexture, uv1, -10.0).x;
94
- float depth2 = texture2D(depthTexture, uv2, -10.0).x;
95
- float depth3 = texture2D(depthTexture, uv3, -10.0).x;
96
- float depth4 = texture2D(depthTexture, uv4, -10.0).x;
97
- // Sanity check the depths
98
- if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
99
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
100
- return;
101
- }
102
- vec3 pos1 = WorldPosFromDepth(depth1, uv1);
103
- vec3 pos2 = WorldPosFromDepth(depth2, uv2);
104
- vec3 pos3 = WorldPosFromDepth(depth3, uv3);
105
- vec3 pos4 = WorldPosFromDepth(depth4, uv4);
106
- vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
107
- vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
108
- vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
109
- vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
110
- vec3 endPos1, endPos2, endPos3, endPos4;
111
- vec3 endDir1, endDir2, endDir3, endDir4;
112
- totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
113
- totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
114
- totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
115
- totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
116
- float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
117
- float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
118
- float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
119
- float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
120
- float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
121
- vec3 finalPos1 = endPos1 + endDir1 * t1;
122
- vec3 finalPos2 = endPos2 + endDir2 * t2;
123
- vec3 finalPos3 = endPos3 + endDir3 * t3;
124
- vec3 finalPos4 = endPos4 + endDir4 * t4;
125
- float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
126
- caustic += intensity * (lightPosArea / finalArea);
127
- // Calculate the area of the triangle in light spaces
128
- gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
129
- }`);
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY2F1c3RpY3MvY2F1c3RpY3MtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDN0M7SUFDQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDdEMseUJBQXlCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQzlDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLGtCQUFrQixFQUFFLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUc7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDaEMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25CLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSTtJQUNoQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxHQUFHO0NBQ2Q7QUFDRCxVQUFVLENBQUM7Ozs7O0lBS1I7QUFDSCxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNHUixDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2FtZXJhTWF0cml4V29ybGQ6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdFx0Y2FtZXJhUHJvamVjdGlvbk1hdHJpeEludjogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRub3JtYWxUZXh0dXJlOiBudWxsLFxuXHRcdGRlcHRoVGV4dHVyZTogbnVsbCxcblx0XHRsaWdodERpcjogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZU5vcm1hbDogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZUNvbnN0YW50OiAwLFxuXHRcdG5lYXI6IDAuMSxcblx0XHRmYXI6IDEwMCxcblx0XHRtb2RlbE1hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHR3b3JsZFJhZGl1czogMSAvIDQwLFxuXHRcdGlvcjogMS4xLFxuXHRcdGJvdW5jZXM6IDAsXG5cdFx0cmVzb2x1dGlvbjogMTAyNCxcblx0XHRzaXplOiAxMCxcblx0XHRpbnRlbnNpdHk6IDAuNSxcblx0fSxcblx0LyogZ2xzbCAqLyBgXG4gIHZhcnlpbmcgdmVjMiB2VXY7XG4gIHZvaWQgbWFpbigpIHtcbiAgICAgIHZVdiA9IHV2O1xuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgfWAsXG5cdC8qIGdsc2wgKi8gYFxuICB1bmlmb3JtIG1hdDQgY2FtZXJhTWF0cml4V29ybGQ7XG4gIHVuaWZvcm0gbWF0NCBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52O1xuICB1bmlmb3JtIHZlYzMgbGlnaHREaXI7XG4gIHVuaWZvcm0gdmVjMyBsaWdodFBsYW5lTm9ybWFsO1xuICB1bmlmb3JtIGZsb2F0IGxpZ2h0UGxhbmVDb25zdGFudDtcbiAgdW5pZm9ybSBmbG9hdCBuZWFyO1xuICB1bmlmb3JtIGZsb2F0IGZhcjtcbiAgdW5pZm9ybSBmbG9hdCB0aW1lO1xuICB1bmlmb3JtIGZsb2F0IHdvcmxkUmFkaXVzO1xuICB1bmlmb3JtIGZsb2F0IHJlc29sdXRpb247XG4gIHVuaWZvcm0gZmxvYXQgc2l6ZTtcbiAgdW5pZm9ybSBmbG9hdCBpbnRlbnNpdHk7XG4gIHVuaWZvcm0gZmxvYXQgaW9yO1xuICBwcmVjaXNpb24gaGlnaHAgaXNhbXBsZXIyRDtcbiAgcHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbFRleHR1cmU7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoVGV4dHVyZTtcbiAgdW5pZm9ybSBmbG9hdCBib3VuY2VzO1xuICB2YXJ5aW5nIHZlYzIgdlV2O1xuICB2ZWMzIFdvcmxkUG9zRnJvbURlcHRoKGZsb2F0IGRlcHRoLCB2ZWMyIGNvb3JkKSB7XG4gICAgZmxvYXQgeiA9IGRlcHRoICogMi4wIC0gMS4wO1xuICAgIHZlYzQgY2xpcFNwYWNlUG9zaXRpb24gPSB2ZWM0KGNvb3JkICogMi4wIC0gMS4wLCB6LCAxLjApO1xuICAgIHZlYzQgdmlld1NwYWNlUG9zaXRpb24gPSBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52ICogY2xpcFNwYWNlUG9zaXRpb247XG4gICAgLy8gUGVyc3BlY3RpdmUgZGl2aXNpb25cbiAgICB2aWV3U3BhY2VQb3NpdGlvbiAvPSB2aWV3U3BhY2VQb3NpdGlvbi53O1xuICAgIHZlYzQgd29ybGRTcGFjZVBvc2l0aW9uID0gY2FtZXJhTWF0cml4V29ybGQgKiB2aWV3U3BhY2VQb3NpdGlvbjtcbiAgICByZXR1cm4gd29ybGRTcGFjZVBvc2l0aW9uLnh5ejtcbiAgfVxuICBmbG9hdCBzZFBsYW5lKCB2ZWMzIHAsIHZlYzMgbiwgZmxvYXQgaCApIHtcbiAgICAvLyBuIG11c3QgYmUgbm9ybWFsaXplZFxuICAgIHJldHVybiBkb3QocCxuKSArIGg7XG4gIH1cbiAgZmxvYXQgcGxhbmVJbnRlcnNlY3QoIHZlYzMgcm8sIHZlYzMgcmQsIHZlYzQgcCApIHtcbiAgICByZXR1cm4gLShkb3Qocm8scC54eXopK3AudykvZG90KHJkLHAueHl6KTtcbiAgfVxuICB2ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgcG9zLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBvdXQgdmVjMyByYXlPcmlnaW4sIG91dCB2ZWMzIHJheURpcmVjdGlvbikge1xuICAgIHJheU9yaWdpbiA9IHJvO1xuICAgIHJheURpcmVjdGlvbiA9IHJkO1xuICAgIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gICAgcmF5T3JpZ2luID0gcG9zICsgcmF5RGlyZWN0aW9uICogMC4xO1xuICAgIHJldHVybiByYXlEaXJlY3Rpb247XG4gIH1cbiAgdm9pZCBtYWluKCkge1xuICAgIC8vIEVhY2ggc2FtcGxlIGNvbnNpc3RzIG9mIHJhbmRvbSBvZmZzZXQgaW4gdGhlIHggYW5kIHkgZGlyZWN0aW9uXG4gICAgZmxvYXQgY2F1c3RpYyA9IDAuMDtcbiAgICBmbG9hdCBjYXVzdGljVGV4ZWxTaXplID0gKDEuMCAvIHJlc29sdXRpb24pICogc2l6ZSAqIDIuMDtcbiAgICBmbG9hdCB0ZXhlbHNOZWVkZWQgPSB3b3JsZFJhZGl1cyAvIGNhdXN0aWNUZXhlbFNpemU7XG4gICAgZmxvYXQgc2FtcGxlUmFkaXVzID0gdGV4ZWxzTmVlZGVkIC8gcmVzb2x1dGlvbjtcbiAgICBmbG9hdCBzdW0gPSAwLjA7XG4gICAgaWYgKHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHZVdikueCA9PSAxLjApIHtcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVjMiBvZmZzZXQxID0gdmVjMigtMC41LCAtMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MiA9IHZlYzIoLTAuNSwgMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MyA9IHZlYzIoMC41LCAwLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiBvZmZzZXQ0ID0gdmVjMigwLjUsIC0wLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiB1djEgPSB2VXYgKyBvZmZzZXQxICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzIgdXYyID0gdlV2ICsgb2Zmc2V0MiAqIHNhbXBsZVJhZGl1cztcbiAgICB2ZWMyIHV2MyA9IHZVdiArIG9mZnNldDMgKiBzYW1wbGVSYWRpdXM7XG4gICAgdmVjMiB1djQgPSB2VXYgKyBvZmZzZXQ0ICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzMgbm9ybWFsMSA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djEsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgdmVjMyBub3JtYWwyID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MiwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgICB2ZWMzIG5vcm1hbDMgPSB0ZXh0dXJlMkQobm9ybWFsVGV4dHVyZSwgdXYzLCAtMTAuMCkucmdiICogMi4wIC0gMS4wO1xuICAgIHZlYzMgbm9ybWFsNCA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djQsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgZmxvYXQgZGVwdGgxID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYxLCAtMTAuMCkueDtcbiAgICBmbG9hdCBkZXB0aDIgPSB0ZXh0dXJlMkQoZGVwdGhUZXh0dXJlLCB1djIsIC0xMC4wKS54O1xuICAgIGZsb2F0IGRlcHRoMyA9IHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHV2MywgLTEwLjApLng7XG4gICAgZmxvYXQgZGVwdGg0ID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXY0LCAtMTAuMCkueDtcbiAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIGRlcHRoc1xuICAgIGlmIChkZXB0aDEgPT0gMS4wIHx8IGRlcHRoMiA9PSAxLjAgfHwgZGVwdGgzID09IDEuMCB8fCBkZXB0aDQgPT0gMS4wKSB7XG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZlYzMgcG9zMSA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoMSwgdXYxKTtcbiAgICB2ZWMzIHBvczIgPSBXb3JsZFBvc0Zyb21EZXB0aChkZXB0aDIsIHV2Mik7XG4gICAgdmVjMyBwb3MzID0gV29ybGRQb3NGcm9tRGVwdGgoZGVwdGgzLCB1djMpO1xuICAgIHZlYzMgcG9zNCA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoNCwgdXY0KTtcbiAgICB2ZWMzIG9yaWdpblBvczEgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2MSk7XG4gICAgdmVjMyBvcmlnaW5Qb3MyID0gV29ybGRQb3NGcm9tRGVwdGgoMC4wLCB1djIpO1xuICAgIHZlYzMgb3JpZ2luUG9zMyA9IFdvcmxkUG9zRnJvbURlcHRoKDAuMCwgdXYzKTtcbiAgICB2ZWMzIG9yaWdpblBvczQgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2NCk7XG4gICAgdmVjMyBlbmRQb3MxLCBlbmRQb3MyLCBlbmRQb3MzLCBlbmRQb3M0O1xuICAgIHZlYzMgZW5kRGlyMSwgZW5kRGlyMiwgZW5kRGlyMywgZW5kRGlyNDtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MxLCBsaWdodERpciwgcG9zMSwgbm9ybWFsMSwgaW9yLCBlbmRQb3MxLCBlbmREaXIxKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MyLCBsaWdodERpciwgcG9zMiwgbm9ybWFsMiwgaW9yLCBlbmRQb3MyLCBlbmREaXIyKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MzLCBsaWdodERpciwgcG9zMywgbm9ybWFsMywgaW9yLCBlbmRQb3MzLCBlbmREaXIzKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3M0LCBsaWdodERpciwgcG9zNCwgbm9ybWFsNCwgaW9yLCBlbmRQb3M0LCBlbmREaXI0KTtcbiAgICBmbG9hdCBsaWdodFBvc0FyZWEgPSBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMiAtIG9yaWdpblBvczEsIG9yaWdpblBvczMgLSBvcmlnaW5Qb3MxKSkgKyBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMyAtIG9yaWdpblBvczEsIG9yaWdpblBvczQgLSBvcmlnaW5Qb3MxKSk7XG4gICAgZmxvYXQgdDEgPSBwbGFuZUludGVyc2VjdChlbmRQb3MxLCBlbmREaXIxLCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIGZsb2F0IHQyID0gcGxhbmVJbnRlcnNlY3QoZW5kUG9zMiwgZW5kRGlyMiwgdmVjNChsaWdodFBsYW5lTm9ybWFsLCBsaWdodFBsYW5lQ29uc3RhbnQpKTtcbiAgICBmbG9hdCB0MyA9IHBsYW5lSW50ZXJzZWN0KGVuZFBvczMsIGVuZERpcjMsIHZlYzQobGlnaHRQbGFuZU5vcm1hbCwgbGlnaHRQbGFuZUNvbnN0YW50KSk7XG4gICAgZmxvYXQgdDQgPSBwbGFuZUludGVyc2VjdChlbmRQb3M0LCBlbmREaXI0LCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIHZlYzMgZmluYWxQb3MxID0gZW5kUG9zMSArIGVuZERpcjEgKiB0MTtcbiAgICB2ZWMzIGZpbmFsUG9zMiA9IGVuZFBvczIgKyBlbmREaXIyICogdDI7XG4gICAgdmVjMyBmaW5hbFBvczMgPSBlbmRQb3MzICsgZW5kRGlyMyAqIHQzO1xuICAgIHZlYzMgZmluYWxQb3M0ID0gZW5kUG9zNCArIGVuZERpcjQgKiB0NDtcbiAgICBmbG9hdCBmaW5hbEFyZWEgPSBsZW5ndGgoY3Jvc3MoZmluYWxQb3MyIC0gZmluYWxQb3MxLCBmaW5hbFBvczMgLSBmaW5hbFBvczEpKSArIGxlbmd0aChjcm9zcyhmaW5hbFBvczMgLSBmaW5hbFBvczEsIGZpbmFsUG9zNCAtIGZpbmFsUG9zMSkpO1xuICAgIGNhdXN0aWMgKz0gaW50ZW5zaXR5ICogKGxpZ2h0UG9zQXJlYSAvIGZpbmFsQXJlYSk7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBhcmVhIG9mIHRoZSB0cmlhbmdsZSBpbiBsaWdodCBzcGFjZXNcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMobWF4KGNhdXN0aWMsIDAuMCkpLCAxLjApO1xuICB9YCxcbik7XG4iXX0=
@@ -1,31 +0,0 @@
1
- import * as THREE from 'three';
2
- import { shaderMaterial } from '../shader-material/shader-material';
3
- export const CausticsProjectionMaterial = shaderMaterial({
4
- causticsTexture: null,
5
- causticsTextureB: null,
6
- color: new THREE.Color(),
7
- lightProjMatrix: new THREE.Matrix4(),
8
- lightViewMatrix: new THREE.Matrix4(),
9
- }, `varying vec3 vWorldPosition;
10
- void main() {
11
- gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
12
- vec4 worldPosition = modelMatrix * vec4(position, 1.);
13
- vWorldPosition = worldPosition.xyz;
14
- }`, `varying vec3 vWorldPosition;
15
- uniform vec3 color;
16
- uniform sampler2D causticsTexture;
17
- uniform sampler2D causticsTextureB;
18
- uniform mat4 lightProjMatrix;
19
- uniform mat4 lightViewMatrix;
20
- void main() {
21
- // Apply caustics
22
- vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
23
- lightSpacePos.xyz /= lightSpacePos.w;
24
- lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
25
- vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
26
- vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
27
- gl_FragColor = vec4((front + back) * color, 1.0);
28
- #include <tonemapping_fragment>
29
- #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
30
- }`);
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9jYXVzdGljcy9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQ3ZEO0lBQ0MsZUFBZSxFQUFFLElBQUk7SUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3hCLGVBQWUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDcEMsZUFBZSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtDQUNwQyxFQUNEOzs7OztLQUtJLEVBQ0o7Ozs7Ozs7Ozs7Ozs7OztnQkFlZSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0tBQzdHLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnLi4vc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG5cbmV4cG9ydCBjb25zdCBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2F1c3RpY3NUZXh0dXJlOiBudWxsLFxuXHRcdGNhdXN0aWNzVGV4dHVyZUI6IG51bGwsXG5cdFx0Y29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuXHRcdGxpZ2h0UHJvak1hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRsaWdodFZpZXdNYXRyaXg6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdH0sXG5cdGB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gICB2b2lkIG1haW4oKSB7XG4gICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZpZXdNYXRyaXggKiBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuKTtcbiAgICAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLik7XG4gICAgIHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG4gICB9YCxcblx0YHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdW5pZm9ybSB2ZWMzIGNvbG9yO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBjYXVzdGljc1RleHR1cmU7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZUI7XG4gIHVuaWZvcm0gbWF0NCBsaWdodFByb2pNYXRyaXg7XG4gIHVuaWZvcm0gbWF0NCBsaWdodFZpZXdNYXRyaXg7XG4gICB2b2lkIG1haW4oKSB7XG4gICAgLy8gQXBwbHkgY2F1c3RpY3NcbiAgICB2ZWM0IGxpZ2h0U3BhY2VQb3MgPSBsaWdodFByb2pNYXRyaXggKiBsaWdodFZpZXdNYXRyaXggKiB2ZWM0KHZXb3JsZFBvc2l0aW9uLCAxLjApO1xuICAgIGxpZ2h0U3BhY2VQb3MueHl6IC89IGxpZ2h0U3BhY2VQb3MudztcbiAgICBsaWdodFNwYWNlUG9zLnh5eiA9IGxpZ2h0U3BhY2VQb3MueHl6ICogMC41ICsgMC41O1xuICAgIHZlYzMgZnJvbnQgPSB0ZXh0dXJlMkQoY2F1c3RpY3NUZXh0dXJlLCBsaWdodFNwYWNlUG9zLnh5KS5yZ2I7XG4gICAgdmVjMyBiYWNrID0gdGV4dHVyZTJEKGNhdXN0aWNzVGV4dHVyZUIsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KChmcm9udCArIGJhY2spICogY29sb3IsIDEuMCk7XG4gICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuICAgICNpbmNsdWRlIDwke3BhcnNlSW50KFRIUkVFLlJFVklTSU9OLnJlcGxhY2UoL1xcRCsvZywgJycpKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gICB9YCxcbik7XG4iXX0=
@@ -1,94 +0,0 @@
1
- import { NoBlending, ShaderMaterial, Uniform, Vector2 } from 'three';
2
- export class ConvolutionMaterial extends ShaderMaterial {
3
- constructor(texelSize = new Vector2()) {
4
- super({
5
- uniforms: {
6
- inputBuffer: new Uniform(null),
7
- depthBuffer: new Uniform(null),
8
- resolution: new Uniform(new Vector2()),
9
- texelSize: new Uniform(new Vector2()),
10
- halfTexelSize: new Uniform(new Vector2()),
11
- kernel: new Uniform(0.0),
12
- scale: new Uniform(1.0),
13
- cameraNear: new Uniform(0.0),
14
- cameraFar: new Uniform(1.0),
15
- minDepthThreshold: new Uniform(0.0),
16
- maxDepthThreshold: new Uniform(1.0),
17
- depthScale: new Uniform(0.0),
18
- depthToBlurRatioBias: new Uniform(0.25),
19
- },
20
- fragmentShader: `#include <common>
21
- #include <dithering_pars_fragment>
22
- uniform sampler2D inputBuffer;
23
- uniform sampler2D depthBuffer;
24
- uniform float cameraNear;
25
- uniform float cameraFar;
26
- uniform float minDepthThreshold;
27
- uniform float maxDepthThreshold;
28
- uniform float depthScale;
29
- uniform float depthToBlurRatioBias;
30
- varying vec2 vUv;
31
- varying vec2 vUv0;
32
- varying vec2 vUv1;
33
- varying vec2 vUv2;
34
- varying vec2 vUv3;
35
-
36
- void main() {
37
- float depthFactor = 0.0;
38
-
39
- #ifdef USE_DEPTH
40
- vec4 depth = texture2D(depthBuffer, vUv);
41
- depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));
42
- depthFactor *= depthScale;
43
- depthFactor = max(0.0, min(1.0, depthFactor + 0.25));
44
- #endif
45
-
46
- vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));
47
- sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));
48
- sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));
49
- sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));
50
- gl_FragColor = sum * 0.25 ;
51
-
52
- #include <dithering_fragment>
53
- #include <tonemapping_fragment>
54
- #include <encodings_fragment>
55
- }`,
56
- vertexShader: `uniform vec2 texelSize;
57
- uniform vec2 halfTexelSize;
58
- uniform float kernel;
59
- uniform float scale;
60
- varying vec2 vUv;
61
- varying vec2 vUv0;
62
- varying vec2 vUv1;
63
- varying vec2 vUv2;
64
- varying vec2 vUv3;
65
-
66
- void main() {
67
- vec2 uv = position.xy * 0.5 + 0.5;
68
- vUv = uv;
69
-
70
- vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;
71
- vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);
72
- vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);
73
- vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);
74
- vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);
75
-
76
- gl_Position = vec4(position.xy, 1.0, 1.0);
77
- }`,
78
- blending: NoBlending,
79
- depthWrite: false,
80
- depthTest: false,
81
- });
82
- this.toneMapped = false;
83
- this.setTexelSize(texelSize.x, texelSize.y);
84
- this.kernel = new Float32Array([0.0, 1.0, 2.0, 2.0, 3.0]);
85
- }
86
- setTexelSize(x, y) {
87
- this.uniforms['texelSize'].value.set(x, y);
88
- this.uniforms['halfTexelSize'].value.set(x, y).multiplyScalar(0.5);
89
- }
90
- setResolution(resolution) {
91
- this.uniforms['resolution'].value.copy(resolution);
92
- }
93
- }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udm9sdXRpb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQUV0RCxZQUFZLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUNwQyxLQUFLLENBQUM7WUFDTCxRQUFRLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLG9CQUFvQixFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQzthQUN2QztZQUNELGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFtQ1Q7WUFDUCxZQUFZLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFCUDtZQUNQLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb0JsZW5kaW5nLCBTaGFkZXJNYXRlcmlhbCwgVW5pZm9ybSwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGNsYXNzIENvbnZvbHV0aW9uTWF0ZXJpYWwgZXh0ZW5kcyBTaGFkZXJNYXRlcmlhbCB7XG5cdHJlYWRvbmx5IGtlcm5lbDogRmxvYXQzMkFycmF5O1xuXHRjb25zdHJ1Y3Rvcih0ZXhlbFNpemUgPSBuZXcgVmVjdG9yMigpKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0dW5pZm9ybXM6IHtcblx0XHRcdFx0aW5wdXRCdWZmZXI6IG5ldyBVbmlmb3JtKG51bGwpLFxuXHRcdFx0XHRkZXB0aEJ1ZmZlcjogbmV3IFVuaWZvcm0obnVsbCksXG5cdFx0XHRcdHJlc29sdXRpb246IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHR0ZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHRoYWxmVGV4ZWxTaXplOiBuZXcgVW5pZm9ybShuZXcgVmVjdG9yMigpKSxcblx0XHRcdFx0a2VybmVsOiBuZXcgVW5pZm9ybSgwLjApLFxuXHRcdFx0XHRzY2FsZTogbmV3IFVuaWZvcm0oMS4wKSxcblx0XHRcdFx0Y2FtZXJhTmVhcjogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0Y2FtZXJhRmFyOiBuZXcgVW5pZm9ybSgxLjApLFxuXHRcdFx0XHRtaW5EZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0bWF4RGVwdGhUaHJlc2hvbGQ6IG5ldyBVbmlmb3JtKDEuMCksXG5cdFx0XHRcdGRlcHRoU2NhbGU6IG5ldyBVbmlmb3JtKDAuMCksXG5cdFx0XHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzOiBuZXcgVW5pZm9ybSgwLjI1KSxcblx0XHRcdH0sXG5cdFx0XHRmcmFnbWVudFNoYWRlcjogYCNpbmNsdWRlIDxjb21tb24+XG4gICAgICAgICNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgaW5wdXRCdWZmZXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoQnVmZmVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICBmbG9hdCBkZXB0aEZhY3RvciA9IDAuMDtcblxuICAgICAgICAgICNpZmRlZiBVU0VfREVQVEhcbiAgICAgICAgICAgIHZlYzQgZGVwdGggPSB0ZXh0dXJlMkQoZGVwdGhCdWZmZXIsIHZVdik7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciAqPSBkZXB0aFNjYWxlO1xuICAgICAgICAgICAgZGVwdGhGYWN0b3IgPSBtYXgoMC4wLCBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuMjUpKTtcbiAgICAgICAgICAjZW5kaWZcblxuICAgICAgICAgIHZlYzQgc3VtID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MCwgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIHN1bSArPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIG1peCh2VXYxLCB2VXYsIGRlcHRoRmFjdG9yKSk7XG4gICAgICAgICAgc3VtICs9IHRleHR1cmUyRChpbnB1dEJ1ZmZlciwgbWl4KHZVdjIsIHZVdiwgZGVwdGhGYWN0b3IpKTtcbiAgICAgICAgICBzdW0gKz0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MywgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHN1bSAqIDAuMjUgO1xuXG4gICAgICAgICAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbiAgICAgICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAgICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgICAgfWAsXG5cdFx0XHR2ZXJ0ZXhTaGFkZXI6IGB1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuICAgICAgICB1bmlmb3JtIHZlYzIgaGFsZlRleGVsU2l6ZTtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBrZXJuZWw7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgc2NhbGU7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICB2ZWMyIHV2ID0gcG9zaXRpb24ueHkgKiAwLjUgKyAwLjU7XG4gICAgICAgICAgdlV2ID0gdXY7XG5cbiAgICAgICAgICB2ZWMyIGRVdiA9ICh0ZXhlbFNpemUgKiB2ZWMyKGtlcm5lbCkgKyBoYWxmVGV4ZWxTaXplKSAqIHNjYWxlO1xuICAgICAgICAgIHZVdjAgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSArIGRVdi55KTtcbiAgICAgICAgICB2VXYxID0gdmVjMih1di54ICsgZFV2LngsIHV2LnkgKyBkVXYueSk7XG4gICAgICAgICAgdlV2MiA9IHZlYzIodXYueCArIGRVdi54LCB1di55IC0gZFV2LnkpO1xuICAgICAgICAgIHZVdjMgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSAtIGRVdi55KTtcblxuICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMS4wLCAxLjApO1xuICAgICAgICB9YCxcblx0XHRcdGJsZW5kaW5nOiBOb0JsZW5kaW5nLFxuXHRcdFx0ZGVwdGhXcml0ZTogZmFsc2UsXG5cdFx0XHRkZXB0aFRlc3Q6IGZhbHNlLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy50b25lTWFwcGVkID0gZmFsc2U7XG5cdFx0dGhpcy5zZXRUZXhlbFNpemUodGV4ZWxTaXplLngsIHRleGVsU2l6ZS55KTtcblx0XHR0aGlzLmtlcm5lbCA9IG5ldyBGbG9hdDMyQXJyYXkoWzAuMCwgMS4wLCAyLjAsIDIuMCwgMy4wXSk7XG5cdH1cblxuXHRzZXRUZXhlbFNpemUoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnVuaWZvcm1zWyd0ZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSk7XG5cdFx0dGhpcy51bmlmb3Jtc1snaGFsZlRleGVsU2l6ZSddLnZhbHVlLnNldCh4LCB5KS5tdWx0aXBseVNjYWxhcigwLjUpO1xuXHR9XG5cdHNldFJlc29sdXRpb24ocmVzb2x1dGlvbjogVmVjdG9yMikge1xuXHRcdHRoaXMudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5jb3B5KHJlc29sdXRpb24pO1xuXHR9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { shaderMaterial } from '../shader-material/shader-material';
2
- export const DiscardMaterial = shaderMaterial({}, 'void main() { }', 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQzVDLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsb0VBQW9FLENBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgRGlzY2FyZE1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG5cdHt9LFxuXHQndm9pZCBtYWluKCkgeyB9Jyxcblx0J3ZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOyBkaXNjYXJkOyAgfScsXG4pO1xuIl19