@react-three/postprocessing 2.18.0 → 3.0.0-rc.0

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 (271) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +81 -81
  3. package/dist/index.d.ts +1 -38
  4. package/dist/index.js +554 -88
  5. package/dist/index.js.map +1 -1
  6. package/package.json +69 -96
  7. package/src/EffectComposer.test.tsx +126 -0
  8. package/src/EffectComposer.tsx +202 -0
  9. package/src/Selection.tsx +46 -0
  10. package/src/effects/ASCII.tsx +135 -0
  11. package/src/effects/Autofocus.tsx +153 -0
  12. package/src/effects/Bloom.tsx +6 -0
  13. package/src/effects/BrightnessContrast.tsx +4 -0
  14. package/src/effects/ChromaticAberration.tsx +5 -0
  15. package/src/effects/ColorAverage.tsx +15 -0
  16. package/src/effects/ColorDepth.tsx +4 -0
  17. package/src/effects/Depth.tsx +4 -0
  18. package/src/effects/DepthOfField.tsx +89 -0
  19. package/src/effects/DotScreen.tsx +4 -0
  20. package/src/effects/FXAA.tsx +4 -0
  21. package/src/effects/Glitch.tsx +40 -0
  22. package/src/effects/GodRays.tsx +16 -0
  23. package/src/effects/Grid.tsx +21 -0
  24. package/src/effects/HueSaturation.tsx +4 -0
  25. package/src/effects/LUT.tsx +26 -0
  26. package/src/effects/LensFlare.tsx +611 -0
  27. package/src/effects/N8AO.tsx +81 -0
  28. package/src/effects/Noise.tsx +4 -0
  29. package/src/effects/Outline.tsx +117 -0
  30. package/src/effects/Pixelation.tsx +15 -0
  31. package/{dist/effects/Ramp.js → src/effects/Ramp.tsx} +150 -156
  32. package/src/effects/SMAA.tsx +4 -0
  33. package/src/effects/SSAO.tsx +41 -0
  34. package/src/effects/ScanlineEffect.tsx +7 -0
  35. package/src/effects/SelectiveBloom.tsx +126 -0
  36. package/src/effects/Sepia.tsx +4 -0
  37. package/src/effects/ShockWave.tsx +4 -0
  38. package/src/effects/Texture.tsx +23 -0
  39. package/src/effects/TiltShift.tsx +4 -0
  40. package/{dist/effects/TiltShift2.js → src/effects/TiltShift2.tsx} +90 -98
  41. package/src/effects/ToneMapping.tsx +6 -0
  42. package/src/effects/Vignette.tsx +4 -0
  43. package/{dist/effects/Water.js → src/effects/Water.tsx} +35 -38
  44. package/src/index.ts +40 -0
  45. package/src/util.tsx +55 -0
  46. package/dist/EffectComposer.cjs +0 -137
  47. package/dist/EffectComposer.cjs.map +0 -1
  48. package/dist/EffectComposer.d.ts +0 -27
  49. package/dist/EffectComposer.js +0 -137
  50. package/dist/EffectComposer.js.map +0 -1
  51. package/dist/EffectComposer.test.d.ts +0 -4
  52. package/dist/Selection.cjs +0 -36
  53. package/dist/Selection.cjs.map +0 -1
  54. package/dist/Selection.d.ts +0 -16
  55. package/dist/Selection.js +0 -36
  56. package/dist/Selection.js.map +0 -1
  57. package/dist/compat.cjs +0 -77
  58. package/dist/compat.cjs.map +0 -1
  59. package/dist/compat.js +0 -60
  60. package/dist/compat.js.map +0 -1
  61. package/dist/effects/ASCII.cjs +0 -113
  62. package/dist/effects/ASCII.cjs.map +0 -1
  63. package/dist/effects/ASCII.d.ts +0 -17
  64. package/dist/effects/ASCII.js +0 -113
  65. package/dist/effects/ASCII.js.map +0 -1
  66. package/dist/effects/Autofocus.cjs +0 -126
  67. package/dist/effects/Autofocus.cjs.map +0 -1
  68. package/dist/effects/Autofocus.d.ts +0 -22
  69. package/dist/effects/Autofocus.js +0 -109
  70. package/dist/effects/Autofocus.js.map +0 -1
  71. package/dist/effects/Bloom.cjs +0 -9
  72. package/dist/effects/Bloom.cjs.map +0 -1
  73. package/dist/effects/Bloom.d.ts +0 -6
  74. package/dist/effects/Bloom.js +0 -9
  75. package/dist/effects/Bloom.js.map +0 -1
  76. package/dist/effects/BrightnessContrast.cjs +0 -7
  77. package/dist/effects/BrightnessContrast.cjs.map +0 -1
  78. package/dist/effects/BrightnessContrast.d.ts +0 -10
  79. package/dist/effects/BrightnessContrast.js +0 -7
  80. package/dist/effects/BrightnessContrast.js.map +0 -1
  81. package/dist/effects/ChromaticAberration.cjs +0 -7
  82. package/dist/effects/ChromaticAberration.cjs.map +0 -1
  83. package/dist/effects/ChromaticAberration.d.ts +0 -13
  84. package/dist/effects/ChromaticAberration.js +0 -7
  85. package/dist/effects/ChromaticAberration.js.map +0 -1
  86. package/dist/effects/ColorAverage.cjs +0 -11
  87. package/dist/effects/ColorAverage.cjs.map +0 -1
  88. package/dist/effects/ColorAverage.d.ts +0 -8
  89. package/dist/effects/ColorAverage.js +0 -11
  90. package/dist/effects/ColorAverage.js.map +0 -1
  91. package/dist/effects/ColorDepth.cjs +0 -7
  92. package/dist/effects/ColorDepth.cjs.map +0 -1
  93. package/dist/effects/ColorDepth.d.ts +0 -9
  94. package/dist/effects/ColorDepth.js +0 -7
  95. package/dist/effects/ColorDepth.js.map +0 -1
  96. package/dist/effects/Depth.cjs +0 -7
  97. package/dist/effects/Depth.cjs.map +0 -1
  98. package/dist/effects/Depth.d.ts +0 -9
  99. package/dist/effects/Depth.js +0 -7
  100. package/dist/effects/Depth.js.map +0 -1
  101. package/dist/effects/DepthOfField.cjs +0 -74
  102. package/dist/effects/DepthOfField.cjs.map +0 -1
  103. package/dist/effects/DepthOfField.d.ts +0 -25
  104. package/dist/effects/DepthOfField.js +0 -74
  105. package/dist/effects/DepthOfField.js.map +0 -1
  106. package/dist/effects/DotScreen.cjs +0 -7
  107. package/dist/effects/DotScreen.cjs.map +0 -1
  108. package/dist/effects/DotScreen.d.ts +0 -10
  109. package/dist/effects/DotScreen.js +0 -7
  110. package/dist/effects/DotScreen.js.map +0 -1
  111. package/dist/effects/FXAA.cjs +0 -7
  112. package/dist/effects/FXAA.cjs.map +0 -1
  113. package/dist/effects/FXAA.d.ts +0 -8
  114. package/dist/effects/FXAA.js +0 -7
  115. package/dist/effects/FXAA.js.map +0 -1
  116. package/dist/effects/Glitch.cjs +0 -31
  117. package/dist/effects/Glitch.cjs.map +0 -1
  118. package/dist/effects/Glitch.d.ts +0 -30
  119. package/dist/effects/Glitch.js +0 -31
  120. package/dist/effects/Glitch.js.map +0 -1
  121. package/dist/effects/GodRays.cjs +0 -15
  122. package/dist/effects/GodRays.cjs.map +0 -1
  123. package/dist/effects/GodRays.d.ts +0 -21
  124. package/dist/effects/GodRays.js +0 -15
  125. package/dist/effects/GodRays.js.map +0 -1
  126. package/dist/effects/Grid.cjs +0 -18
  127. package/dist/effects/Grid.cjs.map +0 -1
  128. package/dist/effects/Grid.d.ts +0 -12
  129. package/dist/effects/Grid.js +0 -18
  130. package/dist/effects/Grid.js.map +0 -1
  131. package/dist/effects/HueSaturation.cjs +0 -7
  132. package/dist/effects/HueSaturation.cjs.map +0 -1
  133. package/dist/effects/HueSaturation.d.ts +0 -10
  134. package/dist/effects/HueSaturation.js +0 -7
  135. package/dist/effects/HueSaturation.js.map +0 -1
  136. package/dist/effects/LUT.cjs +0 -20
  137. package/dist/effects/LUT.cjs.map +0 -1
  138. package/dist/effects/LUT.d.ts +0 -9
  139. package/dist/effects/LUT.js +0 -20
  140. package/dist/effects/LUT.js.map +0 -1
  141. package/dist/effects/LensFlare.cjs +0 -189
  142. package/dist/effects/LensFlare.cjs.map +0 -1
  143. package/dist/effects/LensFlare.d.ts +0 -52
  144. package/dist/effects/LensFlare.js +0 -172
  145. package/dist/effects/LensFlare.js.map +0 -1
  146. package/dist/effects/N8AO/BlueNoise.cjs +0 -4
  147. package/dist/effects/N8AO/BlueNoise.cjs.map +0 -1
  148. package/dist/effects/N8AO/BlueNoise.js +0 -5
  149. package/dist/effects/N8AO/BlueNoise.js.map +0 -1
  150. package/dist/effects/N8AO/DepthDownSample.cjs +0 -183
  151. package/dist/effects/N8AO/DepthDownSample.cjs.map +0 -1
  152. package/dist/effects/N8AO/DepthDownSample.js +0 -166
  153. package/dist/effects/N8AO/DepthDownSample.js.map +0 -1
  154. package/dist/effects/N8AO/EffectCompositer.cjs +0 -278
  155. package/dist/effects/N8AO/EffectCompositer.cjs.map +0 -1
  156. package/dist/effects/N8AO/EffectCompositer.js +0 -261
  157. package/dist/effects/N8AO/EffectCompositer.js.map +0 -1
  158. package/dist/effects/N8AO/EffectShader.cjs +0 -236
  159. package/dist/effects/N8AO/EffectShader.cjs.map +0 -1
  160. package/dist/effects/N8AO/EffectShader.js +0 -219
  161. package/dist/effects/N8AO/EffectShader.js.map +0 -1
  162. package/dist/effects/N8AO/FullScreenTriangle.cjs +0 -59
  163. package/dist/effects/N8AO/FullScreenTriangle.cjs.map +0 -1
  164. package/dist/effects/N8AO/FullScreenTriangle.js +0 -42
  165. package/dist/effects/N8AO/FullScreenTriangle.js.map +0 -1
  166. package/dist/effects/N8AO/N8AOPostPass.cjs +0 -502
  167. package/dist/effects/N8AO/N8AOPostPass.cjs.map +0 -1
  168. package/dist/effects/N8AO/N8AOPostPass.js +0 -485
  169. package/dist/effects/N8AO/N8AOPostPass.js.map +0 -1
  170. package/dist/effects/N8AO/PoissionBlur.cjs +0 -186
  171. package/dist/effects/N8AO/PoissionBlur.cjs.map +0 -1
  172. package/dist/effects/N8AO/PoissionBlur.js +0 -169
  173. package/dist/effects/N8AO/PoissionBlur.js.map +0 -1
  174. package/dist/effects/N8AO/index.cjs +0 -60
  175. package/dist/effects/N8AO/index.cjs.map +0 -1
  176. package/dist/effects/N8AO/index.d.ts +0 -18
  177. package/dist/effects/N8AO/index.js +0 -60
  178. package/dist/effects/N8AO/index.js.map +0 -1
  179. package/dist/effects/Noise.cjs +0 -7
  180. package/dist/effects/Noise.cjs.map +0 -1
  181. package/dist/effects/Noise.d.ts +0 -9
  182. package/dist/effects/Noise.js +0 -7
  183. package/dist/effects/Noise.js.map +0 -1
  184. package/dist/effects/Outline.cjs +0 -100
  185. package/dist/effects/Outline.cjs.map +0 -1
  186. package/dist/effects/Outline.d.ts +0 -30
  187. package/dist/effects/Outline.js +0 -100
  188. package/dist/effects/Outline.js.map +0 -1
  189. package/dist/effects/Pixelation.cjs +0 -11
  190. package/dist/effects/Pixelation.cjs.map +0 -1
  191. package/dist/effects/Pixelation.d.ts +0 -6
  192. package/dist/effects/Pixelation.js +0 -11
  193. package/dist/effects/Pixelation.js.map +0 -1
  194. package/dist/effects/Ramp.cjs +0 -156
  195. package/dist/effects/Ramp.cjs.map +0 -1
  196. package/dist/effects/Ramp.d.ts +0 -88
  197. package/dist/effects/Ramp.js.map +0 -1
  198. package/dist/effects/SMAA.cjs +0 -7
  199. package/dist/effects/SMAA.cjs.map +0 -1
  200. package/dist/effects/SMAA.d.ts +0 -10
  201. package/dist/effects/SMAA.js +0 -7
  202. package/dist/effects/SMAA.js.map +0 -1
  203. package/dist/effects/SSAO.cjs +0 -37
  204. package/dist/effects/SSAO.cjs.map +0 -1
  205. package/dist/effects/SSAO.d.ts +0 -30
  206. package/dist/effects/SSAO.js +0 -37
  207. package/dist/effects/SSAO.js.map +0 -1
  208. package/dist/effects/SSR/index.cjs +0 -33
  209. package/dist/effects/SSR/index.cjs.map +0 -1
  210. package/dist/effects/SSR/index.d.ts +0 -55
  211. package/dist/effects/SSR/index.js +0 -33
  212. package/dist/effects/SSR/index.js.map +0 -1
  213. package/dist/effects/SSR/screen-space-reflections.cjs +0 -1699
  214. package/dist/effects/SSR/screen-space-reflections.cjs.map +0 -1
  215. package/dist/effects/SSR/screen-space-reflections.js +0 -1699
  216. package/dist/effects/SSR/screen-space-reflections.js.map +0 -1
  217. package/dist/effects/ScanlineEffect.cjs +0 -7
  218. package/dist/effects/ScanlineEffect.cjs.map +0 -1
  219. package/dist/effects/ScanlineEffect.d.ts +0 -9
  220. package/dist/effects/ScanlineEffect.js +0 -7
  221. package/dist/effects/ScanlineEffect.js.map +0 -1
  222. package/dist/effects/SelectiveBloom.cjs +0 -94
  223. package/dist/effects/SelectiveBloom.cjs.map +0 -1
  224. package/dist/effects/SelectiveBloom.d.ts +0 -20
  225. package/dist/effects/SelectiveBloom.js +0 -94
  226. package/dist/effects/SelectiveBloom.js.map +0 -1
  227. package/dist/effects/Sepia.cjs +0 -7
  228. package/dist/effects/Sepia.cjs.map +0 -1
  229. package/dist/effects/Sepia.d.ts +0 -9
  230. package/dist/effects/Sepia.js +0 -7
  231. package/dist/effects/Sepia.js.map +0 -1
  232. package/dist/effects/ShockWave.cjs +0 -7
  233. package/dist/effects/ShockWave.cjs.map +0 -1
  234. package/dist/effects/ShockWave.d.ts +0 -6
  235. package/dist/effects/ShockWave.js +0 -7
  236. package/dist/effects/ShockWave.js.map +0 -1
  237. package/dist/effects/Texture.cjs +0 -21
  238. package/dist/effects/Texture.cjs.map +0 -1
  239. package/dist/effects/Texture.d.ts +0 -11
  240. package/dist/effects/Texture.js +0 -21
  241. package/dist/effects/Texture.js.map +0 -1
  242. package/dist/effects/TiltShift.cjs +0 -7
  243. package/dist/effects/TiltShift.cjs.map +0 -1
  244. package/dist/effects/TiltShift.d.ts +0 -17
  245. package/dist/effects/TiltShift.js +0 -7
  246. package/dist/effects/TiltShift.js.map +0 -1
  247. package/dist/effects/TiltShift2.cjs +0 -98
  248. package/dist/effects/TiltShift2.cjs.map +0 -1
  249. package/dist/effects/TiltShift2.d.ts +0 -30
  250. package/dist/effects/TiltShift2.js.map +0 -1
  251. package/dist/effects/ToneMapping.cjs +0 -7
  252. package/dist/effects/ToneMapping.cjs.map +0 -1
  253. package/dist/effects/ToneMapping.d.ts +0 -19
  254. package/dist/effects/ToneMapping.js +0 -7
  255. package/dist/effects/ToneMapping.js.map +0 -1
  256. package/dist/effects/Vignette.cjs +0 -7
  257. package/dist/effects/Vignette.cjs.map +0 -1
  258. package/dist/effects/Vignette.d.ts +0 -12
  259. package/dist/effects/Vignette.js +0 -7
  260. package/dist/effects/Vignette.js.map +0 -1
  261. package/dist/effects/Water.cjs +0 -38
  262. package/dist/effects/Water.cjs.map +0 -1
  263. package/dist/effects/Water.d.ts +0 -15
  264. package/dist/effects/Water.js.map +0 -1
  265. package/dist/index.cjs +0 -89
  266. package/dist/index.cjs.map +0 -1
  267. package/dist/util.cjs +0 -69
  268. package/dist/util.cjs.map +0 -1
  269. package/dist/util.d.ts +0 -13
  270. package/dist/util.js +0 -52
  271. package/dist/util.js.map +0 -1
