angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8

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 (296) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +23 -11
  4. package/abstractions/grid/grid.d.ts +41 -50
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +47 -40
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +30 -13
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
  22. package/esm2022/cameras/camera/camera-content.mjs +5 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
  29. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  30. package/esm2022/loaders/loader/loader.mjs +92 -87
  31. package/esm2022/loaders/progress/progress.mjs +1 -1
  32. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  33. package/esm2022/materials/index.mjs +2 -1
  34. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  35. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  36. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  37. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  38. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  39. package/esm2022/materials/point-material/point-material.mjs +46 -0
  40. package/esm2022/misc/animations/animations.mjs +20 -16
  41. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  42. package/esm2022/misc/caustics/caustics.mjs +387 -0
  43. package/esm2022/misc/decal/decal.mjs +187 -0
  44. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  45. package/esm2022/misc/example/example.mjs +160 -0
  46. package/esm2022/misc/fbo/fbo.mjs +35 -35
  47. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  48. package/esm2022/misc/html/html.mjs +304 -0
  49. package/esm2022/misc/index.mjs +10 -1
  50. package/esm2022/misc/sampler/sampler.mjs +142 -0
  51. package/esm2022/misc/shadow/shadow.mjs +111 -0
  52. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  53. package/esm2022/misc/trail/trail.mjs +209 -0
  54. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  55. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  56. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  57. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  58. package/esm2022/modifiers/index.mjs +2 -0
  59. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  60. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  61. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  62. package/esm2022/performances/index.mjs +6 -0
  63. package/esm2022/performances/points/points-input.mjs +64 -0
  64. package/esm2022/performances/points/points.mjs +329 -0
  65. package/esm2022/performances/points/position-point.mjs +54 -0
  66. package/esm2022/performances/segments/segment-object.mjs +9 -0
  67. package/esm2022/performances/segments/segments.mjs +182 -0
  68. package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
  69. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  70. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  71. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  72. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  73. package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
  74. package/esm2022/shaders/index.mjs +5 -3
  75. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  76. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
  77. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  78. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  79. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  80. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  81. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  82. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  83. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  84. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  85. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  86. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  87. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  88. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  89. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  90. package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
  91. package/esm2022/staging/bounds/bounds.mjs +144 -143
  92. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  93. package/esm2022/staging/center/center.mjs +106 -91
  94. package/esm2022/staging/cloud/cloud.mjs +118 -124
  95. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  96. package/esm2022/staging/environment/assets.mjs +12 -12
  97. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  98. package/esm2022/staging/environment/environment-ground.mjs +18 -20
  99. package/esm2022/staging/environment/environment-input.mjs +97 -84
  100. package/esm2022/staging/environment/environment-map.mjs +33 -33
  101. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  102. package/esm2022/staging/environment/environment.mjs +34 -51
  103. package/esm2022/staging/environment/utils.mjs +35 -14
  104. package/esm2022/staging/float/float.mjs +70 -58
  105. package/esm2022/staging/index.mjs +7 -3
  106. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  107. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  108. package/esm2022/staging/sky/sky.mjs +85 -80
  109. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  110. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  111. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  112. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  113. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  114. package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
  115. package/esm2022/staging/stage/stage.mjs +304 -290
  116. package/esm2022/staging/stars/stars.mjs +101 -102
  117. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  118. package/esm2022/staging/wireframe/wireframe.mjs +224 -0
  119. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  120. package/esm2022/utils/content/content.mjs +15 -0
  121. package/esm2022/utils/index.mjs +2 -0
  122. package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
  123. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  124. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  125. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  126. package/fesm2022/angular-three-soba-controls.mjs +93 -88
  127. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  128. package/fesm2022/angular-three-soba-loaders.mjs +94 -90
  129. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  130. package/fesm2022/angular-three-soba-materials.mjs +655 -590
  131. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  132. package/fesm2022/angular-three-soba-misc.mjs +2198 -89
  133. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  134. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  135. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  136. package/fesm2022/angular-three-soba-performances.mjs +697 -0
  137. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  138. package/fesm2022/angular-three-soba-shaders.mjs +501 -264
  139. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
  141. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  143. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  144. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  145. package/loaders/loader/loader.d.ts +19 -17
  146. package/loaders/progress/progress.d.ts +1 -1
  147. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  148. package/materials/index.d.ts +1 -0
  149. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  150. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  151. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  152. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  153. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  154. package/materials/point-material/point-material.d.ts +24 -0
  155. package/metadata.json +1 -0
  156. package/misc/animations/animations.d.ts +6 -4
  157. package/misc/caustics/caustics.d.ts +87 -0
  158. package/misc/decal/decal.d.ts +49 -0
  159. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  160. package/misc/example/example.d.ts +81 -0
  161. package/misc/fbo/fbo.d.ts +2 -2
  162. package/misc/html/html-wrapper.d.ts +559 -0
  163. package/misc/html/html.d.ts +214 -0
  164. package/misc/index.d.ts +9 -0
  165. package/misc/sampler/sampler.d.ts +67 -0
  166. package/misc/shadow/shadow.d.ts +37 -0
  167. package/misc/stats-gl/stats-gl.d.ts +24 -0
  168. package/misc/trail/trail.d.ts +57 -0
  169. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  170. package/misc/trail-texture/trail-texture.d.ts +50 -0
  171. package/modifiers/README.md +3 -0
  172. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  173. package/modifiers/index.d.ts +1 -0
  174. package/package.json +30 -22
  175. package/performances/README.md +3 -0
  176. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  177. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  178. package/performances/index.d.ts +5 -0
  179. package/performances/points/points-input.d.ts +32 -0
  180. package/performances/points/points.d.ts +92 -0
  181. package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
  182. package/performances/segments/segment-object.d.ts +7 -0
  183. package/performances/segments/segments.d.ts +124 -0
  184. package/shaders/grid-material/grid-material.d.ts +33 -0
  185. package/shaders/index.d.ts +4 -2
  186. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
  187. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  188. package/shaders/shader-material/shader-material.d.ts +2 -2
  189. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  190. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  191. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  192. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  193. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  194. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  195. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  196. package/staging/backdrop/backdrop.d.ts +30 -0
  197. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  198. package/staging/bounds/bounds.d.ts +100 -24
  199. package/staging/camera-shake/camera-shake.d.ts +30 -19
  200. package/staging/center/center.d.ts +43 -35
  201. package/staging/cloud/cloud.d.ts +26 -23
  202. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  203. package/staging/environment/assets.d.ts +9 -9
  204. package/staging/environment/environment-cube.d.ts +9 -5
  205. package/staging/environment/environment-ground.d.ts +7 -7
  206. package/staging/environment/environment-input.d.ts +36 -36
  207. package/staging/environment/environment-map.d.ts +10 -5
  208. package/staging/environment/environment-portal.d.ts +10 -5
  209. package/staging/environment/environment.d.ts +0 -4
  210. package/staging/environment/utils.d.ts +2 -2
  211. package/staging/float/float.d.ts +14 -10
  212. package/staging/index.d.ts +6 -2
  213. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  214. package/staging/normal-texture/normal-texture.d.ts +16 -0
  215. package/staging/sky/sky.d.ts +28 -21
  216. package/staging/sparkles/sparkles.d.ts +35 -21
  217. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  218. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  219. package/staging/spot-light/spot-light-input.d.ts +25 -25
  220. package/staging/spot-light/spot-light.d.ts +31 -15
  221. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  222. package/staging/stage/stage.d.ts +88 -63
  223. package/staging/stars/stars.d.ts +27 -16
  224. package/staging/wireframe/wireframe-input.d.ts +65 -0
  225. package/staging/wireframe/wireframe.d.ts +28 -0
  226. package/utils/README.md +3 -0
  227. package/utils/content/content.d.ts +8 -0
  228. package/utils/index.d.ts +1 -0
  229. package/web-types.json +1 -0
  230. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  231. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  232. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  233. package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  234. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  235. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  236. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  237. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  238. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  239. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  240. package/abstractions/line/line-input.d.ts +0 -42
  241. package/abstractions/line/line.d.ts +0 -35
  242. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  243. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  244. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  245. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  246. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  247. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  248. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  249. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  250. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  251. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  252. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  253. package/esm2022/abstractions/line/line-input.mjs +0 -113
  254. package/esm2022/abstractions/line/line.mjs +0 -165
  255. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  256. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  257. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  258. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  259. package/esm2022/performance/detailed/detailed.mjs +0 -61
  260. package/esm2022/performance/index.mjs +0 -7
  261. package/esm2022/performance/instances/instance.mjs +0 -48
  262. package/esm2022/performance/instances/instances.mjs +0 -189
  263. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  264. package/esm2022/performance/stats/stats.mjs +0 -79
  265. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  266. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  267. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  268. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  269. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
  270. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  271. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  272. package/performance/README.md +0 -3
  273. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  274. package/performance/detailed/detailed.d.ts +0 -20
  275. package/performance/index.d.ts +0 -6
  276. package/performance/instances/instance.d.ts +0 -9
  277. package/performance/instances/instances.d.ts +0 -35
  278. package/performance/stats/stats.d.ts +0 -18
  279. package/plugin/generators.json +0 -19
  280. package/plugin/libs/plugin/README.md +0 -11
  281. package/plugin/package.json +0 -9
  282. package/plugin/src/generators/init/compat.d.ts +0 -2
  283. package/plugin/src/generators/init/compat.js +0 -6
  284. package/plugin/src/generators/init/compat.js.map +0 -1
  285. package/plugin/src/generators/init/init.d.ts +0 -7
  286. package/plugin/src/generators/init/init.js +0 -28
  287. package/plugin/src/generators/init/init.js.map +0 -1
  288. package/plugin/src/generators/init/schema.json +0 -6
  289. package/plugin/src/index.d.ts +0 -1
  290. package/plugin/src/index.js +0 -6
  291. package/plugin/src/index.js.map +0 -1
  292. package/staging/caustics/caustisc.d.ts +0 -70
  293. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  294. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  295. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  296. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,7 +1,8 @@
