@react-three/drei 9.96.4 → 9.97.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 +82 -9
- package/core/AccumulativeShadows.cjs.js +1 -1
- package/core/AdaptiveDpr.cjs.js +1 -1
- package/core/AdaptiveEvents.cjs.js +1 -1
- package/core/ArcballControls.cjs.js +1 -1
- package/core/AsciiRenderer.cjs.js +1 -1
- package/core/BBAnchor.cjs.js +1 -1
- package/core/Backdrop.cjs.js +1 -1
- package/core/BakeShadows.cjs.js +1 -1
- package/core/Billboard.cjs.js +1 -1
- package/core/Bounds.cjs.js +1 -1
- package/core/CameraControls.cjs.js +1 -1
- package/core/CameraControls.d.ts +2 -2
- package/core/CameraShake.cjs.js +1 -1
- package/core/CatmullRomLine.cjs.js +1 -1
- package/core/Caustics.cjs.js +1 -1
- package/core/Center.cjs.js +1 -1
- package/core/Clone.cjs.js +1 -1
- package/core/Cloud.cjs.js +1 -1
- package/core/ComputedAttribute.cjs.js +1 -1
- package/core/ContactShadows.cjs.js +1 -1
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubicBezierLine.cjs.js +1 -1
- package/core/CurveModifier.cjs.js +1 -1
- package/core/Decal.cjs.js +1 -1
- package/core/Detailed.cjs.js +1 -1
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/Edges.cjs.js +1 -1
- package/core/Effects.cjs.js +1 -1
- package/core/Environment.cjs.js +1 -1
- package/core/Example.cjs.js +1 -1
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/Fisheye.cjs.js +1 -1
- package/core/Float.cjs.js +1 -1
- package/core/FlyControls.cjs.js +1 -1
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewport.cjs.js +1 -1
- package/core/Gltf.cjs.js +1 -1
- package/core/GradientTexture.cjs.js +1 -1
- package/core/Grid.cjs.js +1 -1
- package/core/Hud.cjs.js +1 -1
- package/core/Image.cjs.js +1 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Lightformer.cjs.js +1 -1
- package/core/Line.cjs.js +1 -1
- package/core/MapControls.cjs.js +1 -1
- package/core/MarchingCubes.cjs.js +1 -1
- package/core/Mask.cjs.js +1 -1
- package/core/MeshDiscardMaterial.cjs.js +1 -1
- package/core/MeshDistortMaterial.cjs.js +1 -1
- package/core/MeshPortalMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshRefractionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.d.ts +2 -2
- package/core/MeshWobbleMaterial.cjs.js +1 -1
- package/core/MotionPathControls.cjs.js +1 -1
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrthographicCamera.cjs.js +1 -1
- package/core/Outlines.cjs.js +1 -1
- package/core/PerformanceMonitor.cjs.js +1 -1
- package/core/PerspectiveCamera.cjs.js +1 -1
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/Points.cjs.js +1 -1
- package/core/PositionalAudio.cjs.js +1 -1
- package/core/Preload.cjs.js +1 -1
- package/core/QuadraticBezierLine.cjs.js +1 -1
- package/core/Reflector.cjs.js +1 -1
- package/core/RenderCubeTexture.cjs.js +1 -1
- package/core/RenderTexture.cjs.js +1 -1
- package/core/Resize.cjs.js +1 -1
- package/core/RoundedBox.cjs.js +1 -1
- package/core/Sampler.cjs.js +1 -1
- package/core/ScreenQuad.cjs.js +1 -1
- package/core/ScreenSizer.cjs.js +1 -0
- package/core/ScreenSizer.d.ts +7 -0
- package/core/ScreenSizer.js +39 -0
- package/core/ScreenSpace.cjs.js +1 -1
- package/core/Segments.cjs.js +1 -1
- package/core/Shadow.cjs.js +1 -1
- package/core/ShadowAlpha.cjs.js +1 -1
- package/core/ShadowAlpha.js +0 -1
- package/core/Sky.cjs.js +1 -1
- package/core/Sparkles.cjs.js +1 -1
- package/core/Splat.cjs.js +1 -1
- package/core/SpotLight.cjs.js +1 -1
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +2 -1
- package/core/SpriteAnimator.js +34 -123
- package/core/Stage.cjs.js +1 -1
- package/core/Stars.cjs.js +1 -1
- package/core/Stats.cjs.js +1 -1
- package/core/StatsGl.cjs.js +1 -1
- package/core/Svg.cjs.js +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text3D.cjs.js +1 -1
- package/core/TrackballControls.cjs.js +1 -1
- package/core/Trail.cjs.js +1 -1
- package/core/TransformControls.cjs.js +1 -1
- package/core/Wireframe.cjs.js +1 -1
- package/core/calculateScaleFactor.cjs.js +1 -0
- package/core/calculateScaleFactor.d.ts +3 -0
- package/core/calculateScaleFactor.js +31 -0
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +3 -0
- package/core/index.js +153 -0
- package/core/meshBounds.cjs.js +1 -1
- package/core/shaderMaterial.cjs.js +1 -1
- package/core/shapes.cjs.js +1 -1
- package/core/softShadows.cjs.js +1 -1
- package/core/softShadows.js +0 -1
- package/core/useAnimations.cjs.js +1 -1
- package/core/useAspect.cjs.js +1 -1
- package/core/useBVH.cjs.js +1 -1
- package/core/useBoxProjectedEnv.cjs.js +1 -1
- package/core/useCamera.cjs.js +1 -1
- package/core/useContextBridge.cjs.js +1 -1
- package/core/useCubeCamera.cjs.js +1 -1
- package/core/useCubeTexture.cjs.js +1 -1
- package/core/useDepthBuffer.cjs.js +1 -1
- package/core/useDetectGPU.cjs.js +1 -1
- package/core/useEnvironment.cjs.js +1 -1
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBX.cjs.js +1 -1
- package/core/useFont.cjs.js +1 -1
- package/core/useGLTF.cjs.js +1 -1
- package/core/useHelper.cjs.js +1 -1
- package/core/useIntersect.cjs.js +1 -1
- package/core/useKTX2.cjs.js +1 -1
- package/core/useMatcapTexture.cjs.js +1 -1
- package/core/useNormalTexture.cjs.js +1 -1
- package/core/useProgress.cjs.js +1 -1
- package/core/useSpriteLoader.cjs.js +1 -0
- package/core/useSpriteLoader.d.ts +9 -0
- package/core/useSpriteLoader.js +215 -0
- package/core/useTexture.cjs.js +1 -1
- package/core/useTrailTexture.cjs.js +1 -1
- package/core/useVideoTexture.cjs.js +1 -1
- package/helpers/constants.cjs.js +1 -1
- package/helpers/deprecated.cjs.js +1 -1
- package/helpers/environment-assets.cjs.js +1 -1
- package/helpers/glsl/DefaultSpotlightShadowShadows.glsl.js +3 -1
- package/helpers/glsl/distort.vert.glsl.js +3 -1
- package/helpers/ts-utils.js +1 -0
- package/helpers/useEffectfulState.cjs.js +1 -1
- package/index.cjs.js +1 -1
- package/index.js +4 -2
- package/materials/BlurPass.cjs.js +1 -1
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/DiscardMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshRefractionMaterial.cjs.js +1 -1
- package/materials/MeshRefractionMaterial.js +0 -2
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/WireframeMaterial.cjs.js +1 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +153 -0
- package/package.json +1 -1
- package/react-three-drei-0.0.0-semantic-release.tgz +0 -0
- package/web/CycleRaycast.cjs.js +1 -1
- package/web/FaceControls.cjs.js +1 -1
- package/web/FaceLandmarker.cjs.js +1 -1
- package/web/Facemesh.cjs.js +1 -1
- package/web/Html.cjs.js +1 -1
- package/web/KeyboardControls.cjs.js +1 -1
- package/web/Loader.cjs.js +1 -1
- package/web/PresentationControls.cjs.js +1 -1
- package/web/ScrollControls.cjs.js +1 -1
- package/web/Select.cjs.js +1 -1
- package/web/View.cjs.js +1 -2
- package/web/View.js +0 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +176 -0
- package/web/pivotControls/AxisArrow.cjs.js +1 -1
- package/web/pivotControls/AxisRotator.cjs.js +1 -1
- package/web/pivotControls/PlaneSlider.cjs.js +1 -1
- package/web/pivotControls/context.cjs.js +1 -1
- package/web/pivotControls/index.cjs.js +1 -1
- package/web/pivotControls/index.d.ts +2 -4
- package/web/pivotControls/index.js +5 -31
- package/web/useCursor.cjs.js +1 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { TextureLoader } from 'three';
|
|
3
|
+
import { useThree, useLoader } from '@react-three/fiber';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { useState, useEffect } from 'react';
|
|
6
|
+
|
|
7
|
+
// utils
|
|
8
|
+
const getFirstItem = param => {
|
|
9
|
+
if (Array.isArray(param)) {
|
|
10
|
+
return param[0];
|
|
11
|
+
} else if (typeof param === 'object' && param !== null) {
|
|
12
|
+
const keys = Object.keys(param);
|
|
13
|
+
return param[keys[0]][0];
|
|
14
|
+
} else {
|
|
15
|
+
return {
|
|
16
|
+
w: 0,
|
|
17
|
+
h: 0
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const calculateAspectRatio = (width, height, factor, v) => {
|
|
22
|
+
const adaptedHeight = height * (v.aspect > width / height ? v.width / width : v.height / height);
|
|
23
|
+
const adaptedWidth = width * (v.aspect > width / height ? v.width / width : v.height / height);
|
|
24
|
+
const scaleX = adaptedWidth * factor;
|
|
25
|
+
const scaleY = adaptedHeight * factor;
|
|
26
|
+
const currentMaxScale = 1;
|
|
27
|
+
// Calculate the maximum scale based on the aspect ratio and max scale limit
|
|
28
|
+
let finalMaxScaleW = Math.min(currentMaxScale, scaleX);
|
|
29
|
+
let finalMaxScaleH = Math.min(currentMaxScale, scaleY);
|
|
30
|
+
|
|
31
|
+
// Ensure that scaleX and scaleY do not exceed the max scale while maintaining aspect ratio
|
|
32
|
+
if (scaleX > currentMaxScale) {
|
|
33
|
+
finalMaxScaleW = currentMaxScale;
|
|
34
|
+
finalMaxScaleH = scaleY / scaleX * currentMaxScale;
|
|
35
|
+
}
|
|
36
|
+
return new THREE.Vector3(finalMaxScaleW, finalMaxScaleH, 1);
|
|
37
|
+
};
|
|
38
|
+
function useSpriteLoader(input, json, animationNames, numberOfFrames, onLoad) {
|
|
39
|
+
const v = useThree(state => state.viewport);
|
|
40
|
+
const gl = useThree(state => state.gl);
|
|
41
|
+
const spriteDataRef = React.useRef(null);
|
|
42
|
+
const totalFrames = React.useRef(0);
|
|
43
|
+
const aspectFactor = 0.1;
|
|
44
|
+
const [spriteData, setSpriteData] = useState(null);
|
|
45
|
+
const [spriteTexture, setSpriteTexture] = React.useState(new THREE.Texture());
|
|
46
|
+
const textureLoader = new THREE.TextureLoader();
|
|
47
|
+
const [spriteObj, setSpriteObj] = useState(null);
|
|
48
|
+
React.useLayoutEffect(() => {
|
|
49
|
+
if (json && input) {
|
|
50
|
+
loadJsonAndTextureAndExecuteCallback(json, input, parseSpriteData);
|
|
51
|
+
} else if (input) {
|
|
52
|
+
// only load the texture, this is an image sprite only
|
|
53
|
+
loadStandaloneSprite();
|
|
54
|
+
}
|
|
55
|
+
return () => {
|
|
56
|
+
if (input) {
|
|
57
|
+
useLoader.clear(TextureLoader, input);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}, []);
|
|
61
|
+
function loadJsonAndTexture(textureUrl, jsonUrl) {
|
|
62
|
+
if (jsonUrl && textureUrl) {
|
|
63
|
+
loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, parseSpriteData);
|
|
64
|
+
} else {
|
|
65
|
+
loadStandaloneSprite(textureUrl);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function loadStandaloneSprite(textureUrl) {
|
|
69
|
+
if (textureUrl || input) {
|
|
70
|
+
new Promise(resolve => {
|
|
71
|
+
textureLoader.load(textureUrl !== null && textureUrl !== void 0 ? textureUrl : input, resolve);
|
|
72
|
+
}).then(texture => {
|
|
73
|
+
parseSpriteData(null, texture);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
*/
|
|
81
|
+
function loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, callback) {
|
|
82
|
+
const jsonPromise = fetch(jsonUrl).then(response => response.json());
|
|
83
|
+
const texturePromise = new Promise(resolve => {
|
|
84
|
+
textureLoader.load(textureUrl, resolve);
|
|
85
|
+
});
|
|
86
|
+
Promise.all([jsonPromise, texturePromise]).then(response => {
|
|
87
|
+
callback(response[0], response[1]);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const parseSpriteData = (json, _spriteTexture) => {
|
|
91
|
+
let aspect = new THREE.Vector3(1, 1, 1);
|
|
92
|
+
// sprite only case
|
|
93
|
+
if (json === null) {
|
|
94
|
+
if (_spriteTexture && numberOfFrames) {
|
|
95
|
+
//get size from texture
|
|
96
|
+
const width = _spriteTexture.image.width;
|
|
97
|
+
const height = _spriteTexture.image.height;
|
|
98
|
+
const frameWidth = width / numberOfFrames;
|
|
99
|
+
const frameHeight = height;
|
|
100
|
+
totalFrames.current = numberOfFrames;
|
|
101
|
+
spriteDataRef.current = {
|
|
102
|
+
frames: [],
|
|
103
|
+
meta: {
|
|
104
|
+
version: '1.0',
|
|
105
|
+
size: {
|
|
106
|
+
w: width,
|
|
107
|
+
h: height
|
|
108
|
+
},
|
|
109
|
+
scale: '1'
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
if (parseInt(frameWidth.toString(), 10) === frameWidth) {
|
|
113
|
+
// if it fits
|
|
114
|
+
for (let i = 0; i < numberOfFrames; i++) {
|
|
115
|
+
spriteDataRef.current.frames.push({
|
|
116
|
+
frame: {
|
|
117
|
+
x: i * frameWidth,
|
|
118
|
+
y: 0,
|
|
119
|
+
w: frameWidth,
|
|
120
|
+
h: frameHeight
|
|
121
|
+
},
|
|
122
|
+
rotated: false,
|
|
123
|
+
trimmed: false,
|
|
124
|
+
spriteSourceSize: {
|
|
125
|
+
x: 0,
|
|
126
|
+
y: 0,
|
|
127
|
+
w: frameWidth,
|
|
128
|
+
h: frameHeight
|
|
129
|
+
},
|
|
130
|
+
sourceSize: {
|
|
131
|
+
w: frameWidth,
|
|
132
|
+
h: height
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
aspect = calculateAspectRatio(frameWidth, frameHeight, aspectFactor, v);
|
|
138
|
+
}
|
|
139
|
+
} else if (_spriteTexture) {
|
|
140
|
+
spriteDataRef.current = json;
|
|
141
|
+
spriteDataRef.current.frames = Array.isArray(json.frames) ? json.frames : parseFrames();
|
|
142
|
+
totalFrames.current = Array.isArray(json.frames) ? json.frames.length : Object.keys(json.frames).length;
|
|
143
|
+
const {
|
|
144
|
+
w,
|
|
145
|
+
h
|
|
146
|
+
} = getFirstItem(json.frames).sourceSize;
|
|
147
|
+
aspect = calculateAspectRatio(w, h, aspectFactor, v);
|
|
148
|
+
}
|
|
149
|
+
setSpriteData(spriteDataRef.current);
|
|
150
|
+
_spriteTexture.encoding = THREE.sRGBEncoding;
|
|
151
|
+
setSpriteTexture(_spriteTexture);
|
|
152
|
+
setSpriteObj({
|
|
153
|
+
spriteTexture: _spriteTexture,
|
|
154
|
+
spriteData: spriteDataRef.current,
|
|
155
|
+
aspect: aspect
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// for frame based JSON Hash sprite data
|
|
160
|
+
const parseFrames = () => {
|
|
161
|
+
const sprites = {};
|
|
162
|
+
const data = spriteDataRef.current;
|
|
163
|
+
const delimiters = animationNames;
|
|
164
|
+
if (delimiters) {
|
|
165
|
+
for (let i = 0; i < delimiters.length; i++) {
|
|
166
|
+
sprites[delimiters[i]] = [];
|
|
167
|
+
for (const innerKey in data['frames']) {
|
|
168
|
+
const value = data['frames'][innerKey];
|
|
169
|
+
const frameData = value['frame'];
|
|
170
|
+
const x = frameData['x'];
|
|
171
|
+
const y = frameData['y'];
|
|
172
|
+
const width = frameData['w'];
|
|
173
|
+
const height = frameData['h'];
|
|
174
|
+
const sourceWidth = value['sourceSize']['w'];
|
|
175
|
+
const sourceHeight = value['sourceSize']['h'];
|
|
176
|
+
if (typeof innerKey === 'string' && innerKey.toLowerCase().indexOf(delimiters[i].toLowerCase()) !== -1) {
|
|
177
|
+
sprites[delimiters[i]].push({
|
|
178
|
+
x: x,
|
|
179
|
+
y: y,
|
|
180
|
+
w: width,
|
|
181
|
+
h: height,
|
|
182
|
+
frame: frameData,
|
|
183
|
+
sourceSize: {
|
|
184
|
+
w: sourceWidth,
|
|
185
|
+
h: sourceHeight
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return sprites;
|
|
193
|
+
};
|
|
194
|
+
React.useLayoutEffect(() => {
|
|
195
|
+
onLoad == null || onLoad(spriteTexture, spriteData);
|
|
196
|
+
}, [spriteTexture, spriteData]);
|
|
197
|
+
|
|
198
|
+
// https://github.com/mrdoob/three.js/issues/22696
|
|
199
|
+
// Upload the texture to the GPU immediately instead of waiting for the first render
|
|
200
|
+
// NOTE: only available for WebGLRenderer
|
|
201
|
+
useEffect(() => {
|
|
202
|
+
if ('initTexture' in gl) {
|
|
203
|
+
const array = Array.isArray(spriteTexture) ? spriteTexture : [spriteTexture];
|
|
204
|
+
array.forEach(gl.initTexture);
|
|
205
|
+
}
|
|
206
|
+
}, [gl, spriteTexture]);
|
|
207
|
+
return {
|
|
208
|
+
spriteObj,
|
|
209
|
+
loadJsonAndTexture
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
useSpriteLoader.preload = url => useLoader.preload(TextureLoader, url);
|
|
213
|
+
useSpriteLoader.clear = input => useLoader.clear(TextureLoader, input);
|
|
214
|
+
|
|
215
|
+
export { calculateAspectRatio, getFirstItem, useSpriteLoader };
|
package/core/useTexture.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function o(o,a){const s=r.useThree((e=>e.gl)),c=r.useLoader(e.TextureLoader,u(o)?Object.values(o):o);if(t.useLayoutEffect((()=>{null==a||a(c)}),[a]),t.useEffect((()=>{if("initTexture"in s){(Array.isArray(c)?c:[c]).forEach(s.initTexture)}}),[s,c]),u(o)){const e={};let r=0;for(const t in o)e[t]=c[r++];return e}return c}o.preload=t=>r.useLoader.preload(e.TextureLoader,t),o.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.IsObject=u,exports.useTexture=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@react-three/fiber"),i=require("three");const s=t=>Math.sqrt(1-Math.pow(t-1,2));class a{constructor({size:t=256,maxAge:e=750,radius:i=.3,intensity:a=.2,interpolate:h=0,smoothing:r=0,minForce:c=.3,blend:n="screen",ease:o=s}={}){this.size=t,this.maxAge=e,this.radius=i,this.intensity=a,this.ease=o,this.interpolate=h,this.smoothing=r,this.minForce=c,this.blend=n,this.trail=[],this.force=0,this.initTexture()}initTexture(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=this.size,this.ctx=this.canvas.getContext("2d"),this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height),this.texture=new i.Texture(this.canvas),this.canvas.id="touchTexture",this.canvas.style.width=this.canvas.style.height=`${this.canvas.width}px`}update(t){this.clear(),this.trail.forEach(((e,i)=>{e.age+=1e3*t,e.age>this.maxAge&&this.trail.splice(i,1)})),this.trail.length||(this.force=0),this.trail.forEach((t=>{this.drawTouch(t)})),this.texture.needsUpdate=!0}clear(){this.ctx.globalCompositeOperation="source-over",this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}addTouch(t){const e=this.trail[this.trail.length-1];if(e){const i=e.x-t.x,s=e.y-t.y,a=i*i+s*s,h=Math.max(this.minForce,Math.min(1e4*a,1));if(this.force=function(t,e,i=.9){return e*i+t*(1-i)}(h,this.force,this.smoothing),this.interpolate){const t=Math.ceil(a/Math.pow(.5*this.radius/this.interpolate,2));if(t>1)for(let a=1;a<t;a++)this.trail.push({x:e.x-i/t*a,y:e.y-s/t*a,age:0,force:h})}}this.trail.push({x:t.x,y:t.y,age:0,force:this.force})}drawTouch(t){const e={x:t.x*this.size,y:(1-t.y)*this.size};let i=1;i=t.age<.3*this.maxAge?this.ease(t.age/(.3*this.maxAge)):this.ease(1-(t.age-.3*this.maxAge)/(.7*this.maxAge)),i*=t.force,this.ctx.globalCompositeOperation=this.blend;const s=this.size*this.radius*i,a=this.ctx.createRadialGradient(e.x,e.y,Math.max(0,.25*s),e.x,e.y,Math.max(0,s));a.addColorStop(0,`rgba(255, 255, 255, ${this.intensity})`),a.addColorStop(1,"rgba(0, 0, 0, 0.0)"),this.ctx.beginPath(),this.ctx.fillStyle=a,this.ctx.arc(e.x,e.y,Math.max(0,s),0,2*Math.PI),this.ctx.fill()}}exports.useTrailTexture=function(i={}){const{size:s,maxAge:h,radius:r,intensity:c,interpolate:n,smoothing:o,minForce:l,blend:x,ease:u}=i,d=t.useMemo((()=>new a(i)),[s,h,r,c,n,o,l,x,u]);e.useFrame(((t,e)=>{d.update(e)}));const g=t.useCallback((t=>d.addTouch(t.uv)),[d]);return[d.texture,g]};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("three"),r=require("react"),t=require("@react-three/fiber"),n=require("suspend-react");function o(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=o(e);exports.useVideoTexture=function(e,o){const{unsuspend:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber"),n=require("suspend-react");function o(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=o(e);exports.useVideoTexture=function(e,o){const{unsuspend:s,start:i,crossOrigin:c,muted:a,loop:d,...p}={unsuspend:"loadedmetadata",crossOrigin:"Anonymous",muted:!0,loop:!0,start:!0,playsInline:!0,...o},l=t.useThree((e=>e.gl)),f=n.suspend((()=>new Promise(((r,t)=>{const n=Object.assign(document.createElement("video"),{src:"string"==typeof e&&e||void 0,srcObject:e instanceof MediaStream&&e||void 0,crossOrigin:c,loop:d,muted:a,...p}),o=new u.VideoTexture(n);"colorSpace"in o?o.colorSpace=l.outputColorSpace:o.encoding=l.outputEncoding,n.addEventListener(s,(()=>r(o)))}))),[e]);return r.useEffect((()=>{if(i)return f.image.play(),()=>f.image.pause()}),[f,i]),f};
|
package/helpers/constants.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("three");const r=(()=>parseInt(e.REVISION.replace(/\D+/g,"")))();exports.version=r;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");const r=(()=>parseInt(e.REVISION.replace(/\D+/g,"")))();exports.version=r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.setUpdateRange=(e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.setUpdateRange=(e,t)=>{"updateRanges"in e?e.updateRanges[0]=t:e.updateRange=t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.presetsObj={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.presetsObj={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"};
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
var SpotlightShadowShader = "#define GLSLIFY 1\nvarying vec2 vUv;uniform sampler2D uShadowMap;uniform float uTime;void main(){vec3 color=texture2D(uShadowMap,vUv).xyz;gl_FragColor=vec4(color,1.);}"; // eslint-disable-line
|
|
2
|
+
|
|
3
|
+
export { SpotlightShadowShader as default };
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
var distort = "#define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}"; // eslint-disable-line
|
|
2
|
+
|
|
3
|
+
export { distort as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function e(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var
|
|
1
|
+
"use strict";function e(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)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("react"));function r(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}exports.useEffectfulState=function(e,u=[],n){const[c,f]=t.useState();return t.useLayoutEffect((()=>{const t=e();return f(t),r(n,t),()=>r(n,null)}),u),c};
|