angular-three-soba 1.13.0 → 2.0.0-beta.2

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 (428) hide show
  1. package/README.md +2 -2
  2. package/abstractions/billboard/billboard.d.ts +24 -0
  3. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
  4. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
  5. package/abstractions/edges/edges.d.ts +22 -0
  6. package/abstractions/gizmo-helper/gizmo-helper.d.ts +34 -0
  7. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  8. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
  9. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
  10. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
  11. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +47 -0
  12. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +40 -0
  13. package/abstractions/index.d.ts +11 -11
  14. package/abstractions/line/line-input.d.ts +42 -0
  15. package/abstractions/line/line.d.ts +35 -0
  16. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +23 -0
  17. package/abstractions/text/text.d.ts +77 -0
  18. package/abstractions/text-3d/text-3d.d.ts +74 -0
  19. package/cameras/{lib/camera → camera}/camera-content.d.ts +2 -2
  20. package/cameras/camera/camera.d.ts +23 -0
  21. package/cameras/cube-camera/cube-camera.d.ts +42 -0
  22. package/cameras/index.d.ts +5 -4
  23. package/cameras/orthographic-camera/orthographic-camera.d.ts +26 -0
  24. package/controls/index.d.ts +1 -1
  25. package/controls/orbit-controls/orbit-controls.d.ts +35 -0
  26. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +5 -0
  27. package/esm2022/abstractions/billboard/billboard.mjs +71 -0
  28. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
  29. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
  30. package/esm2022/abstractions/edges/edges.mjs +93 -0
  31. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
  32. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  33. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
  34. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
  35. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
  36. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
  37. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
  38. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
  39. package/esm2022/abstractions/index.mjs +12 -0
  40. package/esm2022/abstractions/line/line-input.mjs +113 -0
  41. package/esm2022/abstractions/line/line.mjs +165 -0
  42. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
  43. package/esm2022/abstractions/text/text.mjs +275 -0
  44. package/esm2022/abstractions/text-3d/text-3d.mjs +167 -0
  45. package/esm2022/angular-three-soba.mjs +5 -0
  46. package/esm2022/cameras/angular-three-soba-cameras.mjs +5 -0
  47. package/esm2022/cameras/camera/camera-content.mjs +21 -0
  48. package/esm2022/cameras/camera/camera.mjs +71 -0
  49. package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
  50. package/esm2022/cameras/index.mjs +6 -0
  51. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
  52. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -0
  53. package/esm2022/controls/angular-three-soba-controls.mjs +5 -0
  54. package/esm2022/controls/index.mjs +2 -0
  55. package/esm2022/controls/orbit-controls/orbit-controls.mjs +165 -0
  56. package/esm2022/index.mjs +2 -0
  57. package/esm2022/loaders/angular-three-soba-loaders.mjs +5 -0
  58. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +33 -0
  59. package/esm2022/loaders/index.mjs +5 -0
  60. package/esm2022/loaders/loader/loader.mjs +133 -0
  61. package/esm2022/loaders/progress/progress.mjs +52 -0
  62. package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
  63. package/esm2022/materials/angular-three-soba-materials.mjs +5 -0
  64. package/esm2022/materials/index.mjs +6 -0
  65. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
  66. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
  67. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
  68. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
  69. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
  70. package/esm2022/misc/angular-three-soba-misc.mjs +5 -0
  71. package/esm2022/misc/animations/animations.mjs +55 -0
  72. package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
  73. package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
  74. package/esm2022/misc/fbo/fbo.mjs +47 -0
  75. package/esm2022/misc/index.mjs +5 -0
  76. package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
  77. package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
  78. package/esm2022/performance/angular-three-soba-performance.mjs +5 -0
  79. package/esm2022/performance/detailed/detailed.mjs +61 -0
  80. package/esm2022/performance/index.mjs +7 -0
  81. package/esm2022/performance/instances/instance.mjs +48 -0
  82. package/esm2022/performance/instances/instances.mjs +189 -0
  83. package/esm2022/performance/instances/position-mesh.mjs +52 -0
  84. package/esm2022/performance/stats/stats.mjs +79 -0
  85. package/esm2022/shaders/angular-three-soba-shaders.mjs +5 -0
  86. package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
  87. package/esm2022/shaders/caustics-material/caustics-material.mjs +128 -0
  88. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
  89. package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
  90. package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
  91. package/esm2022/shaders/index.mjs +15 -0
  92. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -0
  93. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
  94. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
  95. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
  96. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
  97. package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
  98. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +33 -0
  99. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
  100. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
  101. package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
  102. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
  103. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
  104. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
  105. package/esm2022/staging/angular-three-soba-staging.mjs +5 -0
  106. package/esm2022/staging/bounds/bounds.mjs +307 -0
  107. package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
  108. package/esm2022/staging/caustics/caustisc.mjs +384 -0
  109. package/esm2022/staging/center/center.mjs +148 -0
  110. package/esm2022/staging/cloud/cloud.mjs +164 -0
  111. package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
  112. package/esm2022/staging/environment/assets.mjs +13 -0
  113. package/esm2022/staging/environment/environment-cube.mjs +49 -0
  114. package/esm2022/staging/environment/environment-ground.mjs +43 -0
  115. package/esm2022/staging/environment/environment-input.mjs +106 -0
  116. package/esm2022/staging/environment/environment-map.mjs +53 -0
  117. package/esm2022/staging/environment/environment-portal.mjs +135 -0
  118. package/esm2022/staging/environment/environment.mjs +78 -0
  119. package/esm2022/staging/environment/utils.mjs +84 -0
  120. package/esm2022/staging/float/float.mjs +82 -0
  121. package/esm2022/staging/index.mjs +18 -0
  122. package/esm2022/staging/sky/sky.mjs +114 -0
  123. package/esm2022/staging/sparkles/sparkles.mjs +161 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
  125. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
  126. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
  127. package/esm2022/staging/spot-light/spot-light.mjs +94 -0
  128. package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
  129. package/esm2022/staging/stage/stage.mjs +374 -0
  130. package/esm2022/staging/stars/stars.mjs +148 -0
  131. package/fesm2022/angular-three-soba-abstractions.mjs +2271 -0
  132. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -0
  133. package/{fesm2015 → fesm2022}/angular-three-soba-cameras.mjs +141 -137
  134. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -0
  135. package/fesm2022/angular-three-soba-controls.mjs +171 -0
  136. package/fesm2022/angular-three-soba-controls.mjs.map +1 -0
  137. package/fesm2022/angular-three-soba-loaders.mjs +244 -0
  138. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -0
  139. package/{fesm2020 → fesm2022}/angular-three-soba-materials.mjs +363 -281
  140. package/fesm2022/angular-three-soba-materials.mjs.map +1 -0
  141. package/fesm2022/angular-three-soba-misc.mjs +169 -0
  142. package/fesm2022/angular-three-soba-misc.mjs.map +1 -0
  143. package/fesm2022/angular-three-soba-performance.mjs +487 -0
  144. package/fesm2022/angular-three-soba-performance.mjs.map +1 -0
  145. package/{fesm2020 → fesm2022}/angular-three-soba-shaders.mjs +58 -10
  146. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -0
  147. package/fesm2022/angular-three-soba-staging.mjs +3826 -0
  148. package/fesm2022/angular-three-soba-staging.mjs.map +1 -0
  149. package/fesm2022/angular-three-soba.mjs.map +1 -0
  150. package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
  151. package/loaders/index.d.ts +4 -5
  152. package/loaders/loader/loader.d.ts +31 -0
  153. package/loaders/progress/progress.d.ts +9 -0
  154. package/loaders/texture-loader/texture-loader.d.ts +7 -0
  155. package/materials/index.d.ts +5 -5
  156. package/materials/mesh-distort-material/mesh-distort-material.d.ts +30 -0
  157. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
  158. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
  159. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +91 -0
  160. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +20 -0
  161. package/misc/animations/animations.d.ts +13 -0
  162. package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
  163. package/misc/depth-buffer/depth-buffer.d.ts +9 -0
  164. package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
  165. package/misc/index.d.ts +4 -4
  166. package/package.json +45 -68
  167. package/performance/adaptive/adaptive-dpr.d.ts +8 -0
  168. package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
  169. package/performance/detailed/detailed.d.ts +20 -0
  170. package/performance/index.d.ts +6 -4
  171. package/performance/instances/instance.d.ts +9 -0
  172. package/performance/instances/instances.d.ts +35 -0
  173. package/performance/instances/position-mesh.d.ts +10 -0
  174. package/performance/stats/stats.d.ts +18 -0
  175. package/plugin/package.json +1 -1
  176. package/plugin/src/generators/init/compat.js +1 -1
  177. package/plugin/src/generators/init/compat.js.map +1 -1
  178. package/plugin/src/generators/init/init.d.ts +2 -2
  179. package/plugin/src/generators/init/init.js +2 -2
  180. package/plugin/src/generators/init/init.js.map +1 -1
  181. package/plugin/src/index.js.map +1 -1
  182. package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
  183. package/shaders/index.d.ts +14 -14
  184. package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
  185. package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
  186. package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
  187. package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
  188. package/staging/accumulative-shadows/accumulative-shadows.d.ts +96 -0
  189. package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
  190. package/staging/accumulative-shadows/randomized-lights.d.ts +77 -0
  191. package/staging/bounds/bounds.d.ts +58 -0
  192. package/staging/camera-shake/camera-shake.d.ts +32 -0
  193. package/staging/caustics/caustisc.d.ts +70 -0
  194. package/staging/center/center.d.ts +62 -0
  195. package/staging/cloud/cloud.d.ts +48 -0
  196. package/staging/contact-shadows/contact-shadows.d.ts +57 -0
  197. package/staging/environment/environment-cube.d.ts +11 -0
  198. package/staging/environment/environment-ground.d.ts +13 -0
  199. package/staging/environment/environment-input.d.ts +68 -0
  200. package/staging/environment/environment-map.d.ts +11 -0
  201. package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
  202. package/staging/{lib/environment → environment}/environment.d.ts +2 -2
  203. package/staging/environment/utils.d.ts +7 -0
  204. package/staging/float/float.d.ts +27 -0
  205. package/staging/index.d.ts +17 -17
  206. package/staging/sky/sky.d.ts +41 -0
  207. package/staging/sparkles/sparkles.d.ts +49 -0
  208. package/staging/spot-light/spot-light-input.d.ts +38 -0
  209. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +29 -0
  210. package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
  211. package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +12 -6
  212. package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +7 -4
  213. package/staging/{lib/stage → stage}/stage.d.ts +35 -16
  214. package/staging/stars/stars.d.ts +34 -0
  215. package/abstractions/lib/billboard/billboard.d.ts +0 -14
  216. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
  217. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
  218. package/abstractions/lib/edges/edges.d.ts +0 -18
  219. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +0 -41
  220. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
  221. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
  222. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
  223. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -28
  224. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -21
  225. package/abstractions/lib/line/line-input.d.ts +0 -19
  226. package/abstractions/lib/line/line.d.ts +0 -21
  227. package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -19
  228. package/abstractions/lib/text/text.d.ts +0 -21
  229. package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
  230. package/assets/default-spot-light-shadow.glsl +0 -10
  231. package/cameras/lib/camera/camera.d.ts +0 -19
  232. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
  233. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -17
  234. package/controls/lib/orbit-controls/orbit-controls.d.ts +0 -27
  235. package/esm2020/abstractions/angular-three-soba-abstractions.mjs +0 -5
  236. package/esm2020/abstractions/index.mjs +0 -12
  237. package/esm2020/abstractions/lib/billboard/billboard.mjs +0 -73
  238. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -119
  239. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -98
  240. package/esm2020/abstractions/lib/edges/edges.mjs +0 -95
  241. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -211
  242. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  243. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -91
  244. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -182
  245. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -45
  246. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -133
  247. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -193
  248. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -266
  249. package/esm2020/abstractions/lib/line/line-input.mjs +0 -75
  250. package/esm2020/abstractions/lib/line/line.mjs +0 -132
  251. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -127
  252. package/esm2020/abstractions/lib/text/text.mjs +0 -114
  253. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +0 -144
  254. package/esm2020/angular-three-soba.mjs +0 -5
  255. package/esm2020/cameras/angular-three-soba-cameras.mjs +0 -5
  256. package/esm2020/cameras/index.mjs +0 -5
  257. package/esm2020/cameras/lib/camera/camera-content.mjs +0 -20
  258. package/esm2020/cameras/lib/camera/camera.mjs +0 -74
  259. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -130
  260. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -92
  261. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +0 -46
  262. package/esm2020/controls/angular-three-soba-controls.mjs +0 -5
  263. package/esm2020/controls/index.mjs +0 -2
  264. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +0 -146
  265. package/esm2020/index.mjs +0 -2
  266. package/esm2020/loaders/angular-three-soba-loaders.mjs +0 -5
  267. package/esm2020/loaders/index.mjs +0 -6
  268. package/esm2020/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
  269. package/esm2020/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
  270. package/esm2020/loaders/lib/loader/loader.mjs +0 -133
  271. package/esm2020/loaders/lib/progress/progress.mjs +0 -39
  272. package/esm2020/loaders/lib/texture-loader/texture-loader.mjs +0 -19
  273. package/esm2020/materials/angular-three-soba-materials.mjs +0 -5
  274. package/esm2020/materials/index.mjs +0 -6
  275. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -74
  276. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -327
  277. package/esm2020/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -157
  278. package/esm2020/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -237
  279. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -67
  280. package/esm2020/misc/angular-three-soba-misc.mjs +0 -5
  281. package/esm2020/misc/index.mjs +0 -5
  282. package/esm2020/misc/lib/animations/animations.mjs +0 -52
  283. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +0 -25
  284. package/esm2020/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
  285. package/esm2020/misc/lib/fbo/fbo.mjs +0 -39
  286. package/esm2020/performance/angular-three-soba-performance.mjs +0 -5
  287. package/esm2020/performance/index.mjs +0 -5
  288. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +0 -46
  289. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +0 -36
  290. package/esm2020/performance/lib/detailed/detailed.mjs +0 -53
  291. package/esm2020/performance/lib/stats/stats.mjs +0 -79
  292. package/esm2020/shaders/angular-three-soba-shaders.mjs +0 -5
  293. package/esm2020/shaders/index.mjs +0 -15
  294. package/esm2020/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  295. package/esm2020/shaders/lib/caustics-material/caustics-material.mjs +0 -128
  296. package/esm2020/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
  297. package/esm2020/shaders/lib/convolution-material/convolution-material.mjs +0 -94
  298. package/esm2020/shaders/lib/discard-material/discard-material.mjs +0 -3
  299. package/esm2020/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
  300. package/esm2020/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  301. package/esm2020/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
  302. package/esm2020/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  303. package/esm2020/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  304. package/esm2020/shaders/lib/shader-material/shader-material.mjs +0 -34
  305. package/esm2020/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
  306. package/esm2020/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
  307. package/esm2020/shaders/lib/star-field-material/star-field-material.mjs +0 -32
  308. package/esm2020/staging/angular-three-soba-staging.mjs +0 -5
  309. package/esm2020/staging/index.mjs +0 -18
  310. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -247
  311. package/esm2020/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
  312. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -199
  313. package/esm2020/staging/lib/bounds/bounds.mjs +0 -283
  314. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +0 -121
  315. package/esm2020/staging/lib/caustics/caustics.mjs +0 -363
  316. package/esm2020/staging/lib/center/center.mjs +0 -142
  317. package/esm2020/staging/lib/cloud/cloud.mjs +0 -159
  318. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +0 -227
  319. package/esm2020/staging/lib/environment/assets.mjs +0 -13
  320. package/esm2020/staging/lib/environment/environment-cube.mjs +0 -40
  321. package/esm2020/staging/lib/environment/environment-ground.mjs +0 -66
  322. package/esm2020/staging/lib/environment/environment-inputs.mjs +0 -86
  323. package/esm2020/staging/lib/environment/environment-map.mjs +0 -38
  324. package/esm2020/staging/lib/environment/environment-portal.mjs +0 -110
  325. package/esm2020/staging/lib/environment/environment.mjs +0 -163
  326. package/esm2020/staging/lib/environment/utils.mjs +0 -70
  327. package/esm2020/staging/lib/float/float.mjs +0 -76
  328. package/esm2020/staging/lib/sky/sky.mjs +0 -108
  329. package/esm2020/staging/lib/sparkles/sparkles.mjs +0 -209
  330. package/esm2020/staging/lib/spot-light/common.mjs +0 -42
  331. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +0 -50
  332. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +0 -61
  333. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -73
  334. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -125
  335. package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +0 -62
  336. package/esm2020/staging/lib/spot-light/spot-light.mjs +0 -116
  337. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +0 -85
  338. package/esm2020/staging/lib/stage/stage.mjs +0 -366
  339. package/esm2020/staging/lib/stars/stars.mjs +0 -139
  340. package/fesm2015/angular-three-soba-abstractions.mjs +0 -2048
  341. package/fesm2015/angular-three-soba-abstractions.mjs.map +0 -1
  342. package/fesm2015/angular-three-soba-cameras.mjs.map +0 -1
  343. package/fesm2015/angular-three-soba-controls.mjs +0 -153
  344. package/fesm2015/angular-three-soba-controls.mjs.map +0 -1
  345. package/fesm2015/angular-three-soba-loaders.mjs +0 -229
  346. package/fesm2015/angular-three-soba-loaders.mjs.map +0 -1
  347. package/fesm2015/angular-three-soba-materials.mjs +0 -851
  348. package/fesm2015/angular-three-soba-materials.mjs.map +0 -1
  349. package/fesm2015/angular-three-soba-misc.mjs +0 -148
  350. package/fesm2015/angular-three-soba-misc.mjs.map +0 -1
  351. package/fesm2015/angular-three-soba-performance.mjs +0 -210
  352. package/fesm2015/angular-three-soba-performance.mjs.map +0 -1
  353. package/fesm2015/angular-three-soba-shaders.mjs +0 -1239
  354. package/fesm2015/angular-three-soba-shaders.mjs.map +0 -1
  355. package/fesm2015/angular-three-soba-staging.mjs +0 -3772
  356. package/fesm2015/angular-three-soba-staging.mjs.map +0 -1
  357. package/fesm2015/angular-three-soba.mjs.map +0 -1
  358. package/fesm2020/angular-three-soba-abstractions.mjs +0 -2045
  359. package/fesm2020/angular-three-soba-abstractions.mjs.map +0 -1
  360. package/fesm2020/angular-three-soba-cameras.mjs +0 -347
  361. package/fesm2020/angular-three-soba-cameras.mjs.map +0 -1
  362. package/fesm2020/angular-three-soba-controls.mjs +0 -153
  363. package/fesm2020/angular-three-soba-controls.mjs.map +0 -1
  364. package/fesm2020/angular-three-soba-loaders.mjs +0 -228
  365. package/fesm2020/angular-three-soba-loaders.mjs.map +0 -1
  366. package/fesm2020/angular-three-soba-materials.mjs.map +0 -1
  367. package/fesm2020/angular-three-soba-misc.mjs +0 -152
  368. package/fesm2020/angular-three-soba-misc.mjs.map +0 -1
  369. package/fesm2020/angular-three-soba-performance.mjs +0 -210
  370. package/fesm2020/angular-three-soba-performance.mjs.map +0 -1
  371. package/fesm2020/angular-three-soba-shaders.mjs.map +0 -1
  372. package/fesm2020/angular-three-soba-staging.mjs +0 -3778
  373. package/fesm2020/angular-three-soba-staging.mjs.map +0 -1
  374. package/fesm2020/angular-three-soba.mjs +0 -6
  375. package/fesm2020/angular-three-soba.mjs.map +0 -1
  376. package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
  377. package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
  378. package/loaders/lib/loader/loader.d.ts +0 -26
  379. package/loaders/lib/progress/progress.d.ts +0 -16
  380. package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
  381. package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +0 -24
  382. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
  383. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
  384. package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +0 -46
  385. package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +0 -14
  386. package/misc/lib/animations/animations.d.ts +0 -13
  387. package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
  388. package/performance/lib/adaptive/adaptive-dpr.d.ts +0 -11
  389. package/performance/lib/detailed/detailed.d.ts +0 -13
  390. package/performance/lib/stats/stats.d.ts +0 -15
  391. package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +0 -58
  392. package/staging/lib/accumulative-shadows/randomized-lights.d.ts +0 -42
  393. package/staging/lib/bounds/bounds.d.ts +0 -48
  394. package/staging/lib/camera-shake/camera-shake.d.ts +0 -28
  395. package/staging/lib/caustics/caustics.d.ts +0 -47
  396. package/staging/lib/center/center.d.ts +0 -40
  397. package/staging/lib/cloud/cloud.d.ts +0 -23
  398. package/staging/lib/contact-shadows/contact-shadows.d.ts +0 -29
  399. package/staging/lib/environment/environment-cube.d.ts +0 -11
  400. package/staging/lib/environment/environment-ground.d.ts +0 -9
  401. package/staging/lib/environment/environment-inputs.d.ts +0 -28
  402. package/staging/lib/environment/environment-map.d.ts +0 -10
  403. package/staging/lib/environment/utils.d.ts +0 -8
  404. package/staging/lib/float/float.d.ts +0 -16
  405. package/staging/lib/sky/sky.d.ts +0 -20
  406. package/staging/lib/sparkles/sparkles.d.ts +0 -29
  407. package/staging/lib/spot-light/common.d.ts +0 -3
  408. package/staging/lib/spot-light/shadow-mesh-input.d.ts +0 -14
  409. package/staging/lib/spot-light/spot-light-input.d.ts +0 -16
  410. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
  411. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
  412. package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
  413. package/staging/lib/stars/stars.d.ts +0 -20
  414. /package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
  415. /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
  416. /package/{fesm2015 → fesm2022}/angular-three-soba.mjs +0 -0
  417. /package/plugin/{README.md → libs/plugin/README.md} +0 -0
  418. /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
  419. /package/shaders/{lib/caustics-projection-material → caustics-material}/caustics-projection-material.d.ts +0 -0
  420. /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
  421. /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
  422. /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
  423. /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
  424. /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
  425. /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
  426. /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
  427. /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
  428. /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