1
1
  import * as THREE from 'three';
2
- import { ShaderMaterial, Uniform, Vector2, NoBlending, WebGLRenderTarget, LinearFilter, HalfFloatType, Scene, PerspectiveCamera, BufferGeometry, BufferAttribute, Mesh, MeshStandardMaterial, Vector3, Color } from 'three';
3
- import { InjectionToken } from '@angular/core';
2
+ import { ShaderMaterial, Uniform, Vector2, NoBlending, WebGLRenderTarget, LinearFilter, HalfFloatType, Scene, PerspectiveCamera, BufferGeometry, BufferAttribute, Mesh, MeshStandardMaterial } from 'three';
3
+ import { InjectionToken, inject, runInInjectionContext, computed, effect } from '@angular/core';
4
4
  import { MeshBVHUniformStruct, shaderStructs, shaderIntersectFunction } from 'three-mesh-bvh';
5
+ import { assertInjectionContext } from 'angular-three';
5
6
 
6
7
  class ConvolutionMaterial extends ShaderMaterial {
7
8
  constructor(texelSize = new Vector2()) {
@@ -206,113 +207,115 @@ const CausticsMaterial = shaderMaterial({
206
207
  size: 10,
207
208
  intensity: 0.5,
208
209
  },
209
- /* glsl */ `varying vec2 vUv;
210
- void main() {
211
- vUv = uv;
212
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
213
- }`,
214
- /* glsl */ `uniform mat4 cameraMatrixWorld;
215
- uniform mat4 cameraProjectionMatrixInv;
216
- uniform vec3 lightDir;
217
- uniform vec3 lightPlaneNormal;
218
- uniform float lightPlaneConstant;
219
- uniform float near;
220
- uniform float far;
221
- uniform float time;
222
- uniform float worldRadius;
223
- uniform float resolution;
224
- uniform float size;
225
- uniform float intensity;
226
- uniform float ior;
227
- precision highp isampler2D;
228
- precision highp usampler2D;
229
- uniform sampler2D normalTexture;
230
- uniform sampler2D depthTexture;
231
- uniform float bounces;
232
- varying vec2 vUv;
233
- vec3 WorldPosFromDepth(float depth, vec2 coord) {
234
- float z = depth * 2.0 - 1.0;
235
- vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
236
- vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
237
- // Perspective division
238
- viewSpacePosition /= viewSpacePosition.w;
239
- vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
240
- return worldSpacePosition.xyz;
241
- }
242
- float sdPlane( vec3 p, vec3 n, float h ) {
243
- // n must be normalized
244
- return dot(p,n) + h;
245
- }
246
- float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
247
- return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
248
- }
249
- vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
250
- rayOrigin = ro;
251
- rayDirection = rd;
252
- rayDirection = refract(rayDirection, normal, 1.0 / ior);
253
- rayOrigin = pos + rayDirection * 0.1;
254
- return rayDirection;
255
- }
256
- void main() {
257
- // Each sample consists of random offset in the x and y direction
258
- float caustic = 0.0;
259
- float causticTexelSize = (1.0 / resolution) * size * 2.0;
260
- float texelsNeeded = worldRadius / causticTexelSize;
261
- float sampleRadius = texelsNeeded / resolution;
262
- float sum = 0.0;
263
- if (texture2D(depthTexture, vUv).x == 1.0) {
264
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
265
- return;
210
+ /* glsl */ `
211
+ varying vec2 vUv;
212
+ void main() {
213
+ vUv = uv;
214
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
215
+ }`,
216
+ /* glsl */ `
217
+ uniform mat4 cameraMatrixWorld;
218
+ uniform mat4 cameraProjectionMatrixInv;
219
+ uniform vec3 lightDir;
220
+ uniform vec3 lightPlaneNormal;
221
+ uniform float lightPlaneConstant;
222
+ uniform float near;
223
+ uniform float far;
224
+ uniform float time;
225
+ uniform float worldRadius;
226
+ uniform float resolution;
227
+ uniform float size;
228
+ uniform float intensity;
229
+ uniform float ior;
230
+ precision highp isampler2D;
231
+ precision highp usampler2D;
232
+ uniform sampler2D normalTexture;
233
+ uniform sampler2D depthTexture;
234
+ uniform float bounces;
235
+ varying vec2 vUv;
236
+ vec3 WorldPosFromDepth(float depth, vec2 coord) {
237
+ float z = depth * 2.0 - 1.0;
238
+ vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
239
+ vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
240
+ // Perspective division
241
+ viewSpacePosition /= viewSpacePosition.w;
242
+ vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
243
+ return worldSpacePosition.xyz;
266
244
  }
267
- vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
268
- vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
269
- vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
270
- vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
271
- vec2 uv1 = vUv + offset1 * sampleRadius;
272
- vec2 uv2 = vUv + offset2 * sampleRadius;
273
- vec2 uv3 = vUv + offset3 * sampleRadius;
274
- vec2 uv4 = vUv + offset4 * sampleRadius;
275
- vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
276
- vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
277
- vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
278
- vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
279
- float depth1 = texture2D(depthTexture, uv1, -10.0).x;
280
- float depth2 = texture2D(depthTexture, uv2, -10.0).x;
281
- float depth3 = texture2D(depthTexture, uv3, -10.0).x;
282
- float depth4 = texture2D(depthTexture, uv4, -10.0).x;
283
- // Sanity check the depths
284
- if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
285
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
286
- return;
245
+ float sdPlane( vec3 p, vec3 n, float h ) {
246
+ // n must be normalized
247
+ return dot(p,n) + h;
287
248
  }
288
- vec3 pos1 = WorldPosFromDepth(depth1, uv1);
289
- vec3 pos2 = WorldPosFromDepth(depth2, uv2);
290
- vec3 pos3 = WorldPosFromDepth(depth3, uv3);
291
- vec3 pos4 = WorldPosFromDepth(depth4, uv4);
292
- vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
293
- vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
294
- vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
295
- vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
296
- vec3 endPos1, endPos2, endPos3, endPos4;
297
- vec3 endDir1, endDir2, endDir3, endDir4;
298
- totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
299
- totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
300
- totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
301
- totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
302
- float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
303
- float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
304
- float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
305
- float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
306
- float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
307
- vec3 finalPos1 = endPos1 + endDir1 * t1;
308
- vec3 finalPos2 = endPos2 + endDir2 * t2;
309
- vec3 finalPos3 = endPos3 + endDir3 * t3;
310
- vec3 finalPos4 = endPos4 + endDir4 * t4;
311
- float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
312
- caustic += intensity * (lightPosArea / finalArea);
313
- // Calculate the area of the triangle in light spaces
314
- gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
315
- }`);
249
+ float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
250
+ return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
251
+ }
252
+ vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
253
+ rayOrigin = ro;
254
+ rayDirection = rd;
255
+ rayDirection = refract(rayDirection, normal, 1.0 / ior);
256
+ rayOrigin = pos + rayDirection * 0.1;
257
+ return rayDirection;
258
+ }
259
+ void main() {
260
+ // Each sample consists of random offset in the x and y direction
261
+ float caustic = 0.0;
262
+ float causticTexelSize = (1.0 / resolution) * size * 2.0;
263
+ float texelsNeeded = worldRadius / causticTexelSize;
264
+ float sampleRadius = texelsNeeded / resolution;
265
+ float sum = 0.0;
266
+ if (texture2D(depthTexture, vUv).x == 1.0) {
267
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
268
+ return;
269
+ }
270
+ vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
271
+ vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
272
+ vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
273
+ vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
274
+ vec2 uv1 = vUv + offset1 * sampleRadius;
275
+ vec2 uv2 = vUv + offset2 * sampleRadius;
276
+ vec2 uv3 = vUv + offset3 * sampleRadius;
277
+ vec2 uv4 = vUv + offset4 * sampleRadius;
278
+ vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
279
+ vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
280
+ vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
281
+ vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
282
+ float depth1 = texture2D(depthTexture, uv1, -10.0).x;
283
+ float depth2 = texture2D(depthTexture, uv2, -10.0).x;
284
+ float depth3 = texture2D(depthTexture, uv3, -10.0).x;
285
+ float depth4 = texture2D(depthTexture, uv4, -10.0).x;
286
+ // Sanity check the depths
287
+ if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
288
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
289
+ return;
290
+ }
291
+ vec3 pos1 = WorldPosFromDepth(depth1, uv1);
292
+ vec3 pos2 = WorldPosFromDepth(depth2, uv2);
293
+ vec3 pos3 = WorldPosFromDepth(depth3, uv3);
294
+ vec3 pos4 = WorldPosFromDepth(depth4, uv4);
295
+ vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
296
+ vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
297
+ vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
298
+ vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
299
+ vec3 endPos1, endPos2, endPos3, endPos4;
300
+ vec3 endDir1, endDir2, endDir3, endDir4;
301
+ totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
302
+ totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
303
+ totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
304
+ totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
305
+ float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
306
+ float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
307
+ float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
308
+ float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
309
+ float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
310
+ vec3 finalPos1 = endPos1 + endDir1 * t1;
311
+ vec3 finalPos2 = endPos2 + endDir2 * t2;
312
+ vec3 finalPos3 = endPos3 + endDir3 * t3;
313
+ vec3 finalPos4 = endPos4 + endDir4 * t4;
314
+ float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
315
+ caustic += intensity * (lightPosArea / finalArea);
316
+ // Calculate the area of the triangle in light spaces
317
+ gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
318
+ }`);
316
319
 
317
320
  const CausticsProjectionMaterial = shaderMaterial({
318
321
  causticsTexture: null,
@@ -320,30 +323,28 @@ const CausticsProjectionMaterial = shaderMaterial({
320
323
  color: new THREE.Color(),
321
324
  lightProjMatrix: new THREE.Matrix4(),
322
325
  lightViewMatrix: new THREE.Matrix4(),
323
- },
324
- /* glsl */ `varying vec3 vWorldPosition;
325
- void main() {
326
- gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
327
- vec4 worldPosition = modelMatrix * vec4(position, 1.);
328
- vWorldPosition = worldPosition.xyz;
329
- }`,
330
- /* glsl */ `varying vec3 vWorldPosition;
331
- uniform vec3 color;
332
- uniform sampler2D causticsTexture;
333
- uniform sampler2D causticsTextureB;
334
- uniform mat4 lightProjMatrix;
335
- uniform mat4 lightViewMatrix;
336
- void main() {
337
- // Apply caustics
338
- vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
339
- lightSpacePos.xyz /= lightSpacePos.w;
340
- lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
341
- vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
342
- vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
343
- gl_FragColor = vec4((front + back) * color, 1.0);
344
- #include <tonemapping_fragment>
345
- #include <encodings_fragment>
346
- }`);
326
+ }, `varying vec3 vWorldPosition;
327
+ void main() {
328
+ gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
329
+ vec4 worldPosition = modelMatrix * vec4(position, 1.);
330
+ vWorldPosition = worldPosition.xyz;
331
+ }`, `varying vec3 vWorldPosition;
332
+ uniform vec3 color;
333
+ uniform sampler2D causticsTexture;
334
+ uniform sampler2D causticsTextureB;
335
+ uniform mat4 lightProjMatrix;
336
+ uniform mat4 lightViewMatrix;
337
+ void main() {
338
+ // Apply caustics
339
+ vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
340
+ lightSpacePos.xyz /= lightSpacePos.w;
341
+ lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
342
+ vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
343
+ vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
344
+ gl_FragColor = vec4((front + back) * color, 1.0);
345
+ #include <tonemapping_fragment>
346
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
347
+ }`);
347
348
 
348
349
  const DiscardMaterial = shaderMaterial({}, 'void main() { }', 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }');
349
350
 
@@ -358,23 +359,37 @@ const GridMaterial = shaderMaterial({
358
359
  sectionColor: new THREE.Color(),
359
360
  infiniteGrid: false,
360
361
  followCamera: false,
362
+ worldCamProjPosition: new THREE.Vector3(),
363
+ worldPlanePosition: new THREE.Vector3(),
361
364
  },
362
365
  /* glsl */ `
363
- varying vec3 worldPosition;
366
+ varying vec3 localPosition;
367
+ varying vec4 worldPosition;
368
+
369
+ uniform vec3 worldCamProjPosition;
370
+ uniform vec3 worldPlanePosition;
364
371
  uniform float fadeDistance;
365
372
  uniform bool infiniteGrid;
366
373
  uniform bool followCamera;
367
374
 
368
375
  void main() {
369
- worldPosition = position.xzy;
370
- if (infiniteGrid) worldPosition *= 1.0 + fadeDistance;
371
- if (followCamera) worldPosition.xz +=cameraPosition.xz;
376
+ localPosition = position.xzy;
377
+ if (infiniteGrid) localPosition *= 1.0 + fadeDistance;
372
378
 
373
- gl_Position = projectionMatrix * modelViewMatrix * vec4(worldPosition, 1.0);
379
+ worldPosition = modelMatrix * vec4(localPosition, 1.0);
380
+ if (followCamera) {
381
+ worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);
382
+ localPosition = (inverse(modelMatrix) * worldPosition).xyz;
383
+ }
384
+
385
+ gl_Position = projectionMatrix * viewMatrix * worldPosition;
374
386
  }
375
387
  `,
376
388
  /* glsl */ `
377
- varying vec3 worldPosition;
389
+ varying vec3 localPosition;
390
+ varying vec4 worldPosition;
391
+
392
+ uniform vec3 worldCamProjPosition;
378
393
  uniform float cellSize;
379
394
  uniform float sectionSize;
380
395
  uniform vec3 cellColor;
@@ -385,80 +400,82 @@ const GridMaterial = shaderMaterial({
385
400
  uniform float sectionThickness;
386
401
 
387
402
  float getGrid(float size, float thickness) {
388
- vec2 r = worldPosition.xz / size;
403
+ vec2 r = localPosition.xz / size;
389
404
  vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
390
- float line = min(grid.x, grid.y) + 1. - thickness;
391
- return 1.0 - min(line, 1.);
405
+ float line = min(grid.x, grid.y) + 1.0 - thickness;
406
+ return 1.0 - min(line, 1.0);
392
407
  }
393
408
 
394
409
  void main() {
395
410
  float g1 = getGrid(cellSize, cellThickness);
396
411
  float g2 = getGrid(sectionSize, sectionThickness);
397
412
 
398
- float d = 1.0 - min(distance(cameraPosition.xz, worldPosition.xz) / fadeDistance, 1.);
399
- vec3 color = mix(cellColor, sectionColor, min(1.,sectionThickness * g2));
413
+ float dist = distance(worldCamProjPosition, worldPosition.xyz);
414
+ float d = 1.0 - min(dist / fadeDistance, 1.0);
415
+ vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));
400
416
 
401
- gl_FragColor = vec4(color, (g1 + g2) * pow(d,fadeStrength));
417
+ gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));
402
418
  gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);
403
419
  if (gl_FragColor.a <= 0.0) discard;
404
420
 
405
421
  #include <tonemapping_fragment>
406
- #include <encodings_fragment>
422
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
407
423
  }
408
424
  `);
409
425
 
410
426
  const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
411
- function provideNgtsMeshDistortMaterialShader(distortShader) {
412
- return {
413
- provide: NGTS_DISTORT_MATERIAL_SHADER,
414
- useFactory: () => {
415
- return class extends THREE.MeshPhysicalMaterial {
416
- constructor(parameters = {}) {
417
- super(parameters);
418
- this.setValues(parameters);
419
- this._time = { value: 0 };
420
- this._distort = { value: 0.4 };
421
- this._radius = { value: 1 };
422
- }
423
- onBeforeCompile(shader) {
424
- shader.uniforms['time'] = this._time;
425
- shader.uniforms['radius'] = this._radius;
426
- shader.uniforms['distort'] = this._distort;
427
- shader.vertexShader = `
427
+ function injectNgtsMeshDistortMaterial() {
428
+ return inject(NGTS_DISTORT_MATERIAL_SHADER);
429
+ }
430
+ function createMeshDistortMaterial(distortShader) {
431
+ return class extends THREE.MeshPhysicalMaterial {
432
+ constructor(parameters = {}) {
433
+ super(parameters);
434
+ this.setValues(parameters);
435
+ this._time = { value: 0 };
436
+ this._distort = { value: 0.4 };
437
+ this._radius = { value: 1 };
438
+ }
439
+ onBeforeCompile(shader) {
440
+ shader.uniforms['time'] = this._time;
441
+ shader.uniforms['radius'] = this._radius;
442
+ shader.uniforms['distort'] = this._distort;
443
+ shader.vertexShader = `
428
444
  uniform float time;
429
445
  uniform float radius;
430
446
  uniform float distort;
431
447
  ${distortShader}
432
448
  ${shader.vertexShader}
433
449
  `;
434
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
450
+ shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
435
451
  float updateTime = time / 50.0;
436
452
  float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));
437
453
  vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));
438
454
  `);
439
- }
440
- get time() {
441
- return this._time.value;
442
- }
443
- set time(v) {
444
- this._time.value = v;
445
- }
446
- get distort() {
447
- return this._distort.value;
448
- }
449
- set distort(v) {
450
- this._distort.value = v;
451
- }
452
- get radius() {
453
- return this._radius.value;
454
- }
455
- set radius(v) {
456
- this._radius.value = v;
457
- }
458
- };
459
- },
455
+ }
456
+ get time() {
457
+ return this._time.value;
458
+ }
459
+ set time(v) {
460
+ this._time.value = v;
461
+ }
462
+ get distort() {
463
+ return this._distort.value;
464
+ }
465
+ set distort(v) {
466
+ this._distort.value = v;
467
+ }
468
+ get radius() {
469
+ return this._radius.value;
470
+ }
471
+ set radius(v) {
472
+ this._radius.value = v;
473
+ }
460
474
  };
