@react-three/postprocessing 2.19.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 (270) 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/{dist/effects/LensFlare.js → src/effects/LensFlare.tsx} +611 -556
  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 -573
  142. package/dist/effects/LensFlare.cjs.map +0 -1
  143. package/dist/effects/LensFlare.d.ts +0 -55
  144. package/dist/effects/LensFlare.js.map +0 -1
  145. package/dist/effects/N8AO/BlueNoise.cjs +0 -4
  146. package/dist/effects/N8AO/BlueNoise.cjs.map +0 -1
  147. package/dist/effects/N8AO/BlueNoise.js +0 -5
  148. package/dist/effects/N8AO/BlueNoise.js.map +0 -1
  149. package/dist/effects/N8AO/DepthDownSample.cjs +0 -183
  150. package/dist/effects/N8AO/DepthDownSample.cjs.map +0 -1
  151. package/dist/effects/N8AO/DepthDownSample.js +0 -166
  152. package/dist/effects/N8AO/DepthDownSample.js.map +0 -1
  153. package/dist/effects/N8AO/EffectCompositer.cjs +0 -278
  154. package/dist/effects/N8AO/EffectCompositer.cjs.map +0 -1
  155. package/dist/effects/N8AO/EffectCompositer.js +0 -261
  156. package/dist/effects/N8AO/EffectCompositer.js.map +0 -1
  157. package/dist/effects/N8AO/EffectShader.cjs +0 -236
  158. package/dist/effects/N8AO/EffectShader.cjs.map +0 -1
  159. package/dist/effects/N8AO/EffectShader.js +0 -219
  160. package/dist/effects/N8AO/EffectShader.js.map +0 -1
  161. package/dist/effects/N8AO/FullScreenTriangle.cjs +0 -59
  162. package/dist/effects/N8AO/FullScreenTriangle.cjs.map +0 -1
  163. package/dist/effects/N8AO/FullScreenTriangle.js +0 -42
  164. package/dist/effects/N8AO/FullScreenTriangle.js.map +0 -1
  165. package/dist/effects/N8AO/N8AOPostPass.cjs +0 -502
  166. package/dist/effects/N8AO/N8AOPostPass.cjs.map +0 -1
  167. package/dist/effects/N8AO/N8AOPostPass.js +0 -485
  168. package/dist/effects/N8AO/N8AOPostPass.js.map +0 -1
  169. package/dist/effects/N8AO/PoissionBlur.cjs +0 -186
  170. package/dist/effects/N8AO/PoissionBlur.cjs.map +0 -1
  171. package/dist/effects/N8AO/PoissionBlur.js +0 -169
  172. package/dist/effects/N8AO/PoissionBlur.js.map +0 -1
  173. package/dist/effects/N8AO/index.cjs +0 -60
  174. package/dist/effects/N8AO/index.cjs.map +0 -1
  175. package/dist/effects/N8AO/index.d.ts +0 -18
  176. package/dist/effects/N8AO/index.js +0 -60
  177. package/dist/effects/N8AO/index.js.map +0 -1
  178. package/dist/effects/Noise.cjs +0 -7
  179. package/dist/effects/Noise.cjs.map +0 -1
  180. package/dist/effects/Noise.d.ts +0 -9
  181. package/dist/effects/Noise.js +0 -7
  182. package/dist/effects/Noise.js.map +0 -1
  183. package/dist/effects/Outline.cjs +0 -100
  184. package/dist/effects/Outline.cjs.map +0 -1
  185. package/dist/effects/Outline.d.ts +0 -30
  186. package/dist/effects/Outline.js +0 -100
  187. package/dist/effects/Outline.js.map +0 -1
  188. package/dist/effects/Pixelation.cjs +0 -11
  189. package/dist/effects/Pixelation.cjs.map +0 -1
  190. package/dist/effects/Pixelation.d.ts +0 -6
  191. package/dist/effects/Pixelation.js +0 -11
  192. package/dist/effects/Pixelation.js.map +0 -1
  193. package/dist/effects/Ramp.cjs +0 -156
  194. package/dist/effects/Ramp.cjs.map +0 -1
  195. package/dist/effects/Ramp.d.ts +0 -88
  196. package/dist/effects/Ramp.js.map +0 -1
  197. package/dist/effects/SMAA.cjs +0 -7
  198. package/dist/effects/SMAA.cjs.map +0 -1
  199. package/dist/effects/SMAA.d.ts +0 -10
  200. package/dist/effects/SMAA.js +0 -7
  201. package/dist/effects/SMAA.js.map +0 -1
  202. package/dist/effects/SSAO.cjs +0 -37
  203. package/dist/effects/SSAO.cjs.map +0 -1
  204. package/dist/effects/SSAO.d.ts +0 -30
  205. package/dist/effects/SSAO.js +0 -37
  206. package/dist/effects/SSAO.js.map +0 -1
  207. package/dist/effects/SSR/index.cjs +0 -33
  208. package/dist/effects/SSR/index.cjs.map +0 -1
  209. package/dist/effects/SSR/index.d.ts +0 -55
  210. package/dist/effects/SSR/index.js +0 -33
  211. package/dist/effects/SSR/index.js.map +0 -1
  212. package/dist/effects/SSR/screen-space-reflections.cjs +0 -1699
  213. package/dist/effects/SSR/screen-space-reflections.cjs.map +0 -1
  214. package/dist/effects/SSR/screen-space-reflections.js +0 -1699
  215. package/dist/effects/SSR/screen-space-reflections.js.map +0 -1
  216. package/dist/effects/ScanlineEffect.cjs +0 -7
  217. package/dist/effects/ScanlineEffect.cjs.map +0 -1
  218. package/dist/effects/ScanlineEffect.d.ts +0 -9
  219. package/dist/effects/ScanlineEffect.js +0 -7
  220. package/dist/effects/ScanlineEffect.js.map +0 -1
  221. package/dist/effects/SelectiveBloom.cjs +0 -94
  222. package/dist/effects/SelectiveBloom.cjs.map +0 -1
  223. package/dist/effects/SelectiveBloom.d.ts +0 -20
  224. package/dist/effects/SelectiveBloom.js +0 -94
  225. package/dist/effects/SelectiveBloom.js.map +0 -1
  226. package/dist/effects/Sepia.cjs +0 -7
  227. package/dist/effects/Sepia.cjs.map +0 -1
  228. package/dist/effects/Sepia.d.ts +0 -9
  229. package/dist/effects/Sepia.js +0 -7
  230. package/dist/effects/Sepia.js.map +0 -1
  231. package/dist/effects/ShockWave.cjs +0 -7
  232. package/dist/effects/ShockWave.cjs.map +0 -1
  233. package/dist/effects/ShockWave.d.ts +0 -6
  234. package/dist/effects/ShockWave.js +0 -7
  235. package/dist/effects/ShockWave.js.map +0 -1
  236. package/dist/effects/Texture.cjs +0 -21
  237. package/dist/effects/Texture.cjs.map +0 -1
  238. package/dist/effects/Texture.d.ts +0 -11
  239. package/dist/effects/Texture.js +0 -21
  240. package/dist/effects/Texture.js.map +0 -1
  241. package/dist/effects/TiltShift.cjs +0 -7
  242. package/dist/effects/TiltShift.cjs.map +0 -1
  243. package/dist/effects/TiltShift.d.ts +0 -17
  244. package/dist/effects/TiltShift.js +0 -7
  245. package/dist/effects/TiltShift.js.map +0 -1
  246. package/dist/effects/TiltShift2.cjs +0 -98
  247. package/dist/effects/TiltShift2.cjs.map +0 -1
  248. package/dist/effects/TiltShift2.d.ts +0 -30
  249. package/dist/effects/TiltShift2.js.map +0 -1
  250. package/dist/effects/ToneMapping.cjs +0 -7
  251. package/dist/effects/ToneMapping.cjs.map +0 -1
  252. package/dist/effects/ToneMapping.d.ts +0 -19
  253. package/dist/effects/ToneMapping.js +0 -7
  254. package/dist/effects/ToneMapping.js.map +0 -1
  255. package/dist/effects/Vignette.cjs +0 -7
  256. package/dist/effects/Vignette.cjs.map +0 -1
  257. package/dist/effects/Vignette.d.ts +0 -12
  258. package/dist/effects/Vignette.js +0 -7
  259. package/dist/effects/Vignette.js.map +0 -1
  260. package/dist/effects/Water.cjs +0 -38
  261. package/dist/effects/Water.cjs.map +0 -1
  262. package/dist/effects/Water.d.ts +0 -15
  263. package/dist/effects/Water.js.map +0 -1
  264. package/dist/index.cjs +0 -89
  265. package/dist/index.cjs.map +0 -1
  266. package/dist/util.cjs +0 -69
  267. package/dist/util.cjs.map +0 -1
  268. package/dist/util.d.ts +0 -13
  269. package/dist/util.js +0 -52
  270. package/dist/util.js.map +0 -1
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const THREE = require("three");
6
- const postprocessing = require("postprocessing");
7
- const fragment = `
8
- uniform sampler2D uCharacters;
9
- uniform float uCharactersCount;
10
- uniform float uCellSize;
11
- uniform bool uInvert;
12
- uniform vec3 uColor;
13
-
14
- const vec2 SIZE = vec2(16.);
15
-
16
- vec3 greyscale(vec3 color, float strength) {
17
- float g = dot(color, vec3(0.299, 0.587, 0.114));
18
- return mix(color, vec3(g), strength);
19
- }
20
-
21
- vec3 greyscale(vec3 color) {
22
- return greyscale(color, 1.0);
23
- }
24
-
25
- void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
26
- vec2 cell = resolution / uCellSize;
27
- vec2 grid = 1.0 / cell;
28
- vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));
29
- vec4 pixelized = texture2D(inputBuffer, pixelizedUV);
30
- float greyscaled = greyscale(pixelized.rgb).r;
31
-
32
- if (uInvert) {
33
- greyscaled = 1.0 - greyscaled;
34
- }
35
-
36
- float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);
37
- vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));
38
- vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;
39
- vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;
40
- vec4 asciiCharacter = texture2D(uCharacters, charUV);
41
-
42
- asciiCharacter.rgb = uColor * asciiCharacter.r;
43
- asciiCharacter.a = pixelized.a;
44
- outputColor = asciiCharacter;
45
- }
46
- `;
47
- class ASCIIEffect extends postprocessing.Effect {
48
- constructor({
49
- font = "arial",
50
- characters = ` .:,'-^=*+?!|0#X%WM@`,
51
- fontSize = 54,
52
- cellSize = 16,
53
- color = "#ffffff",
54
- invert = false
55
- } = {}) {
56
- const uniforms = /* @__PURE__ */ new Map([
57
- ["uCharacters", new THREE.Uniform(new THREE.Texture())],
58
- ["uCellSize", new THREE.Uniform(cellSize)],
59
- ["uCharactersCount", new THREE.Uniform(characters.length)],
60
- ["uColor", new THREE.Uniform(new THREE.Color(color))],
61
- ["uInvert", new THREE.Uniform(invert)]
62
- ]);
63
- super("ASCIIEffect", fragment, { uniforms });
64
- const charactersTextureUniform = this.uniforms.get("uCharacters");
65
- if (charactersTextureUniform) {
66
- charactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);
67
- }
68
- }
69
- /** Draws the characters on a Canvas and returns a texture */
70
- createCharactersTexture(characters, font, fontSize) {
71
- const canvas = document.createElement("canvas");
72
- const SIZE = 1024;
73
- const MAX_PER_ROW = 16;
74
- const CELL = SIZE / MAX_PER_ROW;
75
- canvas.width = canvas.height = SIZE;
76
- const texture = new THREE.CanvasTexture(canvas, void 0, THREE.RepeatWrapping, THREE.RepeatWrapping, THREE.NearestFilter, THREE.NearestFilter);
77
- const context = canvas.getContext("2d");
78
- if (!context) {
79
- throw new Error("Context not available");
80
- }
81
- context.clearRect(0, 0, SIZE, SIZE);
82
- context.font = `${fontSize}px ${font}`;
83
- context.textAlign = "center";
84
- context.textBaseline = "middle";
85
- context.fillStyle = "#fff";
86
- for (let i = 0; i < characters.length; i++) {
87
- const char = characters[i];
88
- const x = i % MAX_PER_ROW;
89
- const y = Math.floor(i / MAX_PER_ROW);
90
- context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);
91
- }
92
- texture.needsUpdate = true;
93
- return texture;
94
- }
95
- }
96
- const ASCII = React.forwardRef(
97
- ({
98
- font = "arial",
99
- characters = ` .:,'-^=*+?!|0#X%WM@`,
100
- fontSize = 54,
101
- cellSize = 16,
102
- color = "#ffffff",
103
- invert = false
104
- }, fref) => {
105
- const effect = React.useMemo(
106
- () => new ASCIIEffect({ characters, font, fontSize, cellSize, color, invert }),
107
- [characters, fontSize, cellSize, color, invert, font]
108
- );
109
- return /* @__PURE__ */ jsxRuntime.jsx("primitive", { ref: fref, object: effect });
110
- }
111
- );
112
- exports.ASCII = ASCII;
113
- //# sourceMappingURL=ASCII.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ASCII.cjs","sources":["../../src/effects/ASCII.tsx"],"sourcesContent":["// From: https://github.com/emilwidlund/ASCII\n// https://twitter.com/emilwidlund/status/1652386482420609024\n\nimport { forwardRef, useMemo } from 'react'\nimport { CanvasTexture, Color, NearestFilter, RepeatWrapping, Texture, Uniform } from 'three'\nimport { Effect } from 'postprocessing'\n\nconst fragment = `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`\n\ninterface IASCIIEffectProps {\n font?: string\n characters?: string\n fontSize?: number\n cellSize?: number\n color?: string\n invert?: boolean\n}\n\nclass ASCIIEffect extends Effect {\n constructor({\n font = 'arial',\n characters = ` .:,'-^=*+?!|0#X%WM@`,\n fontSize = 54,\n cellSize = 16,\n color = '#ffffff',\n invert = false,\n }: IASCIIEffectProps = {}) {\n const uniforms = new Map<string, Uniform>([\n ['uCharacters', new Uniform(new Texture())],\n ['uCellSize', new Uniform(cellSize)],\n ['uCharactersCount', new Uniform(characters.length)],\n ['uColor', new Uniform(new Color(color))],\n ['uInvert', new Uniform(invert)],\n ])\n\n super('ASCIIEffect', fragment, { uniforms })\n\n const charactersTextureUniform = this.uniforms.get('uCharacters')\n\n if (charactersTextureUniform) {\n charactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize)\n }\n }\n\n /** Draws the characters on a Canvas and returns a texture */\n public createCharactersTexture(characters: string, font: string, fontSize: number): THREE.Texture {\n const canvas = document.createElement('canvas')\n const SIZE = 1024\n const MAX_PER_ROW = 16\n const CELL = SIZE / MAX_PER_ROW\n\n canvas.width = canvas.height = SIZE\n const texture = new CanvasTexture(canvas, undefined, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter)\n const context = canvas.getContext('2d')\n\n if (!context) {\n throw new Error('Context not available')\n }\n\n context.clearRect(0, 0, SIZE, SIZE)\n context.font = `${fontSize}px ${font}`\n context.textAlign = 'center'\n context.textBaseline = 'middle'\n context.fillStyle = '#fff'\n\n for (let i = 0; i < characters.length; i++) {\n const char = characters[i]\n const x = i % MAX_PER_ROW\n const y = Math.floor(i / MAX_PER_ROW)\n context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2)\n }\n\n texture.needsUpdate = true\n return texture\n }\n}\n\nexport const ASCII = forwardRef<ASCIIEffect, IASCIIEffectProps>(\n (\n {\n font = 'arial',\n characters = ` .:,'-^=*+?!|0#X%WM@`,\n fontSize = 54,\n cellSize = 16,\n color = '#ffffff',\n invert = false,\n },\n fref\n ) => {\n const effect = useMemo(\n () => new ASCIIEffect({ characters, font, fontSize, cellSize, color, invert }),\n [characters, fontSize, cellSize, color, invert, font]\n )\n return <primitive ref={fref} object={effect} />\n }\n)\n"],"names":["Effect","Uniform","Texture","Color","CanvasTexture","RepeatWrapping","NearestFilter","forwardRef","useMemo","jsx"],"mappings":";;;;;;AAOA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDjB,MAAM,oBAAoBA,eAAAA,OAAO;AAAA,EAC/B,YAAY;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,IAAuB,IAAI;AACnB,UAAA,+BAAe,IAAqB;AAAA,MACxC,CAAC,eAAe,IAAIC,MAAAA,QAAQ,IAAIC,MAAAA,QAAS,CAAA,CAAC;AAAA,MAC1C,CAAC,aAAa,IAAID,cAAQ,QAAQ,CAAC;AAAA,MACnC,CAAC,oBAAoB,IAAIA,MAAAA,QAAQ,WAAW,MAAM,CAAC;AAAA,MACnD,CAAC,UAAU,IAAIA,MAAA,QAAQ,IAAIE,MAAAA,MAAM,KAAK,CAAC,CAAC;AAAA,MACxC,CAAC,WAAW,IAAIF,cAAQ,MAAM,CAAC;AAAA,IAAA,CAChC;AAED,UAAM,eAAe,UAAU,EAAE,SAAU,CAAA;AAE3C,UAAM,2BAA2B,KAAK,SAAS,IAAI,aAAa;AAEhE,QAAI,0BAA0B;AAC5B,+BAAyB,QAAQ,KAAK,wBAAwB,YAAY,MAAM,QAAQ;AAAA,IAC1F;AAAA,EACF;AAAA;AAAA,EAGO,wBAAwB,YAAoB,MAAc,UAAiC;AAC1F,UAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,OAAO;AACb,UAAM,cAAc;AACpB,UAAM,OAAO,OAAO;AAEb,WAAA,QAAQ,OAAO,SAAS;AACzB,UAAA,UAAU,IAAIG,MAAc,cAAA,QAAQ,QAAWC,MAAAA,gBAAgBA,MAAA,gBAAgBC,qBAAeA,MAAAA,aAAa;AAC3G,UAAA,UAAU,OAAO,WAAW,IAAI;AAEtC,QAAI,CAAC,SAAS;AACN,YAAA,IAAI,MAAM,uBAAuB;AAAA,IACzC;AAEA,YAAQ,UAAU,GAAG,GAAG,MAAM,IAAI;AAC1B,YAAA,OAAO,GAAG,cAAc;AAChC,YAAQ,YAAY;AACpB,YAAQ,eAAe;AACvB,YAAQ,YAAY;AAEpB,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACpC,YAAA,OAAO,WAAW,CAAC;AACzB,YAAM,IAAI,IAAI;AACd,YAAM,IAAI,KAAK,MAAM,IAAI,WAAW;AAC5B,cAAA,SAAS,MAAM,IAAI,OAAO,OAAO,GAAG,IAAI,OAAO,OAAO,CAAC;AAAA,IACjE;AAEA,YAAQ,cAAc;AACf,WAAA;AAAA,EACT;AACF;AAEO,MAAM,QAAQC,MAAA;AAAA,EACnB,CACE;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,KAEX,SACG;AACH,UAAM,SAASC,MAAA;AAAA,MACb,MAAM,IAAI,YAAY,EAAE,YAAY,MAAM,UAAU,UAAU,OAAO,QAAQ;AAAA,MAC7E,CAAC,YAAY,UAAU,UAAU,OAAO,QAAQ,IAAI;AAAA,IAAA;AAEtD,WAAQC,2BAAAA,IAAA,aAAA,EAAU,KAAK,MAAM,QAAQ,OAAQ,CAAA;AAAA,EAC/C;AACF;;"}
@@ -1,17 +0,0 @@
1
- /// <reference types="react" />
2
- import { Effect } from 'postprocessing';
3
- interface IASCIIEffectProps {
4
- font?: string;
5
- characters?: string;
6
- fontSize?: number;
7
- cellSize?: number;
8
- color?: string;
9
- invert?: boolean;
10
- }
11
- declare class ASCIIEffect extends Effect {
12
- constructor({ font, characters, fontSize, cellSize, color, invert, }?: IASCIIEffectProps);
13
- /** Draws the characters on a Canvas and returns a texture */
14
- createCharactersTexture(characters: string, font: string, fontSize: number): THREE.Texture;
15
- }
16
- export declare const ASCII: import("react").ForwardRefExoticComponent<IASCIIEffectProps & import("react").RefAttributes<ASCIIEffect>>;
17
- export {};
@@ -1,113 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { forwardRef, useMemo } from "react";
3
- import { Uniform, Texture, Color, CanvasTexture, RepeatWrapping, NearestFilter } from "three";
4
- import { Effect } from "postprocessing";
5
- const fragment = `
6
- uniform sampler2D uCharacters;
7
- uniform float uCharactersCount;
8
- uniform float uCellSize;
9
- uniform bool uInvert;
10
- uniform vec3 uColor;
11
-
12
- const vec2 SIZE = vec2(16.);
13
-
14
- vec3 greyscale(vec3 color, float strength) {
15
- float g = dot(color, vec3(0.299, 0.587, 0.114));
16
- return mix(color, vec3(g), strength);
17
- }
18
-
19
- vec3 greyscale(vec3 color) {
20
- return greyscale(color, 1.0);
21
- }
22
-
23
- void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
24
- vec2 cell = resolution / uCellSize;
25
- vec2 grid = 1.0 / cell;
26
- vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));
27
- vec4 pixelized = texture2D(inputBuffer, pixelizedUV);
28
- float greyscaled = greyscale(pixelized.rgb).r;
29
-
30
- if (uInvert) {
31
- greyscaled = 1.0 - greyscaled;
32
- }
33
-
34
- float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);
35
- vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));
36
- vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;
37
- vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;
38
- vec4 asciiCharacter = texture2D(uCharacters, charUV);
39
-
40
- asciiCharacter.rgb = uColor * asciiCharacter.r;
41
- asciiCharacter.a = pixelized.a;
42
- outputColor = asciiCharacter;
43
- }
44
- `;
45
- class ASCIIEffect extends Effect {
46
- constructor({
47
- font = "arial",
48
- characters = ` .:,'-^=*+?!|0#X%WM@`,
49
- fontSize = 54,
50
- cellSize = 16,
51
- color = "#ffffff",
52
- invert = false
53
- } = {}) {
54
- const uniforms = /* @__PURE__ */ new Map([
55
- ["uCharacters", new Uniform(new Texture())],
56
- ["uCellSize", new Uniform(cellSize)],
57
- ["uCharactersCount", new Uniform(characters.length)],
58
- ["uColor", new Uniform(new Color(color))],
59
- ["uInvert", new Uniform(invert)]
60
- ]);
61
- super("ASCIIEffect", fragment, { uniforms });
62
- const charactersTextureUniform = this.uniforms.get("uCharacters");
63
- if (charactersTextureUniform) {
64
- charactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);
65
- }
66
- }
67
- /** Draws the characters on a Canvas and returns a texture */
68
- createCharactersTexture(characters, font, fontSize) {
69
- const canvas = document.createElement("canvas");
70
- const SIZE = 1024;
71
- const MAX_PER_ROW = 16;
72
- const CELL = SIZE / MAX_PER_ROW;
73
- canvas.width = canvas.height = SIZE;
74
- const texture = new CanvasTexture(canvas, void 0, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);
75
- const context = canvas.getContext("2d");
76
- if (!context) {
77
- throw new Error("Context not available");
78
- }
79
- context.clearRect(0, 0, SIZE, SIZE);
80
- context.font = `${fontSize}px ${font}`;
81
- context.textAlign = "center";
82
- context.textBaseline = "middle";
83
- context.fillStyle = "#fff";
84
- for (let i = 0; i < characters.length; i++) {
85
- const char = characters[i];
86
- const x = i % MAX_PER_ROW;
87
- const y = Math.floor(i / MAX_PER_ROW);
88
- context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);
89
- }
90
- texture.needsUpdate = true;
91
- return texture;
92
- }
93
- }
94
- const ASCII = forwardRef(
95
- ({
96
- font = "arial",
97
- characters = ` .:,'-^=*+?!|0#X%WM@`,
98
- fontSize = 54,
99
- cellSize = 16,
100
- color = "#ffffff",
101
- invert = false
102
- }, fref) => {
103
- const effect = useMemo(
104
- () => new ASCIIEffect({ characters, font, fontSize, cellSize, color, invert }),
105
- [characters, fontSize, cellSize, color, invert, font]
106
- );
107
- return /* @__PURE__ */ jsx("primitive", { ref: fref, object: effect });
108
- }
109
- );
110
- export {
111
- ASCII
112
- };
113
- //# sourceMappingURL=ASCII.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ASCII.js","sources":["../../src/effects/ASCII.tsx"],"sourcesContent":["// From: https://github.com/emilwidlund/ASCII\n// https://twitter.com/emilwidlund/status/1652386482420609024\n\nimport { forwardRef, useMemo } from 'react'\nimport { CanvasTexture, Color, NearestFilter, RepeatWrapping, Texture, Uniform } from 'three'\nimport { Effect } from 'postprocessing'\n\nconst fragment = `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`\n\ninterface IASCIIEffectProps {\n font?: string\n characters?: string\n fontSize?: number\n cellSize?: number\n color?: string\n invert?: boolean\n}\n\nclass ASCIIEffect extends Effect {\n constructor({\n font = 'arial',\n characters = ` .:,'-^=*+?!|0#X%WM@`,\n fontSize = 54,\n cellSize = 16,\n color = '#ffffff',\n invert = false,\n }: IASCIIEffectProps = {}) {\n const uniforms = new Map<string, Uniform>([\n ['uCharacters', new Uniform(new Texture())],\n ['uCellSize', new Uniform(cellSize)],\n ['uCharactersCount', new Uniform(characters.length)],\n ['uColor', new Uniform(new Color(color))],\n ['uInvert', new Uniform(invert)],\n ])\n\n super('ASCIIEffect', fragment, { uniforms })\n\n const charactersTextureUniform = this.uniforms.get('uCharacters')\n\n if (charactersTextureUniform) {\n charactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize)\n }\n }\n\n /** Draws the characters on a Canvas and returns a texture */\n public createCharactersTexture(characters: string, font: string, fontSize: number): THREE.Texture {\n const canvas = document.createElement('canvas')\n const SIZE = 1024\n const MAX_PER_ROW = 16\n const CELL = SIZE / MAX_PER_ROW\n\n canvas.width = canvas.height = SIZE\n const texture = new CanvasTexture(canvas, undefined, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter)\n const context = canvas.getContext('2d')\n\n if (!context) {\n throw new Error('Context not available')\n }\n\n context.clearRect(0, 0, SIZE, SIZE)\n context.font = `${fontSize}px ${font}`\n context.textAlign = 'center'\n context.textBaseline = 'middle'\n context.fillStyle = '#fff'\n\n for (let i = 0; i < characters.length; i++) {\n const char = characters[i]\n const x = i % MAX_PER_ROW\n const y = Math.floor(i / MAX_PER_ROW)\n context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2)\n }\n\n texture.needsUpdate = true\n return texture\n }\n}\n\nexport const ASCII = forwardRef<ASCIIEffect, IASCIIEffectProps>(\n (\n {\n font = 'arial',\n characters = ` .:,'-^=*+?!|0#X%WM@`,\n fontSize = 54,\n cellSize = 16,\n color = '#ffffff',\n invert = false,\n },\n fref\n ) => {\n const effect = useMemo(\n () => new ASCIIEffect({ characters, font, fontSize, cellSize, color, invert }),\n [characters, fontSize, cellSize, color, invert, font]\n )\n return <primitive ref={fref} object={effect} />\n }\n)\n"],"names":[],"mappings":";;;;AAOA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDjB,MAAM,oBAAoB,OAAO;AAAA,EAC/B,YAAY;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,IAAuB,IAAI;AACnB,UAAA,+BAAe,IAAqB;AAAA,MACxC,CAAC,eAAe,IAAI,QAAQ,IAAI,QAAS,CAAA,CAAC;AAAA,MAC1C,CAAC,aAAa,IAAI,QAAQ,QAAQ,CAAC;AAAA,MACnC,CAAC,oBAAoB,IAAI,QAAQ,WAAW,MAAM,CAAC;AAAA,MACnD,CAAC,UAAU,IAAI,QAAQ,IAAI,MAAM,KAAK,CAAC,CAAC;AAAA,MACxC,CAAC,WAAW,IAAI,QAAQ,MAAM,CAAC;AAAA,IAAA,CAChC;AAED,UAAM,eAAe,UAAU,EAAE,SAAU,CAAA;AAE3C,UAAM,2BAA2B,KAAK,SAAS,IAAI,aAAa;AAEhE,QAAI,0BAA0B;AAC5B,+BAAyB,QAAQ,KAAK,wBAAwB,YAAY,MAAM,QAAQ;AAAA,IAC1F;AAAA,EACF;AAAA;AAAA,EAGO,wBAAwB,YAAoB,MAAc,UAAiC;AAC1F,UAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,OAAO;AACb,UAAM,cAAc;AACpB,UAAM,OAAO,OAAO;AAEb,WAAA,QAAQ,OAAO,SAAS;AACzB,UAAA,UAAU,IAAI,cAAc,QAAQ,QAAW,gBAAgB,gBAAgB,eAAe,aAAa;AAC3G,UAAA,UAAU,OAAO,WAAW,IAAI;AAEtC,QAAI,CAAC,SAAS;AACN,YAAA,IAAI,MAAM,uBAAuB;AAAA,IACzC;AAEA,YAAQ,UAAU,GAAG,GAAG,MAAM,IAAI;AAC1B,YAAA,OAAO,GAAG,cAAc;AAChC,YAAQ,YAAY;AACpB,YAAQ,eAAe;AACvB,YAAQ,YAAY;AAEpB,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACpC,YAAA,OAAO,WAAW,CAAC;AACzB,YAAM,IAAI,IAAI;AACd,YAAM,IAAI,KAAK,MAAM,IAAI,WAAW;AAC5B,cAAA,SAAS,MAAM,IAAI,OAAO,OAAO,GAAG,IAAI,OAAO,OAAO,CAAC;AAAA,IACjE;AAEA,YAAQ,cAAc;AACf,WAAA;AAAA,EACT;AACF;AAEO,MAAM,QAAQ;AAAA,EACnB,CACE;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,KAEX,SACG;AACH,UAAM,SAAS;AAAA,MACb,MAAM,IAAI,YAAY,EAAE,YAAY,MAAM,UAAU,UAAU,OAAO,QAAQ;AAAA,MAC7E,CAAC,YAAY,UAAU,UAAU,OAAO,QAAQ,IAAI;AAAA,IAAA;AAEtD,WAAQ,oBAAA,aAAA,EAAU,KAAK,MAAM,QAAQ,OAAQ,CAAA;AAAA,EAC/C;AACF;"}
@@ -1,126 +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 DepthOfField = require("./DepthOfField.cjs");
10
- const EffectComposer = require("../EffectComposer.cjs");
11
- function _interopNamespaceDefault(e) {
12
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
13
- if (e) {
14
- for (const k in e) {
15
- if (k !== "default") {
16
- const d = Object.getOwnPropertyDescriptor(e, k);
17
- Object.defineProperty(n, k, d.get ? d : {
18
- enumerable: true,
19
- get: () => e[k]
20
- });
21
- }
22
- }
23
- }
24
- n.default = e;
25
- return Object.freeze(n);
26
- }
27
- const THREE__namespace = /* @__PURE__ */ _interopNamespaceDefault(THREE);
28
- const Autofocus = React.forwardRef(
29
- ({ target = void 0, mouse: followMouse = false, debug = void 0, manual = false, smoothTime = 0.25, ...props }, fref) => {
30
- const dofRef = React.useRef(null);
31
- const hitpointRef = React.useRef(null);
32
- const targetRef = React.useRef(null);
33
- const scene = fiber.useThree(({ scene: scene2 }) => scene2);
34
- const pointer = fiber.useThree(({ pointer: pointer2 }) => pointer2);
35
- const { composer, camera } = React.useContext(EffectComposer.EffectComposerContext);
36
- const [depthPickingPass] = React.useState(() => new postprocessing.DepthPickingPass());
37
- const [copyPass] = React.useState(() => new postprocessing.CopyPass());
38
- React.useEffect(() => {
39
- composer.addPass(depthPickingPass);
40
- composer.addPass(copyPass);
41
- return () => {
42
- composer.removePass(depthPickingPass);
43
- composer.removePass(copyPass);
44
- };
45
- }, [composer, depthPickingPass, copyPass]);
46
- React.useEffect(() => {
47
- return () => {
48
- depthPickingPass.dispose();
49
- copyPass.dispose();
50
- };
51
- }, [depthPickingPass, copyPass]);
52
- const [hitpoint] = React.useState(() => new THREE__namespace.Vector3(0, 0, 0));
53
- const [ndc] = React.useState(() => new THREE__namespace.Vector3(0, 0, 0));
54
- const getHit = React.useCallback(
55
- async (x, y) => {
56
- ndc.x = x;
57
- ndc.y = y;
58
- ndc.z = await depthPickingPass.readDepth(ndc);
59
- ndc.z = ndc.z * 2 - 1;
60
- const hit = 1 - ndc.z > 1e-7;
61
- return hit ? ndc.unproject(camera) : false;
62
- },
63
- [ndc, depthPickingPass, camera]
64
- );
65
- const update = React.useCallback(
66
- async (delta, updateTarget = true) => {
67
- var _a;
68
- if (target) {
69
- hitpoint.set(...target);
70
- } else {
71
- const { x, y } = followMouse ? pointer : { x: 0, y: 0 };
72
- const hit = await getHit(x, y);
73
- if (hit)
74
- hitpoint.copy(hit);
75
- }
76
- if (updateTarget && ((_a = dofRef.current) == null ? void 0 : _a.target)) {
77
- if (smoothTime > 0 && delta > 0) {
78
- maath.easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta);
79
- } else {
80
- dofRef.current.target.copy(hitpoint);
81
- }
82
- }
83
- },
84
- [target, hitpoint, followMouse, getHit, smoothTime, pointer]
85
- );
86
- fiber.useFrame(async (_, delta) => {
87
- var _a;
88
- if (!manual) {
89
- update(delta);
90
- }
91
- if (hitpointRef.current) {
92
- hitpointRef.current.position.copy(hitpoint);
93
- }
94
- if (targetRef.current && ((_a = dofRef.current) == null ? void 0 : _a.target)) {
95
- targetRef.current.position.copy(dofRef.current.target);
96
- }
97
- });
98
- const api = React.useMemo(
99
- () => ({
100
- dofRef,
101
- hitpoint,
102
- update
103
- }),
104
- [hitpoint, update]
105
- );
106
- React.useImperativeHandle(fref, () => api, [api]);
107
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
108
- debug ? fiber.createPortal(
109
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
110
- /* @__PURE__ */ jsxRuntime.jsxs("mesh", { ref: hitpointRef, children: [
111
- /* @__PURE__ */ jsxRuntime.jsx("sphereGeometry", { args: [debug, 16, 16] }),
112
- /* @__PURE__ */ jsxRuntime.jsx("meshBasicMaterial", { color: "#00ff00", opacity: 1, transparent: true, depthWrite: false })
113
- ] }),
114
- /* @__PURE__ */ jsxRuntime.jsxs("mesh", { ref: targetRef, children: [
115
- /* @__PURE__ */ jsxRuntime.jsx("sphereGeometry", { args: [debug / 2, 16, 16] }),
116
- /* @__PURE__ */ jsxRuntime.jsx("meshBasicMaterial", { color: "#00ff00", opacity: 0.5, transparent: true, depthWrite: false })
117
- ] })
118
- ] }),
119
- scene
120
- ) : null,
121
- /* @__PURE__ */ jsxRuntime.jsx(DepthOfField.DepthOfField, { ref: dofRef, ...props, target: hitpoint })
122
- ] });
123
- }
124
- );
125
- exports.Autofocus = Autofocus;
126
- //# sourceMappingURL=Autofocus.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Autofocus.cjs","sources":["../../src/effects/Autofocus.tsx"],"sourcesContent":["import * as THREE from 'three'\nimport React, {\n useRef,\n useContext,\n useState,\n useEffect,\n useCallback,\n forwardRef,\n useImperativeHandle,\n RefObject,\n useMemo,\n} from 'react'\nimport { useThree, useFrame, createPortal, type Vector3 } from '@react-three/fiber'\nimport { CopyPass, DepthPickingPass, DepthOfFieldEffect } from 'postprocessing'\nimport { easing } from 'maath'\n\nimport { DepthOfField } from './DepthOfField'\nimport { EffectComposerContext } from '../EffectComposer'\n\nexport type AutofocusProps = React.ComponentProps<typeof DepthOfField> & {\n target?: Vector3\n /** should the target follow the pointer */\n mouse?: boolean\n /** size of the debug green point */\n debug?: number\n /** manual update */\n manual?: boolean\n /** approximate time to reach the target */\n smoothTime?: number\n}\n\nexport type AutofocusApi = {\n dofRef: RefObject<DepthOfFieldEffect>\n hitpoint: THREE.Vector3\n update: (delta: number, updateTarget: boolean) => void\n}\n\nexport const Autofocus = forwardRef<AutofocusApi, AutofocusProps>(\n (\n { target = undefined, mouse: followMouse = false, debug = undefined, manual = false, smoothTime = 0.25, ...props },\n fref\n ) => {\n const dofRef = useRef<DepthOfFieldEffect>(null)\n const hitpointRef = useRef<THREE.Mesh>(null)\n const targetRef = useRef<THREE.Mesh>(null)\n\n const scene = useThree(({ scene }) => scene)\n const pointer = useThree(({ pointer }) => pointer)\n const { composer, camera } = useContext(EffectComposerContext)\n\n // see: https://codesandbox.io/s/depthpickingpass-x130hg\n const [depthPickingPass] = useState(() => new DepthPickingPass())\n const [copyPass] = useState(() => new CopyPass())\n useEffect(() => {\n composer.addPass(depthPickingPass)\n composer.addPass(copyPass)\n return () => {\n composer.removePass(depthPickingPass)\n composer.removePass(copyPass)\n }\n }, [composer, depthPickingPass, copyPass])\n\n useEffect(() => {\n return () => {\n depthPickingPass.dispose()\n copyPass.dispose()\n }\n }, [depthPickingPass, copyPass])\n\n const [hitpoint] = useState(() => new THREE.Vector3(0, 0, 0))\n\n const [ndc] = useState(() => new THREE.Vector3(0, 0, 0))\n const getHit = useCallback(\n async (x: number, y: number) => {\n ndc.x = x\n ndc.y = y\n ndc.z = await depthPickingPass.readDepth(ndc)\n ndc.z = ndc.z * 2.0 - 1.0\n const hit = 1 - ndc.z > 0.0000001 // it is missed if ndc.z is close to 1\n return hit ? ndc.unproject(camera) : false\n },\n [ndc, depthPickingPass, camera]\n )\n\n const update = useCallback(\n async (delta: number, updateTarget = true) => {\n // Update hitpoint\n if (target) {\n hitpoint.set(...(target as [number, number, number]))\n } else {\n const { x, y } = followMouse ? pointer : { x: 0, y: 0 }\n const hit = await getHit(x, y)\n if (hit) hitpoint.copy(hit)\n }\n\n // Update target\n if (updateTarget && dofRef.current?.target) {\n if (smoothTime > 0 && delta > 0) {\n easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta)\n } else {\n dofRef.current.target.copy(hitpoint)\n }\n }\n },\n [target, hitpoint, followMouse, getHit, smoothTime, pointer]\n )\n\n useFrame(async (_, delta) => {\n if (!manual) {\n update(delta)\n }\n if (hitpointRef.current) {\n hitpointRef.current.position.copy(hitpoint)\n }\n if (targetRef.current && dofRef.current?.target) {\n targetRef.current.position.copy(dofRef.current.target)\n }\n })\n\n // Ref API\n const api = useMemo<AutofocusApi>(\n () => ({\n dofRef,\n hitpoint,\n update,\n }),\n [hitpoint, update]\n )\n useImperativeHandle(fref, () => api, [api])\n\n return (\n <>\n {debug\n ? createPortal(\n <>\n <mesh ref={hitpointRef}>\n <sphereGeometry args={[debug, 16, 16]} />\n <meshBasicMaterial color=\"#00ff00\" opacity={1} transparent depthWrite={false} />\n </mesh>\n <mesh ref={targetRef}>\n <sphereGeometry args={[debug / 2, 16, 16]} />\n <meshBasicMaterial color=\"#00ff00\" opacity={0.5} transparent depthWrite={false} />\n </mesh>\n </>,\n scene\n )\n : null}\n\n <DepthOfField ref={dofRef} {...props} target={hitpoint} />\n </>\n )\n }\n)\n"],"names":["forwardRef","useRef","useThree","scene","pointer","useContext","EffectComposerContext","useState","DepthPickingPass","CopyPass","useEffect","THREE","useCallback","easing","useFrame","useMemo","useImperativeHandle","jsxs","Fragment","createPortal","jsx","DepthOfField"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCO,MAAM,YAAYA,MAAA;AAAA,EACvB,CACE,EAAE,SAAS,QAAW,OAAO,cAAc,OAAO,QAAQ,QAAW,SAAS,OAAO,aAAa,MAAM,GAAG,SAC3G,SACG;AACG,UAAA,SAASC,aAA2B,IAAI;AACxC,UAAA,cAAcA,aAAmB,IAAI;AACrC,UAAA,YAAYA,aAAmB,IAAI;AAEzC,UAAM,QAAQC,MAAAA,SAAS,CAAC,EAAE,OAAAC,OAAAA,MAAYA,MAAK;AAC3C,UAAM,UAAUD,MAAAA,SAAS,CAAC,EAAE,SAAAE,SAAAA,MAAcA,QAAO;AACjD,UAAM,EAAE,UAAU,OAAO,IAAIC,iBAAWC,eAAqB,qBAAA;AAG7D,UAAM,CAAC,gBAAgB,IAAIC,MAAAA,SAAS,MAAM,IAAIC,eAAAA,iBAAkB,CAAA;AAChE,UAAM,CAAC,QAAQ,IAAID,MAAAA,SAAS,MAAM,IAAIE,eAAAA,SAAU,CAAA;AAChDC,UAAAA,UAAU,MAAM;AACd,eAAS,QAAQ,gBAAgB;AACjC,eAAS,QAAQ,QAAQ;AACzB,aAAO,MAAM;AACX,iBAAS,WAAW,gBAAgB;AACpC,iBAAS,WAAW,QAAQ;AAAA,MAAA;AAAA,IAE7B,GAAA,CAAC,UAAU,kBAAkB,QAAQ,CAAC;AAEzCA,UAAAA,UAAU,MAAM;AACd,aAAO,MAAM;AACX,yBAAiB,QAAQ;AACzB,iBAAS,QAAQ;AAAA,MAAA;AAAA,IACnB,GACC,CAAC,kBAAkB,QAAQ,CAAC;AAEzB,UAAA,CAAC,QAAQ,IAAIH,MAAS,SAAA,MAAM,IAAII,iBAAM,QAAQ,GAAG,GAAG,CAAC,CAAC;AAEtD,UAAA,CAAC,GAAG,IAAIJ,MAAS,SAAA,MAAM,IAAII,iBAAM,QAAQ,GAAG,GAAG,CAAC,CAAC;AACvD,UAAM,SAASC,MAAA;AAAA,MACb,OAAO,GAAW,MAAc;AAC9B,YAAI,IAAI;AACR,YAAI,IAAI;AACR,YAAI,IAAI,MAAM,iBAAiB,UAAU,GAAG;AACxC,YAAA,IAAI,IAAI,IAAI,IAAM;AAChB,cAAA,MAAM,IAAI,IAAI,IAAI;AACxB,eAAO,MAAM,IAAI,UAAU,MAAM,IAAI;AAAA,MACvC;AAAA,MACA,CAAC,KAAK,kBAAkB,MAAM;AAAA,IAAA;AAGhC,UAAM,SAASA,MAAA;AAAA,MACb,OAAO,OAAe,eAAe,SAAS;;AAE5C,YAAI,QAAQ;AACD,mBAAA,IAAI,GAAI,MAAmC;AAAA,QAAA,OAC/C;AACC,gBAAA,EAAE,GAAG,EAAM,IAAA,cAAc,UAAU,EAAE,GAAG,GAAG,GAAG;AACpD,gBAAM,MAAM,MAAM,OAAO,GAAG,CAAC;AACzB,cAAA;AAAK,qBAAS,KAAK,GAAG;AAAA,QAC5B;AAGI,YAAA,kBAAgB,YAAO,YAAP,mBAAgB,SAAQ;AACtC,cAAA,aAAa,KAAK,QAAQ,GAAG;AAC/BC,yBAAO,MAAM,OAAO,QAAQ,QAAQ,UAAU,YAAY,KAAK;AAAA,UAAA,OAC1D;AACE,mBAAA,QAAQ,OAAO,KAAK,QAAQ;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,QAAQ,UAAU,aAAa,QAAQ,YAAY,OAAO;AAAA,IAAA;AAGpDC,mBAAA,OAAO,GAAG,UAAU;;AAC3B,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK;AAAA,MACd;AACA,UAAI,YAAY,SAAS;AACX,oBAAA,QAAQ,SAAS,KAAK,QAAQ;AAAA,MAC5C;AACA,UAAI,UAAU,aAAW,YAAO,YAAP,mBAAgB,SAAQ;AAC/C,kBAAU,QAAQ,SAAS,KAAK,OAAO,QAAQ,MAAM;AAAA,MACvD;AAAA,IAAA,CACD;AAGD,UAAM,MAAMC,MAAA;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,CAAC,UAAU,MAAM;AAAA,IAAA;AAEnBC,UAAAA,oBAAoB,MAAM,MAAM,KAAK,CAAC,GAAG,CAAC;AAE1C,WAEKC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,MACG,QAAAC,MAAA;AAAA,QAEIF,gCAAAC,WAAAA,UAAA,EAAA,UAAA;AAAA,UAACD,2BAAAA,KAAA,QAAA,EAAK,KAAK,aACT,UAAA;AAAA,YAAAG,2BAAA,IAAC,oBAAe,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG;AAAA,YACvCA,2BAAAA,IAAC,uBAAkB,OAAM,WAAU,SAAS,GAAG,aAAW,MAAC,YAAY,MAAO,CAAA;AAAA,UAAA,GAChF;AAAA,UACAH,2BAAAA,KAAC,QAAK,EAAA,KAAK,WACT,UAAA;AAAA,YAAAG,+BAAC,oBAAe,MAAM,CAAC,QAAQ,GAAG,IAAI,EAAE,GAAG;AAAA,YAC3CA,2BAAAA,IAAC,uBAAkB,OAAM,WAAU,SAAS,KAAK,aAAW,MAAC,YAAY,MAAO,CAAA;AAAA,UAAA,GAClF;AAAA,QAAA,GACF;AAAA,QACA;AAAA,MAAA,IAEF;AAAA,qCAEHC,aAAAA,cAAa,EAAA,KAAK,QAAS,GAAG,OAAO,QAAQ,UAAU;AAAA,IAC1D,EAAA,CAAA;AAAA,EAEJ;AACF;;"}
@@ -1,22 +0,0 @@
1
- import * as THREE from 'three';
2
- import React, { RefObject } from 'react';
3
- import { type Vector3 } from '@react-three/fiber';
4
- import { DepthOfFieldEffect } from 'postprocessing';
5
- import { DepthOfField } from './DepthOfField';
6
- export type AutofocusProps = React.ComponentProps<typeof DepthOfField> & {
7
- target?: Vector3;
8
- /** should the target follow the pointer */
9
- mouse?: boolean;
10
- /** size of the debug green point */
11
- debug?: number;
12
- /** manual update */
13
- manual?: boolean;
14
- /** approximate time to reach the target */
15
- smoothTime?: number;
16
- };
17
- export type AutofocusApi = {
18
- dofRef: RefObject<DepthOfFieldEffect>;
19
- hitpoint: THREE.Vector3;
20
- update: (delta: number, updateTarget: boolean) => void;
21
- };
22
- export declare const Autofocus: React.ForwardRefExoticComponent<Omit<AutofocusProps, "ref"> & React.RefAttributes<AutofocusApi>>;
@@ -1,109 +0,0 @@
1
- import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
- import * as THREE from "three";
3
- import { forwardRef, useRef, useContext, useState, useEffect, useCallback, useMemo, useImperativeHandle } from "react";
4
- import { useThree, useFrame, createPortal } from "@react-three/fiber";
5
- import { DepthPickingPass, CopyPass } from "postprocessing";
6
- import { easing } from "maath";
7
- import { DepthOfField } from "./DepthOfField.js";
8
- import { EffectComposerContext } from "../EffectComposer.js";
9
- const Autofocus = forwardRef(
10
- ({ target = void 0, mouse: followMouse = false, debug = void 0, manual = false, smoothTime = 0.25, ...props }, fref) => {
11
- const dofRef = useRef(null);
12
- const hitpointRef = useRef(null);
13
- const targetRef = useRef(null);
14
- const scene = useThree(({ scene: scene2 }) => scene2);
15
- const pointer = useThree(({ pointer: pointer2 }) => pointer2);
16
- const { composer, camera } = useContext(EffectComposerContext);
17
- const [depthPickingPass] = useState(() => new DepthPickingPass());
18
- const [copyPass] = useState(() => new CopyPass());
19
- useEffect(() => {
20
- composer.addPass(depthPickingPass);
21
- composer.addPass(copyPass);
22
- return () => {
23
- composer.removePass(depthPickingPass);
24
- composer.removePass(copyPass);
25
- };
26
- }, [composer, depthPickingPass, copyPass]);
27
- useEffect(() => {
28
- return () => {
29
- depthPickingPass.dispose();
30
- copyPass.dispose();
31
- };
32
- }, [depthPickingPass, copyPass]);
33
- const [hitpoint] = useState(() => new THREE.Vector3(0, 0, 0));
34
- const [ndc] = useState(() => new THREE.Vector3(0, 0, 0));
35
- const getHit = useCallback(
36
- async (x, y) => {
37
- ndc.x = x;
38
- ndc.y = y;
39
- ndc.z = await depthPickingPass.readDepth(ndc);
40
- ndc.z = ndc.z * 2 - 1;
41
- const hit = 1 - ndc.z > 1e-7;
42
- return hit ? ndc.unproject(camera) : false;
43
- },
44
- [ndc, depthPickingPass, camera]
45
- );
46
- const update = useCallback(
47
- async (delta, updateTarget = true) => {
48
- var _a;
49
- if (target) {
50
- hitpoint.set(...target);
51
- } else {
52
- const { x, y } = followMouse ? pointer : { x: 0, y: 0 };
53
- const hit = await getHit(x, y);
54
- if (hit)
55
- hitpoint.copy(hit);
56
- }
57
- if (updateTarget && ((_a = dofRef.current) == null ? void 0 : _a.target)) {
58
- if (smoothTime > 0 && delta > 0) {
59
- easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta);
60
- } else {
61
- dofRef.current.target.copy(hitpoint);
62
- }
63
- }
64
- },
65
- [target, hitpoint, followMouse, getHit, smoothTime, pointer]
66
- );
67
- useFrame(async (_, delta) => {
68
- var _a;
69
- if (!manual) {
70
- update(delta);
71
- }
72
- if (hitpointRef.current) {
73
- hitpointRef.current.position.copy(hitpoint);
74
- }
75
- if (targetRef.current && ((_a = dofRef.current) == null ? void 0 : _a.target)) {
76
- targetRef.current.position.copy(dofRef.current.target);
77
- }
78
- });
79
- const api = useMemo(
80
- () => ({
81
- dofRef,
82
- hitpoint,
83
- update
84
- }),
85
- [hitpoint, update]
86
- );
87
- useImperativeHandle(fref, () => api, [api]);
88
- return /* @__PURE__ */ jsxs(Fragment, { children: [
89
- debug ? createPortal(
90
- /* @__PURE__ */ jsxs(Fragment, { children: [
91
- /* @__PURE__ */ jsxs("mesh", { ref: hitpointRef, children: [
92
- /* @__PURE__ */ jsx("sphereGeometry", { args: [debug, 16, 16] }),
93
- /* @__PURE__ */ jsx("meshBasicMaterial", { color: "#00ff00", opacity: 1, transparent: true, depthWrite: false })
94
- ] }),
95
- /* @__PURE__ */ jsxs("mesh", { ref: targetRef, children: [
96
- /* @__PURE__ */ jsx("sphereGeometry", { args: [debug / 2, 16, 16] }),
97
- /* @__PURE__ */ jsx("meshBasicMaterial", { color: "#00ff00", opacity: 0.5, transparent: true, depthWrite: false })
98
- ] })
99
- ] }),
100
- scene
101
- ) : null,
102
- /* @__PURE__ */ jsx(DepthOfField, { ref: dofRef, ...props, target: hitpoint })
103
- ] });
104
- }
105
- );
106
- export {
107
- Autofocus
108
- };
109
- //# sourceMappingURL=Autofocus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Autofocus.js","sources":["../../src/effects/Autofocus.tsx"],"sourcesContent":["import * as THREE from 'three'\nimport React, {\n useRef,\n useContext,\n useState,\n useEffect,\n useCallback,\n forwardRef,\n useImperativeHandle,\n RefObject,\n useMemo,\n} from 'react'\nimport { useThree, useFrame, createPortal, type Vector3 } from '@react-three/fiber'\nimport { CopyPass, DepthPickingPass, DepthOfFieldEffect } from 'postprocessing'\nimport { easing } from 'maath'\n\nimport { DepthOfField } from './DepthOfField'\nimport { EffectComposerContext } from '../EffectComposer'\n\nexport type AutofocusProps = React.ComponentProps<typeof DepthOfField> & {\n target?: Vector3\n /** should the target follow the pointer */\n mouse?: boolean\n /** size of the debug green point */\n debug?: number\n /** manual update */\n manual?: boolean\n /** approximate time to reach the target */\n smoothTime?: number\n}\n\nexport type AutofocusApi = {\n dofRef: RefObject<DepthOfFieldEffect>\n hitpoint: THREE.Vector3\n update: (delta: number, updateTarget: boolean) => void\n}\n\nexport const Autofocus = forwardRef<AutofocusApi, AutofocusProps>(\n (\n { target = undefined, mouse: followMouse = false, debug = undefined, manual = false, smoothTime = 0.25, ...props },\n fref\n ) => {\n const dofRef = useRef<DepthOfFieldEffect>(null)\n const hitpointRef = useRef<THREE.Mesh>(null)\n const targetRef = useRef<THREE.Mesh>(null)\n\n const scene = useThree(({ scene }) => scene)\n const pointer = useThree(({ pointer }) => pointer)\n const { composer, camera } = useContext(EffectComposerContext)\n\n // see: https://codesandbox.io/s/depthpickingpass-x130hg\n const [depthPickingPass] = useState(() => new DepthPickingPass())\n const [copyPass] = useState(() => new CopyPass())\n useEffect(() => {\n composer.addPass(depthPickingPass)\n composer.addPass(copyPass)\n return () => {\n composer.removePass(depthPickingPass)\n composer.removePass(copyPass)\n }\n }, [composer, depthPickingPass, copyPass])\n\n useEffect(() => {\n return () => {\n depthPickingPass.dispose()\n copyPass.dispose()\n }\n }, [depthPickingPass, copyPass])\n\n const [hitpoint] = useState(() => new THREE.Vector3(0, 0, 0))\n\n const [ndc] = useState(() => new THREE.Vector3(0, 0, 0))\n const getHit = useCallback(\n async (x: number, y: number) => {\n ndc.x = x\n ndc.y = y\n ndc.z = await depthPickingPass.readDepth(ndc)\n ndc.z = ndc.z * 2.0 - 1.0\n const hit = 1 - ndc.z > 0.0000001 // it is missed if ndc.z is close to 1\n return hit ? ndc.unproject(camera) : false\n },\n [ndc, depthPickingPass, camera]\n )\n\n const update = useCallback(\n async (delta: number, updateTarget = true) => {\n // Update hitpoint\n if (target) {\n hitpoint.set(...(target as [number, number, number]))\n } else {\n const { x, y } = followMouse ? pointer : { x: 0, y: 0 }\n const hit = await getHit(x, y)\n if (hit) hitpoint.copy(hit)\n }\n\n // Update target\n if (updateTarget && dofRef.current?.target) {\n if (smoothTime > 0 && delta > 0) {\n easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta)\n } else {\n dofRef.current.target.copy(hitpoint)\n }\n }\n },\n [target, hitpoint, followMouse, getHit, smoothTime, pointer]\n )\n\n useFrame(async (_, delta) => {\n if (!manual) {\n update(delta)\n }\n if (hitpointRef.current) {\n hitpointRef.current.position.copy(hitpoint)\n }\n if (targetRef.current && dofRef.current?.target) {\n targetRef.current.position.copy(dofRef.current.target)\n }\n })\n\n // Ref API\n const api = useMemo<AutofocusApi>(\n () => ({\n dofRef,\n hitpoint,\n update,\n }),\n [hitpoint, update]\n )\n useImperativeHandle(fref, () => api, [api])\n\n return (\n <>\n {debug\n ? createPortal(\n <>\n <mesh ref={hitpointRef}>\n <sphereGeometry args={[debug, 16, 16]} />\n <meshBasicMaterial color=\"#00ff00\" opacity={1} transparent depthWrite={false} />\n </mesh>\n <mesh ref={targetRef}>\n <sphereGeometry args={[debug / 2, 16, 16]} />\n <meshBasicMaterial color=\"#00ff00\" opacity={0.5} transparent depthWrite={false} />\n </mesh>\n </>,\n scene\n )\n : null}\n\n <DepthOfField ref={dofRef} {...props} target={hitpoint} />\n </>\n )\n }\n)\n"],"names":["scene","pointer"],"mappings":";;;;;;;;AAqCO,MAAM,YAAY;AAAA,EACvB,CACE,EAAE,SAAS,QAAW,OAAO,cAAc,OAAO,QAAQ,QAAW,SAAS,OAAO,aAAa,MAAM,GAAG,SAC3G,SACG;AACG,UAAA,SAAS,OAA2B,IAAI;AACxC,UAAA,cAAc,OAAmB,IAAI;AACrC,UAAA,YAAY,OAAmB,IAAI;AAEzC,UAAM,QAAQ,SAAS,CAAC,EAAE,OAAAA,OAAAA,MAAYA,MAAK;AAC3C,UAAM,UAAU,SAAS,CAAC,EAAE,SAAAC,SAAAA,MAAcA,QAAO;AACjD,UAAM,EAAE,UAAU,OAAO,IAAI,WAAW,qBAAqB;AAG7D,UAAM,CAAC,gBAAgB,IAAI,SAAS,MAAM,IAAI,iBAAkB,CAAA;AAChE,UAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,IAAI,SAAU,CAAA;AAChD,cAAU,MAAM;AACd,eAAS,QAAQ,gBAAgB;AACjC,eAAS,QAAQ,QAAQ;AACzB,aAAO,MAAM;AACX,iBAAS,WAAW,gBAAgB;AACpC,iBAAS,WAAW,QAAQ;AAAA,MAAA;AAAA,IAE7B,GAAA,CAAC,UAAU,kBAAkB,QAAQ,CAAC;AAEzC,cAAU,MAAM;AACd,aAAO,MAAM;AACX,yBAAiB,QAAQ;AACzB,iBAAS,QAAQ;AAAA,MAAA;AAAA,IACnB,GACC,CAAC,kBAAkB,QAAQ,CAAC;AAEzB,UAAA,CAAC,QAAQ,IAAI,SAAS,MAAM,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC;AAEtD,UAAA,CAAC,GAAG,IAAI,SAAS,MAAM,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC;AACvD,UAAM,SAAS;AAAA,MACb,OAAO,GAAW,MAAc;AAC9B,YAAI,IAAI;AACR,YAAI,IAAI;AACR,YAAI,IAAI,MAAM,iBAAiB,UAAU,GAAG;AACxC,YAAA,IAAI,IAAI,IAAI,IAAM;AAChB,cAAA,MAAM,IAAI,IAAI,IAAI;AACxB,eAAO,MAAM,IAAI,UAAU,MAAM,IAAI;AAAA,MACvC;AAAA,MACA,CAAC,KAAK,kBAAkB,MAAM;AAAA,IAAA;AAGhC,UAAM,SAAS;AAAA,MACb,OAAO,OAAe,eAAe,SAAS;;AAE5C,YAAI,QAAQ;AACD,mBAAA,IAAI,GAAI,MAAmC;AAAA,QAAA,OAC/C;AACC,gBAAA,EAAE,GAAG,EAAM,IAAA,cAAc,UAAU,EAAE,GAAG,GAAG,GAAG;AACpD,gBAAM,MAAM,MAAM,OAAO,GAAG,CAAC;AACzB,cAAA;AAAK,qBAAS,KAAK,GAAG;AAAA,QAC5B;AAGI,YAAA,kBAAgB,YAAO,YAAP,mBAAgB,SAAQ;AACtC,cAAA,aAAa,KAAK,QAAQ,GAAG;AAC/B,mBAAO,MAAM,OAAO,QAAQ,QAAQ,UAAU,YAAY,KAAK;AAAA,UAAA,OAC1D;AACE,mBAAA,QAAQ,OAAO,KAAK,QAAQ;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,QAAQ,UAAU,aAAa,QAAQ,YAAY,OAAO;AAAA,IAAA;AAGpD,aAAA,OAAO,GAAG,UAAU;;AAC3B,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK;AAAA,MACd;AACA,UAAI,YAAY,SAAS;AACX,oBAAA,QAAQ,SAAS,KAAK,QAAQ;AAAA,MAC5C;AACA,UAAI,UAAU,aAAW,YAAO,YAAP,mBAAgB,SAAQ;AAC/C,kBAAU,QAAQ,SAAS,KAAK,OAAO,QAAQ,MAAM;AAAA,MACvD;AAAA,IAAA,CACD;AAGD,UAAM,MAAM;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,CAAC,UAAU,MAAM;AAAA,IAAA;AAEnB,wBAAoB,MAAM,MAAM,KAAK,CAAC,GAAG,CAAC;AAE1C,WAEK,qBAAA,UAAA,EAAA,UAAA;AAAA,MACG,QAAA;AAAA,QAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,UAAC,qBAAA,QAAA,EAAK,KAAK,aACT,UAAA;AAAA,YAAA,oBAAC,oBAAe,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG;AAAA,YACvC,oBAAC,uBAAkB,OAAM,WAAU,SAAS,GAAG,aAAW,MAAC,YAAY,MAAO,CAAA;AAAA,UAAA,GAChF;AAAA,UACA,qBAAC,QAAK,EAAA,KAAK,WACT,UAAA;AAAA,YAAA,oBAAC,oBAAe,MAAM,CAAC,QAAQ,GAAG,IAAI,EAAE,GAAG;AAAA,YAC3C,oBAAC,uBAAkB,OAAM,WAAU,SAAS,KAAK,aAAW,MAAC,YAAY,MAAO,CAAA;AAAA,UAAA,GAClF;AAAA,QAAA,GACF;AAAA,QACA;AAAA,MAAA,IAEF;AAAA,0BAEH,cAAa,EAAA,KAAK,QAAS,GAAG,OAAO,QAAQ,UAAU;AAAA,IAC1D,EAAA,CAAA;AAAA,EAEJ;AACF;"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const postprocessing = require("postprocessing");
4
- const util = require("../util.cjs");
5
- const Bloom = util.wrapEffect(postprocessing.BloomEffect, {
6
- blendFunction: postprocessing.BlendFunction.ADD
7
- });
8
- exports.Bloom = Bloom;
9
- //# sourceMappingURL=Bloom.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bloom.cjs","sources":["../../src/effects/Bloom.tsx"],"sourcesContent":["import { BloomEffect, BlendFunction } from 'postprocessing'\nimport { wrapEffect } from '../util'\n\nexport const Bloom = wrapEffect(BloomEffect, {\n blendFunction: BlendFunction.ADD,\n})\n"],"names":["wrapEffect","BloomEffect","BlendFunction"],"mappings":";;;;AAGa,MAAA,QAAQA,gBAAWC,4BAAa;AAAA,EAC3C,eAAeC,eAAc,cAAA;AAC/B,CAAC;;"}
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import { BloomEffect, BlendFunction } from 'postprocessing';
3
- export declare const Bloom: import("react").ForwardRefExoticComponent<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<BloomEffect>, import("@react-three/fiber").NodeProps<BloomEffect, typeof BloomEffect>>> & import("postprocessing").BloomEffectOptions & {
4
- blendFunction?: BlendFunction | undefined;
5
- opacity?: number | undefined;
6
- }, "ref"> & import("react").RefAttributes<typeof BloomEffect>>;
@@ -1,9 +0,0 @@
1
- import { BlendFunction, BloomEffect } from "postprocessing";
2
- import { wrapEffect } from "../util.js";
3
- const Bloom = wrapEffect(BloomEffect, {
4
- blendFunction: BlendFunction.ADD
5
- });
6
- export {
7
- Bloom
8
- };
9
- //# sourceMappingURL=Bloom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bloom.js","sources":["../../src/effects/Bloom.tsx"],"sourcesContent":["import { BloomEffect, BlendFunction } from 'postprocessing'\nimport { wrapEffect } from '../util'\n\nexport const Bloom = wrapEffect(BloomEffect, {\n blendFunction: BlendFunction.ADD,\n})\n"],"names":[],"mappings":";;AAGa,MAAA,QAAQ,WAAW,aAAa;AAAA,EAC3C,eAAe,cAAc;AAC/B,CAAC;"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const postprocessing = require("postprocessing");
4
- const util = require("../util.cjs");
5
- const BrightnessContrast = util.wrapEffect(postprocessing.BrightnessContrastEffect);
6
- exports.BrightnessContrast = BrightnessContrast;
7
- //# sourceMappingURL=BrightnessContrast.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrightnessContrast.cjs","sources":["../../src/effects/BrightnessContrast.tsx"],"sourcesContent":["import { BrightnessContrastEffect } from 'postprocessing'\nimport { wrapEffect } from '../util'\n\nexport const BrightnessContrast = wrapEffect(BrightnessContrastEffect)\n"],"names":["wrapEffect","BrightnessContrastEffect"],"mappings":";;;;AAGa,MAAA,qBAAqBA,gBAAWC,eAAwB,wBAAA;;"}
@@ -1,10 +0,0 @@
1
- /// <reference types="react" />
2
- import { BrightnessContrastEffect } from 'postprocessing';
3
- export declare const BrightnessContrast: import("react").ForwardRefExoticComponent<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<BrightnessContrastEffect>, import("@react-three/fiber").NodeProps<BrightnessContrastEffect, typeof BrightnessContrastEffect>>> & {
4
- blendFunction?: import("postprocessing").BlendFunction | undefined;
5
- brightness?: number | undefined;
6
- contrast?: number | undefined;
7
- } & {
8
- blendFunction?: import("postprocessing").BlendFunction | undefined;
9
- opacity?: number | undefined;
10
- }, "ref"> & import("react").RefAttributes<typeof BrightnessContrastEffect>>;
@@ -1,7 +0,0 @@
1
- import { BrightnessContrastEffect } from "postprocessing";
2
- import { wrapEffect } from "../util.js";
3
- const BrightnessContrast = wrapEffect(BrightnessContrastEffect);
4
- export {
5
- BrightnessContrast
6
- };
7
- //# sourceMappingURL=BrightnessContrast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrightnessContrast.js","sources":["../../src/effects/BrightnessContrast.tsx"],"sourcesContent":["import { BrightnessContrastEffect } from 'postprocessing'\nimport { wrapEffect } from '../util'\n\nexport const BrightnessContrast = wrapEffect(BrightnessContrastEffect)\n"],"names":[],"mappings":";;AAGa,MAAA,qBAAqB,WAAW,wBAAwB;"}