@@ -1,20 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useThree } from "@react-three/fiber";
3
- import { LUT3DEffect } from "postprocessing";
4
- import { forwardRef, useMemo, useLayoutEffect } from "react";
5
- const LUT = forwardRef(function LUT2({ lut, tetrahedralInterpolation, ...props }, ref) {
6
- const effect = useMemo(() => new LUT3DEffect(lut, props), [lut, props]);
7
- const invalidate = useThree((state) => state.invalidate);
8
- useLayoutEffect(() => {
9
- if (tetrahedralInterpolation)
10
- effect.tetrahedralInterpolation = tetrahedralInterpolation;
11
- if (lut)
12
- effect.lut = lut;
13
- invalidate();
14
- }, [effect, invalidate, lut, tetrahedralInterpolation]);
15
- return /* @__PURE__ */ jsx("primitive", { ref, object: effect, dispose: null });
16
- });
17
- export {
18
- LUT
19
- };
20
- //# sourceMappingURL=LUT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LUT.js","sources":["../../src/effects/LUT.tsx"],"sourcesContent":["import { useThree } from '@react-three/fiber'\nimport { LUT3DEffect, BlendFunction } from 'postprocessing'\nimport React, { forwardRef, Ref, useLayoutEffect, useMemo } from 'react'\nimport type { Texture } from 'three'\n\nexport type LUTProps = {\n lut: Texture\n blendFunction?: BlendFunction\n tetrahedralInterpolation?: boolean\n}\n\nexport const LUT = forwardRef(function LUT(\n { lut, tetrahedralInterpolation, ...props }: LUTProps,\n ref: Ref<LUT3DEffect>\n) {\n const effect = useMemo(() => new LUT3DEffect(lut, props), [lut, props])\n const invalidate = useThree((state) => state.invalidate)\n\n useLayoutEffect(() => {\n if (tetrahedralInterpolation) effect.tetrahedralInterpolation = tetrahedralInterpolation\n if (lut) effect.lut = lut\n invalidate()\n }, [effect, invalidate, lut, tetrahedralInterpolation])\n\n return <primitive ref={ref} object={effect} dispose={null} />\n})\n"],"names":["LUT"],"mappings":";;;;AAWa,MAAA,MAAM,WAAW,SAASA,KACrC,EAAE,KAAK,0BAA0B,GAAG,MAAM,GAC1C,KACA;AACM,QAAA,SAAS,QAAQ,MAAM,IAAI,YAAY,KAAK,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC;AACtE,QAAM,aAAa,SAAS,CAAC,UAAU,MAAM,UAAU;AAEvD,kBAAgB,MAAM;AAChB,QAAA;AAA0B,aAAO,2BAA2B;AAC5D,QAAA;AAAK,aAAO,MAAM;AACX;KACV,CAAC,QAAQ,YAAY,KAAK,wBAAwB,CAAC;AAEtD,6BAAQ,aAAU,EAAA,KAAU,QAAQ,QAAQ,SAAS,KAAM,CAAA;AAC7D,CAAC;"}
@@ -1,189 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const THREE = require("three");
5
- const React = require("react");
6
- const fiber = require("@react-three/fiber");
7
- const postprocessing = require("postprocessing");
8
- const maath = require("maath");
9
- const EffectComposer = require("../EffectComposer.cjs");
10
- function _interopNamespaceDefault(e) {
11
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
12
- if (e) {
13
- for (const k in e) {
14
- if (k !== "default") {
15
- const d = Object.getOwnPropertyDescriptor(e, k);
16
- Object.defineProperty(n, k, d.get ? d : {
17
- enumerable: true,
18
- get: () => e[k]
19
- });
20
- }
21
- }
22
- }
23
- n.default = e;
24
- return Object.freeze(n);
25
- }
26
- const THREE__namespace = /* @__PURE__ */ _interopNamespaceDefault(THREE);
27
- const LensFlareShader = {
28
- fragmentShader: (
29
- /* glsl */
30
- `
31
-
32
- uniform float iTime;
33
- uniform vec2 lensPosition;
34
- uniform vec2 iResolution;
35
- uniform vec3 colorGain;
36
- uniform float starPoints;
37
- uniform float glareSize;
38
- uniform float flareSize;
39
- uniform float flareSpeed;
40
- uniform float flareShape;
41
- uniform float haloScale;
42
- uniform float opacity;
43
- uniform bool animated;
44
- uniform bool anamorphic;
45
- uniform bool enabled;
46
- uniform bool secondaryGhosts;
47
- uniform bool starBurst;
48
- uniform float ghostScale;
49
- uniform bool aditionalStreaks;
50
- uniform sampler2D lensDirtTexture;
51
- vec2 vxtC;
52
-
53
- float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}
54
- vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}
55
- float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}
56
- vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}
57
- float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}
58
- float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}
59
- float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}
60
- vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}
61
- vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}
62
- vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}
63
- float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}
64
- vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}
65
- vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}
66
- float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}
67
- float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}
68
- vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}
69
- vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}
70
- vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}
71
- vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}
72
- vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}
73
- void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}
74
- `
75
- )
76
- };
77
- class LensFlareEffect extends postprocessing.Effect {
78
- constructor({
79
- blendFunction = postprocessing.BlendFunction.NORMAL,
80
- enabled = true,
81
- glareSize = 0.2,
82
- lensPosition = [0.01, 0.01],
83
- iResolution = [0, 0],
84
- starPoints = 6,
85
- flareSize = 0.01,
86
- flareSpeed = 0.01,
87
- flareShape = 0.01,
88
- animated = true,
89
- anamorphic = false,
90
- colorGain = new THREE__namespace.Color(20, 20, 20),
91
- lensDirtTexture = null,
92
- haloScale = 0.5,
93
- secondaryGhosts = true,
94
- aditionalStreaks = true,
95
- ghostScale = 0,
96
- opacity = 1,
97
- starBurst = false
98
- } = {}) {
99
- super("LensFlareEffect", LensFlareShader.fragmentShader, {
100
- blendFunction,
101
- uniforms: /* @__PURE__ */ new Map([
102
- ["enabled", new THREE__namespace.Uniform(enabled)],
103
- ["glareSize", new THREE__namespace.Uniform(glareSize)],
104
- ["lensPosition", new THREE__namespace.Uniform(lensPosition)],
105
- ["iTime", new THREE__namespace.Uniform(0)],
106
- ["iResolution", new THREE__namespace.Uniform(iResolution)],
107
- ["starPoints", new THREE__namespace.Uniform(starPoints)],
108
- ["flareSize", new THREE__namespace.Uniform(flareSize)],
109
- ["flareSpeed", new THREE__namespace.Uniform(flareSpeed)],
110
- ["flareShape", new THREE__namespace.Uniform(flareShape)],
111
- ["animated", new THREE__namespace.Uniform(animated)],
112
- ["anamorphic", new THREE__namespace.Uniform(anamorphic)],
113
- ["colorGain", new THREE__namespace.Uniform(colorGain)],
114
- ["lensDirtTexture", new THREE__namespace.Uniform(lensDirtTexture)],
115
- ["haloScale", new THREE__namespace.Uniform(haloScale)],
116
- ["secondaryGhosts", new THREE__namespace.Uniform(secondaryGhosts)],
117
- ["aditionalStreaks", new THREE__namespace.Uniform(aditionalStreaks)],
118
- ["ghostScale", new THREE__namespace.Uniform(ghostScale)],
119
- ["starBurst", new THREE__namespace.Uniform(starBurst)],
120
- ["opacity", new THREE__namespace.Uniform(opacity)]
121
- ])
122
- });
123
- }
124
- update(_renderer, _inputBuffer, deltaTime) {
125
- const iTime = this.uniforms.get("iTime");
126
- if (iTime) {
127
- iTime.value += deltaTime;
128
- }
129
- }
130
- }
131
- const LensFlare = React.forwardRef(
132
- ({ position = new THREE__namespace.Vector3(-25, 6, -60), followMouse = false, smoothTime = 0.07, ...props }, ref) => {
133
- const viewport = fiber.useThree(({ viewport: viewport2 }) => viewport2);
134
- const raycaster = fiber.useThree(({ raycaster: raycaster2 }) => raycaster2);
135
- const pointer = fiber.useThree(({ pointer: pointer2 }) => pointer2);
136
- const { scene, camera } = React.useContext(EffectComposer.EffectComposerContext);
137
- const [projectedPosition] = React.useState(() => new THREE__namespace.Vector3());
138
- const [mouse2d] = React.useState(() => new THREE__namespace.Vector2());
139
- const effect = React.useMemo(() => new LensFlareEffect(props), [props]);
140
- fiber.useFrame((_, delta) => {
141
- var _a, _b, _c;
142
- const uLensPosition = effect.uniforms.get("lensPosition");
143
- const uOpacity = effect.uniforms.get("opacity");
144
- if (!uLensPosition || !uOpacity)
145
- return;
146
- let target = 1;
147
- if (followMouse) {
148
- uLensPosition.value.x = pointer.x;
149
- uLensPosition.value.y = pointer.y;
150
- target = 0;
151
- } else {
152
- projectedPosition.copy(position).project(camera);
153
- if (projectedPosition.z > 1)
154
- return;
155
- uLensPosition.value.x = projectedPosition.x;
156
- uLensPosition.value.y = projectedPosition.y;
157
- mouse2d.set(projectedPosition.x, projectedPosition.y);
158
- raycaster.setFromCamera(mouse2d, camera);
159
- const intersects = raycaster.intersectObjects(scene.children, true);
160
- const { object } = intersects[0];
161
- if (object) {
162
- if (((_a = object.userData) == null ? void 0 : _a.lensflare) === "no-occlusion") {
163
- target = 0;
164
- } else if (object instanceof THREE__namespace.Mesh) {
165
- if (((_c = (_b = object.material.uniforms) == null ? void 0 : _b._transmission) == null ? void 0 : _c.value) > 0.2) {
166
- target = 0.2;
167
- } else if (object.material._transmission && object.material._transmission > 0.2) {
168
- target = 0.2;
169
- } else if (object.material.transparent) {
170
- target = object.material.opacity;
171
- }
172
- }
173
- }
174
- }
175
- maath.easing.damp(uOpacity, "value", target, smoothTime, delta);
176
- });
177
- React.useEffect(() => {
178
- const iResolution = effect.uniforms.get("iResolution");
179
- if (iResolution) {
180
- iResolution.value.x = viewport.width;
181
- iResolution.value.y = viewport.height;
182
- }
183
- }, [effect, viewport]);
184
- return /* @__PURE__ */ jsxRuntime.jsx("primitive", { ref, object: effect, dispose: null });
185
- }
186
- );
187
- exports.LensFlare = LensFlare;
188
- exports.LensFlareEffect = LensFlareEffect;
189
- //# sourceMappingURL=LensFlare.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LensFlare.cjs","sources":["../../src/effects/LensFlare.tsx"],"sourcesContent":["// Created by Anderson Mancini 2023\n// React Three Fiber Ultimate LensFlare\n// To be used Effect together with react-three/postprocessing\n\nimport * as THREE from 'three'\nimport { useMemo, useEffect, forwardRef, useState, useContext } from 'react'\nimport { useFrame, useThree } from '@react-three/fiber'\nimport { BlendFunction, Effect } from 'postprocessing'\nimport { easing } from 'maath'\n\nimport { EffectComposerContext } from '../EffectComposer'\n\nconst LensFlareShader = {\n fragmentShader: /* glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);} \n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;} \n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));} \n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n}\n\nexport class LensFlareEffect extends Effect {\n constructor({\n blendFunction = BlendFunction.NORMAL,\n enabled = true,\n glareSize = 0.2,\n lensPosition = [0.01, 0.01],\n iResolution = [0, 0],\n starPoints = 6,\n flareSize = 0.01,\n flareSpeed = 0.01,\n flareShape = 0.01,\n animated = true,\n anamorphic = false,\n colorGain = new THREE.Color(20, 20, 20),\n lensDirtTexture = null as THREE.Texture | null,\n haloScale = 0.5,\n secondaryGhosts = true,\n aditionalStreaks = true,\n ghostScale = 0.0,\n opacity = 1.0,\n starBurst = false,\n } = {}) {\n super('LensFlareEffect', LensFlareShader.fragmentShader, {\n blendFunction,\n uniforms: new Map<string, THREE.Uniform>([\n ['enabled', new THREE.Uniform(enabled)],\n ['glareSize', new THREE.Uniform(glareSize)],\n ['lensPosition', new THREE.Uniform(lensPosition)],\n ['iTime', new THREE.Uniform(0)],\n ['iResolution', new THREE.Uniform(iResolution)],\n ['starPoints', new THREE.Uniform(starPoints)],\n ['flareSize', new THREE.Uniform(flareSize)],\n ['flareSpeed', new THREE.Uniform(flareSpeed)],\n ['flareShape', new THREE.Uniform(flareShape)],\n ['animated', new THREE.Uniform(animated)],\n ['anamorphic', new THREE.Uniform(anamorphic)],\n ['colorGain', new THREE.Uniform(colorGain)],\n ['lensDirtTexture', new THREE.Uniform(lensDirtTexture)],\n ['haloScale', new THREE.Uniform(haloScale)],\n ['secondaryGhosts', new THREE.Uniform(secondaryGhosts)],\n ['aditionalStreaks', new THREE.Uniform(aditionalStreaks)],\n ['ghostScale', new THREE.Uniform(ghostScale)],\n ['starBurst', new THREE.Uniform(starBurst)],\n ['opacity', new THREE.Uniform(opacity)],\n ]),\n })\n }\n\n update(_renderer: any, _inputBuffer: any, deltaTime: number) {\n const iTime = this.uniforms.get('iTime')\n if (iTime) {\n iTime.value += deltaTime\n }\n }\n}\n\ntype LensFlareProps = ConstructorParameters<typeof LensFlareEffect>[0] & {\n position?: THREE.Vector3\n followMouse?: boolean\n smoothTime?: number\n}\n\nexport const LensFlare = forwardRef<LensFlareEffect, LensFlareProps>(\n ({ position = new THREE.Vector3(-25, 6, -60), followMouse = false, smoothTime = 0.07, ...props }, ref) => {\n const viewport = useThree(({ viewport }) => viewport)\n const raycaster = useThree(({ raycaster }) => raycaster)\n const pointer = useThree(({ pointer }) => pointer)\n const { scene, camera } = useContext(EffectComposerContext)\n\n const [projectedPosition] = useState(() => new THREE.Vector3())\n const [mouse2d] = useState(() => new THREE.Vector2())\n\n const effect = useMemo(() => new LensFlareEffect(props), [props])\n\n useFrame((_, delta) => {\n const uLensPosition = effect.uniforms.get('lensPosition')\n const uOpacity = effect.uniforms.get('opacity')\n if (!uLensPosition || !uOpacity) return\n\n let target = 1\n\n if (followMouse) {\n uLensPosition.value.x = pointer.x\n uLensPosition.value.y = pointer.y\n target = 0\n } else {\n projectedPosition.copy(position).project(camera)\n if (projectedPosition.z > 1) return\n\n uLensPosition.value.x = projectedPosition.x\n uLensPosition.value.y = projectedPosition.y\n\n mouse2d.set(projectedPosition.x, projectedPosition.y)\n raycaster.setFromCamera(mouse2d, camera)\n const intersects = raycaster.intersectObjects(scene.children, true)\n const { object } = intersects[0]\n if (object) {\n if (object.userData?.lensflare === 'no-occlusion') {\n target = 0\n } else if (object instanceof THREE.Mesh) {\n if (object.material.uniforms?._transmission?.value > 0.2) {\n //Check for MeshTransmissionMaterial\n target = 0.2\n } else if (object.material._transmission && object.material._transmission > 0.2) {\n //Check for MeshPhysicalMaterial with transmission setting\n target = 0.2\n } else if (object.material.transparent) {\n // Check for OtherMaterials with transparent parameter\n target = object.material.opacity\n }\n }\n }\n }\n\n easing.damp(uOpacity, 'value', target, smoothTime, delta)\n })\n\n useEffect(() => {\n const iResolution = effect.uniforms.get('iResolution')\n if (iResolution) {\n iResolution.value.x = viewport.width\n iResolution.value.y = viewport.height\n }\n }, [effect, viewport])\n\n return <primitive ref={ref} object={effect} dispose={null} />\n }\n)\n"],"names":["Effect","BlendFunction","THREE","forwardRef","useThree","viewport","raycaster","pointer","useContext","EffectComposerContext","useState","useMemo","useFrame","easing","useEffect"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /// <reference types="react" />
2
- import * as THREE from 'three';
3
- import { BlendFunction, Effect } from 'postprocessing';
4
- export declare class LensFlareEffect extends Effect {
5
- constructor({ blendFunction, enabled, glareSize, lensPosition, iResolution, starPoints, flareSize, flareSpeed, flareShape, animated, anamorphic, colorGain, lensDirtTexture, haloScale, secondaryGhosts, aditionalStreaks, ghostScale, opacity, starBurst, }?: {
6
- blendFunction?: BlendFunction | undefined;
7
- enabled?: boolean | undefined;
8
- glareSize?: number | undefined;
9
- lensPosition?: number[] | undefined;
10
- iResolution?: number[] | undefined;
11
- starPoints?: number | undefined;
12
- flareSize?: number | undefined;
13
- flareSpeed?: number | undefined;
14
- flareShape?: number | undefined;
15
- animated?: boolean | undefined;
16
- anamorphic?: boolean | undefined;
17
- colorGain?: THREE.Color | undefined;
18
- lensDirtTexture?: THREE.Texture | null | undefined;
19
- haloScale?: number | undefined;
20
- secondaryGhosts?: boolean | undefined;
21
- aditionalStreaks?: boolean | undefined;
22
- ghostScale?: number | undefined;
23
- opacity?: number | undefined;
24
- starBurst?: boolean | undefined;
25
- });
26
- update(_renderer: any, _inputBuffer: any, deltaTime: number): void;
27
- }
28
- export declare const LensFlare: import("react").ForwardRefExoticComponent<{
29
- blendFunction?: BlendFunction | undefined;
30
- enabled?: boolean | undefined;
31
- glareSize?: number | undefined;
32
- lensPosition?: number[] | undefined;
33
- iResolution?: number[] | undefined;
34
- starPoints?: number | undefined;
35
- flareSize?: number | undefined;
36
- flareSpeed?: number | undefined;
37
- flareShape?: number | undefined;
38
- animated?: boolean | undefined;
39
- anamorphic?: boolean | undefined;
40
- colorGain?: THREE.Color | undefined;
41
- lensDirtTexture?: THREE.Texture | null | undefined;
42
- haloScale?: number | undefined;
43
- secondaryGhosts?: boolean | undefined;
44
- aditionalStreaks?: boolean | undefined;
45
- ghostScale?: number | undefined;
46
- opacity?: number | undefined;
47
- starBurst?: boolean | undefined;
48
- } & {
49
- position?: THREE.Vector3 | undefined;
50
- followMouse?: boolean | undefined;
51
- smoothTime?: number | undefined;
52
- } & import("react").RefAttributes<LensFlareEffect>>;
@@ -1,172 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import * as THREE from "three";
3
- import { forwardRef, useContext, useState, useMemo, useEffect } from "react";
4
- import { useThree, useFrame } from "@react-three/fiber";
5
- import { Effect, BlendFunction } from "postprocessing";
6
- import { easing } from "maath";
7
- import { EffectComposerContext } from "../EffectComposer.js";
8
- const LensFlareShader = {
9
- fragmentShader: (
10
- /* glsl */
11
- `
12
-
13
- uniform float iTime;
14
- uniform vec2 lensPosition;
15
- uniform vec2 iResolution;
16
- uniform vec3 colorGain;
17
- uniform float starPoints;
18
- uniform float glareSize;
19
- uniform float flareSize;
20
- uniform float flareSpeed;
21
- uniform float flareShape;
22
- uniform float haloScale;
23
- uniform float opacity;
24
- uniform bool animated;
25
- uniform bool anamorphic;
26
- uniform bool enabled;
27
- uniform bool secondaryGhosts;
28
- uniform bool starBurst;
29
- uniform float ghostScale;
30
- uniform bool aditionalStreaks;
31
- uniform sampler2D lensDirtTexture;
32
- vec2 vxtC;
33
-
34
- float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}
35
- vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}
36
- float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}
37
- vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}
38
- float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}
39
- float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}
40
- float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}
41
- vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}
42
- vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}
43
- vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}
44
- float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}
45
- vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}
46
- vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}
47
- float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}
48
- float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}
49
- vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}
50
- vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}
51
- vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}
52
- vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}
53
- vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}
54
- void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}
55
- `
56
- )
57
- };
58
- class LensFlareEffect extends Effect {
59
- constructor({
60
- blendFunction = BlendFunction.NORMAL,
61
- enabled = true,
62
- glareSize = 0.2,
63
- lensPosition = [0.01, 0.01],
64
- iResolution = [0, 0],
65
- starPoints = 6,
66
- flareSize = 0.01,
67
- flareSpeed = 0.01,
68
- flareShape = 0.01,
69
- animated = true,
70
- anamorphic = false,
71
- colorGain = new THREE.Color(20, 20, 20),
72
- lensDirtTexture = null,
73
- haloScale = 0.5,
74
- secondaryGhosts = true,
75
- aditionalStreaks = true,
76
- ghostScale = 0,
77
- opacity = 1,
78
- starBurst = false
79
- } = {}) {
80
- super("LensFlareEffect", LensFlareShader.fragmentShader, {
81
- blendFunction,
82
- uniforms: /* @__PURE__ */ new Map([
83
- ["enabled", new THREE.Uniform(enabled)],
84
- ["glareSize", new THREE.Uniform(glareSize)],
85
- ["lensPosition", new THREE.Uniform(lensPosition)],
86
- ["iTime", new THREE.Uniform(0)],
87
- ["iResolution", new THREE.Uniform(iResolution)],
88
- ["starPoints", new THREE.Uniform(starPoints)],
89
- ["flareSize", new THREE.Uniform(flareSize)],
90
- ["flareSpeed", new THREE.Uniform(flareSpeed)],
91
- ["flareShape", new THREE.Uniform(flareShape)],
92
- ["animated", new THREE.Uniform(animated)],
93
- ["anamorphic", new THREE.Uniform(anamorphic)],
94
- ["colorGain", new THREE.Uniform(colorGain)],
95
- ["lensDirtTexture", new THREE.Uniform(lensDirtTexture)],
96
- ["haloScale", new THREE.Uniform(haloScale)],
97
- ["secondaryGhosts", new THREE.Uniform(secondaryGhosts)],
98
- ["aditionalStreaks", new THREE.Uniform(aditionalStreaks)],
99
- ["ghostScale", new THREE.Uniform(ghostScale)],
100
- ["starBurst", new THREE.Uniform(starBurst)],
101
- ["opacity", new THREE.Uniform(opacity)]
102
- ])
103
- });
104
- }
105
- update(_renderer, _inputBuffer, deltaTime) {
106
- const iTime = this.uniforms.get("iTime");
107
- if (iTime) {
108
- iTime.value += deltaTime;
109
- }
110
- }
111
- }
112
- const LensFlare = forwardRef(
113
- ({ position = new THREE.Vector3(-25, 6, -60), followMouse = false, smoothTime = 0.07, ...props }, ref) => {
114
- const viewport = useThree(({ viewport: viewport2 }) => viewport2);
115
- const raycaster = useThree(({ raycaster: raycaster2 }) => raycaster2);
116
- const pointer = useThree(({ pointer: pointer2 }) => pointer2);
117
- const { scene, camera } = useContext(EffectComposerContext);
118
- const [projectedPosition] = useState(() => new THREE.Vector3());
119
- const [mouse2d] = useState(() => new THREE.Vector2());
120
- const effect = useMemo(() => new LensFlareEffect(props), [props]);
121
- useFrame((_, delta) => {
122
- var _a, _b, _c;
123
- const uLensPosition = effect.uniforms.get("lensPosition");
124
- const uOpacity = effect.uniforms.get("opacity");
125
- if (!uLensPosition || !uOpacity)
126
- return;
127
- let target = 1;
128
- if (followMouse) {
129
- uLensPosition.value.x = pointer.x;
130
- uLensPosition.value.y = pointer.y;
131
- target = 0;
132
- } else {
133
- projectedPosition.copy(position).project(camera);
134
- if (projectedPosition.z > 1)
135
- return;
136
- uLensPosition.value.x = projectedPosition.x;
137
- uLensPosition.value.y = projectedPosition.y;
138
- mouse2d.set(projectedPosition.x, projectedPosition.y);
139
- raycaster.setFromCamera(mouse2d, camera);
140
- const intersects = raycaster.intersectObjects(scene.children, true);
141
- const { object } = intersects[0];
142
- if (object) {
143
- if (((_a = object.userData) == null ? void 0 : _a.lensflare) === "no-occlusion") {
144
- target = 0;
145
- } else if (object instanceof THREE.Mesh) {
146
- if (((_c = (_b = object.material.uniforms) == null ? void 0 : _b._transmission) == null ? void 0 : _c.value) > 0.2) {
147
- target = 0.2;
148
- } else if (object.material._transmission && object.material._transmission > 0.2) {
149
- target = 0.2;
150
- } else if (object.material.transparent) {
151
- target = object.material.opacity;
152
- }
153
- }
154
- }
155
- }
156
- easing.damp(uOpacity, "value", target, smoothTime, delta);
157
- });
158
- useEffect(() => {
159
- const iResolution = effect.uniforms.get("iResolution");
160
- if (iResolution) {
161
- iResolution.value.x = viewport.width;
162
- iResolution.value.y = viewport.height;
163
- }
164
- }, [effect, viewport]);
165
- return /* @__PURE__ */ jsx("primitive", { ref, object: effect, dispose: null });
166
- }
167
- );
168
- export {
169
- LensFlare,
170
- LensFlareEffect
171
- };
172
- //# sourceMappingURL=LensFlare.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LensFlare.js","sources":["../../src/effects/LensFlare.tsx"],"sourcesContent":["// Created by Anderson Mancini 2023\n// React Three Fiber Ultimate LensFlare\n// To be used Effect together with react-three/postprocessing\n\nimport * as THREE from 'three'\nimport { useMemo, useEffect, forwardRef, useState, useContext } from 'react'\nimport { useFrame, useThree } from '@react-three/fiber'\nimport { BlendFunction, Effect } from 'postprocessing'\nimport { easing } from 'maath'\n\nimport { EffectComposerContext } from '../EffectComposer'\n\nconst LensFlareShader = {\n fragmentShader: /* glsl */ `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);} \n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;} \n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));} \n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`,\n}\n\nexport class LensFlareEffect extends Effect {\n constructor({\n blendFunction = BlendFunction.NORMAL,\n enabled = true,\n glareSize = 0.2,\n lensPosition = [0.01, 0.01],\n iResolution = [0, 0],\n starPoints = 6,\n flareSize = 0.01,\n flareSpeed = 0.01,\n flareShape = 0.01,\n animated = true,\n anamorphic = false,\n colorGain = new THREE.Color(20, 20, 20),\n lensDirtTexture = null as THREE.Texture | null,\n haloScale = 0.5,\n secondaryGhosts = true,\n aditionalStreaks = true,\n ghostScale = 0.0,\n opacity = 1.0,\n starBurst = false,\n } = {}) {\n super('LensFlareEffect', LensFlareShader.fragmentShader, {\n blendFunction,\n uniforms: new Map<string, THREE.Uniform>([\n ['enabled', new THREE.Uniform(enabled)],\n ['glareSize', new THREE.Uniform(glareSize)],\n ['lensPosition', new THREE.Uniform(lensPosition)],\n ['iTime', new THREE.Uniform(0)],\n ['iResolution', new THREE.Uniform(iResolution)],\n ['starPoints', new THREE.Uniform(starPoints)],\n ['flareSize', new THREE.Uniform(flareSize)],\n ['flareSpeed', new THREE.Uniform(flareSpeed)],\n ['flareShape', new THREE.Uniform(flareShape)],\n ['animated', new THREE.Uniform(animated)],\n ['anamorphic', new THREE.Uniform(anamorphic)],\n ['colorGain', new THREE.Uniform(colorGain)],\n ['lensDirtTexture', new THREE.Uniform(lensDirtTexture)],\n ['haloScale', new THREE.Uniform(haloScale)],\n ['secondaryGhosts', new THREE.Uniform(secondaryGhosts)],\n ['aditionalStreaks', new THREE.Uniform(aditionalStreaks)],\n ['ghostScale', new THREE.Uniform(ghostScale)],\n ['starBurst', new THREE.Uniform(starBurst)],\n ['opacity', new THREE.Uniform(opacity)],\n ]),\n })\n }\n\n update(_renderer: any, _inputBuffer: any, deltaTime: number) {\n const iTime = this.uniforms.get('iTime')\n if (iTime) {\n iTime.value += deltaTime\n }\n }\n}\n\ntype LensFlareProps = ConstructorParameters<typeof LensFlareEffect>[0] & {\n position?: THREE.Vector3\n followMouse?: boolean\n smoothTime?: number\n}\n\nexport const LensFlare = forwardRef<LensFlareEffect, LensFlareProps>(\n ({ position = new THREE.Vector3(-25, 6, -60), followMouse = false, smoothTime = 0.07, ...props }, ref) => {\n const viewport = useThree(({ viewport }) => viewport)\n const raycaster = useThree(({ raycaster }) => raycaster)\n const pointer = useThree(({ pointer }) => pointer)\n const { scene, camera } = useContext(EffectComposerContext)\n\n const [projectedPosition] = useState(() => new THREE.Vector3())\n const [mouse2d] = useState(() => new THREE.Vector2())\n\n const effect = useMemo(() => new LensFlareEffect(props), [props])\n\n useFrame((_, delta) => {\n const uLensPosition = effect.uniforms.get('lensPosition')\n const uOpacity = effect.uniforms.get('opacity')\n if (!uLensPosition || !uOpacity) return\n\n let target = 1\n\n if (followMouse) {\n uLensPosition.value.x = pointer.x\n uLensPosition.value.y = pointer.y\n target = 0\n } else {\n projectedPosition.copy(position).project(camera)\n if (projectedPosition.z > 1) return\n\n uLensPosition.value.x = projectedPosition.x\n uLensPosition.value.y = projectedPosition.y\n\n mouse2d.set(projectedPosition.x, projectedPosition.y)\n raycaster.setFromCamera(mouse2d, camera)\n const intersects = raycaster.intersectObjects(scene.children, true)\n const { object } = intersects[0]\n if (object) {\n if (object.userData?.lensflare === 'no-occlusion') {\n target = 0\n } else if (object instanceof THREE.Mesh) {\n if (object.material.uniforms?._transmission?.value > 0.2) {\n //Check for MeshTransmissionMaterial\n target = 0.2\n } else if (object.material._transmission && object.material._transmission > 0.2) {\n //Check for MeshPhysicalMaterial with transmission setting\n target = 0.2\n } else if (object.material.transparent) {\n // Check for OtherMaterials with transparent parameter\n target = object.material.opacity\n }\n }\n }\n }\n\n easing.damp(uOpacity, 'value', target, smoothTime, delta)\n })\n\n useEffect(() => {\n const iResolution = effect.uniforms.get('iResolution')\n if (iResolution) {\n iResolution.value.x = viewport.width\n iResolution.value.y = viewport.height\n }\n }, [effect, viewport])\n\n return <primitive ref={ref} object={effect} dispose={null} />\n }\n)\n"],"names":["viewport","raycaster","pointer"],"mappings":"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"}