461
475
  }
476
+ function provideNgtsMeshDistortMaterialShader(distortShader) {
477
+ return { provide: NGTS_DISTORT_MATERIAL_SHADER, useFactory: () => createMeshDistortMaterial(distortShader) };
478
+ }
462
479
 
463
480
  class MeshReflectorMaterial extends MeshStandardMaterial {
464
481
  constructor(parameters = {}) {
@@ -845,7 +862,7 @@ const MeshRefractionMaterial = shaderMaterial({
845
862
  float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;
846
863
  gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0);
847
864
  #include <tonemapping_fragment>
848
- #include <encodings_fragment>
865
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
849
866
  }`);
850
867
 
851
868
  class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
@@ -864,7 +881,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
864
881
  thicknessMap: { value: null },
865
882
  attenuationDistance: { value: Infinity },
866
883
  attenuationColor: { value: new THREE.Color('white') },
867
- anisotropy: { value: 0.1 },
884
+ anisotropicBlur: { value: 0.1 },
868
885
  time: { value: 0 },
869
886
  distortion: { value: 0.0 },
870
887
  distortionScale: { value: 0.5 },
@@ -887,7 +904,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
887
904
  shader.fragmentShader =
888
905
  /*glsl*/ `
889
906
  uniform float chromaticAberration;
890
- uniform float anisotropy;
907
+ uniform float anisotropicBlur;
891
908
  uniform float time;
892
909
  uniform float distortion;
893
910
  uniform float distortionScale;
@@ -1078,7 +1095,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
1078
1095
  vec3 transmission = vec3(0.0);
1079
1096
  float transmissionR, transmissionB, transmissionG;
1080
1097
  float randomCoords = rand();
1081
- float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropy);
1098
+ float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropicBlur);
1082
1099
  vec3 distortionNormal = vec3(0.0);
