@react-three/drei 9.0.0-beta.3 → 9.0.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.
- package/README.md +293 -26
- package/core/AdaptiveEvents.cjs.js +1 -1
- package/core/AdaptiveEvents.js +8 -3
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.js +13 -25
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.d.ts +2 -1
- package/core/Bounds.js +25 -14
- package/core/Clone.cjs.js +1 -0
- package/core/Clone.d.ts +11 -0
- package/core/Clone.js +92 -0
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +3 -1
- package/core/Cloud.js +4 -1
- package/core/ComputedAttribute.cjs.js +1 -0
- package/core/ComputedAttribute.d.ts +9 -0
- package/core/ComputedAttribute.js +34 -0
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +3 -1
- package/core/ContactShadows.js +15 -2
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +6 -6
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/DeviceOrientationControls.d.ts +1 -1
- package/core/DeviceOrientationControls.js +2 -6
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.d.ts +3 -2
- package/core/Effects.js +2 -2
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +13 -3
- package/core/Environment.js +96 -33
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/FirstPersonControls.d.ts +4 -2
- package/core/FirstPersonControls.js +9 -8
- package/core/Float.cjs.js +1 -1
- package/core/Float.d.ts +1 -1
- package/core/Float.js +5 -4
- package/core/FlyControls.cjs.js +1 -1
- package/core/FlyControls.d.ts +1 -0
- package/core/FlyControls.js +10 -11
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -1
- package/core/GizmoHelper.js +31 -41
- package/core/Image.cjs.js +1 -1
- package/core/Image.d.ts +5 -3
- package/core/Image.js +6 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +1 -1
- package/core/Instances.js +5 -11
- package/core/Lightformer.cjs.js +1 -0
- package/core/Lightformer.d.ts +41 -0
- package/core/Lightformer.js +51 -0
- package/core/MapControls.cjs.js +1 -1
- package/core/MapControls.d.ts +2 -1
- package/core/MapControls.js +8 -11
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +1 -2
- package/core/MeshReflectorMaterial.js +4 -5
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrbitControls.js +18 -31
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointMaterial.d.ts +5 -8
- package/core/PointMaterial.js +16 -34
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/PointerLockControls.d.ts +3 -1
- package/core/PointerLockControls.js +43 -25
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +3 -3
- package/core/Points.js +11 -30
- package/core/PositionalAudio.d.ts +1 -1
- package/core/Reflector.d.ts +1 -1
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +21 -0
- package/core/Sampler.js +65 -0
- package/core/SpotLight.d.ts +1 -1
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.js +1 -2
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.js +3 -0
- package/core/Stats.cjs.js +1 -1
- package/core/Stats.js +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +2 -1
- package/core/Text.js +3 -2
- package/core/TrackballControls.cjs.js +1 -1
- package/core/TrackballControls.d.ts +1 -1
- package/core/TrackballControls.js +7 -5
- package/core/Trail.cjs.js +1 -0
- package/core/Trail.d.ts +21 -0
- package/core/Trail.js +160 -0
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/TransformControls.js +7 -13
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +6 -0
- package/core/index.js +9 -2
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +8 -0
- package/core/useBoxProjectedEnv.js +98 -0
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBO.d.ts +1 -1
- package/core/useFBO.js +22 -24
- package/core/useGLTF.d.ts +1 -1
- package/core/useHelper.d.ts +3 -1
- package/core/useMatcapTexture.cjs.js +1 -1
- package/core/useProgress.d.ts +1 -1
- package/index.cjs.js +1 -1
- package/index.js +7 -1
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/ConvolutionMaterial.js +2 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.d.ts +0 -3
- package/materials/MeshReflectorMaterial.js +8 -34
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/SpotLightMaterial.js +3 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +9 -2
- package/package.json +6 -5
- package/web/CycleRaycast.cjs.js +1 -1
- package/web/CycleRaycast.js +23 -20
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +16 -12
- package/web/Select.cjs.js +1 -1
- package/web/Select.js +9 -8
- package/web/index.cjs.js +1 -1
- package/web/index.js +9 -2
package/core/Bounds.js
CHANGED
|
@@ -4,8 +4,6 @@ import { useThree, useFrame } from '@react-three/fiber';
|
|
|
4
4
|
|
|
5
5
|
const isOrthographic = def => def && def.isOrthographicCamera;
|
|
6
6
|
|
|
7
|
-
const isObject3D = def => def && def.isObject3D;
|
|
8
|
-
|
|
9
7
|
const isBox3 = def => def && def.isBox3;
|
|
10
8
|
|
|
11
9
|
const context = /*#__PURE__*/React.createContext(null);
|
|
@@ -14,15 +12,19 @@ function Bounds({
|
|
|
14
12
|
damping = 6,
|
|
15
13
|
fit,
|
|
16
14
|
clip,
|
|
15
|
+
observe,
|
|
17
16
|
margin = 1.2,
|
|
18
17
|
eps = 0.01,
|
|
19
18
|
onFit
|
|
20
19
|
}) {
|
|
21
20
|
const ref = React.useRef(null);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const {
|
|
22
|
+
camera,
|
|
23
|
+
invalidate,
|
|
24
|
+
size,
|
|
25
|
+
controls: controlsImpl
|
|
26
|
+
} = useThree();
|
|
27
|
+
const controls = controlsImpl;
|
|
26
28
|
const onFitRef = React.useRef(onFit);
|
|
27
29
|
onFitRef.current = onFit;
|
|
28
30
|
|
|
@@ -68,7 +70,11 @@ function Bounds({
|
|
|
68
70
|
getSize,
|
|
69
71
|
|
|
70
72
|
refresh(object) {
|
|
71
|
-
if (
|
|
73
|
+
if (isBox3(object)) box.copy(object);else {
|
|
74
|
+
const target = object || ref.current;
|
|
75
|
+
target.updateWorldMatrix(true, true);
|
|
76
|
+
box.setFromObject(target);
|
|
77
|
+
}
|
|
72
78
|
|
|
73
79
|
if (box.isEmpty()) {
|
|
74
80
|
const max = camera.position.length() || 10;
|
|
@@ -97,6 +103,7 @@ function Bounds({
|
|
|
97
103
|
camera.far = distance * 100;
|
|
98
104
|
camera.updateProjectionMatrix();
|
|
99
105
|
if (controls) controls.update();
|
|
106
|
+
invalidate();
|
|
100
107
|
return this;
|
|
101
108
|
},
|
|
102
109
|
|
|
@@ -147,21 +154,16 @@ function Bounds({
|
|
|
147
154
|
controls.target.copy(goal.focus);
|
|
148
155
|
controls.update();
|
|
149
156
|
}
|
|
150
|
-
|
|
151
|
-
invalidate();
|
|
152
157
|
}
|
|
153
158
|
|
|
154
159
|
if (onFitRef.current) onFitRef.current(this.getSize());
|
|
160
|
+
invalidate();
|
|
155
161
|
return this;
|
|
156
162
|
}
|
|
157
163
|
|
|
158
164
|
};
|
|
159
165
|
}, [box, camera, controls, margin, damping, invalidate]);
|
|
160
166
|
React.useLayoutEffect(() => {
|
|
161
|
-
api.refresh();
|
|
162
|
-
if (fit) api.fit();
|
|
163
|
-
if (clip) api.clip();
|
|
164
|
-
|
|
165
167
|
if (controls) {
|
|
166
168
|
// Try to prevent drag hijacking
|
|
167
169
|
const callback = () => current.animating = false;
|
|
@@ -169,7 +171,16 @@ function Bounds({
|
|
|
169
171
|
controls.addEventListener('start', callback);
|
|
170
172
|
return () => controls.removeEventListener('start', callback);
|
|
171
173
|
}
|
|
172
|
-
}, [
|
|
174
|
+
}, [controls]); // Scale pointer on window resize
|
|
175
|
+
|
|
176
|
+
const count = React.useRef(0);
|
|
177
|
+
React.useLayoutEffect(() => {
|
|
178
|
+
if (observe || count.current++ === 0) {
|
|
179
|
+
api.refresh();
|
|
180
|
+
if (fit) api.fit();
|
|
181
|
+
if (clip) api.clip();
|
|
182
|
+
}
|
|
183
|
+
}, [size, clip, fit, observe]);
|
|
173
184
|
useFrame((state, delta) => {
|
|
174
185
|
if (current.animating) {
|
|
175
186
|
damp(current.focus, goal.focus, damping, delta);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("lodash.pick");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=a(e),c=n(t),i=a(r);function l(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData"],deep:r,inject:a,castShadow:n,receiveShadow:o}){let l=i.default(e,t);return r&&(l.geometry&&"materialsOnly"!==r&&(l.geometry=l.geometry.clone()),l.material&&"geometriesOnly"!==r&&(l.material=l.material.clone())),a&&(l="function"==typeof a?{...l,children:a(e)}:c.isValidElement(a)?{...l,children:a}:{...l,...a}),"Mesh"===e.type&&(n&&(l.castShadow=!0),o&&(l.receiveShadow=!0)),l}const u=c.forwardRef((({object:e,children:t,deep:r,castShadow:a,receiveShadow:n,inject:i,keys:d,...s},f)=>{const p={keys:d,deep:r,inject:i,castShadow:a,receiveShadow:n};if(Array.isArray(e))return c.createElement("group",o.default({},s,{ref:f}),e.map((e=>c.createElement(u,o.default({key:e.uuid,object:e},p)))),t);const{children:y,...m}=l(e,p),h=e.type[0].toLowerCase()+e.type.slice(1);return c.createElement(h,o.default({},m,s,{ref:f}),(null==e?void 0:e.children).map((e=>{let t={},r=e.type[0].toLowerCase()+e.type.slice(1);return"group"===r||"object3D"===r?(r=u,t={object:e,...p}):t=l(e,p),c.createElement(r,o.default({key:e.uuid},t))})),t,y)}));exports.Clone=u;
|
package/core/Clone.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MeshProps } from '@react-three/fiber';
|
|
3
|
+
export declare const Clone: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").GroupProps, "children"> & {
|
|
4
|
+
object: THREE.Object3D | THREE.Object3D[];
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
deep?: boolean | "materialsOnly" | "geometriesOnly" | undefined;
|
|
7
|
+
keys?: string[] | undefined;
|
|
8
|
+
inject?: React.ReactNode | MeshProps | ((object: THREE.Object3D) => React.ReactNode);
|
|
9
|
+
castShadow?: boolean | undefined;
|
|
10
|
+
receiveShadow?: boolean | undefined;
|
|
11
|
+
}, "object" | "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "keys" | "deep" | "inject"> & React.RefAttributes<import("three").Group>>;
|
package/core/Clone.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import pick from 'lodash.pick';
|
|
4
|
+
|
|
5
|
+
function createSpread(child, {
|
|
6
|
+
keys = ['near', 'far', 'color', 'distance', 'decay', 'penumbra', 'angle', 'intensity', 'skeleton', 'visible', 'castShadow', 'receiveShadow', 'morphTargetDictionary', 'morphTargetInfluences', 'name', 'geometry', 'material', 'position', 'rotation', 'scale', 'up', 'userData'],
|
|
7
|
+
deep,
|
|
8
|
+
inject,
|
|
9
|
+
castShadow,
|
|
10
|
+
receiveShadow
|
|
11
|
+
}) {
|
|
12
|
+
let spread = pick(child, keys);
|
|
13
|
+
|
|
14
|
+
if (deep) {
|
|
15
|
+
if (spread.geometry && deep !== 'materialsOnly') spread.geometry = spread.geometry.clone();
|
|
16
|
+
if (spread.material && deep !== 'geometriesOnly') spread.material = spread.material.clone();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (inject) {
|
|
20
|
+
if (typeof inject === 'function') spread = { ...spread,
|
|
21
|
+
children: inject(child)
|
|
22
|
+
};else if ( /*#__PURE__*/React.isValidElement(inject)) spread = { ...spread,
|
|
23
|
+
children: inject
|
|
24
|
+
};else spread = { ...spread,
|
|
25
|
+
...inject
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (child.type === 'Mesh') {
|
|
30
|
+
if (castShadow) spread.castShadow = true;
|
|
31
|
+
if (receiveShadow) spread.receiveShadow = true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return spread;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const Clone = /*#__PURE__*/React.forwardRef(({
|
|
38
|
+
object,
|
|
39
|
+
children,
|
|
40
|
+
deep,
|
|
41
|
+
castShadow,
|
|
42
|
+
receiveShadow,
|
|
43
|
+
inject,
|
|
44
|
+
keys,
|
|
45
|
+
...props
|
|
46
|
+
}, forwardRef) => {
|
|
47
|
+
const config = {
|
|
48
|
+
keys,
|
|
49
|
+
deep,
|
|
50
|
+
inject,
|
|
51
|
+
castShadow,
|
|
52
|
+
receiveShadow
|
|
53
|
+
}; // Deal with arrayed clones
|
|
54
|
+
|
|
55
|
+
if (Array.isArray(object)) {
|
|
56
|
+
return /*#__PURE__*/React.createElement("group", _extends({}, props, {
|
|
57
|
+
ref: forwardRef
|
|
58
|
+
}), object.map(o => /*#__PURE__*/React.createElement(Clone, _extends({
|
|
59
|
+
key: o.uuid,
|
|
60
|
+
object: o
|
|
61
|
+
}, config))), children);
|
|
62
|
+
} // Singleton clones
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
const {
|
|
66
|
+
children: injectChildren,
|
|
67
|
+
...spread
|
|
68
|
+
} = createSpread(object, config);
|
|
69
|
+
const Element = object.type[0].toLowerCase() + object.type.slice(1);
|
|
70
|
+
return /*#__PURE__*/React.createElement(Element, _extends({}, spread, props, {
|
|
71
|
+
ref: forwardRef
|
|
72
|
+
}), (object == null ? void 0 : object.children).map(child => {
|
|
73
|
+
let spread = {};
|
|
74
|
+
let Element = child.type[0].toLowerCase() + child.type.slice(1);
|
|
75
|
+
|
|
76
|
+
if (Element === 'group' || Element === 'object3D') {
|
|
77
|
+
Element = Clone;
|
|
78
|
+
spread = {
|
|
79
|
+
object: child,
|
|
80
|
+
...config
|
|
81
|
+
};
|
|
82
|
+
} else {
|
|
83
|
+
spread = createSpread(child, config);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return /*#__PURE__*/React.createElement(Element, _extends({
|
|
87
|
+
key: child.uuid
|
|
88
|
+
}, spread));
|
|
89
|
+
}), children, injectChildren);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
export { Clone };
|
package/core/Cloud.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("./Billboard.cjs.js"),a=require("./shapes.cjs.js"),n=require("./useTexture.cjs.js");function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/extends"),require("react-merge-refs"),require("three");var c=s(e);exports.Cloud=function({opacity:e=.5,speed:s=.4,width:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("./Billboard.cjs.js"),a=require("./shapes.cjs.js"),n=require("./useTexture.cjs.js");function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/extends"),require("react-merge-refs"),require("three");var c=s(e);exports.Cloud=function({opacity:e=.5,speed:s=.4,width:o=10,depth:i=1.5,segments:u=20,texture:l="https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png",color:d="#ffffff",depthTest:f=!0,...h}){const p=c.useRef(),m=n.useTexture(l),b=c.useMemo((()=>[...new Array(u)].map(((e,r)=>({x:o/2-Math.random()*o,y:o/2-Math.random()*o,scale:.4+Math.sin((r+1)/u*Math.PI)*(10*(.2+Math.random())),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*s})))),[o,u,s]);return r.useFrame((e=>{var r;return null==(r=p.current)?void 0:r.children.forEach(((r,t)=>{r.children[0].rotation.z+=b[t].rotation,r.children[0].scale.setScalar(b[t].scale+(1+Math.sin(e.clock.getElapsedTime()/10))/2*t/10)}))})),c.createElement("group",h,c.createElement("group",{position:[0,0,u/2*i],ref:p},b.map((({x:r,y:n,scale:s,density:o},u)=>c.createElement(t.Billboard,{key:u,position:[r,n,-u*i]},c.createElement(a.Plane,{scale:s,rotation:[0,0,0]},c.createElement("meshStandardMaterial",{map:m,transparent:!0,opacity:s/6*o*e,depthTest:f,color:d})))))))};
|
package/core/Cloud.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export declare function Cloud({ opacity, speed, width, depth, segments, texture, ...props }: {
|
|
2
|
+
export declare function Cloud({ opacity, speed, width, depth, segments, texture, color, depthTest, ...props }: {
|
|
3
3
|
[x: string]: any;
|
|
4
4
|
opacity?: number | undefined;
|
|
5
5
|
speed?: number | undefined;
|
|
@@ -7,4 +7,6 @@ export declare function Cloud({ opacity, speed, width, depth, segments, texture,
|
|
|
7
7
|
depth?: number | undefined;
|
|
8
8
|
segments?: number | undefined;
|
|
9
9
|
texture?: string | undefined;
|
|
10
|
+
color?: string | undefined;
|
|
11
|
+
depthTest?: boolean | undefined;
|
|
10
12
|
}): JSX.Element;
|
package/core/Cloud.js
CHANGED
|
@@ -12,6 +12,8 @@ function Cloud({
|
|
|
12
12
|
depth = 1.5,
|
|
13
13
|
segments = 20,
|
|
14
14
|
texture = CLOUD_URL,
|
|
15
|
+
color = "#ffffff",
|
|
16
|
+
depthTest = true,
|
|
15
17
|
...props
|
|
16
18
|
}) {
|
|
17
19
|
const group = React.useRef();
|
|
@@ -49,7 +51,8 @@ function Cloud({
|
|
|
49
51
|
map: cloudTexture,
|
|
50
52
|
transparent: true,
|
|
51
53
|
opacity: scale / 6 * density * opacity,
|
|
52
|
-
depthTest:
|
|
54
|
+
depthTest: depthTest,
|
|
55
|
+
color: color
|
|
53
56
|
}))))));
|
|
54
57
|
}
|
|
55
58
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var u=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,u.get?u:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=u(e),a=n(t);exports.ComputedAttribute=({compute:e,name:t,...u})=>{const[n]=a.useState((()=>new r.BufferAttribute(new Float32Array(0),1))),f=a.useRef(null);return a.useLayoutEffect((()=>{if(f.current){var t;const r=null!==(t=f.current.parent)&&void 0!==t?t:f.current.__r3f.parent,u=e(r);f.current.copy(u)}}),[e]),a.createElement("primitive",c.default({ref:f,object:n,attach:`attributes-${t}`},u))};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BufferAttributeProps } from '@react-three/fiber';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { BufferAttribute, BufferGeometry } from 'three';
|
|
4
|
+
declare type Props = {
|
|
5
|
+
compute: (geometry: BufferGeometry) => BufferAttribute;
|
|
6
|
+
name: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const ComputedAttribute: ({ compute, name, ...props }: React.PropsWithChildren<Props & BufferAttributeProps>) => JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { BufferAttribute } from 'three';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Used exclusively as a child of a BufferGeometry.
|
|
7
|
+
* Computes the BufferAttribute by calling the `compute` function
|
|
8
|
+
* and attaches the attribute to the geometry.
|
|
9
|
+
*/
|
|
10
|
+
const ComputedAttribute = ({
|
|
11
|
+
compute,
|
|
12
|
+
name,
|
|
13
|
+
...props
|
|
14
|
+
}) => {
|
|
15
|
+
const [bufferAttribute] = React.useState(() => new BufferAttribute(new Float32Array(0), 1));
|
|
16
|
+
const primitive = React.useRef(null);
|
|
17
|
+
React.useLayoutEffect(() => {
|
|
18
|
+
if (primitive.current) {
|
|
19
|
+
var _ref;
|
|
20
|
+
|
|
21
|
+
// @ts-expect-error brittle
|
|
22
|
+
const parent = (_ref = primitive.current.parent) !== null && _ref !== void 0 ? _ref : primitive.current.__r3f.parent;
|
|
23
|
+
const attr = compute(parent);
|
|
24
|
+
primitive.current.copy(attr);
|
|
25
|
+
}
|
|
26
|
+
}, [compute]);
|
|
27
|
+
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
28
|
+
ref: primitive,
|
|
29
|
+
object: bufferAttribute,
|
|
30
|
+
attach: `attributes-${name}`
|
|
31
|
+
}, props));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { ComputedAttribute };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),n=require("three-stdlib");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var i=o(e),l=u(r),s=u(t);const c=l.forwardRef((({scale:e,frames:r=1/0,opacity:t=1,width:o=1,height:u=1,blur:c=1,far:d=10,resolution:f=256,smooth:h=!0,color:m="#000000",...p},g)=>{const v=a.useThree((({scene:e})=>e)),b=a.useThree((({gl:e})=>e)),M=l.useRef(null);o*=Array.isArray(e)?e[0]:e||1,u*=Array.isArray(e)?e[1]:e||1;const[y,w,T,S,x,R,j]=l.useMemo((()=>{const e=new s.WebGLRenderTarget(f,f),r=new s.WebGLRenderTarget(f,f);r.texture.generateMipmaps=e.texture.generateMipmaps=!1;const t=new s.PlaneBufferGeometry(o,u).rotateX(Math.PI/2),a=new s.Mesh(t),i=new s.MeshDepthMaterial;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new s.Color(m).convertSRGBToLinear()}},e.fragmentShader=e.fragmentShader.replace("void main() {","uniform vec3 ucolor;\n void main() {\n "),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );")};const l=new s.ShaderMaterial(n.HorizontalBlurShader),c=new s.ShaderMaterial(n.VerticalBlurShader);return c.depthTest=l.depthTest=!1,[e,t,i,a,l,c,r]}),[f,o,u,e]),C=l.useCallback((e=>{S.visible=!0,S.material=x,x.uniforms.tDiffuse.value=y.texture,x.uniforms.h.value=1*e/256,b.setRenderTarget(j),b.render(S,M.current),S.material=R,R.uniforms.tDiffuse.value=j.texture,R.uniforms.v.value=1*e/256,b.setRenderTarget(y),b.render(S,M.current),S.visible=!1}),[]);let O=0;return a.useFrame((()=>{if(M.current&&(r===1/0||O<r)){const e=v.background;v.background=null;const r=v.overrideMaterial;v.overrideMaterial=T,b.setRenderTarget(y),b.render(v,M.current),v.overrideMaterial=r,C(c),h&&C(.4*c),b.setRenderTarget(null),v.background=e,O++}})),l.createElement("group",i.default({"rotation-x":Math.PI/2},p,{ref:g}),l.createElement("mesh",{geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},l.createElement("meshBasicMaterial",{map:y.texture,transparent:!0,opacity:t})),l.createElement("orthographicCamera",{ref:M,args:[-o/2,o/2,u/2,-u/2,0,d]}))}));exports.ContactShadows=c;
|
package/core/ContactShadows.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import * as THREE from 'three';
|
|
2
3
|
export declare const ContactShadows: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").GroupProps, "scale"> & {
|
|
3
4
|
opacity?: number | undefined;
|
|
4
5
|
width?: number | undefined;
|
|
@@ -9,4 +10,5 @@ export declare const ContactShadows: React.ForwardRefExoticComponent<Pick<Omit<i
|
|
|
9
10
|
resolution?: number | undefined;
|
|
10
11
|
frames?: number | undefined;
|
|
11
12
|
scale?: number | [x: number, y: number] | undefined;
|
|
12
|
-
|
|
13
|
+
color?: THREE.ColorRepresentation | undefined;
|
|
14
|
+
}, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "smooth" | "blur" | "height" | "opacity" | "width" | "resolution" | "far" | "frames"> & React.RefAttributes<unknown>>;
|
package/core/ContactShadows.js
CHANGED
|
@@ -14,6 +14,7 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
|
|
|
14
14
|
far = 10,
|
|
15
15
|
resolution = 256,
|
|
16
16
|
smooth = true,
|
|
17
|
+
color = '#000000',
|
|
17
18
|
...props
|
|
18
19
|
}, ref) => {
|
|
19
20
|
const scene = useThree(({
|
|
@@ -34,7 +35,18 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
|
|
|
34
35
|
const depthMaterial = new THREE.MeshDepthMaterial();
|
|
35
36
|
depthMaterial.depthTest = depthMaterial.depthWrite = false;
|
|
36
37
|
|
|
37
|
-
depthMaterial.onBeforeCompile = shader =>
|
|
38
|
+
depthMaterial.onBeforeCompile = shader => {
|
|
39
|
+
shader.uniforms = { ...shader.uniforms,
|
|
40
|
+
ucolor: {
|
|
41
|
+
value: new THREE.Color(color).convertSRGBToLinear()
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
shader.fragmentShader = shader.fragmentShader.replace(`void main() {`, //
|
|
45
|
+
`uniform vec3 ucolor;
|
|
46
|
+
void main() {
|
|
47
|
+
`);
|
|
48
|
+
shader.fragmentShader = shader.fragmentShader.replace('vec4( vec3( 1.0 - fragCoordZ ), opacity );', 'vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );');
|
|
49
|
+
};
|
|
38
50
|
|
|
39
51
|
const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);
|
|
40
52
|
const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);
|
|
@@ -60,10 +72,11 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
|
|
|
60
72
|
if (shadowCamera.current && (frames === Infinity || count < frames)) {
|
|
61
73
|
const initialBackground = scene.background;
|
|
62
74
|
scene.background = null;
|
|
75
|
+
const initialOverrideMaterial = scene.overrideMaterial;
|
|
63
76
|
scene.overrideMaterial = depthMaterial;
|
|
64
77
|
gl.setRenderTarget(renderTarget);
|
|
65
78
|
gl.render(scene, shadowCamera.current);
|
|
66
|
-
scene.overrideMaterial =
|
|
79
|
+
scene.overrideMaterial = initialOverrideMaterial;
|
|
67
80
|
blurShadows(blur);
|
|
68
81
|
if (smooth) blurShadows(blur * 0.4);
|
|
69
82
|
gl.setRenderTarget(null);
|
package/core/CubeCamera.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=u(r);exports.CubeCamera=function({children:r,fog:u,frames:a=1/0,resolution:c=256,near:o=1,far:s=1e3,...f}){const i=n.useRef(),[l,b]=n.useState(null),g=t.useThree((({scene:e})=>e)),p=t.useThree((({gl:e})=>e)),d=n.useMemo((()=>{const r=new e.WebGLCubeRenderTarget(c);return r.texture.type=e.HalfFloatType,r}),[c]);let m=0;return t.useFrame((()=>{if(l&&i.current&&(a===1/0||m<a)){i.current.traverse((e=>e.visible=!1));const e=g.fog;g.fog=u||e,l.update(p,g),g.fog=e,i.current.traverse((e=>e.visible=!0)),m++}})),n.createElement("group",f,n.createElement("cubeCamera",{ref:b,args:[o,s,d]}),n.createElement("group",{ref:i},r(d.texture)))};
|
package/core/CubeCamera.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WebGLCubeRenderTarget,
|
|
1
|
+
import { WebGLCubeRenderTarget, HalfFloatType } from 'three';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useThree, useFrame } from '@react-three/fiber';
|
|
4
4
|
|
|
@@ -19,11 +19,11 @@ function CubeCamera({
|
|
|
19
19
|
const gl = useThree(({
|
|
20
20
|
gl
|
|
21
21
|
}) => gl);
|
|
22
|
-
const fbo = React.useMemo(() =>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
22
|
+
const fbo = React.useMemo(() => {
|
|
23
|
+
const fbo = new WebGLCubeRenderTarget(resolution);
|
|
24
|
+
fbo.texture.type = HalfFloatType;
|
|
25
|
+
return fbo;
|
|
26
|
+
}, [resolution]);
|
|
27
27
|
let count = 0;
|
|
28
28
|
useFrame(() => {
|
|
29
29
|
if (camera && ref.current && (frames === Infinity || count < frames)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=u(e),a=i(r);const l=a.forwardRef(((e,r)=>{const{camera:u,onChange:i,...l}=e,c=t.useThree((
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=u(e),a=i(r);const l=a.forwardRef(((e,r)=>{const{camera:u,onChange:i,...l}=e,c=t.useThree((e=>e.camera)),s=t.useThree((e=>e.invalidate)),d=u||c,[f]=a.useState((()=>new n.DeviceOrientationControls(d)));return a.useEffect((()=>{const e=e=>{s(),i&&i(e)};return null==f||null==f.addEventListener||f.addEventListener("change",e),()=>null==f||null==f.removeEventListener?void 0:f.removeEventListener("change",e)}),[i,f,s]),t.useFrame((()=>null==f?void 0:f.update())),a.useEffect((()=>{const e=f;return null==e||e.connect(),()=>null==e?void 0:e.dispose()}),[f]),f?a.createElement("primitive",o.default({ref:r,dispose:void 0,object:f},l)):null}));exports.DeviceOrientationControls=l;
|
|
@@ -6,4 +6,4 @@ export declare type DeviceOrientationControlsProps = ReactThreeFiber.Object3DNod
|
|
|
6
6
|
camera?: THREE.Camera;
|
|
7
7
|
onChange?: (e?: THREE.Event) => void;
|
|
8
8
|
};
|
|
9
|
-
export declare const DeviceOrientationControls: React.ForwardRefExoticComponent<Pick<DeviceOrientationControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "enabled" | "
|
|
9
|
+
export declare const DeviceOrientationControls: React.ForwardRefExoticComponent<Pick<DeviceOrientationControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "enabled" | "connect" | "disconnect" | "update" | "deviceOrientation" | "screenOrientation" | "alphaOffset"> & React.RefAttributes<DeviceOrientationControlsImp>>;
|
|
@@ -9,12 +9,8 @@ const DeviceOrientationControls = /*#__PURE__*/React.forwardRef((props, ref) =>
|
|
|
9
9
|
onChange,
|
|
10
10
|
...rest
|
|
11
11
|
} = props;
|
|
12
|
-
const defaultCamera = useThree(
|
|
13
|
-
|
|
14
|
-
}) => camera);
|
|
15
|
-
const invalidate = useThree(({
|
|
16
|
-
invalidate
|
|
17
|
-
}) => invalidate);
|
|
12
|
+
const defaultCamera = useThree(state => state.camera);
|
|
13
|
+
const invalidate = useThree(state => state.invalidate);
|
|
18
14
|
const explCamera = camera || defaultCamera;
|
|
19
15
|
const [controls] = React.useState(() => new DeviceOrientationControls$1(explCamera));
|
|
20
16
|
React.useEffect(() => {
|
package/core/Effects.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),s=require("three-stdlib"),n=require("react-merge-refs");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var i=u(e),o=c(r),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),s=require("three-stdlib"),n=require("react-merge-refs");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var i=u(e),o=c(r),d=u(n);a.extend({EffectComposer:s.EffectComposer,RenderPass:s.RenderPass,ShaderPass:s.ShaderPass});const l=()=>{try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}},f=o.forwardRef((({children:e,multisamping:r=8,renderIndex:n=1,disableGamma:u=!1,disableRenderPass:c=!1,...f},h)=>{const m=o.useRef(),b=a.useThree((({scene:e})=>e)),g=a.useThree((({camera:e})=>e)),p=a.useThree((({gl:e})=>e)),P=a.useThree((({size:e})=>e)),[v]=o.useState((()=>{if(l()&&r>0){const e=new t.WebGLRenderTarget(P.width,P.height,{format:t.RGBAFormat,encoding:t.sRGBEncoding});return e.samples=8,e}}));return o.useEffect((()=>{var e,r;null==(e=m.current)||e.setSize(P.width,P.height),null==(r=m.current)||r.setPixelRatio(p.getPixelRatio())}),[p,P]),a.useFrame((()=>{var e;return null==(e=m.current)?void 0:e.render()}),n),o.createElement("effectComposer",i.default({ref:d.default([h,m]),args:[p,v]},f),!c&&o.createElement("renderPass",{attach:"passes",args:[b,g]}),!u&&o.createElement("shaderPass",{attach:"passes",args:[s.GammaCorrectionShader]}),e)}));exports.Effects=f,exports.isWebGL2Available=l;
|
package/core/Effects.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { WebGLRenderTarget } from 'three';
|
|
2
3
|
import { ReactThreeFiber } from '@react-three/fiber';
|
|
3
4
|
import { EffectComposer, RenderPass, ShaderPass } from 'three-stdlib';
|
|
4
5
|
declare global {
|
|
@@ -11,9 +12,9 @@ declare global {
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
export declare const isWebGL2Available: () => boolean;
|
|
14
|
-
export declare const Effects: React.ForwardRefExoticComponent<Pick<ReactThreeFiber.ExtendedColors<ReactThreeFiber.Overwrite<Partial<EffectComposer<
|
|
15
|
+
export declare const Effects: React.ForwardRefExoticComponent<Pick<ReactThreeFiber.ExtendedColors<ReactThreeFiber.Overwrite<Partial<EffectComposer<WebGLRenderTarget>>, ReactThreeFiber.NodeProps<EffectComposer<WebGLRenderTarget>, typeof EffectComposer>>> & {
|
|
15
16
|
multisamping?: number | undefined;
|
|
16
17
|
renderIndex?: number | undefined;
|
|
17
18
|
disableGamma?: boolean | undefined;
|
|
18
19
|
disableRenderPass?: boolean | undefined;
|
|
19
|
-
}, "attach" | "args" | "children" | "key" | "onUpdate" | keyof EffectComposer<
|
|
20
|
+
}, "attach" | "args" | "children" | "key" | "onUpdate" | keyof EffectComposer<WebGLRenderTarget> | "multisamping" | "renderIndex" | "disableGamma" | "disableRenderPass"> & React.RefAttributes<unknown>>;
|
package/core/Effects.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { WebGLRenderTarget, RGBAFormat, sRGBEncoding } from 'three';
|
|
4
4
|
import { extend, useThree, useFrame } from '@react-three/fiber';
|
|
5
5
|
import { EffectComposer, RenderPass, ShaderPass, GammaCorrectionShader } from 'three-stdlib';
|
|
6
6
|
import mergeRefs from 'react-merge-refs';
|
|
@@ -41,7 +41,7 @@ const Effects = /*#__PURE__*/React.forwardRef(({
|
|
|
41
41
|
}) => size);
|
|
42
42
|
const [target] = React.useState(() => {
|
|
43
43
|
if (isWebGL2Available() && multisamping > 0) {
|
|
44
|
-
const t = new
|
|
44
|
+
const t = new WebGLRenderTarget(size.width, size.height, {
|
|
45
45
|
format: RGBAFormat,
|
|
46
46
|
encoding: sRGBEncoding
|
|
47
47
|
});
|
package/core/Environment.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("@react-three/fiber"),r=require("three"),t=require("three-stdlib"),u=require("../helpers/environment-assets.cjs.js");function a(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var o=a(e);const s=e=>{return(n=e).current&&n.current.isScene?e.current:e;var n};function c({scene:e,background:r=!1,map:t}){const u=n.useThree((e=>e.scene));return o.useLayoutEffect((()=>{if(t){const n=s(e||u),a=n.background,o=n.environment;return"only"!==r&&(n.environment=t),r&&(n.background=t),()=>{"only"!==r&&(n.environment=o),r&&(n.background=a)}}}),[e,t]),null}function i({children:e,near:t=1,far:u=1e3,resolution:a=256,frames:i=1,background:l=!1,scene:p,files:f,path:m,preset:b,extensions:g}){const d=n.useThree((e=>e.gl)),y=n.useThree((e=>e.scene)),v=o.useRef(null),[h]=o.useState((()=>new r.Scene)),E=o.useMemo((()=>{const e=new r.WebGLCubeRenderTarget(a);return e.texture.type=r.HalfFloatType,e}),[a]);o.useLayoutEffect((()=>{1===i&&v.current.update(d,h);const e=s(p||y),n=e.background,r=e.environment;return"only"!==l&&(e.environment=E.texture),l&&(e.background=E.texture),()=>{"only"!==l&&(e.environment=r),l&&(e.background=n)}}),[e,p]);let k=1;return n.useFrame((()=>{(i===1/0||k<i)&&(v.current.update(d,h),k++)})),o.createElement(o.Fragment,null,n.createPortal(o.createElement(o.Fragment,null,e,o.createElement("cubeCamera",{ref:v,args:[t,u,E]}),(f||b)&&o.createElement(c,{background:!0,files:f,preset:b,path:m,extensions:g,scene:h})),h))}function l({background:e=!1,files:a=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:c="",preset:i,scene:l,extensions:p}){if(i){if(!(i in u.presetsObj))throw new Error("Preset must be one of: "+Object.keys(u.presetsObj).join(", "));a=u.presetsObj[i],c="https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/"}const f=n.useThree((e=>e.scene)),m=Array.isArray(a),b=m?r.CubeTextureLoader:t.RGBELoader,g=n.useLoader(b,m?[a]:a,(e=>{e.setPath(c),null==e.setDataType||e.setDataType(r.FloatType),p&&p(e)})),d=m?g[0]:g;return d.mapping=m?r.CubeReflectionMapping:r.EquirectangularReflectionMapping,o.useLayoutEffect((()=>{const n=s(l||f),r=n.background,t=n.environment;return"only"!==e&&(n.environment=d),e&&(n.background=d),()=>{"only"!==e&&(n.environment=t),e&&(n.background=r)}}),[d,e,l]),null}exports.Environment=function(e){return e.map?o.createElement(c,e):e.children?o.createElement(i,e):o.createElement(l,e)},exports.EnvironmentCube=l,exports.EnvironmentMap=c,exports.EnvironmentPortal=i;
|
package/core/Environment.d.ts
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { Scene, Loader } from 'three';
|
|
2
3
|
import { PresetsType } from '../helpers/environment-assets';
|
|
3
4
|
declare type Props = {
|
|
4
|
-
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
frames?: number;
|
|
7
|
+
near?: number;
|
|
8
|
+
far?: number;
|
|
9
|
+
resolution?: number;
|
|
10
|
+
background?: boolean | 'only';
|
|
11
|
+
map?: THREE.Texture;
|
|
5
12
|
files?: string | string[];
|
|
6
13
|
path?: string;
|
|
7
14
|
preset?: PresetsType;
|
|
8
|
-
scene?: Scene
|
|
15
|
+
scene?: Scene | React.MutableRefObject<THREE.Scene>;
|
|
9
16
|
extensions?: (loader: Loader) => void;
|
|
10
17
|
};
|
|
11
|
-
export declare function Environment(
|
|
18
|
+
export declare function Environment(props: Props): JSX.Element;
|
|
19
|
+
export declare function EnvironmentMap({ scene, background, map }: Props): null;
|
|
20
|
+
export declare function EnvironmentPortal({ children, near, far, resolution, frames, background, scene, files, path, preset, extensions, }: Props): JSX.Element;
|
|
21
|
+
export declare function EnvironmentCube({ background, files, path, preset, scene, extensions, }: Props): null;
|
|
12
22
|
export {};
|