@react-three/drei 9.74.13 → 9.74.15

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 (189) hide show
  1. package/core/CatmullRomLine.js +0 -2
  2. package/core/Cloud.js +0 -3
  3. package/core/CubeCamera.js +0 -1
  4. package/core/CubicBezierLine.js +0 -2
  5. package/core/Environment.js +0 -1
  6. package/core/Example.js +0 -6
  7. package/core/FaceControls.cjs.js +1 -1
  8. package/core/FaceControls.js +0 -2
  9. package/core/FaceLandmarker.cjs.js +1 -1
  10. package/core/FaceLandmarker.js +3 -4
  11. package/core/Facemesh.js +0 -2
  12. package/core/GizmoHelper.js +0 -3
  13. package/core/GizmoViewcube.js +0 -4
  14. package/core/GizmoViewport.js +0 -4
  15. package/core/Gltf.js +0 -4
  16. package/core/MeshDiscardMaterial.js +0 -2
  17. package/core/MeshDistortMaterial.js +1 -2
  18. package/core/MeshReflectorMaterial.js +0 -1
  19. package/core/MeshRefractionMaterial.js +0 -2
  20. package/core/MeshTransmissionMaterial.js +0 -1
  21. package/core/OrthographicCamera.js +0 -1
  22. package/core/PerspectiveCamera.js +0 -1
  23. package/core/QuadraticBezierLine.js +0 -2
  24. package/core/Reflector.js +0 -1
  25. package/core/SpotLight.js +1 -2
  26. package/core/Stage.js +0 -7
  27. package/core/Text3D.js +0 -1
  28. package/core/Wireframe.js +0 -1
  29. package/core/index.cjs.js +1 -1
  30. package/core/index.js +1 -0
  31. package/core/useKTX2.js +0 -1
  32. package/core/useMatcapTexture.js +0 -2
  33. package/core/useNormalTexture.js +0 -1
  34. package/index.cjs.js +1 -1
  35. package/materials/DiscardMaterial.js +0 -1
  36. package/materials/MeshRefractionMaterial.js +1 -1
  37. package/native/index.cjs.js +1 -1
  38. package/native/index.js +1 -0
  39. package/package.json +2 -2
  40. package/web/Loader.js +0 -2
  41. package/web/index.cjs.js +1 -1
  42. package/web/index.js +1 -0
  43. package/web/pivotControls/AxisArrow.js +0 -3
  44. package/web/pivotControls/AxisRotator.js +0 -3
  45. package/web/pivotControls/PlaneSlider.js +0 -3
  46. package/web/pivotControls/index.js +0 -5
  47. package/src/core/AccumulativeShadows.js +0 -311
  48. package/src/core/AdaptiveDpr.js +0 -28
  49. package/src/core/AdaptiveEvents.js +0 -20
  50. package/src/core/ArcballControls.js +0 -67
  51. package/src/core/AsciiRenderer.js +0 -60
  52. package/src/core/BBAnchor.js +0 -37
  53. package/src/core/Backdrop.js +0 -36
  54. package/src/core/BakeShadows.js +0 -16
  55. package/src/core/Billboard.js +0 -41
  56. package/src/core/Bounds.js +0 -245
  57. package/src/core/CameraControls.js +0 -92
  58. package/src/core/CameraShake.js +0 -61
  59. package/src/core/CatmullRomLine.js +0 -44
  60. package/src/core/Caustics.js +0 -375
  61. package/src/core/Center.js +0 -66
  62. package/src/core/Clone.js +0 -102
  63. package/src/core/Cloud.js +0 -59
  64. package/src/core/ComputedAttribute.js +0 -34
  65. package/src/core/ContactShadows.js +0 -114
  66. package/src/core/CubeCamera.js +0 -43
  67. package/src/core/CubicBezierLine.js +0 -28
  68. package/src/core/CurveModifier.js +0 -34
  69. package/src/core/Decal.js +0 -92
  70. package/src/core/Detailed.js +0 -34
  71. package/src/core/DeviceOrientationControls.js +0 -51
  72. package/src/core/Edges.js +0 -36
  73. package/src/core/Effects.js +0 -93
  74. package/src/core/Environment.js +0 -132
  75. package/src/core/Example.js +0 -42
  76. package/src/core/FaceControls.js +0 -315
  77. package/src/core/FaceLandmarker.js +0 -43
  78. package/src/core/Facemesh.js +0 -4545
  79. package/src/core/FirstPersonControls.js +0 -38
  80. package/src/core/Float.js +0 -36
  81. package/src/core/FlyControls.js +0 -55
  82. package/src/core/GizmoHelper.js +0 -111
  83. package/src/core/GizmoViewcube.js +0 -152
  84. package/src/core/GizmoViewport.js +0 -152
  85. package/src/core/Gltf.js +0 -20
  86. package/src/core/GradientTexture.js +0 -33
  87. package/src/core/Grid.js +0 -112
  88. package/src/core/Hud.js +0 -58
  89. package/src/core/Image.js +0 -119
  90. package/src/core/Instances.js +0 -215
  91. package/src/core/Lightformer.js +0 -51
  92. package/src/core/Line.js +0 -68
  93. package/src/core/MapControls.js +0 -64
  94. package/src/core/MarchingCubes.js +0 -76
  95. package/src/core/Mask.js +0 -42
  96. package/src/core/MeshDiscardMaterial.js +0 -15
  97. package/src/core/MeshDistortMaterial.js +0 -79
  98. package/src/core/MeshPortalMaterial.js +0 -381
  99. package/src/core/MeshReflectorMaterial.js +0 -182
  100. package/src/core/MeshRefractionMaterial.js +0 -79
  101. package/src/core/MeshTransmissionMaterial.js +0 -395
  102. package/src/core/MeshWobbleMaterial.js +0 -65
  103. package/src/core/OrbitControls.js +0 -82
  104. package/src/core/OrthographicCamera.js +0 -77
  105. package/src/core/PerformanceMonitor.js +0 -121
  106. package/src/core/PerspectiveCamera.js +0 -73
  107. package/src/core/PointMaterial.js +0 -36
  108. package/src/core/PointerLockControls.js +0 -90
  109. package/src/core/Points.js +0 -227
  110. package/src/core/PositionalAudio.js +0 -51
  111. package/src/core/Preload.js +0 -45
  112. package/src/core/QuadraticBezierLine.js +0 -44
  113. package/src/core/Reflector.js +0 -182
  114. package/src/core/RenderTexture.js +0 -96
  115. package/src/core/Resize.js +0 -39
  116. package/src/core/RoundedBox.js +0 -52
  117. package/src/core/Sampler.js +0 -85
  118. package/src/core/ScreenQuad.js +0 -24
  119. package/src/core/ScreenSpace.js +0 -25
  120. package/src/core/Segments.js +0 -102
  121. package/src/core/Shadow.js +0 -42
  122. package/src/core/Sky.js +0 -39
  123. package/src/core/Sparkles.js +0 -139
  124. package/src/core/SpotLight.js +0 -231
  125. package/src/core/SpriteAnimator.js +0 -342
  126. package/src/core/Stage.js +0 -135
  127. package/src/core/Stars.js +0 -108
  128. package/src/core/Stats.js +0 -30
  129. package/src/core/Svg.js +0 -59
  130. package/src/core/Text.js +0 -58
  131. package/src/core/Text3D.js +0 -76
  132. package/src/core/TrackballControls.js +0 -72
  133. package/src/core/Trail.js +0 -161
  134. package/src/core/TransformControls.js +0 -106
  135. package/src/core/Wireframe.js +0 -185
  136. package/src/core/meshBounds.js +0 -38
  137. package/src/core/shaderMaterial.js +0 -39
  138. package/src/core/shapes.js +0 -68
  139. package/src/core/softShadows.js +0 -161
  140. package/src/core/useAnimations.js +0 -56
  141. package/src/core/useAspect.js +0 -10
  142. package/src/core/useBVH.js +0 -90
  143. package/src/core/useBoxProjectedEnv.js +0 -98
  144. package/src/core/useCamera.js +0 -27
  145. package/src/core/useContextBridge.js +0 -21
  146. package/src/core/useCubeCamera.js +0 -49
  147. package/src/core/useCubeTexture.js +0 -18
  148. package/src/core/useDepthBuffer.js +0 -38
  149. package/src/core/useDetectGPU.js +0 -6
  150. package/src/core/useEnvironment.js +0 -48
  151. package/src/core/useFBO.js +0 -53
  152. package/src/core/useFBX.js +0 -12
  153. package/src/core/useFont.js +0 -20
  154. package/src/core/useGLTF.js +0 -37
  155. package/src/core/useHelper.js +0 -31
  156. package/src/core/useIntersect.js +0 -39
  157. package/src/core/useKTX2.js +0 -38
  158. package/src/core/useMatcapTexture.js +0 -45
  159. package/src/core/useNormalTexture.js +0 -30
  160. package/src/core/useProgress.js +0 -50
  161. package/src/core/useTexture.js +0 -35
  162. package/src/core/useTrailTexture.js +0 -164
  163. package/src/core/useVideoTexture.js +0 -41
  164. package/src/helpers/environment-assets.js +0 -14
  165. package/src/helpers/useEffectfulState.js +0 -18
  166. package/src/materials/BlurPass.js +0 -75
  167. package/src/materials/ConvolutionMaterial.js +0 -99
  168. package/src/materials/DiscardMaterial.js +0 -5
  169. package/src/materials/MeshReflectorMaterial.js +0 -290
  170. package/src/materials/MeshRefractionMaterial.js +0 -171
  171. package/src/materials/SpotLightMaterial.js +0 -111
  172. package/src/materials/WireframeMaterial.js +0 -235
  173. package/src/web/CycleRaycast.js +0 -97
  174. package/src/web/Html.js +0 -417
  175. package/src/web/KeyboardControls.js +0 -101
  176. package/src/web/Loader.js +0 -98
  177. package/src/web/PresentationControls.js +0 -86
  178. package/src/web/ScrollControls.js +0 -246
  179. package/src/web/Select.js +0 -175
  180. package/src/web/View.js +0 -206
  181. package/src/web/pivotControls/AxisArrow.js +0 -202
  182. package/src/web/pivotControls/AxisRotator.js +0 -235
  183. package/src/web/pivotControls/PlaneSlider.js +0 -211
  184. package/src/web/pivotControls/context.js +0 -5
  185. package/src/web/pivotControls/index.js +0 -223
  186. package/src/web/useCursor.js +0 -12
  187. /package/{src/helpers → helpers}/glsl/DefaultSpotlightShadowShadows.glsl.js +0 -0
  188. /package/{src/helpers → helpers}/glsl/distort.vert.glsl.js +0 -0
  189. /package/{src/index.js → index.js} +0 -0