1083
1100
  vec3 temporalOffset = vec3(time, -time, -time) * temporalDistortion;
1084
1101
  if (distortion > 0.0) {
@@ -1157,78 +1174,55 @@ const SoftShadowMaterial = shaderMaterial({
1157
1174
  alphaTest: 0.75,
1158
1175
  opacity: 0,
1159
1176
  map: null,
1160
- },
1161
- // language=glsl
1162
- `
1163
- varying vec2 vUv;
1164
- void main() {
1165
- gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
1166
- vUv = uv;
1167
- }
1168
- `,
1169
- // language=glsl
1170
- `
1171
- varying vec2 vUv;
1172
- uniform sampler2D map;
1173
- uniform vec3 color;
1174
- uniform float opacity;
1175
- uniform float alphaTest;
1176
- uniform float blend;
1177
- void main() {
1178
- vec4 sampledDiffuseColor = texture2D(map, vUv);
1179
- gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);
1180
- #include <tonemapping_fragment>
1181
- #include <encodings_fragment>
1182
- }
1183
- `);
1184
-
1185
- const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 },
1186
- // language=GLSL
1187
- `
1188
- uniform float pixelRatio;
1189
- uniform float time;
1190
-
1191
- attribute float size;
1192
- attribute float speed;
1193
- attribute float opacity;
1194
- attribute vec3 noise;
1195
- attribute vec3 color;
1196
-
1197
- varying vec3 vColor;
1198
- varying float vOpacity;
1199
-
1200
- void main() {
1201
- vec4 modelPosition = modelMatrix * vec4(position, 1.0);
1202
-
1203
- modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
1204
- modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
1205
- modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
1206
-
1207
- vec4 viewPosition = viewMatrix * modelPosition;
1208
- vec4 projectionPostion = projectionMatrix * viewPosition;
1209
-
1210
- gl_Position = projectionPostion;
1211
- gl_PointSize = size * 25. * pixelRatio;
1212
- gl_PointSize *= (1.0 / - viewPosition.z);
1213
-
1214
- vColor = color;
1215
- vOpacity = opacity;
1216
- }
1217
- `,
1218
- // language=GLSL
1219
- `
1220
- varying vec3 vColor;
1221
- varying float vOpacity;
1222
-
1223
- void main() {
1224
- float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
1225
- float strength = 0.05 / distanceToCenter - 0.1;
1226
-
1227
- gl_FragColor = vec4(vColor, strength * vOpacity);
1228
- }
1229
- `);
1177
+ }, `varying vec2 vUv;
1178
+ void main() {
1179
+ gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
1180
+ vUv = uv;
1181
+ }`, `varying vec2 vUv;
1182
+ uniform sampler2D map;
1183
+ uniform vec3 color;
1184
+ uniform float opacity;
1185
+ uniform float alphaTest;
1186
+ uniform float blend;
1187
+ void main() {
1188
+ vec4 sampledDiffuseColor = texture2D(map, vUv);
1189
+ gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);
1190
+ #include <tonemapping_fragment>
1191
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
1192
+ }`);
1193
+
1194
+ const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 }, ` uniform float pixelRatio;
1195
+ uniform float time;
1196
+ attribute float size;
1197
+ attribute float speed;
1198
+ attribute float opacity;
1199
+ attribute vec3 noise;
1200
+ attribute vec3 color;
1201
+ varying vec3 vColor;
1202
+ varying float vOpacity;
1203
+ void main() {
1204
+ vec4 modelPosition = modelMatrix * vec4(position, 1.0);
1205
+ modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
1206
+ modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
1207
+ modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
1208
+ vec4 viewPosition = viewMatrix * modelPosition;
1209
+ vec4 projectionPostion = projectionMatrix * viewPosition;
1210
+ gl_Position = projectionPostion;
1211
+ gl_PointSize = size * 25. * pixelRatio;
1212
+ gl_PointSize *= (1.0 / - viewPosition.z);
1213
+ vColor = color;
1214
+ vOpacity = opacity;
1215
+ }`, ` varying vec3 vColor;
1216
+ varying float vOpacity;
1217
+ void main() {
1218
+ float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
1219
+ float strength = 0.05 / distanceToCenter - 0.1;
1220
+ gl_FragColor = vec4(vColor, strength * vOpacity);
1221
+ #include <tonemapping_fragment>
1222
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
1223
+ }`);
1230
1224
 
