@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,137 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { NoToneMapping, HalfFloatType } from "three";
3
- import React, { createContext, forwardRef, useMemo, useEffect, useRef, useLayoutEffect, useImperativeHandle } from "react";
4
- import { useThree, useFrame } from "@react-three/fiber";
5
- import { EffectComposer as EffectComposer$1, RenderPass, NormalPass, DepthDownsamplingPass, Effect, EffectPass, EffectAttribute, Pass } from "postprocessing";
6
- import { isWebGL2Available } from "three-stdlib";
7
- const EffectComposerContext = createContext(null);
8
- const isConvolution = (effect) => (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;
9
- const EffectComposer = React.memo(
10
- forwardRef(
11
- ({
12
- children,
13
- camera: _camera,
14
- scene: _scene,
15
- resolutionScale,
16
- enabled = true,
17
- renderPriority = 1,
18
- autoClear = true,
19
- depthBuffer,
20
- enableNormalPass,
21
- stencilBuffer,
22
- multisampling = 8,
23
- frameBufferType = HalfFloatType
24
- }, ref) => {
25
- const { gl, scene: defaultScene, camera: defaultCamera, size } = useThree();
26
- const scene = _scene || defaultScene;
27
- const camera = _camera || defaultCamera;
28
- const [composer, normalPass, downSamplingPass] = useMemo(() => {
29
- const webGL2Available = isWebGL2Available();
30
- const effectComposer = new EffectComposer$1(gl, {
31
- depthBuffer,
32
- stencilBuffer,
33
- multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,
34
- frameBufferType
35
- });
36
- effectComposer.addPass(new RenderPass(scene, camera));
37
- let downSamplingPass2 = null;
38
- let normalPass2 = null;
39
- if (enableNormalPass) {
40
- normalPass2 = new NormalPass(scene, camera);
41
- normalPass2.enabled = false;
42
- effectComposer.addPass(normalPass2);
43
- if (resolutionScale !== void 0 && webGL2Available) {
44
- downSamplingPass2 = new DepthDownsamplingPass({ normalBuffer: normalPass2.texture, resolutionScale });
45
- downSamplingPass2.enabled = false;
46
- effectComposer.addPass(downSamplingPass2);
47
- }
48
- }
49
- return [effectComposer, normalPass2, downSamplingPass2];
50
- }, [
51
- camera,
52
- gl,
53
- depthBuffer,
54
- stencilBuffer,
55
- multisampling,
56
- frameBufferType,
57
- scene,
58
- enableNormalPass,
59
- resolutionScale
60
- ]);
61
- useEffect(() => composer == null ? void 0 : composer.setSize(size.width, size.height), [composer, size]);
62
- useFrame(
63
- (_, delta) => {
64
- if (enabled) {
65
- const currentAutoClear = gl.autoClear;
66
- gl.autoClear = autoClear;
67
- if (stencilBuffer && !autoClear)
68
- gl.clearStencil();
69
- composer.render(delta);
70
- gl.autoClear = currentAutoClear;
71
- }
72
- },
73
- enabled ? renderPriority : 0
74
- );
75
- const group = useRef(null);
76
- useLayoutEffect(() => {
77
- var _a;
78
- const passes = [];
79
- const groupInstance = (_a = group.current) == null ? void 0 : _a.__r3f;
80
- if (groupInstance && composer) {
81
- const children2 = groupInstance.objects;
82
- for (let i = 0; i < children2.length; i++) {
83
- const child = children2[i];
84
- if (child instanceof Effect) {
85
- const effects = [child];
86
- if (!isConvolution(child)) {
87
- let next = null;
88
- while ((next = children2[i + 1]) instanceof Effect) {
89
- if (isConvolution(next))
90
- break;
91
- effects.push(next);
92
- i++;
93
- }
94
- }
95
- const pass = new EffectPass(camera, ...effects);
96
- passes.push(pass);
97
- } else if (child instanceof Pass) {
98
- passes.push(child);
99
- }
100
- }
101
- for (const pass of passes)
102
- composer == null ? void 0 : composer.addPass(pass);
103
- if (normalPass)
104
- normalPass.enabled = true;
105
- if (downSamplingPass)
106
- downSamplingPass.enabled = true;
107
- }
108
- return () => {
109
- for (const pass of passes)
110
- composer == null ? void 0 : composer.removePass(pass);
111
- if (normalPass)
112
- normalPass.enabled = false;
113
- if (downSamplingPass)
114
- downSamplingPass.enabled = false;
115
- };
116
- }, [composer, children, camera, normalPass, downSamplingPass]);
117
- useEffect(() => {
118
- const currentTonemapping = gl.toneMapping;
119
- gl.toneMapping = NoToneMapping;
120
- return () => {
121
- gl.toneMapping = currentTonemapping;
122
- };
123
- }, [gl]);
124
- const state = useMemo(
125
- () => ({ composer, normalPass, downSamplingPass, resolutionScale, camera, scene }),
126
- [composer, normalPass, downSamplingPass, resolutionScale, camera, scene]
127
- );
128
- useImperativeHandle(ref, () => composer, [composer]);
129
- return /* @__PURE__ */ jsx(EffectComposerContext.Provider, { value: state, children: /* @__PURE__ */ jsx("group", { ref: group, children }) });
130
- }
131
- )
132
- );
133
- export {
134
- EffectComposer,
135
- EffectComposerContext
136
- };
137
- //# sourceMappingURL=EffectComposer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EffectComposer.js","sources":["../src/EffectComposer.tsx"],"sourcesContent":["import type { TextureDataType } from 'three'\nimport { HalfFloatType, NoToneMapping } from 'three'\nimport React, {\n forwardRef,\n useMemo,\n useEffect,\n useLayoutEffect,\n createContext,\n useRef,\n useImperativeHandle,\n} from 'react'\nimport { useThree, useFrame } from '@react-three/fiber'\nimport {\n EffectComposer as EffectComposerImpl,\n RenderPass,\n EffectPass,\n NormalPass,\n // @ts-ignore\n DepthDownsamplingPass,\n Effect,\n Pass,\n EffectAttribute,\n} from 'postprocessing'\nimport { isWebGL2Available } from 'three-stdlib'\n\nexport const EffectComposerContext = createContext<{\n composer: EffectComposerImpl\n normalPass: NormalPass | null\n downSamplingPass: DepthDownsamplingPass | null\n camera: THREE.Camera\n scene: THREE.Scene\n resolutionScale?: number\n}>(null!)\n\nexport type EffectComposerProps = {\n enabled?: boolean\n children: JSX.Element | JSX.Element[]\n depthBuffer?: boolean\n /** Only used for SSGI currently, leave it disabled for everything else unless it's needed */\n enableNormalPass?: boolean\n stencilBuffer?: boolean\n autoClear?: boolean\n resolutionScale?: number\n multisampling?: number\n frameBufferType?: TextureDataType\n renderPriority?: number\n camera?: THREE.Camera\n scene?: THREE.Scene\n}\n\nconst isConvolution = (effect: Effect): boolean =>\n (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION\n\nexport const EffectComposer = React.memo(\n forwardRef<EffectComposerImpl, EffectComposerProps>(\n (\n {\n children,\n camera: _camera,\n scene: _scene,\n resolutionScale,\n enabled = true,\n renderPriority = 1,\n autoClear = true,\n depthBuffer,\n enableNormalPass,\n stencilBuffer,\n multisampling = 8,\n frameBufferType = HalfFloatType,\n },\n ref\n ) => {\n const { gl, scene: defaultScene, camera: defaultCamera, size } = useThree()\n const scene = _scene || defaultScene\n const camera = _camera || defaultCamera\n\n const [composer, normalPass, downSamplingPass] = useMemo(() => {\n const webGL2Available = isWebGL2Available()\n // Initialize composer\n const effectComposer = new EffectComposerImpl(gl, {\n depthBuffer,\n stencilBuffer,\n multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n frameBufferType,\n })\n\n // Add render pass\n effectComposer.addPass(new RenderPass(scene, camera))\n\n // Create normal pass\n let downSamplingPass = null\n let normalPass = null\n if (enableNormalPass) {\n normalPass = new NormalPass(scene, camera)\n normalPass.enabled = false\n effectComposer.addPass(normalPass)\n if (resolutionScale !== undefined && webGL2Available) {\n downSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale })\n downSamplingPass.enabled = false\n effectComposer.addPass(downSamplingPass)\n }\n }\n\n return [effectComposer, normalPass, downSamplingPass]\n }, [\n camera,\n gl,\n depthBuffer,\n stencilBuffer,\n multisampling,\n frameBufferType,\n scene,\n enableNormalPass,\n resolutionScale,\n ])\n\n useEffect(() => composer?.setSize(size.width, size.height), [composer, size])\n useFrame(\n (_, delta) => {\n if (enabled) {\n const currentAutoClear = gl.autoClear\n gl.autoClear = autoClear\n if (stencilBuffer && !autoClear) gl.clearStencil()\n composer.render(delta)\n gl.autoClear = currentAutoClear\n }\n },\n enabled ? renderPriority : 0\n )\n\n const group = useRef(null)\n useLayoutEffect(() => {\n const passes: Pass[] = []\n\n // TODO: rewrite all of this with R3F v9\n const groupInstance = (group.current as any)?.__r3f as { objects: unknown[] }\n\n if (groupInstance && composer) {\n const children = groupInstance.objects\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n\n if (child instanceof Effect) {\n const effects: Effect[] = [child]\n\n if (!isConvolution(child)) {\n let next: unknown = null\n while ((next = children[i + 1]) instanceof Effect) {\n if (isConvolution(next)) break\n effects.push(next)\n i++\n }\n }\n\n const pass = new EffectPass(camera, ...effects)\n passes.push(pass)\n } else if (child instanceof Pass) {\n passes.push(child)\n }\n }\n\n for (const pass of passes) composer?.addPass(pass)\n\n if (normalPass) normalPass.enabled = true\n if (downSamplingPass) downSamplingPass.enabled = true\n }\n\n return () => {\n for (const pass of passes) composer?.removePass(pass)\n if (normalPass) normalPass.enabled = false\n if (downSamplingPass) downSamplingPass.enabled = false\n }\n }, [composer, children, camera, normalPass, downSamplingPass])\n\n // Disable tone mapping because threejs disallows tonemapping on render targets\n useEffect(() => {\n const currentTonemapping = gl.toneMapping\n gl.toneMapping = NoToneMapping\n return () => {\n gl.toneMapping = currentTonemapping\n }\n }, [gl])\n\n // Memoize state, otherwise it would trigger all consumers on every render\n const state = useMemo(\n () => ({ composer, normalPass, downSamplingPass, resolutionScale, camera, scene }),\n [composer, normalPass, downSamplingPass, resolutionScale, camera, scene]\n )\n\n // Expose the composer\n useImperativeHandle(ref, () => composer, [composer])\n\n return (\n <EffectComposerContext.Provider value={state}>\n <group ref={group}>{children}</group>\n </EffectComposerContext.Provider>\n )\n }\n )\n)\n"],"names":["EffectComposerImpl","downSamplingPass","normalPass","children"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- declare global {
2
- var IS_REACT_ACT_ENVIRONMENT: boolean;
3
- }
4
- export {};
@@ -1,36 +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 selectionContext = React.createContext(null);
6
- function Selection({ children, enabled = true }) {
7
- const [selected, select] = React.useState([]);
8
- const value = React.useMemo(() => ({ selected, select, enabled }), [selected, select, enabled]);
9
- return /* @__PURE__ */ jsxRuntime.jsx(selectionContext.Provider, { value, children });
10
- }
11
- function Select({ enabled = false, children, ...props }) {
12
- const group = React.useRef(null);
13
- const api = React.useContext(selectionContext);
14
- React.useEffect(() => {
15
- if (api && enabled) {
16
- let changed = false;
17
- const current = [];
18
- group.current.traverse((o) => {
19
- o.type === "Mesh" && current.push(o);
20
- if (api.selected.indexOf(o) === -1)
21
- changed = true;
22
- });
23
- if (changed) {
24
- api.select((state) => [...state, ...current]);
25
- return () => {
26
- api.select((state) => state.filter((selected) => !current.includes(selected)));
27
- };
28
- }
29
- }
30
- }, [enabled, children, api]);
31
- return /* @__PURE__ */ jsxRuntime.jsx("group", { ref: group, ...props, children });
32
- }
33
- exports.Select = Select;
34
- exports.Selection = Selection;
35
- exports.selectionContext = selectionContext;
36
- //# sourceMappingURL=Selection.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Selection.cjs","sources":["../src/Selection.tsx"],"sourcesContent":["import * as THREE from 'three'\nimport React, { createContext, useState, useContext, useEffect, useRef, useMemo } from 'react'\n\nexport type Api = {\n selected: THREE.Object3D[]\n select: React.Dispatch<React.SetStateAction<THREE.Object3D[]>>\n enabled: boolean\n}\nexport type SelectApi = JSX.IntrinsicElements['group'] & {\n enabled?: boolean\n}\n\nexport const selectionContext = createContext<Api | null>(null)\n\nexport function Selection({ children, enabled = true }: { enabled?: boolean; children: React.ReactNode }) {\n const [selected, select] = useState<THREE.Object3D[]>([])\n const value = useMemo(() => ({ selected, select, enabled }), [selected, select, enabled])\n return <selectionContext.Provider value={value}>{children}</selectionContext.Provider>\n}\n\nexport function Select({ enabled = false, children, ...props }: SelectApi) {\n const group = useRef<THREE.Group>(null!)\n const api = useContext(selectionContext)\n useEffect(() => {\n if (api && enabled) {\n let changed = false\n const current: THREE.Object3D<THREE.Event>[] = []\n group.current.traverse((o) => {\n o.type === 'Mesh' && current.push(o)\n if (api.selected.indexOf(o) === -1) changed = true\n })\n if (changed) {\n api.select((state) => [...state, ...current])\n return () => {\n api.select((state) => state.filter((selected) => !current.includes(selected)))\n }\n }\n }\n }, [enabled, children, api])\n return (\n <group ref={group} {...props}>\n {children}\n </group>\n )\n}\n"],"names":["createContext","useState","useMemo","jsx","useRef","useContext","useEffect"],"mappings":";;;;AAYa,MAAA,mBAAmBA,oBAA0B,IAAI;AAEvD,SAAS,UAAU,EAAE,UAAU,UAAU,QAA0D;AACxG,QAAM,CAAC,UAAU,MAAM,IAAIC,MAAA,SAA2B,CAAE,CAAA;AACxD,QAAM,QAAQC,MAAAA,QAAQ,OAAO,EAAE,UAAU,QAAQ,QAAQ,IAAI,CAAC,UAAU,QAAQ,OAAO,CAAC;AACxF,SAAQC,2BAAAA,IAAA,iBAAiB,UAAjB,EAA0B,OAAe,SAAS,CAAA;AAC5D;AAEO,SAAS,OAAO,EAAE,UAAU,OAAO,UAAU,GAAG,SAAoB;AACnE,QAAA,QAAQC,aAAoB,IAAK;AACjC,QAAA,MAAMC,iBAAW,gBAAgB;AACvCC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,SAAS;AAClB,UAAI,UAAU;AACd,YAAM,UAAyC,CAAA;AACzC,YAAA,QAAQ,SAAS,CAAC,MAAM;AAC5B,UAAE,SAAS,UAAU,QAAQ,KAAK,CAAC;AACnC,YAAI,IAAI,SAAS,QAAQ,CAAC,MAAM;AAAc,oBAAA;AAAA,MAAA,CAC/C;AACD,UAAI,SAAS;AACP,YAAA,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;AAC5C,eAAO,MAAM;AACX,cAAI,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,SAAS,QAAQ,CAAC,CAAC;AAAA,QAAA;AAAA,MAEjF;AAAA,IACF;AAAA,EACC,GAAA,CAAC,SAAS,UAAU,GAAG,CAAC;AAC3B,wCACG,SAAM,EAAA,KAAK,OAAQ,GAAG,OACpB,SACH,CAAA;AAEJ;;;;"}
@@ -1,16 +0,0 @@
1
- import * as THREE from 'three';
2
- import React from 'react';
3
- export type Api = {
4
- selected: THREE.Object3D[];
5
- select: React.Dispatch<React.SetStateAction<THREE.Object3D[]>>;
6
- enabled: boolean;
7
- };
8
- export type SelectApi = JSX.IntrinsicElements['group'] & {
9
- enabled?: boolean;
10
- };
11
- export declare const selectionContext: React.Context<Api | null>;
12
- export declare function Selection({ children, enabled }: {
13
- enabled?: boolean;
14
- children: React.ReactNode;
15
- }): JSX.Element;
16
- export declare function Select({ enabled, children, ...props }: SelectApi): JSX.Element;
package/dist/Selection.js DELETED
@@ -1,36 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { createContext, useState, useMemo, useRef, useContext, useEffect } from "react";
3
- const selectionContext = createContext(null);
4
- function Selection({ children, enabled = true }) {
5
- const [selected, select] = useState([]);
6
- const value = useMemo(() => ({ selected, select, enabled }), [selected, select, enabled]);
7
- return /* @__PURE__ */ jsx(selectionContext.Provider, { value, children });
8
- }
9
- function Select({ enabled = false, children, ...props }) {
10
- const group = useRef(null);
11
- const api = useContext(selectionContext);
12
- useEffect(() => {
13
- if (api && enabled) {
14
- let changed = false;
15
- const current = [];
16
- group.current.traverse((o) => {
17
- o.type === "Mesh" && current.push(o);
18
- if (api.selected.indexOf(o) === -1)
19
- changed = true;
20
- });
21
- if (changed) {
22
- api.select((state) => [...state, ...current]);
23
- return () => {
24
- api.select((state) => state.filter((selected) => !current.includes(selected)));
25
- };
26
- }
27
- }
28
- }, [enabled, children, api]);
29
- return /* @__PURE__ */ jsx("group", { ref: group, ...props, children });
30
- }
31
- export {
32
- Select,
33
- Selection,
34
- selectionContext
35
- };
36
- //# sourceMappingURL=Selection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Selection.js","sources":["../src/Selection.tsx"],"sourcesContent":["import * as THREE from 'three'\nimport React, { createContext, useState, useContext, useEffect, useRef, useMemo } from 'react'\n\nexport type Api = {\n selected: THREE.Object3D[]\n select: React.Dispatch<React.SetStateAction<THREE.Object3D[]>>\n enabled: boolean\n}\nexport type SelectApi = JSX.IntrinsicElements['group'] & {\n enabled?: boolean\n}\n\nexport const selectionContext = createContext<Api | null>(null)\n\nexport function Selection({ children, enabled = true }: { enabled?: boolean; children: React.ReactNode }) {\n const [selected, select] = useState<THREE.Object3D[]>([])\n const value = useMemo(() => ({ selected, select, enabled }), [selected, select, enabled])\n return <selectionContext.Provider value={value}>{children}</selectionContext.Provider>\n}\n\nexport function Select({ enabled = false, children, ...props }: SelectApi) {\n const group = useRef<THREE.Group>(null!)\n const api = useContext(selectionContext)\n useEffect(() => {\n if (api && enabled) {\n let changed = false\n const current: THREE.Object3D<THREE.Event>[] = []\n group.current.traverse((o) => {\n o.type === 'Mesh' && current.push(o)\n if (api.selected.indexOf(o) === -1) changed = true\n })\n if (changed) {\n api.select((state) => [...state, ...current])\n return () => {\n api.select((state) => state.filter((selected) => !current.includes(selected)))\n }\n }\n }\n }, [enabled, children, api])\n return (\n <group ref={group} {...props}>\n {children}\n </group>\n )\n}\n"],"names":[],"mappings":";;AAYa,MAAA,mBAAmB,cAA0B,IAAI;AAEvD,SAAS,UAAU,EAAE,UAAU,UAAU,QAA0D;AACxG,QAAM,CAAC,UAAU,MAAM,IAAI,SAA2B,CAAE,CAAA;AACxD,QAAM,QAAQ,QAAQ,OAAO,EAAE,UAAU,QAAQ,QAAQ,IAAI,CAAC,UAAU,QAAQ,OAAO,CAAC;AACxF,SAAQ,oBAAA,iBAAiB,UAAjB,EAA0B,OAAe,SAAS,CAAA;AAC5D;AAEO,SAAS,OAAO,EAAE,UAAU,OAAO,UAAU,GAAG,SAAoB;AACnE,QAAA,QAAQ,OAAoB,IAAK;AACjC,QAAA,MAAM,WAAW,gBAAgB;AACvC,YAAU,MAAM;AACd,QAAI,OAAO,SAAS;AAClB,UAAI,UAAU;AACd,YAAM,UAAyC,CAAA;AACzC,YAAA,QAAQ,SAAS,CAAC,MAAM;AAC5B,UAAE,SAAS,UAAU,QAAQ,KAAK,CAAC;AACnC,YAAI,IAAI,SAAS,QAAQ,CAAC,MAAM;AAAc,oBAAA;AAAA,MAAA,CAC/C;AACD,UAAI,SAAS;AACP,YAAA,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;AAC5C,eAAO,MAAM;AACX,cAAI,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,SAAS,QAAQ,CAAC,CAAC;AAAA,QAAA;AAAA,MAEjF;AAAA,IACF;AAAA,EACC,GAAA,CAAC,SAAS,UAAU,GAAG,CAAC;AAC3B,6BACG,SAAM,EAAA,KAAK,OAAQ,GAAG,OACpB,SACH,CAAA;AAEJ;"}
package/dist/compat.cjs DELETED
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const THREE = require("three");
4
- function _interopNamespaceDefault(e) {
5
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
6
- if (e) {
7
- for (const k in e) {
8
- if (k !== "default") {
9
- const d = Object.getOwnPropertyDescriptor(e, k);
10
- Object.defineProperty(n, k, d.get ? d : {
11
- enumerable: true,
12
- get: () => e[k]
13
- });
14
- }
15
- }
16
- }
17
- n.default = e;
18
- return Object.freeze(n);
19
- }
20
- const THREE__namespace = /* @__PURE__ */ _interopNamespaceDefault(THREE);
21
- const version = /* @__PURE__ */ (() => parseInt(THREE__namespace.REVISION.replace(/\D+/g, "")))();
22
- const WebGLMultipleRenderTargets = version >= 162 ? class extends THREE__namespace.WebGLRenderTarget {
23
- constructor(width = 1, height = 1, count = 1, options = {}) {
24
- super(width, height, { ...options, count });
25
- this.isWebGLMultipleRenderTargets = true;
26
- }
27
- get texture() {
28
- return this.textures;
29
- }
30
- } : class extends THREE__namespace.WebGLRenderTarget {
31
- constructor(width = 1, height = 1, count = 1, options = {}) {
32
- super(width, height, options);
33
- this.isWebGLMultipleRenderTargets = true;
34
- const texture = this.texture;
35
- this.texture = [];
36
- for (let i = 0; i < count; i++) {
37
- this.texture[i] = texture.clone();
38
- this.texture[i].isRenderTargetTexture = true;
39
- }
40
- }
41
- setSize(width, height, depth = 1) {
42
- if (this.width !== width || this.height !== height || this.depth !== depth) {
43
- this.width = width;
44
- this.height = height;
45
- this.depth = depth;
46
- for (let i = 0, il = this.texture.length; i < il; i++) {
47
- this.texture[i].image.width = width;
48
- this.texture[i].image.height = height;
49
- this.texture[i].image.depth = depth;
50
- }
51
- this.dispose();
52
- }
53
- this.viewport.set(0, 0, width, height);
54
- this.scissor.set(0, 0, width, height);
55
- }
56
- copy(source) {
57
- this.dispose();
58
- this.width = source.width;
59
- this.height = source.height;
60
- this.depth = source.depth;
61
- this.scissor.copy(source.scissor);
62
- this.scissorTest = source.scissorTest;
63
- this.viewport.copy(source.viewport);
64
- this.depthBuffer = source.depthBuffer;
65
- this.stencilBuffer = source.stencilBuffer;
66
- if (source.depthTexture !== null)
67
- this.depthTexture = source.depthTexture.clone();
68
- this.texture.length = 0;
69
- for (let i = 0, il = source.texture.length; i < il; i++) {
70
- this.texture[i] = source.texture[i].clone();
71
- this.texture[i].isRenderTargetTexture = true;
72
- }
73
- return this;
74
- }
75
- };
76
- exports.WebGLMultipleRenderTargets = WebGLMultipleRenderTargets;
77
- //# sourceMappingURL=compat.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compat.cjs","sources":["../src/compat.js"],"sourcesContent":["import * as THREE from 'three'\n\nconst version = /* @__PURE__ */ (() => parseInt(THREE.REVISION.replace(/\\D+/g, '')))()\n\n// NOTE: WebGLMultipleRenderTargets is removed since r172, so we implement it ourselves.\n// https://github.com/mrdoob/three.js/pull/26427\nexport const WebGLMultipleRenderTargets =\n version >= 162\n ? class extends THREE.WebGLRenderTarget {\n constructor(width = 1, height = 1, count = 1, options = {}) {\n super(width, height, { ...options, count })\n\n this.isWebGLMultipleRenderTargets = true\n }\n\n get texture() {\n return this.textures\n }\n }\n : class extends THREE.WebGLRenderTarget {\n constructor(width = 1, height = 1, count = 1, options = {}) {\n super(width, height, options)\n\n this.isWebGLMultipleRenderTargets = true\n\n const texture = this.texture\n\n this.texture = []\n\n for (let i = 0; i < count; i++) {\n this.texture[i] = texture.clone()\n this.texture[i].isRenderTargetTexture = true\n }\n }\n\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width\n this.height = height\n this.depth = depth\n\n for (let i = 0, il = this.texture.length; i < il; i++) {\n this.texture[i].image.width = width\n this.texture[i].image.height = height\n this.texture[i].image.depth = depth\n }\n\n this.dispose()\n }\n\n this.viewport.set(0, 0, width, height)\n this.scissor.set(0, 0, width, height)\n }\n\n copy(source) {\n this.dispose()\n\n this.width = source.width\n this.height = source.height\n this.depth = source.depth\n\n this.scissor.copy(source.scissor)\n this.scissorTest = source.scissorTest\n\n this.viewport.copy(source.viewport)\n\n this.depthBuffer = source.depthBuffer\n this.stencilBuffer = source.stencilBuffer\n\n if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone()\n\n this.texture.length = 0\n\n for (let i = 0, il = source.texture.length; i < il; i++) {\n this.texture[i] = source.texture[i].clone()\n this.texture[i].isRenderTargetTexture = true\n }\n\n return this\n }\n }\n"],"names":["THREE"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,MAAM,UAA2B,uBAAM,SAASA,iBAAM,SAAS,QAAQ,QAAQ,EAAE,CAAC,GAAI;AAI1E,MAAC,6BACX,WAAW,MACP,cAAcA,iBAAM,kBAAkB;AAAA,EACpC,YAAY,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI;AAC1D,UAAM,OAAO,QAAQ,EAAE,GAAG,SAAS,MAAK,CAAE;AAE1C,SAAK,+BAA+B;AAAA,EACrC;AAAA,EAED,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACb;AACF,IACD,cAAcA,iBAAM,kBAAkB;AAAA,EACpC,YAAY,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI;AAC1D,UAAM,OAAO,QAAQ,OAAO;AAE5B,SAAK,+BAA+B;AAEpC,UAAM,UAAU,KAAK;AAErB,SAAK,UAAU,CAAE;AAEjB,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,WAAK,QAAQ,CAAC,IAAI,QAAQ,MAAO;AACjC,WAAK,QAAQ,CAAC,EAAE,wBAAwB;AAAA,IACzC;AAAA,EACF;AAAA,EAED,QAAQ,OAAO,QAAQ,QAAQ,GAAG;AAChC,QAAI,KAAK,UAAU,SAAS,KAAK,WAAW,UAAU,KAAK,UAAU,OAAO;AAC1E,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,QAAQ;AAEb,eAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AACrD,aAAK,QAAQ,CAAC,EAAE,MAAM,QAAQ;AAC9B,aAAK,QAAQ,CAAC,EAAE,MAAM,SAAS;AAC/B,aAAK,QAAQ,CAAC,EAAE,MAAM,QAAQ;AAAA,MAC/B;AAED,WAAK,QAAS;AAAA,IACf;AAED,SAAK,SAAS,IAAI,GAAG,GAAG,OAAO,MAAM;AACrC,SAAK,QAAQ,IAAI,GAAG,GAAG,OAAO,MAAM;AAAA,EACrC;AAAA,EAED,KAAK,QAAQ;AACX,SAAK,QAAS;AAEd,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,QAAQ,OAAO;AAEpB,SAAK,QAAQ,KAAK,OAAO,OAAO;AAChC,SAAK,cAAc,OAAO;AAE1B,SAAK,SAAS,KAAK,OAAO,QAAQ;AAElC,SAAK,cAAc,OAAO;AAC1B,SAAK,gBAAgB,OAAO;AAE5B,QAAI,OAAO,iBAAiB;AAAM,WAAK,eAAe,OAAO,aAAa,MAAO;AAEjF,SAAK,QAAQ,SAAS;AAEtB,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,QAAQ,IAAI,IAAI,KAAK;AACvD,WAAK,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,MAAO;AAC3C,WAAK,QAAQ,CAAC,EAAE,wBAAwB;AAAA,IACzC;AAED,WAAO;AAAA,EACR;AACT;;"}
package/dist/compat.js DELETED
@@ -1,60 +0,0 @@
1
- import * as THREE from "three";
2
- const version = /* @__PURE__ */ (() => parseInt(THREE.REVISION.replace(/\D+/g, "")))();
3
- const WebGLMultipleRenderTargets = version >= 162 ? class extends THREE.WebGLRenderTarget {
4
- constructor(width = 1, height = 1, count = 1, options = {}) {
5
- super(width, height, { ...options, count });
6
- this.isWebGLMultipleRenderTargets = true;
7
- }
8
- get texture() {
9
- return this.textures;
10
- }
11
- } : class extends THREE.WebGLRenderTarget {
12
- constructor(width = 1, height = 1, count = 1, options = {}) {
13
- super(width, height, options);
14
- this.isWebGLMultipleRenderTargets = true;
15
- const texture = this.texture;
16
- this.texture = [];
17
- for (let i = 0; i < count; i++) {
18
- this.texture[i] = texture.clone();
19
- this.texture[i].isRenderTargetTexture = true;
20
- }
21
- }
22
- setSize(width, height, depth = 1) {
23
- if (this.width !== width || this.height !== height || this.depth !== depth) {
24
- this.width = width;
25
- this.height = height;
26
- this.depth = depth;
27
- for (let i = 0, il = this.texture.length; i < il; i++) {
28
- this.texture[i].image.width = width;
29
- this.texture[i].image.height = height;
30
- this.texture[i].image.depth = depth;
31
- }
32
- this.dispose();
33
- }
34
- this.viewport.set(0, 0, width, height);
35
- this.scissor.set(0, 0, width, height);
36
- }
37
- copy(source) {
38
- this.dispose();
39
- this.width = source.width;
40
- this.height = source.height;
41
- this.depth = source.depth;
42
- this.scissor.copy(source.scissor);
43
- this.scissorTest = source.scissorTest;
44
- this.viewport.copy(source.viewport);
45
- this.depthBuffer = source.depthBuffer;
46
- this.stencilBuffer = source.stencilBuffer;
47
- if (source.depthTexture !== null)
48
- this.depthTexture = source.depthTexture.clone();
49
- this.texture.length = 0;
50
- for (let i = 0, il = source.texture.length; i < il; i++) {
51
- this.texture[i] = source.texture[i].clone();
52
- this.texture[i].isRenderTargetTexture = true;
53
- }
54
- return this;
55
- }
56
- };
57
- export {
58
- WebGLMultipleRenderTargets
59
- };
60
- //# sourceMappingURL=compat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compat.js","sources":["../src/compat.js"],"sourcesContent":["import * as THREE from 'three'\n\nconst version = /* @__PURE__ */ (() => parseInt(THREE.REVISION.replace(/\\D+/g, '')))()\n\n// NOTE: WebGLMultipleRenderTargets is removed since r172, so we implement it ourselves.\n// https://github.com/mrdoob/three.js/pull/26427\nexport const WebGLMultipleRenderTargets =\n version >= 162\n ? class extends THREE.WebGLRenderTarget {\n constructor(width = 1, height = 1, count = 1, options = {}) {\n super(width, height, { ...options, count })\n\n this.isWebGLMultipleRenderTargets = true\n }\n\n get texture() {\n return this.textures\n }\n }\n : class extends THREE.WebGLRenderTarget {\n constructor(width = 1, height = 1, count = 1, options = {}) {\n super(width, height, options)\n\n this.isWebGLMultipleRenderTargets = true\n\n const texture = this.texture\n\n this.texture = []\n\n for (let i = 0; i < count; i++) {\n this.texture[i] = texture.clone()\n this.texture[i].isRenderTargetTexture = true\n }\n }\n\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width\n this.height = height\n this.depth = depth\n\n for (let i = 0, il = this.texture.length; i < il; i++) {\n this.texture[i].image.width = width\n this.texture[i].image.height = height\n this.texture[i].image.depth = depth\n }\n\n this.dispose()\n }\n\n this.viewport.set(0, 0, width, height)\n this.scissor.set(0, 0, width, height)\n }\n\n copy(source) {\n this.dispose()\n\n this.width = source.width\n this.height = source.height\n this.depth = source.depth\n\n this.scissor.copy(source.scissor)\n this.scissorTest = source.scissorTest\n\n this.viewport.copy(source.viewport)\n\n this.depthBuffer = source.depthBuffer\n this.stencilBuffer = source.stencilBuffer\n\n if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone()\n\n this.texture.length = 0\n\n for (let i = 0, il = source.texture.length; i < il; i++) {\n this.texture[i] = source.texture[i].clone()\n this.texture[i].isRenderTargetTexture = true\n }\n\n return this\n }\n }\n"],"names":[],"mappings":";AAEA,MAAM,UAA2B,uBAAM,SAAS,MAAM,SAAS,QAAQ,QAAQ,EAAE,CAAC,GAAI;AAI1E,MAAC,6BACX,WAAW,MACP,cAAc,MAAM,kBAAkB;AAAA,EACpC,YAAY,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI;AAC1D,UAAM,OAAO,QAAQ,EAAE,GAAG,SAAS,MAAK,CAAE;AAE1C,SAAK,+BAA+B;AAAA,EACrC;AAAA,EAED,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACb;AACF,IACD,cAAc,MAAM,kBAAkB;AAAA,EACpC,YAAY,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI;AAC1D,UAAM,OAAO,QAAQ,OAAO;AAE5B,SAAK,+BAA+B;AAEpC,UAAM,UAAU,KAAK;AAErB,SAAK,UAAU,CAAE;AAEjB,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,WAAK,QAAQ,CAAC,IAAI,QAAQ,MAAO;AACjC,WAAK,QAAQ,CAAC,EAAE,wBAAwB;AAAA,IACzC;AAAA,EACF;AAAA,EAED,QAAQ,OAAO,QAAQ,QAAQ,GAAG;AAChC,QAAI,KAAK,UAAU,SAAS,KAAK,WAAW,UAAU,KAAK,UAAU,OAAO;AAC1E,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,QAAQ;AAEb,eAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AACrD,aAAK,QAAQ,CAAC,EAAE,MAAM,QAAQ;AAC9B,aAAK,QAAQ,CAAC,EAAE,MAAM,SAAS;AAC/B,aAAK,QAAQ,CAAC,EAAE,MAAM,QAAQ;AAAA,MAC/B;AAED,WAAK,QAAS;AAAA,IACf;AAED,SAAK,SAAS,IAAI,GAAG,GAAG,OAAO,MAAM;AACrC,SAAK,QAAQ,IAAI,GAAG,GAAG,OAAO,MAAM;AAAA,EACrC;AAAA,EAED,KAAK,QAAQ;AACX,SAAK,QAAS;AAEd,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,QAAQ,OAAO;AAEpB,SAAK,QAAQ,KAAK,OAAO,OAAO;AAChC,SAAK,cAAc,OAAO;AAE1B,SAAK,SAAS,KAAK,OAAO,QAAQ;AAElC,SAAK,cAAc,OAAO;AAC1B,SAAK,gBAAgB,OAAO;AAE5B,QAAI,OAAO,iBAAiB;AAAM,WAAK,eAAe,OAAO,aAAa,MAAO;AAEjF,SAAK,QAAQ,SAAS;AAEtB,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,QAAQ,IAAI,IAAI,KAAK;AACvD,WAAK,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,MAAO;AAC3C,WAAK,QAAQ,CAAC,EAAE,wBAAwB;AAAA,IACzC;AAED,WAAO;AAAA,EACR;AACT;"}
@@ -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 {};