@@ -1,65 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import * as React from 'react';
3
- import { MeshStandardMaterial } from 'three';
4
- import { useFrame } from '@react-three/fiber';
5
-
6
- class WobbleMaterialImpl extends MeshStandardMaterial {
7
- constructor(parameters = {}) {
8
- super(parameters);
9
- this.setValues(parameters);
10
- this._time = {
11
- value: 0
12
- };
13
- this._factor = {
14
- value: 1
15
- };
16
- }
17
-
18
- onBeforeCompile(shader) {
19
- shader.uniforms.time = this._time;
20
- shader.uniforms.factor = this._factor;
21
- shader.vertexShader = `
22
- uniform float time;
23
- uniform float factor;
24
- ${shader.vertexShader}
25
- `;
26
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `float theta = sin( time + position.y ) / 2.0 * factor;
27
- float c = cos( theta );
28
- float s = sin( theta );
29
- mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
30
- vec3 transformed = vec3( position ) * m;
31
- vNormal = vNormal * m;`);
32
- }
33
-
34
- get time() {
35
- return this._time.value;
36
- }
37
-
38
- set time(v) {
39
- this._time.value = v;
40
- }
41
-
42
- get factor() {
43
- return this._factor.value;
44
- }
45
-
46
- set factor(v) {
47
- this._factor.value = v;
48
- }
49
-
50
- }
51
-
52
- const MeshWobbleMaterial = /*#__PURE__*/React.forwardRef(({
53
- speed = 1,
54
- ...props
55
- }, ref) => {
56
- const [material] = React.useState(() => new WobbleMaterialImpl());
57
- useFrame(state => material && (material.time = state.clock.getElapsedTime() * speed));
58
- return /*#__PURE__*/React.createElement("primitive", _extends({
59
- object: material,
60
- ref: ref,
61
- attach: "material"
62
- }, props));
63
- });
64
-
65
- export { MeshWobbleMaterial };
@@ -1,82 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import { useThree, useFrame } from '@react-three/fiber';
3
- import * as React from 'react';
4
- import { OrbitControls as OrbitControls$1 } from 'three-stdlib';
5
-
6
- const OrbitControls = /*#__PURE__*/React.forwardRef(({
7
- makeDefault,
8
- camera,
9
- regress,
10
- domElement,
11
- enableDamping = true,
12
- keyEvents = false,
13
- onChange,
14
- onStart,
15
- onEnd,
16
- ...restProps
17
- }, ref) => {
18
- const invalidate = useThree(state => state.invalidate);
19
- const defaultCamera = useThree(state => state.camera);
20
- const gl = useThree(state => state.gl);
21
- const events = useThree(state => state.events);
22
- const setEvents = useThree(state => state.setEvents);
23
- const set = useThree(state => state.set);
24
- const get = useThree(state => state.get);
25
- const performance = useThree(state => state.performance);
26
- const explCamera = camera || defaultCamera;
27
- const explDomElement = domElement || events.connected || gl.domElement;
28
- const controls = React.useMemo(() => new OrbitControls$1(explCamera), [explCamera]);
29
- useFrame(() => {
30
- if (controls.enabled) controls.update();
31
- }, -1);
32
- React.useEffect(() => {
33
- if (keyEvents) {
34
- controls.connect(keyEvents === true ? explDomElement : keyEvents);
35
- }
36
-
37
- controls.connect(explDomElement);
38
- return () => void controls.dispose();
39
- }, [keyEvents, explDomElement, regress, controls, invalidate]);
40
- React.useEffect(() => {
41
- const callback = e => {
42
- invalidate();
43
- if (regress) performance.regress();
44
- if (onChange) onChange(e);
45
- };
46
-
47
- const onStartCb = e => {
48
- if (onStart) onStart(e);
49
- };
50
-
51
- const onEndCb = e => {
52
- if (onEnd) onEnd(e);
53
- };
54
-
55
- controls.addEventListener('change', callback);
56
- controls.addEventListener('start', onStartCb);
57
- controls.addEventListener('end', onEndCb);
58
- return () => {
59
- controls.removeEventListener('start', onStartCb);
60
- controls.removeEventListener('end', onEndCb);
61
- controls.removeEventListener('change', callback);
62
- };
63
- }, [onChange, onStart, onEnd, controls, invalidate, setEvents]);
64
- React.useEffect(() => {
65
- if (makeDefault) {
66
- const old = get().controls;
67
- set({
68
- controls
69
- });
70
- return () => set({
71
- controls: old
72
- });
73
- }
74
- }, [makeDefault, controls]);
75
- return /*#__PURE__*/React.createElement("primitive", _extends({
76
- ref: ref,
77
- object: controls,
78
- enableDamping: enableDamping
79
- }, restProps));
80
- });
81
-
82
- export { OrbitControls };
@@ -1,77 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import * as React from 'react';
3
- import { useThree, useFrame } from '@react-three/fiber';
4
- import mergeRefs from 'react-merge-refs';
5
- import { useFBO } from './useFBO.js';
6
-
7
- const isFunction = node => typeof node === 'function';
8
-
9
- const OrthographicCamera = /*#__PURE__*/React.forwardRef(({
10
- envMap,
11
- resolution = 256,
12
- frames = Infinity,
13
- children,
14
- makeDefault,
15
- ...props
16
- }, ref) => {
17
- const set = useThree(({
18
- set
19
- }) => set);
20
- const camera = useThree(({
21
- camera
22
- }) => camera);
23
- const size = useThree(({
24
- size
25
- }) => size);
26
- const cameraRef = React.useRef(null);
27
- const groupRef = React.useRef(null);
28
- const fbo = useFBO(resolution);
29
- React.useLayoutEffect(() => {
30
- if (!props.manual) {
31
- cameraRef.current.updateProjectionMatrix();
32
- }
33
- }, [size, props]);
34
- React.useLayoutEffect(() => {
35
- cameraRef.current.updateProjectionMatrix();
36
- });
37
- React.useLayoutEffect(() => {
38
- if (makeDefault) {
39
- const oldCam = camera;
40
- set(() => ({
41
- camera: cameraRef.current
42
- }));
43
- return () => set(() => ({
44
- camera: oldCam
45
- }));
46
- } // The camera should not be part of the dependency list because this components camera is a stable reference
47
- // that must exchange the default, and clean up after itself on unmount.
48
-
49
- }, [cameraRef, makeDefault, set]);
50
- let count = 0;
51
- let oldEnvMap = null;
52
- const functional = isFunction(children);
53
- useFrame(state => {
54
- if (functional && (frames === Infinity || count < frames)) {
55
- groupRef.current.visible = false;
56
- state.gl.setRenderTarget(fbo);
57
- oldEnvMap = state.scene.background;
58
- if (envMap) state.scene.background = envMap;
59
- state.gl.render(state.scene, cameraRef.current);
60
- state.scene.background = oldEnvMap;
61
- state.gl.setRenderTarget(null);
62
- groupRef.current.visible = true;
63
- count++;
64
- }
65
- });
66
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("orthographicCamera", _extends({
67
- left: size.width / -2,
68
- right: size.width / 2,
69
- top: size.height / 2,
70
- bottom: size.height / -2,
71
- ref: mergeRefs([cameraRef, ref])
72
- }, props), !functional && children), /*#__PURE__*/React.createElement("group", {
73
- ref: groupRef
74
- }, functional && children(fbo.texture)));
75
- });
76
-
77
- export { OrthographicCamera };
@@ -1,121 +0,0 @@
1
- import * as React from 'react';
2
- import { useState, useContext, useRef, useLayoutEffect, createContext } from 'react';
3
- import { useFrame } from '@react-three/fiber';
4
-
5
- const context = /*#__PURE__*/createContext(null);
6
- function PerformanceMonitor({
7
- iterations = 10,
8
- ms = 250,
9
- threshold = 0.75,
10
- step = 0.1,
11
- factor: _factor = 0.5,
12
- flipflops = Infinity,
13
- bounds = refreshrate => refreshrate > 100 ? [60, 100] : [40, 60],
14
- onIncline,
15
- onDecline,
16
- onChange,
17
- onFallback,
18
- children
19
- }) {
20
- const decimalPlacesRatio = Math.pow(10, 0);
21
- const [api, _] = useState(() => ({
22
- fps: 0,
23
- index: 0,
24
- factor: _factor,
25
- flipped: 0,
26
- refreshrate: 0,
27
- fallback: false,
28
- frames: [],
29
- averages: [],
30
- subscriptions: new Map(),
31
- subscribe: ref => {
32
- const key = Symbol();
33
- api.subscriptions.set(key, ref.current);
34
- return () => void api.subscriptions.delete(key);
35
- }
36
- }));
37
- let lastFactor = 0;
38
- useFrame(() => {
39
- const {
40
- frames,
41
- averages
42
- } = api; // If the fallback has been reached do not continue running samples
43
-
44
- if (api.fallback) return;
45
-
46
- if (averages.length < iterations) {
47
- frames.push(performance.now());
48
- const msPassed = frames[frames.length - 1] - frames[0];
49
-
50
- if (msPassed >= ms) {
51
- api.fps = Math.round(frames.length / msPassed * 1000 * decimalPlacesRatio) / decimalPlacesRatio;
52
- api.refreshrate = Math.max(api.refreshrate, api.fps);
53
- averages[api.index++ % iterations] = api.fps;
54
-
55
- if (averages.length === iterations) {
56
- const [lower, upper] = bounds(api.refreshrate);
57
- const upperBounds = averages.filter(value => value >= upper);
58
- const lowerBounds = averages.filter(value => value < lower); // Trigger incline when more than -threshold- avgs exceed the upper bound
59
-
60
- if (upperBounds.length > iterations * threshold) {
61
- api.factor = Math.min(1, api.factor + step);
62
- api.flipped++;
63
- if (onIncline) onIncline(api);
64
- api.subscriptions.forEach(value => value.onIncline && value.onIncline(api));
65
- } // Trigger decline when more than -threshold- avgs are below the lower bound
66
-
67
-
68
- if (lowerBounds.length > iterations * threshold) {
69
- api.factor = Math.max(0, api.factor - step);
70
- api.flipped++;
71
- if (onDecline) onDecline(api);
72
- api.subscriptions.forEach(value => value.onDecline && value.onDecline(api));
73
- }
74
-
75
- if (lastFactor !== api.factor) {
76
- lastFactor = api.factor;
77
- if (onChange) onChange(api);
78
- api.subscriptions.forEach(value => value.onChange && value.onChange(api));
79
- }
80
-
81
- if (api.flipped > flipflops && !api.fallback) {
82
- api.fallback = true;
83
- if (onFallback) onFallback(api);
84
- api.subscriptions.forEach(value => value.onFallback && value.onFallback(api));
85
- }
86
-
87
- api.averages = []; // Resetting the refreshrate creates more problems than it solves atm
88
- // api.refreshrate = 0
89
- }
90
-
91
- api.frames = [];
92
- }
93
- }
94
- });
95
- return /*#__PURE__*/React.createElement(context.Provider, {
96
- value: api
97
- }, children);
98
- }
99
- function usePerformanceMonitor({
100
- onIncline,
101
- onDecline,
102
- onChange,
103
- onFallback
104
- }) {
105
- const api = useContext(context);
106
- const ref = useRef({
107
- onIncline,
108
- onDecline,
109
- onChange,
110
- onFallback
111
- });
112
- useLayoutEffect(() => {
113
- ref.current.onIncline = onIncline;
114
- ref.current.onDecline = onDecline;
115
- ref.current.onChange = onChange;
116
- ref.current.onFallback = onFallback;
117
- }, [onIncline, onDecline, onChange, onFallback]);
118
- useLayoutEffect(() => api.subscribe(ref), [api]);
119
- }
120
-
121
- export { PerformanceMonitor, usePerformanceMonitor };
@@ -1,73 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import * as React from 'react';
3
- import { useThree, useFrame } from '@react-three/fiber';
4
- import mergeRefs from 'react-merge-refs';
5
- import { useFBO } from './useFBO.js';
6
-
7
- const isFunction = node => typeof node === 'function';
8
-
9
- const PerspectiveCamera = /*#__PURE__*/React.forwardRef(({
10
- envMap,
11
- resolution = 256,
12
- frames = Infinity,
13
- makeDefault,
14
- children,
15
- ...props
16
- }, ref) => {
17
- const set = useThree(({
18
- set
19
- }) => set);
20
- const camera = useThree(({
21
- camera
22
- }) => camera);
23
- const size = useThree(({
24
- size
25
- }) => size);
26
- const cameraRef = React.useRef(null);
27
- const groupRef = React.useRef(null);
28
- const fbo = useFBO(resolution);
29
- React.useLayoutEffect(() => {
30
- if (!props.manual) {
31
- cameraRef.current.aspect = size.width / size.height;
32
- }
33
- }, [size, props]);
34
- React.useLayoutEffect(() => {
35
- cameraRef.current.updateProjectionMatrix();
36
- });
37
- let count = 0;
38
- let oldEnvMap = null;
39
- const functional = isFunction(children);
40
- useFrame(state => {
41
- if (functional && (frames === Infinity || count < frames)) {
42
- groupRef.current.visible = false;
43
- state.gl.setRenderTarget(fbo);
44
- oldEnvMap = state.scene.background;
45
- if (envMap) state.scene.background = envMap;
46
- state.gl.render(state.scene, cameraRef.current);
47
- state.scene.background = oldEnvMap;
48
- state.gl.setRenderTarget(null);
49
- groupRef.current.visible = true;
50
- count++;
51
- }
52
- });
53
- React.useLayoutEffect(() => {
54
- if (makeDefault) {
55
- const oldCam = camera;
56
- set(() => ({
57
- camera: cameraRef.current
58
- }));
59
- return () => set(() => ({
60
- camera: oldCam
61
- }));
62
- } // The camera should not be part of the dependency list because this components camera is a stable reference
63
- // that must exchange the default, and clean up after itself on unmount.
64
-
65
- }, [cameraRef, makeDefault, set]);
66
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("perspectiveCamera", _extends({
67
- ref: mergeRefs([cameraRef, ref])
68
- }, props), !functional && children), /*#__PURE__*/React.createElement("group", {
69
- ref: groupRef
70
- }, functional && children(fbo.texture)));
71
- });
72
-
73
- export { PerspectiveCamera };
@@ -1,36 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import * as THREE from 'three';
3
- import * as React from 'react';
4
-
5
- class PointMaterialImpl extends THREE.PointsMaterial {
6
- constructor(props) {
7
- super(props);
8
-
9
- this.onBeforeCompile = (shader, renderer) => {
10
- const {
11
- isWebGL2
12
- } = renderer.capabilities;
13
- shader.fragmentShader = shader.fragmentShader.replace('#include <output_fragment>', `
14
- ${!isWebGL2 ? '#extension GL_OES_standard_derivatives : enable\n#include <output_fragment>' : '#include <output_fragment>'}
15
- vec2 cxy = 2.0 * gl_PointCoord - 1.0;
16
- float r = dot(cxy, cxy);
17
- float delta = fwidth(r);
18
- float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);
19
- gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );
20
- #include <tonemapping_fragment>
21
- #include <encodings_fragment>
22
- `);
23
- };
24
- }
25
-
26
- }
27
- const PointMaterial = /*#__PURE__*/React.forwardRef((props, ref) => {
28
- const [material] = React.useState(() => new PointMaterialImpl(null));
29
- return /*#__PURE__*/React.createElement("primitive", _extends({}, props, {
30
- object: material,
31
- ref: ref,
32
- attach: "material"
33
- }));
34
- });
35
-
36
- export { PointMaterial, PointMaterialImpl };
@@ -1,90 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import { useThree } from '@react-three/fiber';
3
- import * as React from 'react';
4
- import { PointerLockControls as PointerLockControls$1 } from 'three-stdlib';
5
-
6
- const PointerLockControls = /*#__PURE__*/React.forwardRef(({
7
- domElement,
8
- selector,
9
- onChange,
10
- onLock,
11
- onUnlock,
12
- enabled = true,
13
- makeDefault,
14
- ...props
15
- }, ref) => {
16
- const {
17
- camera,
18
- ...rest
19
- } = props;
20
- const setEvents = useThree(state => state.setEvents);
21
- const gl = useThree(state => state.gl);
22
- const defaultCamera = useThree(state => state.camera);
23
- const invalidate = useThree(state => state.invalidate);
24
- const events = useThree(state => state.events);
25
- const get = useThree(state => state.get);
26
- const set = useThree(state => state.set);
27
- const explCamera = camera || defaultCamera;
28
- const explDomElement = domElement || events.connected || gl.domElement;
29
- const [controls] = React.useState(() => new PointerLockControls$1(explCamera));
30
- React.useEffect(() => {
31
- if (enabled) {
32
- controls.connect(explDomElement); // Force events to be centered while PLC is active
33
-
34
- const oldComputeOffsets = get().events.compute;
35
- setEvents({
36
- compute(event, state) {
37
- const offsetX = state.size.width / 2;
38
- const offsetY = state.size.height / 2;
39
- state.pointer.set(offsetX / state.size.width * 2 - 1, -(offsetY / state.size.height) * 2 + 1);
40
- state.raycaster.setFromCamera(state.pointer, state.camera);
41
- }
42
-
43
- });
44
- return () => {
45
- controls.disconnect();
46
- setEvents({
47
- compute: oldComputeOffsets
48
- });
49
- };
50
- }
51
- }, [enabled, controls]);
52
- React.useEffect(() => {
53
- const callback = e => {
54
- invalidate();
55
- if (onChange) onChange(e);
56
- };
57
-
58
- controls.addEventListener('change', callback);
59
- if (onLock) controls.addEventListener('lock', onLock);
60
- if (onUnlock) controls.addEventListener('unlock', onUnlock); // Enforce previous interaction
61
-
62
- const handler = () => controls.lock();
63
-
64
- const elements = selector ? Array.from(document.querySelectorAll(selector)) : [document];
65
- elements.forEach(element => element && element.addEventListener('click', handler));
66
- return () => {
67
- controls.removeEventListener('change', callback);
68
- if (onLock) controls.addEventListener('lock', onLock);
69
- if (onUnlock) controls.addEventListener('unlock', onUnlock);
70
- elements.forEach(element => element ? element.removeEventListener('click', handler) : undefined);
71
- };
72
- }, [onChange, onLock, onUnlock, selector, controls, invalidate]);
73
- React.useEffect(() => {
74
- if (makeDefault) {
75
- const old = get().controls;
76
- set({
77
- controls
78
- });
79
- return () => set({
80
- controls: old
81
- });
82
- }
83
- }, [makeDefault, controls]);
84
- return /*#__PURE__*/React.createElement("primitive", _extends({
85
- ref: ref,
86
- object: controls
87
- }, rest));
88
- });
89
-
90
- export { PointerLockControls };