1231
- class SpotLightMaterial extends ShaderMaterial {
1225
+ class SpotLightMaterial extends THREE.ShaderMaterial {
1232
1226
  constructor() {
1233
1227
  super({
1234
1228
  uniforms: {
@@ -1236,11 +1230,11 @@ class SpotLightMaterial extends ShaderMaterial {
1236
1230
  opacity: { value: 1 },
1237
1231
  attenuation: { value: 2.5 },
1238
1232
  anglePower: { value: 12 },
1239
- spotPosition: { value: new Vector3(0, 0, 0) },
1240
- lightColor: { value: new Color('white') },
1233
+ spotPosition: { value: new THREE.Vector3(0, 0, 0) },
1234
+ lightColor: { value: new THREE.Color('white') },
1241
1235
  cameraNear: { value: 0 },
1242
1236
  cameraFar: { value: 1 },
1243
- resolution: { value: new Vector2(0, 0) },
1237
+ resolution: { value: new THREE.Vector2(0, 0) },
1244
1238
  },
1245
1239
  transparent: true,
1246
1240
  depthWrite: false,
@@ -1307,7 +1301,7 @@ class SpotLightMaterial extends ShaderMaterial {
1307
1301
  gl_FragColor = vec4(lightColor, intensity * opacity);
1308
1302
 
1309
1303
  #include <tonemapping_fragment>
1310
- #include <encodings_fragment>
1304
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
1311
1305
  }`,
1312
1306
  });
1313
1307
  }
@@ -1340,13 +1334,256 @@ void main() {
1340
1334
  gl_FragColor = vec4(vColor, opacity);
1341
1335
 
1342
1336
  #include <tonemapping_fragment>
1343
- #include <encodings_fragment>
1337
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
1344
1338
  }
1345
1339
  `);
1346
1340
 
1341
+ const WireframeMaterialShaders = {
1342
+ uniforms: {
1343
+ strokeOpacity: 1,
1344
+ fillOpacity: 0.25,
1345
+ fillMix: 0,
1346
+ thickness: 0.05,
1347
+ colorBackfaces: false,
1348
+ dashInvert: true,
1349
+ dash: false,
1350
+ dashRepeats: 4,
1351
+ dashLength: 0.5,
1352
+ squeeze: false,
1353
+ squeezeMin: 0.2,
1354
+ squeezeMax: 1,
1355
+ stroke: new THREE.Color('#ff0000'),
1356
+ backfaceStroke: new THREE.Color('#0000ff'),
1357
+ fill: new THREE.Color('#00ff00'),
1358
+ },
1359
+ vertex: /* glsl */ `
1360
+ attribute vec3 barycentric;
1361
+
1362
+ varying vec3 v_edges_Barycentric;
1363
+ varying vec3 v_edges_Position;
1364
+
1365
+ void initWireframe() {
1366
+ v_edges_Barycentric = barycentric;
1367
+ v_edges_Position = position.xyz;
1368
+ }
1369
+ `,
1370
+ fragment: /* glsl */ `
1371
+ #ifndef PI
1372
+ #define PI 3.1415926535897932384626433832795
1373
+ #endif
1374
+
1375
+ varying vec3 v_edges_Barycentric;
1376
+ varying vec3 v_edges_Position;
1377
+
1378
+ uniform float strokeOpacity;
1379
+ uniform float fillOpacity;
1380
+ uniform float fillMix;
1381
+ uniform float thickness;
1382
+ uniform bool colorBackfaces;
1383
+
1384
+ // Dash
1385
+ uniform bool dashInvert;
1386
+ uniform bool dash;
1387
+ uniform bool dashOnly;
1388
+ uniform float dashRepeats;
1389
+ uniform float dashLength;
1390
+
1391
+ // Squeeze
1392
+ uniform bool squeeze;
1393
+ uniform float squeezeMin;
1394
+ uniform float squeezeMax;
1395
+
1396
+ // Colors
1397
+ uniform vec3 stroke;
1398
+ uniform vec3 backfaceStroke;
1399
+ uniform vec3 fill;
1400
+
1401
+ // This is like
1402
+ float wireframe_aastep(float threshold, float dist) {
1403
+ float afwidth = fwidth(dist) * 0.5;
1404
+ return smoothstep(threshold - afwidth, threshold + afwidth, dist);
1405
+ }
1406
+
1407
+ float wireframe_map(float value, float min1, float max1, float min2, float max2) {
1408
+ return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
1409
+ }
1410
+
1411
+ float getWireframe() {
1412
+ vec3 barycentric = v_edges_Barycentric;
1413
+
1414
+ // Distance from center of each triangle to its edges.
1415
+ float d = min(min(barycentric.x, barycentric.y), barycentric.z);
1416
+
1417
+ // for dashed rendering, we can use this to get the 0 .. 1 value of the line length
1418
+ float positionAlong = max(barycentric.x, barycentric.y);
1419
+ if (barycentric.y < barycentric.x && barycentric.y < barycentric.z) {
1420
+ positionAlong = 1.0 - positionAlong;
1421
+ }
1422
+
1423
+ // the thickness of the stroke
1424
+ float computedThickness = wireframe_map(thickness, 0.0, 1.0, 0.0, 0.34);
1425
+
1426
+ // if we want to shrink the thickness toward the center of the line segment
1427
+ if (squeeze) {
1428
+ computedThickness *= mix(squeezeMin, squeezeMax, (1.0 - sin(positionAlong * PI)));
1429
+ }
1430
+
1431
+ // Create dash pattern
1432
+ if (dash) {
1433
+ // here we offset the stroke position depending on whether it
1434
+ // should overlap or not
1435
+ float offset = 1.0 / dashRepeats * dashLength / 2.0;
1436
+ if (!dashInvert) {
1437
+ offset += 1.0 / dashRepeats / 2.0;
1438
+ }
1439
+
1440
+ // if we should animate the dash or not
1441
+ // if (dashAnimate) {
1442
+ // offset += time * 0.22;
1443
+ // }
1444
+
1445
+ // create the repeating dash pattern
1446
+ float pattern = fract((positionAlong + offset) * dashRepeats);
1447
+ computedThickness *= 1.0 - wireframe_aastep(dashLength, pattern);
1448
+ }
1449
+
1450
+ // compute the anti-aliased stroke edge
1451
+ float edge = 1.0 - wireframe_aastep(computedThickness, d);
1452
+
1453
+ return edge;
1454
+ }
1455
+ `,
1456
+ };
1457
+ const WireframeMaterial = shaderMaterial(WireframeMaterialShaders.uniforms, WireframeMaterialShaders.vertex +
1458
+ /* glsl */ `
1459
+ void main() {
1460
+ initWireframe();
1461
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
1462
+ }
1463
+ `, WireframeMaterialShaders.fragment +
1464
+ /* glsl */ `
1465
+ void main () {
1466
+ // Compute color
1467
+
1468
+ float edge = getWireframe();
1469
+ vec4 colorStroke = vec4(stroke, edge);
1470
+
1471
+ #ifdef FLIP_SIDED
1472
+ colorStroke.rgb = backfaceStroke;
1473
+ #endif
1474
+
1475
+ vec4 colorFill = vec4(fill, fillOpacity);
1476
+ vec4 outColor = mix(colorFill, colorStroke, edge * strokeOpacity);
1477
+
1478
+ gl_FragColor = outColor;
1479
+ }
1480
+ `);
1481
+ function setWireframeOverride(material, uniforms) {
1482
+ material.onBeforeCompile = (shader) => {
1483
+ shader.uniforms = {
1484
+ ...shader.uniforms,
1485
+ ...uniforms,
1486
+ };
1487
+ shader.vertexShader = shader.vertexShader.replace('void main() {', `
1488
+ ${WireframeMaterialShaders.vertex}
1489
+ void main() {
1490
+ initWireframe();
1491
+ `);
1492
+ shader.fragmentShader = shader.fragmentShader.replace('void main() {', `
1493
+ ${WireframeMaterialShaders.fragment}
1494
+ void main() {
1495
+ `);
1496
+ shader.fragmentShader = shader.fragmentShader.replace('#include <color_fragment>',
1497
+ /* glsl */ `
1498
+ #include <color_fragment>
1499
+ float edge = getWireframe();
1500
+ vec4 colorStroke = vec4(stroke, edge);
1501
+ #ifdef FLIP_SIDED
1502
+ colorStroke.rgb = backfaceStroke;
1503
+ #endif
1504
+ vec4 colorFill = vec4(mix(diffuseColor.rgb, fill, fillMix), mix(diffuseColor.a, fillOpacity, fillMix));
1505
+ vec4 outColor = mix(colorFill, colorStroke, edge * strokeOpacity);
1506
+
1507
+ diffuseColor.rgb = outColor.rgb;
1508
+ diffuseColor.a *= outColor.a;
1509
+ `);
1510
+ };
1511
+ material.side = THREE.DoubleSide;
1512
+ material.transparent = true;
1513
+ }
1514
+ function injectNgtsWireframeUniforms(uniformsFactory, stateFactory, { injector } = {}) {
1515
+ injector = assertInjectionContext(injectNgtsWireframeUniforms, injector);
1516
+ return runInInjectionContext(injector, () => {
1517
+ const uniforms = uniformsFactory();
1518
+ const state = computed(() => stateFactory());
1519
+ const fillOpacity = computed(() => state().fillOpacity);
1520
+ const fillMix = computed(() => state().fillMix);
1521
+ const strokeOpacity = computed(() => state().strokeOpacity);
1522
+ const thickness = computed(() => state().thickness);
1523
+ const colorBackfaces = computed(() => state().colorBackfaces);
1524
+ const dash = computed(() => state().dash);
1525
+ const dashInvert = computed(() => state().dashInvert);
1526
+ const dashRepeats = computed(() => state().dashRepeats);
1527
+ const dashLength = computed(() => state().dashLength);
1528
+ const squeeze = computed(() => state().squeeze);
1529
+ const squeezeMin = computed(() => state().squeezeMin);
1530
+ const squeezeMax = computed(() => state().squeezeMax);
1531
+ const stroke = computed(() => state().stroke);
1532
+ const fill = computed(() => state().fill);
1533
+ const backfaceStroke = computed(() => state().backfaceStroke);
1534
+ effect(() => {
1535
+ uniforms['fillOpacity'].value = fillOpacity() ?? uniforms['fillOpacity'].value;
1536
+ });
1537
+ effect(() => {
1538
+ uniforms['fillMix'].value = fillMix() ?? uniforms['fillMix'].value;
1539
+ });
1540
+ effect(() => {
1541
+ uniforms['strokeOpacity'].value = strokeOpacity() ?? uniforms['strokeOpacity'].value;
1542
+ });
1543
+ effect(() => {
1544
+ uniforms['thickness'].value = thickness() ?? uniforms['thickness'].value;
1545
+ });
1546
+ effect(() => {
1547
+ uniforms['colorBackfaces'].value = colorBackfaces() ?? uniforms['colorBackfaces'].value;
1548
+ });
1549
+ effect(() => {
1550
+ uniforms['dash'].value = dash() ?? uniforms['dash'].value;
1551
+ });
1552
+ effect(() => {
1553
+ uniforms['dashInvert'].value = dashInvert() ?? uniforms['dashInvert'].value;
1554
+ });
1555
+ effect(() => {
1556
+ uniforms['dashRepeats'].value = dashRepeats() ?? uniforms['dashRepeats'].value;
1557
+ });
1558
+ effect(() => {
1559
+ uniforms['dashLength'].value = dashLength() ?? uniforms['dashLength'].value;
1560
+ });
1561
+ effect(() => {
1562
+ uniforms['squeeze'].value = squeeze() ?? uniforms['squeeze'].value;
1563
+ });
1564
+ effect(() => {
1565
+ uniforms['squeezeMin'].value = squeezeMin() ?? uniforms['squeezeMin'].value;
1566
+ });
1567
+ effect(() => {
1568
+ uniforms['squeezeMax'].value = squeezeMax() ?? uniforms['squeezeMax'].value;
1569
+ });
1570
+ effect(() => {
1571
+ uniforms['stroke'].value = stroke() ? new THREE.Color(stroke()) : uniforms['stroke'].value;
1572
+ });
1573
+ effect(() => {
1574
+ uniforms['fill'].value = fill() ? new THREE.Color(fill()) : uniforms['fill'].value;
1575
+ });
1576
+ effect(() => {
1577
+ uniforms['backfaceStroke'].value = backfaceStroke()
1578
+ ? new THREE.Color(backfaceStroke())
1579
+ : uniforms['backfaceStroke'].value;
1580
+ });
1581
+ });
1582
+ }
1583
+
1347
1584
  /**
1348
1585
  * Generated bundle index. Do not edit.
1349
1586
  */
1350
1587
 
1351
- export { BlurPass, CausticsMaterial, CausticsProjectionMaterial, ConvolutionMaterial, DiscardMaterial, GridMaterial, MeshReflectorMaterial, MeshRefractionMaterial, MeshTransmissionMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SoftShadowMaterial, SparklesMaterial, SpotLightMaterial, StarFieldMaterial, provideNgtsMeshDistortMaterialShader };
1588
+ export { BlurPass, CausticsMaterial, CausticsProjectionMaterial, ConvolutionMaterial, DiscardMaterial, GridMaterial, MeshReflectorMaterial, MeshRefractionMaterial, MeshTransmissionMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SoftShadowMaterial, SparklesMaterial, SpotLightMaterial, StarFieldMaterial, WireframeMaterial, WireframeMaterialShaders, createMeshDistortMaterial, injectNgtsMeshDistortMaterial, injectNgtsWireframeUniforms, provideNgtsMeshDistortMaterialShader, setWireframeOverride, shaderMaterial };
1352
1589
  //# sourceMappingURL=angular-three-soba-shaders.mjs.map