@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,137 +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 threeStdlib = require("three-stdlib");
9
- const EffectComposerContext = React.createContext(null);
10
- const isConvolution = (effect) => (effect.getAttributes() & postprocessing.EffectAttribute.CONVOLUTION) === postprocessing.EffectAttribute.CONVOLUTION;
11
- const EffectComposer = React.memo(
12
- React.forwardRef(
13
- ({
14
- children,
15
- camera: _camera,
16
- scene: _scene,
17
- resolutionScale,
18
- enabled = true,
19
- renderPriority = 1,
20
- autoClear = true,
21
- depthBuffer,
22
- enableNormalPass,
23
- stencilBuffer,
24
- multisampling = 8,
25
- frameBufferType = THREE.HalfFloatType
26
- }, ref) => {
27
- const { gl, scene: defaultScene, camera: defaultCamera, size } = fiber.useThree();
28
- const scene = _scene || defaultScene;
29
- const camera = _camera || defaultCamera;
30
- const [composer, normalPass, downSamplingPass] = React.useMemo(() => {
31
- const webGL2Available = threeStdlib.isWebGL2Available();
32
- const effectComposer = new postprocessing.EffectComposer(gl, {
33
- depthBuffer,
34
- stencilBuffer,
35
- multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,
36
- frameBufferType
37
- });
38
- effectComposer.addPass(new postprocessing.RenderPass(scene, camera));
39
- let downSamplingPass2 = null;
40
- let normalPass2 = null;
41
- if (enableNormalPass) {
42
- normalPass2 = new postprocessing.NormalPass(scene, camera);
43
- normalPass2.enabled = false;
44
- effectComposer.addPass(normalPass2);
45
- if (resolutionScale !== void 0 && webGL2Available) {
46
- downSamplingPass2 = new postprocessing.DepthDownsamplingPass({ normalBuffer: normalPass2.texture, resolutionScale });
47
- downSamplingPass2.enabled = false;
48
- effectComposer.addPass(downSamplingPass2);
49
- }
50
- }
51
- return [effectComposer, normalPass2, downSamplingPass2];
52
- }, [
53
- camera,
54
- gl,
55
- depthBuffer,
56
- stencilBuffer,
57
- multisampling,
58
- frameBufferType,
59
- scene,
60
- enableNormalPass,
61
- resolutionScale
62
- ]);
63
- React.useEffect(() => composer == null ? void 0 : composer.setSize(size.width, size.height), [composer, size]);
64
- fiber.useFrame(
65
- (_, delta) => {
66
- if (enabled) {
67
- const currentAutoClear = gl.autoClear;
68
- gl.autoClear = autoClear;
69
- if (stencilBuffer && !autoClear)
70
- gl.clearStencil();
71
- composer.render(delta);
72
- gl.autoClear = currentAutoClear;
73
- }
74
- },
75
- enabled ? renderPriority : 0
76
- );
77
- const group = React.useRef(null);
78
- React.useLayoutEffect(() => {
79
- var _a;
80
- const passes = [];
81
- const groupInstance = (_a = group.current) == null ? void 0 : _a.__r3f;
82
- if (groupInstance && composer) {
83
- const children2 = groupInstance.objects;
84
- for (let i = 0; i < children2.length; i++) {
85
- const child = children2[i];
86
- if (child instanceof postprocessing.Effect) {
87
- const effects = [child];
88
- if (!isConvolution(child)) {
89
- let next = null;
90
- while ((next = children2[i + 1]) instanceof postprocessing.Effect) {
91
- if (isConvolution(next))
92
- break;
93
- effects.push(next);
94
- i++;
95
- }
96
- }
97
- const pass = new postprocessing.EffectPass(camera, ...effects);
98
- passes.push(pass);
99
- } else if (child instanceof postprocessing.Pass) {
100
- passes.push(child);
101
- }
102
- }
103
- for (const pass of passes)
104
- composer == null ? void 0 : composer.addPass(pass);
105
- if (normalPass)
106
- normalPass.enabled = true;
107
- if (downSamplingPass)
108
- downSamplingPass.enabled = true;
109
- }
110
- return () => {
111
- for (const pass of passes)
112
- composer == null ? void 0 : composer.removePass(pass);
113
- if (normalPass)
114
- normalPass.enabled = false;
115
- if (downSamplingPass)
116
- downSamplingPass.enabled = false;
117
- };
118
- }, [composer, children, camera, normalPass, downSamplingPass]);
119
- React.useEffect(() => {
120
- const currentTonemapping = gl.toneMapping;
121
- gl.toneMapping = THREE.NoToneMapping;
122
- return () => {
123
- gl.toneMapping = currentTonemapping;
124
- };
125
- }, [gl]);
126
- const state = React.useMemo(
127
- () => ({ composer, normalPass, downSamplingPass, resolutionScale, camera, scene }),
128
- [composer, normalPass, downSamplingPass, resolutionScale, camera, scene]
129
- );
130
- React.useImperativeHandle(ref, () => composer, [composer]);
131
- return /* @__PURE__ */ jsxRuntime.jsx(EffectComposerContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx("group", { ref: group, children }) });
132
- }
133
- )
134
- );
135
- exports.EffectComposer = EffectComposer;
136
- exports.EffectComposerContext = EffectComposerContext;
137
- //# sourceMappingURL=EffectComposer.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EffectComposer.cjs","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":["createContext","EffectAttribute","forwardRef","HalfFloatType","useThree","useMemo","isWebGL2Available","EffectComposerImpl","RenderPass","downSamplingPass","normalPass","NormalPass","DepthDownsamplingPass","useEffect","useFrame","useRef","useLayoutEffect","children","Effect","EffectPass","Pass","NoToneMapping","useImperativeHandle","jsx"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { TextureDataType } from 'three';
2
- import React from 'react';
3
- import { EffectComposer as EffectComposerImpl, NormalPass, DepthDownsamplingPass } from 'postprocessing';
4
- export declare const EffectComposerContext: React.Context<{
5
- composer: EffectComposerImpl;
6
- normalPass: NormalPass | null;
7
- downSamplingPass: DepthDownsamplingPass | null;
8
- camera: THREE.Camera;
9
- scene: THREE.Scene;
10
- resolutionScale?: number | undefined;
11
- }>;
12
- export type EffectComposerProps = {
13
- enabled?: boolean;
14
- children: JSX.Element | JSX.Element[];
15
- depthBuffer?: boolean;
16
- /** Only used for SSGI currently, leave it disabled for everything else unless it's needed */
17
- enableNormalPass?: boolean;
18
- stencilBuffer?: boolean;
19
- autoClear?: boolean;
20
- resolutionScale?: number;
21
- multisampling?: number;
22
- frameBufferType?: TextureDataType;
23
- renderPriority?: number;
24
- camera?: THREE.Camera;
25
- scene?: THREE.Scene;
26
- };
27
- export declare const EffectComposer: React.MemoExoticComponent<React.ForwardRefExoticComponent<EffectComposerProps & React.RefAttributes<EffectComposerImpl>>>;
@@ -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;"}