@@ -0,0 +1,61 @@
1
+ import { BufferAttribute, BufferGeometry, HalfFloatType, LinearFilter, Mesh, PerspectiveCamera, Scene, Vector2, WebGLRenderTarget, } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci1wYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2JsdXItcGFzcy9ibHVyLXBhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixjQUFjLEVBRWQsYUFBYSxFQUNiLFlBQVksRUFDWixJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxPQUFPLEVBQ1AsaUJBQWlCLEdBRXBCLE1BQU0sT0FBTyxDQUFDO0FBRWYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFhbkYsTUFBTSxPQUFPLFFBQVE7SUFTakIsWUFBWSxFQUNSLEVBQUUsRUFDRixVQUFVLEVBQ1YsS0FBSyxHQUFHLEdBQUcsRUFDWCxNQUFNLEdBQUcsR0FBRyxFQUNaLGlCQUFpQixHQUFHLENBQUMsRUFDckIsaUJBQWlCLEdBQUcsQ0FBQyxFQUNyQixVQUFVLEdBQUcsQ0FBQyxFQUNkLG9CQUFvQixHQUFHLElBQUksR0FDZjtRQVhoQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQVk1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRTtZQUMvRCxTQUFTLEVBQUUsWUFBWTtZQUN2QixTQUFTLEVBQUUsWUFBWTtZQUN2QixhQUFhLEVBQUUsS0FBSztZQUNwQixXQUFXLEVBQUUsS0FBSztZQUNsQixJQUFJLEVBQUUsYUFBYTtTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUM7UUFDakYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUNqRixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxvQkFBb0IsQ0FBQztRQUN2RixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLEdBQUcsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUF1QixFQUFFLFdBQThCLEVBQUUsWUFBK0I7UUFDM0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDeEMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDVCw2QkFBNkI7UUFDN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLDZCQUE2QjtZQUM3QixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUN2RCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDL0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ25CO1FBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9DLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJ1ZmZlckF0dHJpYnV0ZSxcbiAgICBCdWZmZXJHZW9tZXRyeSxcbiAgICBDYW1lcmEsXG4gICAgSGFsZkZsb2F0VHlwZSxcbiAgICBMaW5lYXJGaWx0ZXIsXG4gICAgTWVzaCxcbiAgICBQZXJzcGVjdGl2ZUNhbWVyYSxcbiAgICBTY2VuZSxcbiAgICBWZWN0b3IyLFxuICAgIFdlYkdMUmVuZGVyVGFyZ2V0LFxuICAgIFdlYkdMUmVuZGVyZXIsXG59IGZyb20gJ3RocmVlJztcblxuaW1wb3J0IHsgQ29udm9sdXRpb25NYXRlcmlhbCB9IGZyb20gJy4uL2NvbnZvbHV0aW9uLW1hdGVyaWFsL2NvbnZvbHV0aW9uLW1hdGVyaWFsJztcblxuZXhwb3J0IGludGVyZmFjZSBCbHVyUGFzc1Byb3BzIHtcbiAgICBnbDogV2ViR0xSZW5kZXJlcjtcbiAgICByZXNvbHV0aW9uOiBudW1iZXI7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIG1pbkRlcHRoVGhyZXNob2xkPzogbnVtYmVyO1xuICAgIG1heERlcHRoVGhyZXNob2xkPzogbnVtYmVyO1xuICAgIGRlcHRoU2NhbGU/OiBudW1iZXI7XG4gICAgZGVwdGhUb0JsdXJSYXRpb0JpYXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCbHVyUGFzcyB7XG4gICAgcmVhZG9ubHkgcmVuZGVyVGFyZ2V0QTogV2ViR0xSZW5kZXJUYXJnZXQ7XG4gICAgcmVhZG9ubHkgcmVuZGVyVGFyZ2V0QjogV2ViR0xSZW5kZXJUYXJnZXQ7XG4gICAgcmVhZG9ubHkgY29udm9sdXRpb25NYXRlcmlhbDogQ29udm9sdXRpb25NYXRlcmlhbDtcbiAgICByZWFkb25seSBzY2VuZTogU2NlbmU7XG4gICAgcmVhZG9ubHkgY2FtZXJhOiBDYW1lcmE7XG4gICAgcmVhZG9ubHkgc2NyZWVuOiBNZXNoO1xuICAgIHJlbmRlclRvU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIGdsLFxuICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICB3aWR0aCA9IDUwMCxcbiAgICAgICAgaGVpZ2h0ID0gNTAwLFxuICAgICAgICBtaW5EZXB0aFRocmVzaG9sZCA9IDAsXG4gICAgICAgIG1heERlcHRoVGhyZXNob2xkID0gMSxcbiAgICAgICAgZGVwdGhTY2FsZSA9IDAsXG4gICAgICAgIGRlcHRoVG9CbHVyUmF0aW9CaWFzID0gMC4yNSxcbiAgICB9OiBCbHVyUGFzc1Byb3BzKSB7XG4gICAgICAgIHRoaXMucmVuZGVyVGFyZ2V0QSA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCB7XG4gICAgICAgICAgICBtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcbiAgICAgICAgICAgIG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuICAgICAgICAgICAgc3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aEJ1ZmZlcjogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiBIYWxmRmxvYXRUeXBlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJUYXJnZXRCID0gdGhpcy5yZW5kZXJUYXJnZXRBLmNsb25lKCk7XG4gICAgICAgIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCA9IG5ldyBDb252b2x1dGlvbk1hdGVyaWFsKCk7XG4gICAgICAgIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5zZXRUZXhlbFNpemUoMS4wIC8gd2lkdGgsIDEuMCAvIGhlaWdodCk7XG4gICAgICAgIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5zZXRSZXNvbHV0aW9uKG5ldyBWZWN0b3IyKHdpZHRoLCBoZWlnaHQpKTtcbiAgICAgICAgdGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgpO1xuICAgICAgICB0aGlzLmNhbWVyYSA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSgpO1xuICAgICAgICB0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWwudW5pZm9ybXNbJ21pbkRlcHRoVGhyZXNob2xkJ10udmFsdWUgPSBtaW5EZXB0aFRocmVzaG9sZDtcbiAgICAgICAgdGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtYXhEZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWF4RGVwdGhUaHJlc2hvbGQ7XG4gICAgICAgIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC51bmlmb3Jtc1snZGVwdGhTY2FsZSddLnZhbHVlID0gZGVwdGhTY2FsZTtcbiAgICAgICAgdGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydkZXB0aFRvQmx1clJhdGlvQmlhcyddLnZhbHVlID0gZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5kZWZpbmVzWydVU0VfREVQVEgnXSA9IGRlcHRoU2NhbGUgPiAwO1xuICAgICAgICBjb25zdCB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWy0xLCAtMSwgMCwgMywgLTEsIDAsIC0xLCAzLCAwXSk7XG4gICAgICAgIGNvbnN0IHV2cyA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDIsIDAsIDAsIDJdKTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcbiAgICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIG5ldyBCdWZmZXJBdHRyaWJ1dGUodmVydGljZXMsIDMpKTtcbiAgICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCd1dicsIG5ldyBCdWZmZXJBdHRyaWJ1dGUodXZzLCAyKSk7XG4gICAgICAgIHRoaXMuc2NyZWVuID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCk7XG4gICAgICAgIHRoaXMuc2NyZWVuLmZydXN0dW1DdWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zY2VuZS5hZGQodGhpcy5zY3JlZW4pO1xuICAgIH1cblxuICAgIHJlbmRlcihyZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgaW5wdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0LCBvdXRwdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IHNjZW5lID0gdGhpcy5zY2VuZTtcbiAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy5jYW1lcmE7XG4gICAgICAgIGNvbnN0IHJlbmRlclRhcmdldEEgPSB0aGlzLnJlbmRlclRhcmdldEE7XG4gICAgICAgIGNvbnN0IHJlbmRlclRhcmdldEIgPSB0aGlzLnJlbmRlclRhcmdldEI7XG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHRoaXMuY29udm9sdXRpb25NYXRlcmlhbDtcbiAgICAgICAgbGV0IHVuaWZvcm1zID0gbWF0ZXJpYWwudW5pZm9ybXM7XG4gICAgICAgIHVuaWZvcm1zWydkZXB0aEJ1ZmZlciddLnZhbHVlID0gaW5wdXRCdWZmZXIuZGVwdGhUZXh0dXJlO1xuICAgICAgICBjb25zdCBrZXJuZWwgPSBtYXRlcmlhbC5rZXJuZWw7XG4gICAgICAgIGxldCBsYXN0UlQgPSBpbnB1dEJ1ZmZlcjtcbiAgICAgICAgbGV0IGRlc3RSVDtcbiAgICAgICAgbGV0IGksIGw7XG4gICAgICAgIC8vIEFwcGx5IHRoZSBtdWx0aS1wYXNzIGJsdXIuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBrZXJuZWwubGVuZ3RoIC0gMTsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gQWx0ZXJuYXRlIGJldHdlZW4gdGFyZ2V0cy5cbiAgICAgICAgICAgIGRlc3RSVCA9IChpICYgMSkgPT09IDAgPyByZW5kZXJUYXJnZXRBIDogcmVuZGVyVGFyZ2V0QjtcbiAgICAgICAgICAgIHVuaWZvcm1zWydrZXJuZWwnXS52YWx1ZSA9IGtlcm5lbFtpXTtcbiAgICAgICAgICAgIHVuaWZvcm1zWydpbnB1dEJ1ZmZlciddLnZhbHVlID0gbGFzdFJULnRleHR1cmU7XG4gICAgICAgICAgICByZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQoZGVzdFJUKTtcbiAgICAgICAgICAgIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICAgIGxhc3RSVCA9IGRlc3RSVDtcbiAgICAgICAgfVxuICAgICAgICB1bmlmb3Jtc1sna2VybmVsJ10udmFsdWUgPSBrZXJuZWxbaV07XG4gICAgICAgIHVuaWZvcm1zWydpbnB1dEJ1ZmZlciddLnZhbHVlID0gbGFzdFJULnRleHR1cmU7XG4gICAgICAgIHJlbmRlcmVyLnNldFJlbmRlclRhcmdldCh0aGlzLnJlbmRlclRvU2NyZWVuID8gbnVsbCA6IG91dHB1dEJ1ZmZlcik7XG4gICAgICAgIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,128 @@
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 */ `varying vec2 vUv;
22
+ void main() {
23
+ vUv = uv;
24
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
25
+ }`,
26
+ /* glsl */ `uniform mat4 cameraMatrixWorld;
27
+ uniform mat4 cameraProjectionMatrixInv;
28
+ uniform vec3 lightDir;
29
+ uniform vec3 lightPlaneNormal;
30
+ uniform float lightPlaneConstant;
31
+ uniform float near;
32
+ uniform float far;
33
+ uniform float time;
34
+ uniform float worldRadius;
35
+ uniform float resolution;
36
+ uniform float size;
37
+ uniform float intensity;
38
+ uniform float ior;
39
+ precision highp isampler2D;
40
+ precision highp usampler2D;
41
+ uniform sampler2D normalTexture;
42
+ uniform sampler2D depthTexture;
43
+ uniform float bounces;
44
+ varying vec2 vUv;
45
+ vec3 WorldPosFromDepth(float depth, vec2 coord) {
46
+ float z = depth * 2.0 - 1.0;
47
+ vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
48
+ vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
49
+ // Perspective division
50
+ viewSpacePosition /= viewSpacePosition.w;
51
+ vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
52
+ return worldSpacePosition.xyz;
53
+ }
54
+ float sdPlane( vec3 p, vec3 n, float h ) {
55
+ // n must be normalized
56
+ return dot(p,n) + h;
57
+ }
58
+ float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
59
+ return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
60
+ }
61
+ vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
62
+ rayOrigin = ro;
63
+ rayDirection = rd;
64
+ rayDirection = refract(rayDirection, normal, 1.0 / ior);
65
+ rayOrigin = pos + rayDirection * 0.1;
66
+ return rayDirection;
67
+ }
68
+ void main() {
69
+ // Each sample consists of random offset in the x and y direction
70
+ float caustic = 0.0;
71
+ float causticTexelSize = (1.0 / resolution) * size * 2.0;
72
+ float texelsNeeded = worldRadius / causticTexelSize;
73
+ float sampleRadius = texelsNeeded / resolution;
74
+ float sum = 0.0;
75
+ if (texture2D(depthTexture, vUv).x == 1.0) {
76
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
77
+ return;
78
+ }
79
+ vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
80
+ vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
81
+ vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
82
+ vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
83
+ vec2 uv1 = vUv + offset1 * sampleRadius;
84
+ vec2 uv2 = vUv + offset2 * sampleRadius;
85
+ vec2 uv3 = vUv + offset3 * sampleRadius;
86
+ vec2 uv4 = vUv + offset4 * sampleRadius;
87
+ vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
88
+ vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
89
+ vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
90
+ vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
91
+ float depth1 = texture2D(depthTexture, uv1, -10.0).x;
92
+ float depth2 = texture2D(depthTexture, uv2, -10.0).x;
93
+ float depth3 = texture2D(depthTexture, uv3, -10.0).x;
94
+ float depth4 = texture2D(depthTexture, uv4, -10.0).x;
95
+ // Sanity check the depths
96
+ if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
97
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
98
+ return;
99
+ }
100
+ vec3 pos1 = WorldPosFromDepth(depth1, uv1);
101
+ vec3 pos2 = WorldPosFromDepth(depth2, uv2);
102
+ vec3 pos3 = WorldPosFromDepth(depth3, uv3);
103
+ vec3 pos4 = WorldPosFromDepth(depth4, uv4);
104
+ vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
105
+ vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
106
+ vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
107
+ vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
108
+ vec3 endPos1, endPos2, endPos3, endPos4;
109
+ vec3 endDir1, endDir2, endDir3, endDir4;
110
+ totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
111
+ totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
112
+ totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
113
+ totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
114
+ float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
115
+ float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
116
+ float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
117
+ float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
118
+ float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
119
+ vec3 finalPos1 = endPos1 + endDir1 * t1;
120
+ vec3 finalPos2 = endPos2 + endDir2 * t2;
121
+ vec3 finalPos3 = endPos3 + endDir3 * t3;
122
+ vec3 finalPos4 = endPos4 + endDir4 * t4;
123
+ float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
124
+ caustic += intensity * (lightPosArea / finalArea);
125
+ // Calculate the area of the triangle in light spaces
126
+ gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
127
+ }`);
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY2F1c3RpY3MtbWF0ZXJpYWwvY2F1c3RpY3MtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDMUM7SUFDSSxpQkFBaUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDdEMseUJBQXlCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQzlDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLGtCQUFrQixFQUFFLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUc7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDaEMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25CLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSTtJQUNoQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxHQUFHO0NBQ2pCO0FBQ0QsVUFBVSxDQUFDOzs7O0VBSWI7QUFDRSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcUdiLENBQ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnLi4vc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG5cbmV4cG9ydCBjb25zdCBDYXVzdGljc01hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG4gICAge1xuICAgICAgICBjYW1lcmFNYXRyaXhXb3JsZDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcbiAgICAgICAgY2FtZXJhUHJvamVjdGlvbk1hdHJpeEludjogbmV3IFRIUkVFLk1hdHJpeDQoKSxcbiAgICAgICAgbm9ybWFsVGV4dHVyZTogbnVsbCxcbiAgICAgICAgZGVwdGhUZXh0dXJlOiBudWxsLFxuICAgICAgICBsaWdodERpcjogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG4gICAgICAgIGxpZ2h0UGxhbmVOb3JtYWw6IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDEsIDApLFxuICAgICAgICBsaWdodFBsYW5lQ29uc3RhbnQ6IDAsXG4gICAgICAgIG5lYXI6IDAuMSxcbiAgICAgICAgZmFyOiAxMDAsXG4gICAgICAgIG1vZGVsTWF0cml4OiBuZXcgVEhSRUUuTWF0cml4NCgpLFxuICAgICAgICB3b3JsZFJhZGl1czogMSAvIDQwLFxuICAgICAgICBpb3I6IDEuMSxcbiAgICAgICAgYm91bmNlczogMCxcbiAgICAgICAgcmVzb2x1dGlvbjogMTAyNCxcbiAgICAgICAgc2l6ZTogMTAsXG4gICAgICAgIGludGVuc2l0eTogMC41LFxuICAgIH0sXG4gICAgLyogZ2xzbCAqLyBgdmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcbiAgICB2VXYgPSB1djtcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xufWAsXG4gICAgLyogZ2xzbCAqLyBgdW5pZm9ybSBtYXQ0IGNhbWVyYU1hdHJpeFdvcmxkO1xudW5pZm9ybSBtYXQ0IGNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnY7XG51bmlmb3JtIHZlYzMgbGlnaHREaXI7XG51bmlmb3JtIHZlYzMgbGlnaHRQbGFuZU5vcm1hbDtcbnVuaWZvcm0gZmxvYXQgbGlnaHRQbGFuZUNvbnN0YW50O1xudW5pZm9ybSBmbG9hdCBuZWFyO1xudW5pZm9ybSBmbG9hdCBmYXI7XG51bmlmb3JtIGZsb2F0IHRpbWU7XG51bmlmb3JtIGZsb2F0IHdvcmxkUmFkaXVzO1xudW5pZm9ybSBmbG9hdCByZXNvbHV0aW9uO1xudW5pZm9ybSBmbG9hdCBzaXplO1xudW5pZm9ybSBmbG9hdCBpbnRlbnNpdHk7XG51bmlmb3JtIGZsb2F0IGlvcjtcbnByZWNpc2lvbiBoaWdocCBpc2FtcGxlcjJEO1xucHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG51bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxUZXh0dXJlO1xudW5pZm9ybSBzYW1wbGVyMkQgZGVwdGhUZXh0dXJlO1xudW5pZm9ybSBmbG9hdCBib3VuY2VzO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZlYzMgV29ybGRQb3NGcm9tRGVwdGgoZmxvYXQgZGVwdGgsIHZlYzIgY29vcmQpIHtcbiAgZmxvYXQgeiA9IGRlcHRoICogMi4wIC0gMS4wO1xuICB2ZWM0IGNsaXBTcGFjZVBvc2l0aW9uID0gdmVjNChjb29yZCAqIDIuMCAtIDEuMCwgeiwgMS4wKTtcbiAgdmVjNCB2aWV3U3BhY2VQb3NpdGlvbiA9IGNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnYgKiBjbGlwU3BhY2VQb3NpdGlvbjtcbiAgLy8gUGVyc3BlY3RpdmUgZGl2aXNpb25cbiAgdmlld1NwYWNlUG9zaXRpb24gLz0gdmlld1NwYWNlUG9zaXRpb24udztcbiAgdmVjNCB3b3JsZFNwYWNlUG9zaXRpb24gPSBjYW1lcmFNYXRyaXhXb3JsZCAqIHZpZXdTcGFjZVBvc2l0aW9uO1xuICByZXR1cm4gd29ybGRTcGFjZVBvc2l0aW9uLnh5ejtcbn1cbmZsb2F0IHNkUGxhbmUoIHZlYzMgcCwgdmVjMyBuLCBmbG9hdCBoICkge1xuICAvLyBuIG11c3QgYmUgbm9ybWFsaXplZFxuICByZXR1cm4gZG90KHAsbikgKyBoO1xufVxuZmxvYXQgcGxhbmVJbnRlcnNlY3QoIHZlYzMgcm8sIHZlYzMgcmQsIHZlYzQgcCApIHtcbiAgcmV0dXJuIC0oZG90KHJvLHAueHl6KStwLncpL2RvdChyZCxwLnh5eik7XG59XG52ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgcG9zLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBvdXQgdmVjMyByYXlPcmlnaW4sIG91dCB2ZWMzIHJheURpcmVjdGlvbikge1xuICByYXlPcmlnaW4gPSBybztcbiAgcmF5RGlyZWN0aW9uID0gcmQ7XG4gIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gIHJheU9yaWdpbiA9IHBvcyArIHJheURpcmVjdGlvbiAqIDAuMTtcbiAgcmV0dXJuIHJheURpcmVjdGlvbjtcbn1cbnZvaWQgbWFpbigpIHtcbiAgLy8gRWFjaCBzYW1wbGUgY29uc2lzdHMgb2YgcmFuZG9tIG9mZnNldCBpbiB0aGUgeCBhbmQgeSBkaXJlY3Rpb25cbiAgZmxvYXQgY2F1c3RpYyA9IDAuMDtcbiAgZmxvYXQgY2F1c3RpY1RleGVsU2l6ZSA9ICgxLjAgLyByZXNvbHV0aW9uKSAqIHNpemUgKiAyLjA7XG4gIGZsb2F0IHRleGVsc05lZWRlZCA9IHdvcmxkUmFkaXVzIC8gY2F1c3RpY1RleGVsU2l6ZTtcbiAgZmxvYXQgc2FtcGxlUmFkaXVzID0gdGV4ZWxzTmVlZGVkIC8gcmVzb2x1dGlvbjtcbiAgZmxvYXQgc3VtID0gMC4wO1xuICBpZiAodGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdlV2KS54ID09IDEuMCkge1xuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmVjMiBvZmZzZXQxID0gdmVjMigtMC41LCAtMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICB2ZWMyIG9mZnNldDIgPSB2ZWMyKC0wLjUsIDAuNSk7Ly92ZWMyKHJhbmQoKSAtIDAuNSwgcmFuZCgpIC0gMC41KTtcbiAgdmVjMiBvZmZzZXQzID0gdmVjMigwLjUsIDAuNSk7Ly92ZWMyKHJhbmQoKSAtIDAuNSwgcmFuZCgpIC0gMC41KTtcbiAgdmVjMiBvZmZzZXQ0ID0gdmVjMigwLjUsIC0wLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gIHZlYzIgdXYxID0gdlV2ICsgb2Zmc2V0MSAqIHNhbXBsZVJhZGl1cztcbiAgdmVjMiB1djIgPSB2VXYgKyBvZmZzZXQyICogc2FtcGxlUmFkaXVzO1xuICB2ZWMyIHV2MyA9IHZVdiArIG9mZnNldDMgKiBzYW1wbGVSYWRpdXM7XG4gIHZlYzIgdXY0ID0gdlV2ICsgb2Zmc2V0NCAqIHNhbXBsZVJhZGl1cztcbiAgdmVjMyBub3JtYWwxID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MSwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgdmVjMyBub3JtYWwyID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MiwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgdmVjMyBub3JtYWwzID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MywgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgdmVjMyBub3JtYWw0ID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2NCwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgZmxvYXQgZGVwdGgxID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYxLCAtMTAuMCkueDtcbiAgZmxvYXQgZGVwdGgyID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYyLCAtMTAuMCkueDtcbiAgZmxvYXQgZGVwdGgzID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYzLCAtMTAuMCkueDtcbiAgZmxvYXQgZGVwdGg0ID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXY0LCAtMTAuMCkueDtcbiAgLy8gU2FuaXR5IGNoZWNrIHRoZSBkZXB0aHNcbiAgaWYgKGRlcHRoMSA9PSAxLjAgfHwgZGVwdGgyID09IDEuMCB8fCBkZXB0aDMgPT0gMS4wIHx8IGRlcHRoNCA9PSAxLjApIHtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZlYzMgcG9zMSA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoMSwgdXYxKTtcbiAgdmVjMyBwb3MyID0gV29ybGRQb3NGcm9tRGVwdGgoZGVwdGgyLCB1djIpO1xuICB2ZWMzIHBvczMgPSBXb3JsZFBvc0Zyb21EZXB0aChkZXB0aDMsIHV2Myk7XG4gIHZlYzMgcG9zNCA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoNCwgdXY0KTtcbiAgdmVjMyBvcmlnaW5Qb3MxID0gV29ybGRQb3NGcm9tRGVwdGgoMC4wLCB1djEpO1xuICB2ZWMzIG9yaWdpblBvczIgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2Mik7XG4gIHZlYzMgb3JpZ2luUG9zMyA9IFdvcmxkUG9zRnJvbURlcHRoKDAuMCwgdXYzKTtcbiAgdmVjMyBvcmlnaW5Qb3M0ID0gV29ybGRQb3NGcm9tRGVwdGgoMC4wLCB1djQpO1xuICB2ZWMzIGVuZFBvczEsIGVuZFBvczIsIGVuZFBvczMsIGVuZFBvczQ7XG4gIHZlYzMgZW5kRGlyMSwgZW5kRGlyMiwgZW5kRGlyMywgZW5kRGlyNDtcbiAgdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ob3JpZ2luUG9zMSwgbGlnaHREaXIsIHBvczEsIG5vcm1hbDEsIGlvciwgZW5kUG9zMSwgZW5kRGlyMSk7XG4gIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKG9yaWdpblBvczIsIGxpZ2h0RGlyLCBwb3MyLCBub3JtYWwyLCBpb3IsIGVuZFBvczIsIGVuZERpcjIpO1xuICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MzLCBsaWdodERpciwgcG9zMywgbm9ybWFsMywgaW9yLCBlbmRQb3MzLCBlbmREaXIzKTtcbiAgdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ob3JpZ2luUG9zNCwgbGlnaHREaXIsIHBvczQsIG5vcm1hbDQsIGlvciwgZW5kUG9zNCwgZW5kRGlyNCk7XG4gIGZsb2F0IGxpZ2h0UG9zQXJlYSA9IGxlbmd0aChjcm9zcyhvcmlnaW5Qb3MyIC0gb3JpZ2luUG9zMSwgb3JpZ2luUG9zMyAtIG9yaWdpblBvczEpKSArIGxlbmd0aChjcm9zcyhvcmlnaW5Qb3MzIC0gb3JpZ2luUG9zMSwgb3JpZ2luUG9zNCAtIG9yaWdpblBvczEpKTtcbiAgZmxvYXQgdDEgPSBwbGFuZUludGVyc2VjdChlbmRQb3MxLCBlbmREaXIxLCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICBmbG9hdCB0MiA9IHBsYW5lSW50ZXJzZWN0KGVuZFBvczIsIGVuZERpcjIsIHZlYzQobGlnaHRQbGFuZU5vcm1hbCwgbGlnaHRQbGFuZUNvbnN0YW50KSk7XG4gIGZsb2F0IHQzID0gcGxhbmVJbnRlcnNlY3QoZW5kUG9zMywgZW5kRGlyMywgdmVjNChsaWdodFBsYW5lTm9ybWFsLCBsaWdodFBsYW5lQ29uc3RhbnQpKTtcbiAgZmxvYXQgdDQgPSBwbGFuZUludGVyc2VjdChlbmRQb3M0LCBlbmREaXI0LCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICB2ZWMzIGZpbmFsUG9zMSA9IGVuZFBvczEgKyBlbmREaXIxICogdDE7XG4gIHZlYzMgZmluYWxQb3MyID0gZW5kUG9zMiArIGVuZERpcjIgKiB0MjtcbiAgdmVjMyBmaW5hbFBvczMgPSBlbmRQb3MzICsgZW5kRGlyMyAqIHQzO1xuICB2ZWMzIGZpbmFsUG9zNCA9IGVuZFBvczQgKyBlbmREaXI0ICogdDQ7XG4gIGZsb2F0IGZpbmFsQXJlYSA9IGxlbmd0aChjcm9zcyhmaW5hbFBvczIgLSBmaW5hbFBvczEsIGZpbmFsUG9zMyAtIGZpbmFsUG9zMSkpICsgbGVuZ3RoKGNyb3NzKGZpbmFsUG9zMyAtIGZpbmFsUG9zMSwgZmluYWxQb3M0IC0gZmluYWxQb3MxKSk7XG4gIGNhdXN0aWMgKz0gaW50ZW5zaXR5ICogKGxpZ2h0UG9zQXJlYSAvIGZpbmFsQXJlYSk7XG4gIC8vIENhbGN1bGF0ZSB0aGUgYXJlYSBvZiB0aGUgdHJpYW5nbGUgaW4gbGlnaHQgc3BhY2VzXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMyhtYXgoY2F1c3RpYywgMC4wKSksIDEuMCk7XG59YFxuKTtcbiJdfQ==
@@ -0,0 +1,33 @@
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
+ },
10
+ /* glsl */ `varying vec3 vWorldPosition;
11
+ void main() {
12
+ gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
13
+ vec4 worldPosition = modelMatrix * vec4(position, 1.);
14
+ vWorldPosition = worldPosition.xyz;
15
+ }`,
16
+ /* glsl */ `varying vec3 vWorldPosition;
17
+ uniform vec3 color;
18
+ uniform sampler2D causticsTexture;
19
+ uniform sampler2D causticsTextureB;
20
+ uniform mat4 lightProjMatrix;
21
+ uniform mat4 lightViewMatrix;
22
+ void main() {
23
+ // Apply caustics
24
+ vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
25
+ lightSpacePos.xyz /= lightSpacePos.w;
26
+ lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
27
+ vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
28
+ vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
29
+ gl_FragColor = vec4((front + back) * color, 1.0);
30
+ #include <tonemapping_fragment>
31
+ #include <encodings_fragment>
32
+ }`);
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9jYXVzdGljcy1tYXRlcmlhbC9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQ3BEO0lBQ0ksZUFBZSxFQUFFLElBQUk7SUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3hCLGVBQWUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDcEMsZUFBZSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtDQUN2QztBQUNELFVBQVUsQ0FBQzs7Ozs7RUFLYjtBQUNFLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztFQWdCYixDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcbiAgICB7XG4gICAgICAgIGNhdXN0aWNzVGV4dHVyZTogbnVsbCxcbiAgICAgICAgY2F1c3RpY3NUZXh0dXJlQjogbnVsbCxcbiAgICAgICAgY29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuICAgICAgICBsaWdodFByb2pNYXRyaXg6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG4gICAgICAgIGxpZ2h0Vmlld01hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcbiAgICB9LFxuICAgIC8qIGdsc2wgKi8gYHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmlld01hdHJpeCAqIG1vZGVsTWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4pO1xuICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuKTtcbiAgdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbn1gLFxuICAgIC8qIGdsc2wgKi8gYHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbnVuaWZvcm0gdmVjMyBjb2xvcjtcbnVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZTtcbnVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZUI7XG51bmlmb3JtIG1hdDQgbGlnaHRQcm9qTWF0cml4O1xudW5pZm9ybSBtYXQ0IGxpZ2h0Vmlld01hdHJpeDtcbiB2b2lkIG1haW4oKSB7XG4gIC8vIEFwcGx5IGNhdXN0aWNzXG4gIHZlYzQgbGlnaHRTcGFjZVBvcyA9IGxpZ2h0UHJvak1hdHJpeCAqIGxpZ2h0Vmlld01hdHJpeCAqIHZlYzQodldvcmxkUG9zaXRpb24sIDEuMCk7XG4gIGxpZ2h0U3BhY2VQb3MueHl6IC89IGxpZ2h0U3BhY2VQb3MudztcbiAgbGlnaHRTcGFjZVBvcy54eXogPSBsaWdodFNwYWNlUG9zLnh5eiAqIDAuNSArIDAuNTtcbiAgdmVjMyBmcm9udCA9IHRleHR1cmUyRChjYXVzdGljc1RleHR1cmUsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgdmVjMyBiYWNrID0gdGV4dHVyZTJEKGNhdXN0aWNzVGV4dHVyZUIsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZnJvbnQgKyBiYWNrKSAqIGNvbG9yLCAxLjApO1xuICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59YFxuKTtcbiJdfQ==
@@ -0,0 +1,94 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udm9sdXRpb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQUVuRCxZQUFZLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUNqQyxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLG9CQUFvQixFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQzthQUMxQztZQUNELGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFtQ2xCO1lBQ0UsWUFBWSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFxQmhCO1lBQ0UsUUFBUSxFQUFFLFVBQVU7WUFDcEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxhQUFhLENBQUMsVUFBbUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vQmxlbmRpbmcsIFNoYWRlck1hdGVyaWFsLCBVbmlmb3JtLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgY2xhc3MgQ29udm9sdXRpb25NYXRlcmlhbCBleHRlbmRzIFNoYWRlck1hdGVyaWFsIHtcbiAgICByZWFkb25seSBrZXJuZWw6IEZsb2F0MzJBcnJheTtcbiAgICBjb25zdHJ1Y3Rvcih0ZXhlbFNpemUgPSBuZXcgVmVjdG9yMigpKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRCdWZmZXI6IG5ldyBVbmlmb3JtKG51bGwpLFxuICAgICAgICAgICAgICAgIGRlcHRoQnVmZmVyOiBuZXcgVW5pZm9ybShudWxsKSxcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uOiBuZXcgVW5pZm9ybShuZXcgVmVjdG9yMigpKSxcbiAgICAgICAgICAgICAgICB0ZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuICAgICAgICAgICAgICAgIGhhbGZUZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuICAgICAgICAgICAgICAgIGtlcm5lbDogbmV3IFVuaWZvcm0oMC4wKSxcbiAgICAgICAgICAgICAgICBzY2FsZTogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBjYW1lcmFOZWFyOiBuZXcgVW5pZm9ybSgwLjApLFxuICAgICAgICAgICAgICAgIGNhbWVyYUZhcjogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMC4wKSxcbiAgICAgICAgICAgICAgICBtYXhEZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBkZXB0aFNjYWxlOiBuZXcgVW5pZm9ybSgwLjApLFxuICAgICAgICAgICAgICAgIGRlcHRoVG9CbHVyUmF0aW9CaWFzOiBuZXcgVW5pZm9ybSgwLjI1KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmcmFnbWVudFNoYWRlcjogYCNpbmNsdWRlIDxjb21tb24+XG4gICAgICAgICNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgaW5wdXRCdWZmZXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoQnVmZmVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICBmbG9hdCBkZXB0aEZhY3RvciA9IDAuMDtcblxuICAgICAgICAgICNpZmRlZiBVU0VfREVQVEhcbiAgICAgICAgICAgIHZlYzQgZGVwdGggPSB0ZXh0dXJlMkQoZGVwdGhCdWZmZXIsIHZVdik7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciAqPSBkZXB0aFNjYWxlO1xuICAgICAgICAgICAgZGVwdGhGYWN0b3IgPSBtYXgoMC4wLCBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuMjUpKTtcbiAgICAgICAgICAjZW5kaWZcblxuICAgICAgICAgIHZlYzQgc3VtID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MCwgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIHN1bSArPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIG1peCh2VXYxLCB2VXYsIGRlcHRoRmFjdG9yKSk7XG4gICAgICAgICAgc3VtICs9IHRleHR1cmUyRChpbnB1dEJ1ZmZlciwgbWl4KHZVdjIsIHZVdiwgZGVwdGhGYWN0b3IpKTtcbiAgICAgICAgICBzdW0gKz0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MywgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHN1bSAqIDAuMjUgO1xuXG4gICAgICAgICAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbiAgICAgICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAgICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgICAgfWAsXG4gICAgICAgICAgICB2ZXJ0ZXhTaGFkZXI6IGB1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuICAgICAgICB1bmlmb3JtIHZlYzIgaGFsZlRleGVsU2l6ZTtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBrZXJuZWw7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgc2NhbGU7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICB2ZWMyIHV2ID0gcG9zaXRpb24ueHkgKiAwLjUgKyAwLjU7XG4gICAgICAgICAgdlV2ID0gdXY7XG5cbiAgICAgICAgICB2ZWMyIGRVdiA9ICh0ZXhlbFNpemUgKiB2ZWMyKGtlcm5lbCkgKyBoYWxmVGV4ZWxTaXplKSAqIHNjYWxlO1xuICAgICAgICAgIHZVdjAgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSArIGRVdi55KTtcbiAgICAgICAgICB2VXYxID0gdmVjMih1di54ICsgZFV2LngsIHV2LnkgKyBkVXYueSk7XG4gICAgICAgICAgdlV2MiA9IHZlYzIodXYueCArIGRVdi54LCB1di55IC0gZFV2LnkpO1xuICAgICAgICAgIHZVdjMgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSAtIGRVdi55KTtcblxuICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMS4wLCAxLjApO1xuICAgICAgICB9YCxcbiAgICAgICAgICAgIGJsZW5kaW5nOiBOb0JsZW5kaW5nLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRvbmVNYXBwZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRUZXhlbFNpemUodGV4ZWxTaXplLngsIHRleGVsU2l6ZS55KTtcbiAgICAgICAgdGhpcy5rZXJuZWwgPSBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDEuMCwgMi4wLCAyLjAsIDMuMF0pO1xuICAgIH1cblxuICAgIHNldFRleGVsU2l6ZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnVuaWZvcm1zWyd0ZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSk7XG4gICAgICAgIHRoaXMudW5pZm9ybXNbJ2hhbGZUZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSkubXVsdGlwbHlTY2FsYXIoMC41KTtcbiAgICB9XG4gICAgc2V0UmVzb2x1dGlvbihyZXNvbHV0aW9uOiBWZWN0b3IyKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5jb3B5KHJlc29sdXRpb24pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQ3pDLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsb0VBQW9FLENBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgRGlzY2FyZE1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG4gICAge30sXG4gICAgJ3ZvaWQgbWFpbigpIHsgfScsXG4gICAgJ3ZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOyBkaXNjYXJkOyAgfSdcbik7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ export * from './blur-pass/blur-pass';
2
+ export * from './caustics-material/caustics-material';
3
+ export * from './caustics-material/caustics-projection-material';
4
+ export * from './convolution-material/convolution-material';
5
+ export * from './discard-material/discard-material';
6
+ export * from './mesh-distort-material/mesh-distort-material';
7
+ export * from './mesh-reflector-material/mesh-reflector-material';
8
+ export * from './mesh-refraction-material/mesh-refraction-material';
9
+ export * from './mesh-transmission-material/mesh-transmission-material';
10
+ export * from './mesh-wobble-material/mesh-wobble-material';
11
+ export * from './soft-shadow-material/soft-shadow-material';
12
+ export * from './sparkles-material/sparkles-material';
13
+ export * from './spot-light-material/spot-light-material';
14
+ export * from './star-field-material/star-field-material';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ibHVyLXBhc3MvYmx1ci1wYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2F1c3RpY3MtbWF0ZXJpYWwvY2F1c3RpY3MtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXVzdGljcy1tYXRlcmlhbC9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwvbWVzaC1kaXN0b3J0LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwvbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXdvYmJsZS1tYXRlcmlhbC9tZXNoLXdvYmJsZS1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NvZnQtc2hhZG93LW1hdGVyaWFsL3NvZnQtc2hhZG93LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3BhcmtsZXMtbWF0ZXJpYWwvc3BhcmtsZXMtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcG90LWxpZ2h0LW1hdGVyaWFsL3Nwb3QtbGlnaHQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFyLWZpZWxkLW1hdGVyaWFsL3N0YXItZmllbGQtbWF0ZXJpYWwnO1xuIl19
@@ -0,0 +1,55 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import * as THREE from 'three';
3
+ export const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
4
+ export function provideNgtsMeshDistortMaterialShader(distortShader) {
5
+ return {
6
+ provide: NGTS_DISTORT_MATERIAL_SHADER,
7
+ useFactory: () => {
8
+ return class extends THREE.MeshPhysicalMaterial {
9
+ constructor(parameters = {}) {
10
+ super(parameters);
11
+ this.setValues(parameters);
12
+ this._time = { value: 0 };
13
+ this._distort = { value: 0.4 };
14
+ this._radius = { value: 1 };
15
+ }
16
+ onBeforeCompile(shader) {
17
+ shader.uniforms['time'] = this._time;
18
+ shader.uniforms['radius'] = this._radius;
19
+ shader.uniforms['distort'] = this._distort;
20
+ shader.vertexShader = `
21
+ uniform float time;
22
+ uniform float radius;
23
+ uniform float distort;
24
+ ${distortShader}
25
+ ${shader.vertexShader}
26
+ `;
27
+ shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
28
+ float updateTime = time / 50.0;
29
+ float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));
30
+ vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));
31
+ `);
32
+ }
33
+ get time() {
34
+ return this._time.value;
35
+ }
36
+ set time(v) {
37
+ this._time.value = v;
38
+ }
39
+ get distort() {
40
+ return this._distort.value;
41
+ }
42
+ set distort(v) {
43
+ this._distort.value = v;
44
+ }
45
+ get radius() {
46
+ return this._radius.value;
47
+ }
48
+ set radius(v) {
49
+ this._radius.value = v;
50
+ }
51
+ };
52
+ },
53
+ };
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWUvQixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLENBQUMsQ0FBQztBQUU3RyxNQUFNLFVBQVUsb0NBQW9DLENBQUMsYUFBcUI7SUFDdEUsT0FBTztRQUNILE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sS0FBTSxTQUFRLEtBQUssQ0FBQyxvQkFBb0I7Z0JBSzNDLFlBQVksYUFBbUQsRUFBRTtvQkFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxDQUFDO2dCQUVRLGVBQWUsQ0FBQyxNQUFvQjtvQkFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFFM0MsTUFBTSxDQUFDLFlBQVksR0FBRzs7OztlQUkzQixhQUFhO2VBQ2IsTUFBTSxDQUFDLFlBQVk7WUFDdEIsQ0FBQztvQkFDTyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM3Qyx5QkFBeUIsRUFDekI7Ozs7Z0JBSVIsQ0FDSyxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxJQUFJO29CQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBSSxPQUFPO29CQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxNQUFNO29CQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsQ0FBQztvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7YUFDSixDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIFVuaWZvcm08VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIG5wbSBpIC1EIHJhdy1sb2FkZXIgZ2xzbGlmeS1sb2FkZXIgZ2xzbC1ub2lzZVxuICogVXNhZ2U6IGltcG9ydCBkaXN0b3J0IGZyb20gJ3Jhdy1sb2FkZXIhZ2xzbGlmeS1sb2FkZXIhYW5ndWxhci10aHJlZS1zb2JhL2Fzc2V0cy9kaXN0b3J0LnZlcnQuZ2xzbCdcbiAqXG4gKiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydClcbiAqL1xuXG5leHBvcnQgdHlwZSBNZXNoRGlzdG9ydE1hdGVyaWFsID0gVHlwZTx7IHRpbWU6IG51bWJlcjsgZGlzdG9ydDogbnVtYmVyOyByYWRpdXM6IG51bWJlciB9ICYgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWw+O1xuXG5leHBvcnQgY29uc3QgTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZXNoRGlzdG9ydE1hdGVyaWFsPignRGlzdG9ydE1hdGVyaWFsU2hhZGVyJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydFNoYWRlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUixcbiAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuICAgICAgICAgICAgICAgIF90aW1lOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgICAgICAgICAgX2Rpc3RvcnQ6IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgICAgICAgICBfcmFkaXVzOiBVbmlmb3JtPG51bWJlcj47XG5cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbFBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXMocGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUgPSB7IHZhbHVlOiAwIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQgPSB7IHZhbHVlOiAwLjQgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0geyB2YWx1ZTogMSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG92ZXJyaWRlIG9uQmVmb3JlQ29tcGlsZShzaGFkZXI6IFRIUkVFLlNoYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ3RpbWUnXSA9IHRoaXMuX3RpbWU7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1sncmFkaXVzJ10gPSB0aGlzLl9yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1snZGlzdG9ydCddID0gdGhpcy5fZGlzdG9ydDtcblxuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudmVydGV4U2hhZGVyID0gYFxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IHJhZGl1cztcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgJHtkaXN0b3J0U2hhZGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICR7c2hhZGVyLnZlcnRleFNoYWRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdCAgYDtcbiAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG4gICAgICAgICAgICAgICAgICAgICAgICBgXG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCB1cGRhdGVUaW1lID0gdGltZSAvIDUwLjA7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCBub2lzZSA9IHNub2lzZSh2ZWMzKHBvc2l0aW9uIC8gMi4wICsgdXBkYXRlVGltZSAqIDUuMCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgdmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMocG9zaXRpb24gKiAobm9pc2UgKiBwb3coZGlzdG9ydCwgMi4wKSArIHJhZGl1cykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCB0aW1lKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGltZS52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgdGltZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCBkaXN0b3J0KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzdG9ydC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgZGlzdG9ydCh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCByYWRpdXMoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yYWRpdXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0IHJhZGl1cyh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhZGl1cy52YWx1ZSA9IHY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuIl19