@react-three/drei 9.76.0 → 9.77.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 +36 -10
- package/core/GradientTexture.cjs.js +1 -1
- package/core/GradientTexture.d.ts +9 -1
- package/core/GradientTexture.js +29 -4
- package/core/MeshPortalMaterial.cjs.js +1 -1
- package/core/MeshPortalMaterial.js +10 -5
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.js +1 -1
- package/core/index.cjs.js +1 -1
- package/core/index.js +1 -1
- package/index.cjs.js +1 -1
- package/index.js +1 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +1 -1
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -1
package/README.md
CHANGED
|
@@ -679,7 +679,7 @@ type FaceControlsApi = THREE.EventDispatcher & {
|
|
|
679
679
|
|
|
680
680
|
Two `THREE.Event`s are dispatched on FaceControls ref object:
|
|
681
681
|
|
|
682
|
-
- `{ type: "stream", stream: MediaStream }` -- when webcam's `.getUserMedia()`
|
|
682
|
+
- `{ type: "stream", stream: MediaStream }` -- when webcam's [`.getUserMedia()`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) promise is resolved
|
|
683
683
|
- `{ type: "videoFrame", texture: THREE.VideoTexture, time: number }` -- each time a new video frame is sent to the compositor (thanks to rVFC)
|
|
684
684
|
|
|
685
685
|
> **Note** <br>rVFC
|
|
@@ -707,13 +707,21 @@ const onVideoFrame = useCallback((event) => {
|
|
|
707
707
|
|
|
708
708
|
##### FaceControls[manualUpdate]
|
|
709
709
|
|
|
710
|
-
By default, `update` is called each rAF `useFrame
|
|
711
|
-
|
|
712
|
-
For example:
|
|
710
|
+
By default, `update` method is called each rAF `useFrame`. You can disable this by `manualUpdate` and call it yourself:
|
|
713
711
|
|
|
714
712
|
```jsx
|
|
715
713
|
const controls = useThree((state) => state.controls)
|
|
716
714
|
|
|
715
|
+
useFrame((_, delta) => {
|
|
716
|
+
controls.update(delta) // 60 or 120 FPS with default damping
|
|
717
|
+
})
|
|
718
|
+
|
|
719
|
+
<FaceControls makeDefault manualUpdate />
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
Or, if you want your own custom damping, use `computeTarget` method and update the camera pos/rot yourself with:
|
|
723
|
+
|
|
724
|
+
```jsx
|
|
717
725
|
const [current] = useState(() => new THREE.Object3D())
|
|
718
726
|
|
|
719
727
|
useFrame((_, delta) => {
|
|
@@ -725,8 +733,8 @@ useFrame((_, delta) => {
|
|
|
725
733
|
//
|
|
726
734
|
|
|
727
735
|
const eps = 1e-9
|
|
728
|
-
easing.damp3(current.position, target.position, .25, delta, undefined, undefined, eps)
|
|
729
|
-
easing.dampE(current.rotation, target.rotation, .25, delta, undefined, undefined, eps)
|
|
736
|
+
easing.damp3(current.position, target.position, 0.25, delta, undefined, undefined, eps)
|
|
737
|
+
easing.dampE(current.rotation, target.rotation, 0.25, delta, undefined, undefined, eps)
|
|
730
738
|
camera.position.copy(current.position)
|
|
731
739
|
camera.rotation.copy(current.rotation)
|
|
732
740
|
|
|
@@ -734,13 +742,10 @@ useFrame((_, delta) => {
|
|
|
734
742
|
// B. Or maybe with no damping at all?
|
|
735
743
|
//
|
|
736
744
|
|
|
737
|
-
// controls.update(delta, target)
|
|
738
745
|
// camera.position.copy(target.position)
|
|
739
746
|
// camera.rotation.copy(target.rotation)
|
|
740
747
|
}
|
|
741
748
|
})
|
|
742
|
-
|
|
743
|
-
<FaceControls makeDefault manualUpdate />
|
|
744
749
|
```
|
|
745
750
|
|
|
746
751
|
# Gizmos
|
|
@@ -1349,6 +1354,26 @@ A declarative THREE.Texture which attaches to "map" by default. You can use this
|
|
|
1349
1354
|
</mesh>
|
|
1350
1355
|
```
|
|
1351
1356
|
|
|
1357
|
+
Radial gradient.
|
|
1358
|
+
|
|
1359
|
+
```jsx
|
|
1360
|
+
import { GradientTexture, GradientType } from './GradientTexture'
|
|
1361
|
+
;<mesh>
|
|
1362
|
+
<planeGeometry />
|
|
1363
|
+
<meshBasicMaterial>
|
|
1364
|
+
<GradientTexture
|
|
1365
|
+
stops={[0, 0.5, 1]} // As many stops as you want
|
|
1366
|
+
colors={['aquamarine', 'hotpink', 'yellow']} // Colors need to match the number of stops
|
|
1367
|
+
size={1024} // Size (height) is optional, default = 1024
|
|
1368
|
+
width={1024} // Width of the canvas producing the texture, default = 16
|
|
1369
|
+
type={GradientType.Radial} // The type of the gradient, default = GradientType.Linear
|
|
1370
|
+
innerCircleRadius={0} // Optional, the radius of the inner circle of the gradient, default = 0
|
|
1371
|
+
outerCircleRadius={'auto'} // Optional, the radius of the outer circle of the gradient, default = auto
|
|
1372
|
+
/>
|
|
1373
|
+
</meshBasicMaterial>
|
|
1374
|
+
</mesh>
|
|
1375
|
+
```
|
|
1376
|
+
|
|
1352
1377
|
#### Edges
|
|
1353
1378
|
|
|
1354
1379
|
<p>
|
|
@@ -3455,7 +3480,8 @@ const stencil = useMask(1, true)
|
|
|
3455
3480
|
|
|
3456
3481
|
<p>
|
|
3457
3482
|
<a href="https://codesandbox.io/s/9m4tpc"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/9m4tpc/screenshot.png" alt="Demo"/></a>
|
|
3458
|
-
<a href="https://codesandbox.io/s/
|
|
3483
|
+
<a href="https://codesandbox.io/s/qvk72r"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/qvk72r/screenshot.png" alt="Demo"/></a>
|
|
3484
|
+
<a href="https://codesandbox.io/s/drc6qg"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/drc6qg/screenshot.png" alt="Demo"/></a>
|
|
3459
3485
|
<a href="https://codesandbox.io/s/ik11ln"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/ik11ln/screenshot.png" alt="Demo"/></a>
|
|
3460
3486
|
</p>
|
|
3461
3487
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber");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 i=a(e),u=n(t);let o=function(e){return e.Linear="linear",e.Radial="radial",e}({});exports.GradientTexture=function({stops:e,colors:t,size:a=1024,width:n=16,type:c=o.Linear,innerCircleRadius:l=0,outerCircleRadius:s="auto",...d}){const f=r.useThree((e=>e.gl)),p=u.useMemo((()=>{const r=document.createElement("canvas"),i=r.getContext("2d");let u;if(r.width=n,r.height=a,c===o.Linear)u=i.createLinearGradient(0,0,0,a);else{const e=r.width/2,t=r.height/2,a="auto"!==s?Math.abs(Number(s)):Math.sqrt(e**2+t**2);u=i.createRadialGradient(e,t,Math.abs(l),e,t,a)}let d=e.length;for(;d--;)u.addColorStop(e[d],t[d]);return i.save(),i.fillStyle=u,i.fillRect(0,0,n,a),i.restore(),r}),[e]);return u.createElement("canvasTexture",i.default({colorSpace:f.outputColorSpace,args:[p],attach:"map"},d))},exports.GradientType=o;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
export declare enum GradientType {
|
|
3
|
+
Linear = "linear",
|
|
4
|
+
Radial = "radial"
|
|
5
|
+
}
|
|
2
6
|
declare type Props = {
|
|
3
7
|
stops: Array<number>;
|
|
4
8
|
colors: Array<string>;
|
|
5
9
|
attach?: string;
|
|
6
10
|
size?: number;
|
|
11
|
+
width?: number;
|
|
12
|
+
type?: GradientType;
|
|
13
|
+
innerCircleRadius?: number;
|
|
14
|
+
outerCircleRadius?: string | number;
|
|
7
15
|
} & JSX.IntrinsicElements['texture'];
|
|
8
|
-
export declare function GradientTexture({ stops, colors, size, ...props }: Props): JSX.Element;
|
|
16
|
+
export declare function GradientTexture({ stops, colors, size, width, type, innerCircleRadius, outerCircleRadius, ...props }: Props): JSX.Element;
|
|
9
17
|
export {};
|
package/core/GradientTexture.js
CHANGED
|
@@ -1,33 +1,58 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { useThree } from '@react-three/fiber';
|
|
3
4
|
|
|
5
|
+
let GradientType = /*#__PURE__*/function (GradientType) {
|
|
6
|
+
GradientType["Linear"] = "linear";
|
|
7
|
+
GradientType["Radial"] = "radial";
|
|
8
|
+
return GradientType;
|
|
9
|
+
}({});
|
|
4
10
|
function GradientTexture({
|
|
5
11
|
stops,
|
|
6
12
|
colors,
|
|
7
13
|
size = 1024,
|
|
14
|
+
width = 16,
|
|
15
|
+
//@ts-ignore - weird error about type never, although the type is clearly defined
|
|
16
|
+
type = GradientType.Linear,
|
|
17
|
+
innerCircleRadius = 0,
|
|
18
|
+
outerCircleRadius = 'auto',
|
|
8
19
|
...props
|
|
9
20
|
}) {
|
|
21
|
+
const gl = useThree(state => state.gl);
|
|
10
22
|
const canvas = React.useMemo(() => {
|
|
11
23
|
const canvas = document.createElement('canvas');
|
|
12
24
|
const context = canvas.getContext('2d');
|
|
13
|
-
canvas.width =
|
|
25
|
+
canvas.width = width;
|
|
14
26
|
canvas.height = size;
|
|
15
|
-
|
|
27
|
+
let gradient;
|
|
28
|
+
|
|
29
|
+
if (type === GradientType.Linear) {
|
|
30
|
+
gradient = context.createLinearGradient(0, 0, 0, size);
|
|
31
|
+
} else {
|
|
32
|
+
const canvasCenterX = canvas.width / 2;
|
|
33
|
+
const canvasCenterY = canvas.height / 2;
|
|
34
|
+
const radius = outerCircleRadius !== 'auto' ? Math.abs(Number(outerCircleRadius)) : Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);
|
|
35
|
+
gradient = context.createRadialGradient(canvasCenterX, canvasCenterY, Math.abs(innerCircleRadius), canvasCenterX, canvasCenterY, radius);
|
|
36
|
+
}
|
|
37
|
+
|
|
16
38
|
let i = stops.length;
|
|
17
39
|
|
|
18
40
|
while (i--) {
|
|
19
41
|
gradient.addColorStop(stops[i], colors[i]);
|
|
20
42
|
}
|
|
21
43
|
|
|
44
|
+
context.save();
|
|
22
45
|
context.fillStyle = gradient;
|
|
23
|
-
context.fillRect(0, 0,
|
|
46
|
+
context.fillRect(0, 0, width, size);
|
|
47
|
+
context.restore();
|
|
24
48
|
return canvas;
|
|
25
49
|
}, [stops]); // @ts-ignore ????
|
|
26
50
|
|
|
27
51
|
return /*#__PURE__*/React.createElement("canvasTexture", _extends({
|
|
52
|
+
colorSpace: gl.outputColorSpace,
|
|
28
53
|
args: [canvas],
|
|
29
54
|
attach: "map"
|
|
30
55
|
}, props));
|
|
31
56
|
}
|
|
32
57
|
|
|
33
|
-
export { GradientTexture };
|
|
58
|
+
export { GradientTexture, GradientType };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./useFBO.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),u=require("three-stdlib");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function v(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 c=s(e),d=v(r),m=v(t);const f=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new d.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }","uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }"),g=m.forwardRef((({children:e,events:r,blur:t=0,eventPriority:o=0,renderPriority:u=0,worldUnits:s=!1,resolution:v=512,...g},F)=>{n.extend({PortalMaterialImpl:f});const h=m.useRef(null),{scene:y,gl:b,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(v,v),[R,S]=m.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),m.useEffect((()=>{void 0!==r&&U({enabled:!r})}),[r]);const[_,D]=m.useState(!0),j=a.useIntersect(D);m.useLayoutEffect((()=>{var e;j.current=null==(e=h.current)?void 0:e.__r3f.parent}),[]),m.useLayoutEffect((()=>{if(j.current&&t&&null===h.current.sdf){const e=new d.Mesh(j.current.geometry,new d.MeshBasicMaterial),r=(new d.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new d.OrthographicCamera(r.min.x*(1+2/v),r.max.x*(1+2/v),r.max.y*(1+2/v),r.min.y*(1+2/v),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),b.setRenderTarget(T),b.render(e,t);const n=p(v,v,b)(T.texture),a=new Float32Array(v*v);b.readRenderTargetPixels(n,0,0,v,v,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,b.setRenderTarget(null)}}),[v,t]),m.useImperativeHandle(F,(()=>h.current));const P=m.useCallback(((e,r,t)=>{var n;if(!j.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(j.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return m.createElement("portalMaterialImpl",c.default({ref:h,blur:t,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],toneMapped:!1,attach:"material"},g),m.createElement(l.RenderTexture,{attach:"map",frames:_?1/0:0,eventPriority:o,renderPriority:u,compute:P},e,m.createElement(x,{events:r,rootScene:y,priority:R,material:h,worldUnits:s})))}));function x({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),s=n.useThree((e=>e.setEvents)),v=i.useFBO(),c=i.useFBO();m.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),m.useEffect((()=>{void 0!==e&&s({enabled:e})}),[e]);const[f,g]=m.useMemo((()=>{const e={value:0};return[new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{a:{value:v.texture},b:{value:c.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <encodings_fragment>\n }"})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)?void 0:n.__r3f.parent;var u,s,d;i&&(l?o.matrixWorld.identity():o.matrixWorld.copy(i.matrixWorld),a&&((null==(u=t.current)?void 0:u.blend)>0&&(null==(s=t.current)?void 0:s.blend)<1&&i?(g.value=t.current.blend,e.gl.setRenderTarget(v),e.gl.render(o,e.camera),e.gl.setRenderTarget(c),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),f.render(e.gl)):1===(null==(d=t.current)?void 0:d.blend)&&e.gl.render(o,e.camera)))}),a),m.createElement(m.Fragment,null)}const p=(e,r,t)=>{let n=new d.WebGLRenderTarget(e,r,{minFilter:d.LinearMipmapLinearFilter,magFilter:d.LinearFilter,type:d.FloatType,format:d.RedFormat,generateMipmaps:!0}),a=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),i=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),l=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),o=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),s=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter,type:d.FloatType,format:d.RedFormat}),v=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter,type:d.FloatType,format:d.RedFormat});const c=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),m=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new d.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),x=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:s.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return u=>{let p=n;u.minFilter=d.NearestFilter,u.magFilter=d.NearestFilter,c.material.uniforms.tex.value=u,t.setRenderTarget(a),c.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,y=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}t.setRenderTarget(s),g.material.uniforms.tex.value=y.texture,g.render(t),m.material.uniforms.tex.value=u,t.setRenderTarget(i),m.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}return t.setRenderTarget(v),g.material.uniforms.tex.value=y.texture,g.render(t),t.setRenderTarget(p),x.material.uniforms.tex.value=u,x.render(t),t.setRenderTarget(null),p}};exports.MeshPortalMaterial=g;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./useFBO.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),u=require("three-stdlib");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function v(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 c=s(e),d=v(r),m=v(t);const f=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new d.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }","uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }"),g=m.forwardRef((({children:e,events:r,blur:t=0,eventPriority:o=0,renderPriority:u=0,worldUnits:s=!1,resolution:v=512,...g},F)=>{n.extend({PortalMaterialImpl:f});const h=m.useRef(null),{scene:y,gl:b,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(v,v),[R,S]=m.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),m.useEffect((()=>{void 0!==r&&U({enabled:!r})}),[r]);const[_,D]=m.useState(!0),j=a.useIntersect(D);m.useLayoutEffect((()=>{var e;j.current=null==(e=h.current)?void 0:e.__r3f.parent}),[]),m.useLayoutEffect((()=>{if(j.current&&t&&null===h.current.sdf){const e=new d.Mesh(j.current.geometry,new d.MeshBasicMaterial),r=(new d.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new d.OrthographicCamera(r.min.x*(1+2/v),r.max.x*(1+2/v),r.max.y*(1+2/v),r.min.y*(1+2/v),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),b.setRenderTarget(T),b.render(e,t);const n=p(v,v,b)(T.texture),a=new Float32Array(v*v);b.readRenderTargetPixels(n,0,0,v,v,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,b.setRenderTarget(null)}}),[v,t]),m.useImperativeHandle(F,(()=>h.current));const P=m.useCallback(((e,r,t)=>{var n;if(!j.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(j.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return m.createElement("portalMaterialImpl",c.default({ref:h,blur:t,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],toneMapped:!1,attach:"material"},g),m.createElement(l.RenderTexture,{attach:"map",frames:_?1/0:0,eventPriority:o,renderPriority:u,compute:P},e,m.createElement(x,{events:r,rootScene:y,priority:R,material:h,worldUnits:s})))}));function x({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),s=n.useThree((e=>e.setEvents)),v=i.useFBO(),c=i.useFBO();m.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),m.useEffect((()=>{void 0!==e&&s({enabled:e})}),[e]);const[f,g]=m.useMemo((()=>{const e={value:0};return[new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{a:{value:v.texture},b:{value:c.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <encodings_fragment>\n }"})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)?void 0:n.__r3f.parent;var u,s,d;i&&(l?o.matrixWorld.identity():o.matrixWorld.copy(i.matrixWorld),a&&((null==(u=t.current)?void 0:u.blend)>0&&(null==(s=t.current)?void 0:s.blend)<1?(g.value=t.current.blend,e.gl.setRenderTarget(v),e.gl.render(o,e.camera),e.gl.setRenderTarget(c),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),f.render(e.gl)):1===(null==(d=t.current)?void 0:d.blend)&&e.gl.render(o,e.camera)))}),a),m.createElement(m.Fragment,null)}const p=(e,r,t)=>{let n=new d.WebGLRenderTarget(e,r,{minFilter:d.LinearMipmapLinearFilter,magFilter:d.LinearFilter,type:d.FloatType,format:d.RedFormat,generateMipmaps:!0}),a=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),i=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),l=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),o=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter}),s=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter,type:d.FloatType,format:d.RedFormat}),v=new d.WebGLRenderTarget(e,r,{minFilter:d.NearestFilter,magFilter:d.NearestFilter,type:d.FloatType,format:d.RedFormat});const c=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),m=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new d.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),x=new u.FullScreenQuad(new d.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:s.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return u=>{let p=n;u.minFilter=d.NearestFilter,u.magFilter=d.NearestFilter,c.material.uniforms.tex.value=u,t.setRenderTarget(a),c.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,y=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}t.setRenderTarget(s),g.material.uniforms.tex.value=y.texture,g.render(t),m.material.uniforms.tex.value=u,t.setRenderTarget(i),m.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}return t.setRenderTarget(v),g.material.uniforms.tex.value=y.texture,g.render(t),t.setRenderTarget(p),x.material.uniforms.tex.value=u,x.render(t),t.setRenderTarget(null),p}};exports.MeshPortalMaterial=g;
|
|
@@ -140,7 +140,7 @@ const MeshPortalMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
140
140
|
eventPriority: eventPriority,
|
|
141
141
|
renderPriority: renderPriority,
|
|
142
142
|
compute: compute
|
|
143
|
-
}, children, /*#__PURE__*/React.createElement(
|
|
143
|
+
}, children, /*#__PURE__*/React.createElement(ManagePortalScene, {
|
|
144
144
|
events: events,
|
|
145
145
|
rootScene: scene,
|
|
146
146
|
priority: priority,
|
|
@@ -149,7 +149,7 @@ const MeshPortalMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
149
149
|
})));
|
|
150
150
|
});
|
|
151
151
|
|
|
152
|
-
function
|
|
152
|
+
function ManagePortalScene({
|
|
153
153
|
events = undefined,
|
|
154
154
|
rootScene,
|
|
155
155
|
material,
|
|
@@ -169,7 +169,7 @@ function CopyMatrix({
|
|
|
169
169
|
});
|
|
170
170
|
}, [events]);
|
|
171
171
|
const [quad, blend] = React.useMemo(() => {
|
|
172
|
-
// This
|
|
172
|
+
// This fullscreen-quad is used to blend the two textures
|
|
173
173
|
const blend = {
|
|
174
174
|
value: 0
|
|
175
175
|
};
|
|
@@ -214,12 +214,16 @@ function CopyMatrix({
|
|
|
214
214
|
let parent = material == null ? void 0 : (_material$current = material.current) == null ? void 0 : _material$current.__r3f.parent;
|
|
215
215
|
|
|
216
216
|
if (parent) {
|
|
217
|
-
if
|
|
217
|
+
// Move portal contents along with the parent if worldUnits is true
|
|
218
|
+
if (!worldUnits) scene.matrixWorld.copy(parent.matrixWorld);else scene.matrixWorld.identity(); // This bit is only necessary if the portal is blended, now it has a render-priority
|
|
219
|
+
// and will take over the render loop
|
|
218
220
|
|
|
219
221
|
if (priority) {
|
|
220
222
|
var _material$current2, _material$current3, _material$current4;
|
|
221
223
|
|
|
222
|
-
if (((_material$current2 = material.current) == null ? void 0 : _material$current2.blend) > 0 && ((_material$current3 = material.current) == null ? void 0 : _material$current3.blend) < 1
|
|
224
|
+
if (((_material$current2 = material.current) == null ? void 0 : _material$current2.blend) > 0 && ((_material$current3 = material.current) == null ? void 0 : _material$current3.blend) < 1) {
|
|
225
|
+
// If blend is ongoing (> 0 and < 1) then we need to render both the root scene
|
|
226
|
+
// and the portal scene, both will then be mixed in the quad from above
|
|
223
227
|
blend.value = material.current.blend;
|
|
224
228
|
state.gl.setRenderTarget(buffer1);
|
|
225
229
|
state.gl.render(scene, state.camera);
|
|
@@ -228,6 +232,7 @@ function CopyMatrix({
|
|
|
228
232
|
state.gl.setRenderTarget(null);
|
|
229
233
|
quad.render(state.gl);
|
|
230
234
|
} else if (((_material$current4 = material.current) == null ? void 0 : _material$current4.blend) === 1) {
|
|
235
|
+
// However if blend is 1 we only need to render the portal scene
|
|
231
236
|
state.gl.render(scene, state.camera);
|
|
232
237
|
}
|
|
233
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("three");function n(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 a=n(e),u=n(t);exports.SpriteAnimator=({startFrame:e,endFrame:t,fps:n,frameName:s,textureDataURL:c,textureImageURL:o,loop:f,numberOfFrames:i,autoPlay:m,animationNames:l,onStart:p,onEnd:h,onLoopEnd:w,onFrame:y,play:d,pause:S,flipX:x,alphaTest:g,children:b,...z},F)=>{r.useThree((e=>e.viewport));const A=a.useRef(null),[E,O]=a.useState(!1),R=a.useRef(),j=a.useRef(),v=a.useRef(window.performance.now()),L=a.useRef(),P=a.useRef(e||0),T=a.useRef(s||""),N=1e3/(n||30),[M,k]=a.useState(new u.Texture),_=a.useRef(0),[q,C]=a.useState([1,1,1]),D=x?-1:1;const I=(e,r)=>{const t=r/e;return j.current.scale.set(1,t,1),[1,t,1]};a.useEffect((()=>{if(c&&o)!function(e,r,t){const n=new u.TextureLoader,a=fetch(e).then((e=>e.json())),s=new Promise((e=>{n.load(r,e)}));Promise.all([a,s]).then((e=>{t(e[0],e[1])}))}(c,o,U);else if(o){const e=new u.TextureLoader;new Promise((r=>{e.load(o,r)})).then((e=>{U(null,e)}))}}),[]),a.useLayoutEffect((()=>{X()}),[M]),a.useEffect((()=>{}),[S]),a.useEffect((()=>{T.current!==s&&s&&(P.current=0,T.current=s)}),[s]);const U=(e,r)=>{if(null===e){if(r&&i){const e=r.image.width,t=r.image.height,n=e/i,a=t;if(L.current=r,_.current=i,A.current={frames:[],meta:{version:"1.0",size:{w:e,h:t},scale:"1"}},parseInt(n.toString(),10)===n)for(let e=0;e<i;e++)A.current.frames.push({frame:{x:e*n,y:0,w:n,h:a},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:n,h:a},sourceSize:{w:n,h:t}})}}else if(r){A.current=e,A.current.frames=Array.isArray(e.frames)?e.frames:W(),_.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length,L.current=r;const{w:t,h:n}=B(e.frames).sourceSize,a=I(t,n);C(a),R.current&&(R.current.map=r)}r.premultiplyAlpha=!1,k(r)},W=()=>{const e={},r=A.current,t=l;if(t)for(let n=0;n<t.length;n++){e[t[n]]=[];for(let a in r.frames){const u=r.frames[a],s=u.frame,c=s.x,o=s.y,f=s.w,i=s.h,m=u.sourceSize.w,l=u.sourceSize.h;"string"==typeof a&&-1!==a.toLowerCase().indexOf(t[n].toLowerCase())&&e[t[n]].push({x:c,y:o,w:f,h:i,frame:s,sourceSize:{w:m,h:l}})}}return e},X=()=>{if(!A.current)return;const{meta:{size:e},frames:r}=A.current,{w:t,h:n}=Array.isArray(r)?r[0].sourceSize:s&&r[s]?r[s][0].sourceSize:{w:0,h:0};R.current.map.wrapS=R.current.map.wrapT=u.RepeatWrapping,R.current.map.center.set(0,0),R.current.map.repeat.set(1*D/(e.w/t),1/(e.h/n));const a=1/((e.h-1)/n);R.current.map.offset.x=0,R.current.map.offset.y=1-a,O(!0),p&&p({currentFrameName:s,currentFrame:P.current})};r.useFrame(((r,n)=>{var a,u;null!=(a=A.current)&&a.frames&&null!=(u=R.current)&&u.map&&(S||(m||d)&&((()=>{const r=window.performance.now(),n=r-v.current,{meta:{size:a},frames:u}=A.current,{w:c,h:o}=B(u).sourceSize,i=Array.isArray(u)?u:s?u[s]:[];let m=0,l=0;const p=t||i.length-1;if(P.current>p&&(P.current=f&&null!=e?e:0,f?null==w||w({currentFrameName:s,currentFrame:P.current}):null==h||h({currentFrameName:s,currentFrame:P.current}),!f))return;if(n<=N)return;v.current=r-n%N,I(c,o);const y=(a.w-1)/c,d=(a.h-1)/o,{frame:{x:S,y:x},sourceSize:{w:g,h:b}}=i[P.current],z=1/y,F=1/d;m=D>0?z*(S/g):z*(S/g)-R.current.map.repeat.x,l=Math.abs(1-F)-F*(x/b),R.current.map.offset.x=m,R.current.map.offset.y=l,P.current+=1})(),y&&y({currentFrameName:T.current,currentFrame:P.current})))}));const B=e=>{if(Array.isArray(e))return e[0];if("object"==typeof e&&null!==e){return e[Object.keys(e)[0]][0]}return{w:0,h:0}};return a.createElement("group",z,a.createElement(a.Suspense,{fallback:null},a.createElement("sprite",{ref:j,scale:q},a.createElement("spriteMaterial",{toneMapped:!1,ref:R,map:M,transparent:!0,alphaTest:null!=g?g:0}))),b)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("three");function n(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 a=n(e),u=n(t);exports.SpriteAnimator=({startFrame:e,endFrame:t,fps:n,frameName:s,textureDataURL:c,textureImageURL:o,loop:f,numberOfFrames:i,autoPlay:m,animationNames:l,onStart:p,onEnd:h,onLoopEnd:w,onFrame:y,play:d,pause:S,flipX:x,alphaTest:g,children:b,...z},F)=>{r.useThree((e=>e.viewport));const A=a.useRef(null),[E,O]=a.useState(!1),R=a.useRef(),j=a.useRef(),v=a.useRef(window.performance.now()),L=a.useRef(),P=a.useRef(e||0),T=a.useRef(s||""),N=1e3/(n||30),[M,k]=a.useState(new u.Texture),_=a.useRef(0),[q,C]=a.useState([1,1,1]),D=x?-1:1;const I=(e,r)=>{const t=r/e;return j.current.scale.set(1,t,1),[1,t,1]};a.useEffect((()=>{if(c&&o)!function(e,r,t){const n=new u.TextureLoader,a=fetch(e).then((e=>e.json())),s=new Promise((e=>{n.load(r,e)}));Promise.all([a,s]).then((e=>{t(e[0],e[1])}))}(c,o,U);else if(o){const e=new u.TextureLoader;new Promise((r=>{e.load(o,r)})).then((e=>{U(null,e)}))}}),[]),a.useLayoutEffect((()=>{X()}),[M,x]),a.useEffect((()=>{}),[S]),a.useEffect((()=>{T.current!==s&&s&&(P.current=0,T.current=s)}),[s]);const U=(e,r)=>{if(null===e){if(r&&i){const e=r.image.width,t=r.image.height,n=e/i,a=t;if(L.current=r,_.current=i,A.current={frames:[],meta:{version:"1.0",size:{w:e,h:t},scale:"1"}},parseInt(n.toString(),10)===n)for(let e=0;e<i;e++)A.current.frames.push({frame:{x:e*n,y:0,w:n,h:a},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:n,h:a},sourceSize:{w:n,h:t}})}}else if(r){A.current=e,A.current.frames=Array.isArray(e.frames)?e.frames:W(),_.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length,L.current=r;const{w:t,h:n}=B(e.frames).sourceSize,a=I(t,n);C(a),R.current&&(R.current.map=r)}r.premultiplyAlpha=!1,k(r)},W=()=>{const e={},r=A.current,t=l;if(t)for(let n=0;n<t.length;n++){e[t[n]]=[];for(let a in r.frames){const u=r.frames[a],s=u.frame,c=s.x,o=s.y,f=s.w,i=s.h,m=u.sourceSize.w,l=u.sourceSize.h;"string"==typeof a&&-1!==a.toLowerCase().indexOf(t[n].toLowerCase())&&e[t[n]].push({x:c,y:o,w:f,h:i,frame:s,sourceSize:{w:m,h:l}})}}return e},X=()=>{if(!A.current)return;const{meta:{size:e},frames:r}=A.current,{w:t,h:n}=Array.isArray(r)?r[0].sourceSize:s&&r[s]?r[s][0].sourceSize:{w:0,h:0};R.current.map.wrapS=R.current.map.wrapT=u.RepeatWrapping,R.current.map.center.set(0,0),R.current.map.repeat.set(1*D/(e.w/t),1/(e.h/n));const a=1/((e.h-1)/n);R.current.map.offset.x=0,R.current.map.offset.y=1-a,O(!0),p&&p({currentFrameName:s,currentFrame:P.current})};r.useFrame(((r,n)=>{var a,u;null!=(a=A.current)&&a.frames&&null!=(u=R.current)&&u.map&&(S||(m||d)&&((()=>{const r=window.performance.now(),n=r-v.current,{meta:{size:a},frames:u}=A.current,{w:c,h:o}=B(u).sourceSize,i=Array.isArray(u)?u:s?u[s]:[];let m=0,l=0;const p=t||i.length-1;if(P.current>p&&(P.current=f&&null!=e?e:0,f?null==w||w({currentFrameName:s,currentFrame:P.current}):null==h||h({currentFrameName:s,currentFrame:P.current}),!f))return;if(n<=N)return;v.current=r-n%N,I(c,o);const y=(a.w-1)/c,d=(a.h-1)/o,{frame:{x:S,y:x},sourceSize:{w:g,h:b}}=i[P.current],z=1/y,F=1/d;m=D>0?z*(S/g):z*(S/g)-R.current.map.repeat.x,l=Math.abs(1-F)-F*(x/b),R.current.map.offset.x=m,R.current.map.offset.y=l,P.current+=1})(),y&&y({currentFrameName:T.current,currentFrame:P.current})))}));const B=e=>{if(Array.isArray(e))return e[0];if("object"==typeof e&&null!==e){return e[Object.keys(e)[0]][0]}return{w:0,h:0}};return a.createElement("group",z,a.createElement(a.Suspense,{fallback:null},a.createElement("sprite",{ref:j,scale:q},a.createElement("spriteMaterial",{toneMapped:!1,ref:R,map:M,transparent:!0,alphaTest:null!=g?g:0}))),b)};
|
package/core/SpriteAnimator.js
CHANGED
package/core/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),d=require("./Clone.cjs.js"),h=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),M=require("./Svg.cjs.js"),S=require("./Gltf.cjs.js"),f=require("./AsciiRenderer.cjs.js"),T=require("./OrthographicCamera.cjs.js"),P=require("./PerspectiveCamera.cjs.js"),b=require("./CubeCamera.cjs.js"),B=require("./DeviceOrientationControls.cjs.js"),g=require("./FlyControls.cjs.js"),v=require("./MapControls.cjs.js"),F=require("./OrbitControls.cjs.js"),L=require("./TrackballControls.cjs.js"),A=require("./ArcballControls.cjs.js"),k=require("./TransformControls.cjs.js"),D=require("./PointerLockControls.cjs.js"),E=require("./FirstPersonControls.cjs.js"),R=require("./CameraControls.cjs.js"),G=require("./FaceControls.cjs.js"),w=require("./GizmoHelper.cjs.js"),z=require("./GizmoViewcube.cjs.js"),O=require("./GizmoViewport.cjs.js"),I=require("./Grid.cjs.js"),y=require("./useCubeTexture.cjs.js"),H=require("./useFBX.cjs.js"),V=require("./useGLTF.cjs.js"),W=require("./useKTX2.cjs.js"),Q=require("./useProgress.cjs.js"),X=require("./useTexture.cjs.js"),K=require("./useVideoTexture.cjs.js"),N=require("./useFont.cjs.js"),U=require("./Stats.cjs.js"),_=require("./useDepthBuffer.cjs.js"),J=require("./useAspect.cjs.js"),Y=require("./useCamera.cjs.js"),Z=require("./useDetectGPU.cjs.js"),$=require("./useHelper.cjs.js"),ee=require("./useBVH.cjs.js"),re=require("./useContextBridge.cjs.js"),se=require("./useAnimations.cjs.js"),te=require("./useFBO.cjs.js"),oe=require("./useIntersect.cjs.js"),ie=require("./useBoxProjectedEnv.cjs.js"),ae=require("./BBAnchor.cjs.js"),ue=require("./useTrailTexture.cjs.js"),ce=require("./useCubeCamera.cjs.js"),ne=require("./Example.cjs.js"),je=require("./SpriteAnimator.cjs.js"),pe=require("./FaceLandmarker.cjs.js"),xe=require("./CurveModifier.cjs.js"),le=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),qe=require("./MeshReflectorMaterial.cjs.js"),de=require("./MeshRefractionMaterial.cjs.js"),he=require("./MeshTransmissionMaterial.cjs.js"),Ce=require("./MeshDiscardMaterial.cjs.js"),Me=require("./PointMaterial.cjs.js"),Se=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),Te=require("./shapes.cjs.js"),Pe=require("./Facemesh.cjs.js"),be=require("./RoundedBox.cjs.js"),Be=require("./ScreenQuad.cjs.js"),ge=require("./Center.cjs.js"),ve=require("./Resize.cjs.js"),Fe=require("./Bounds.cjs.js"),Le=require("./CameraShake.cjs.js"),Ae=require("./Float.cjs.js"),ke=require("./Stage.cjs.js"),De=require("./Backdrop.cjs.js"),Ee=require("./Shadow.cjs.js"),Re=require("./Caustics.cjs.js"),Ge=require("./ContactShadows.cjs.js"),we=require("./AccumulativeShadows.cjs.js"),ze=require("./Reflector.cjs.js"),Oe=require("./SpotLight.cjs.js"),Ie=require("./Environment.cjs.js"),ye=require("./Lightformer.cjs.js"),He=require("./Sky.cjs.js"),Ve=require("./Stars.cjs.js"),We=require("./Cloud.cjs.js"),Qe=require("./Sparkles.cjs.js"),Xe=require("./useEnvironment.cjs.js"),Ke=require("./useMatcapTexture.cjs.js"),Ne=require("./useNormalTexture.cjs.js"),Ue=require("./Wireframe.cjs.js"),_e=require("./Points.cjs.js"),Je=require("./Instances.cjs.js"),Ye=require("./Segments.cjs.js"),Ze=require("./Detailed.cjs.js"),$e=require("./Preload.cjs.js"),er=require("./BakeShadows.cjs.js"),rr=require("./meshBounds.cjs.js"),sr=require("./AdaptiveDpr.cjs.js"),tr=require("./AdaptiveEvents.cjs.js"),or=require("./PerformanceMonitor.cjs.js"),ir=require("./RenderTexture.cjs.js"),ar=require("./Mask.cjs.js"),ur=require("./Hud.cjs.js"),cr=require("./MeshPortalMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("camera-controls"),require("maath"),require("@mediapipe/tasks-vision"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../materials/WireframeMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.Edges=x.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=d.Clone,exports.MarchingCube=h.MarchingCube,exports.MarchingCubes=h.MarchingCubes,exports.MarchingPlane=h.MarchingPlane,exports.Decal=C.Decal,exports.Svg=M.Svg,exports.Gltf=S.Gltf,exports.AsciiRenderer=f.AsciiRenderer,exports.OrthographicCamera=T.OrthographicCamera,exports.PerspectiveCamera=P.PerspectiveCamera,exports.CubeCamera=b.CubeCamera,exports.DeviceOrientationControls=B.DeviceOrientationControls,exports.FlyControls=g.FlyControls,exports.MapControls=v.MapControls,exports.OrbitControls=F.OrbitControls,exports.TrackballControls=L.TrackballControls,exports.ArcballControls=A.ArcballControls,exports.TransformControls=k.TransformControls,exports.PointerLockControls=D.PointerLockControls,exports.FirstPersonControls=E.FirstPersonControls,exports.CameraControls=R.CameraControls,exports.FaceControls=G.FaceControls,exports.useFaceControls=G.useFaceControls,exports.GizmoHelper=w.GizmoHelper,exports.useGizmoContext=w.useGizmoContext,exports.GizmoViewcube=z.GizmoViewcube,exports.GizmoViewport=O.GizmoViewport,exports.Grid=I.Grid,exports.useCubeTexture=y.useCubeTexture,exports.useFBX=H.useFBX,exports.useGLTF=V.useGLTF,exports.useKTX2=W.useKTX2,exports.useProgress=Q.useProgress,exports.IsObject=X.IsObject,exports.useTexture=X.useTexture,exports.useVideoTexture=K.useVideoTexture,exports.useFont=N.useFont,exports.Stats=U.Stats,exports.useDepthBuffer=_.useDepthBuffer,exports.useAspect=J.useAspect,exports.useCamera=Y.useCamera,exports.useDetectGPU=Z.useDetectGPU,exports.useHelper=$.useHelper,exports.Bvh=ee.Bvh,exports.useBVH=ee.useBVH,exports.useContextBridge=re.useContextBridge,exports.useAnimations=se.useAnimations,exports.useFBO=te.useFBO,exports.useIntersect=oe.useIntersect,exports.useBoxProjectedEnv=ie.useBoxProjectedEnv,exports.BBAnchor=ae.BBAnchor,exports.useTrailTexture=ue.useTrailTexture,exports.useCubeCamera=ce.useCubeCamera,exports.Example=ne.Example,exports.SpriteAnimator=je.SpriteAnimator,exports.FaceLandmarker=pe.FaceLandmarker,exports.FaceLandmarkerDefaults=pe.FaceLandmarkerDefaults,exports.useFaceLandmarker=pe.useFaceLandmarker,exports.CurveModifier=xe.CurveModifier,exports.MeshDistortMaterial=le.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=qe.MeshReflectorMaterial,exports.MeshRefractionMaterial=de.MeshRefractionMaterial,exports.MeshTransmissionMaterial=he.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Ce.MeshDiscardMaterial,exports.PointMaterial=Me.PointMaterial,exports.PointMaterialImpl=Me.PointMaterialImpl,exports.shaderMaterial=Se.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=Te.Box,exports.Capsule=Te.Capsule,exports.Circle=Te.Circle,exports.Cone=Te.Cone,exports.Cylinder=Te.Cylinder,exports.Dodecahedron=Te.Dodecahedron,exports.Extrude=Te.Extrude,exports.Icosahedron=Te.Icosahedron,exports.Lathe=Te.Lathe,exports.Octahedron=Te.Octahedron,exports.Plane=Te.Plane,exports.Polyhedron=Te.Polyhedron,exports.Ring=Te.Ring,exports.Shape=Te.Shape,exports.Sphere=Te.Sphere,exports.Tetrahedron=Te.Tetrahedron,exports.Torus=Te.Torus,exports.TorusKnot=Te.TorusKnot,exports.Tube=Te.Tube,exports.Facemesh=Pe.Facemesh,exports.FacemeshDatas=Pe.FacemeshDatas,exports.FacemeshEye=Pe.FacemeshEye,exports.FacemeshEyeDefaults=Pe.FacemeshEyeDefaults,exports.RoundedBox=be.RoundedBox,exports.ScreenQuad=Be.ScreenQuad,exports.Center=ge.Center,exports.Resize=ve.Resize,exports.Bounds=Fe.Bounds,exports.useBounds=Fe.useBounds,exports.CameraShake=Le.CameraShake,exports.Float=Ae.Float,exports.Stage=ke.Stage,exports.Backdrop=De.Backdrop,exports.Shadow=Ee.Shadow,exports.Caustics=Re.Caustics,exports.ContactShadows=Ge.ContactShadows,exports.AccumulativeShadows=we.AccumulativeShadows,exports.RandomizedLight=we.RandomizedLight,exports.accumulativeContext=we.accumulativeContext,exports.Reflector=ze.Reflector,exports.SpotLight=Oe.SpotLight,exports.SpotLightShadow=Oe.SpotLightShadow,exports.Environment=Ie.Environment,exports.EnvironmentCube=Ie.EnvironmentCube,exports.EnvironmentMap=Ie.EnvironmentMap,exports.EnvironmentPortal=Ie.EnvironmentPortal,exports.Lightformer=ye.Lightformer,exports.Sky=He.Sky,exports.calcPosFromAngles=He.calcPosFromAngles,exports.Stars=Ve.Stars,exports.Cloud=We.Cloud,exports.Sparkles=Qe.Sparkles,exports.useEnvironment=Xe.useEnvironment,exports.useMatcapTexture=Ke.useMatcapTexture,exports.useNormalTexture=Ne.useNormalTexture,exports.Wireframe=Ue.Wireframe,exports.Point=_e.Point,exports.Points=_e.Points,exports.PointsBuffer=_e.PointsBuffer,exports.PositionPoint=_e.PositionPoint,exports.Instance=Je.Instance,exports.Instances=Je.Instances,exports.Merged=Je.Merged,exports.Segment=Ye.Segment,exports.SegmentObject=Ye.SegmentObject,exports.Segments=Ye.Segments,exports.Detailed=Ze.Detailed,exports.Preload=$e.Preload,exports.BakeShadows=er.BakeShadows,exports.meshBounds=rr.meshBounds,exports.AdaptiveDpr=sr.AdaptiveDpr,exports.AdaptiveEvents=tr.AdaptiveEvents,exports.PerformanceMonitor=or.PerformanceMonitor,exports.usePerformanceMonitor=or.usePerformanceMonitor,exports.RenderTexture=ir.RenderTexture,exports.Mask=ar.Mask,exports.useMask=ar.useMask,exports.Hud=ur.Hud,exports.MeshPortalMaterial=cr.MeshPortalMaterial;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),d=require("./Clone.cjs.js"),h=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),M=require("./Svg.cjs.js"),S=require("./Gltf.cjs.js"),f=require("./AsciiRenderer.cjs.js"),T=require("./OrthographicCamera.cjs.js"),P=require("./PerspectiveCamera.cjs.js"),b=require("./CubeCamera.cjs.js"),B=require("./DeviceOrientationControls.cjs.js"),g=require("./FlyControls.cjs.js"),v=require("./MapControls.cjs.js"),F=require("./OrbitControls.cjs.js"),L=require("./TrackballControls.cjs.js"),A=require("./ArcballControls.cjs.js"),k=require("./TransformControls.cjs.js"),D=require("./PointerLockControls.cjs.js"),E=require("./FirstPersonControls.cjs.js"),G=require("./CameraControls.cjs.js"),R=require("./FaceControls.cjs.js"),w=require("./GizmoHelper.cjs.js"),z=require("./GizmoViewcube.cjs.js"),O=require("./GizmoViewport.cjs.js"),y=require("./Grid.cjs.js"),I=require("./useCubeTexture.cjs.js"),H=require("./useFBX.cjs.js"),V=require("./useGLTF.cjs.js"),W=require("./useKTX2.cjs.js"),Q=require("./useProgress.cjs.js"),X=require("./useTexture.cjs.js"),K=require("./useVideoTexture.cjs.js"),N=require("./useFont.cjs.js"),U=require("./Stats.cjs.js"),_=require("./useDepthBuffer.cjs.js"),J=require("./useAspect.cjs.js"),Y=require("./useCamera.cjs.js"),Z=require("./useDetectGPU.cjs.js"),$=require("./useHelper.cjs.js"),ee=require("./useBVH.cjs.js"),re=require("./useContextBridge.cjs.js"),se=require("./useAnimations.cjs.js"),te=require("./useFBO.cjs.js"),oe=require("./useIntersect.cjs.js"),ie=require("./useBoxProjectedEnv.cjs.js"),ae=require("./BBAnchor.cjs.js"),ue=require("./useTrailTexture.cjs.js"),ce=require("./useCubeCamera.cjs.js"),ne=require("./Example.cjs.js"),je=require("./SpriteAnimator.cjs.js"),pe=require("./FaceLandmarker.cjs.js"),xe=require("./CurveModifier.cjs.js"),le=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),qe=require("./MeshReflectorMaterial.cjs.js"),de=require("./MeshRefractionMaterial.cjs.js"),he=require("./MeshTransmissionMaterial.cjs.js"),Ce=require("./MeshDiscardMaterial.cjs.js"),Me=require("./PointMaterial.cjs.js"),Se=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),Te=require("./shapes.cjs.js"),Pe=require("./Facemesh.cjs.js"),be=require("./RoundedBox.cjs.js"),Be=require("./ScreenQuad.cjs.js"),ge=require("./Center.cjs.js"),ve=require("./Resize.cjs.js"),Fe=require("./Bounds.cjs.js"),Le=require("./CameraShake.cjs.js"),Ae=require("./Float.cjs.js"),ke=require("./Stage.cjs.js"),De=require("./Backdrop.cjs.js"),Ee=require("./Shadow.cjs.js"),Ge=require("./Caustics.cjs.js"),Re=require("./ContactShadows.cjs.js"),we=require("./AccumulativeShadows.cjs.js"),ze=require("./Reflector.cjs.js"),Oe=require("./SpotLight.cjs.js"),ye=require("./Environment.cjs.js"),Ie=require("./Lightformer.cjs.js"),He=require("./Sky.cjs.js"),Ve=require("./Stars.cjs.js"),We=require("./Cloud.cjs.js"),Qe=require("./Sparkles.cjs.js"),Xe=require("./useEnvironment.cjs.js"),Ke=require("./useMatcapTexture.cjs.js"),Ne=require("./useNormalTexture.cjs.js"),Ue=require("./Wireframe.cjs.js"),_e=require("./Points.cjs.js"),Je=require("./Instances.cjs.js"),Ye=require("./Segments.cjs.js"),Ze=require("./Detailed.cjs.js"),$e=require("./Preload.cjs.js"),er=require("./BakeShadows.cjs.js"),rr=require("./meshBounds.cjs.js"),sr=require("./AdaptiveDpr.cjs.js"),tr=require("./AdaptiveEvents.cjs.js"),or=require("./PerformanceMonitor.cjs.js"),ir=require("./RenderTexture.cjs.js"),ar=require("./Mask.cjs.js"),ur=require("./Hud.cjs.js"),cr=require("./MeshPortalMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("camera-controls"),require("maath"),require("@mediapipe/tasks-vision"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../materials/WireframeMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=p.Image,exports.Edges=x.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=d.Clone,exports.MarchingCube=h.MarchingCube,exports.MarchingCubes=h.MarchingCubes,exports.MarchingPlane=h.MarchingPlane,exports.Decal=C.Decal,exports.Svg=M.Svg,exports.Gltf=S.Gltf,exports.AsciiRenderer=f.AsciiRenderer,exports.OrthographicCamera=T.OrthographicCamera,exports.PerspectiveCamera=P.PerspectiveCamera,exports.CubeCamera=b.CubeCamera,exports.DeviceOrientationControls=B.DeviceOrientationControls,exports.FlyControls=g.FlyControls,exports.MapControls=v.MapControls,exports.OrbitControls=F.OrbitControls,exports.TrackballControls=L.TrackballControls,exports.ArcballControls=A.ArcballControls,exports.TransformControls=k.TransformControls,exports.PointerLockControls=D.PointerLockControls,exports.FirstPersonControls=E.FirstPersonControls,exports.CameraControls=G.CameraControls,exports.FaceControls=R.FaceControls,exports.useFaceControls=R.useFaceControls,exports.GizmoHelper=w.GizmoHelper,exports.useGizmoContext=w.useGizmoContext,exports.GizmoViewcube=z.GizmoViewcube,exports.GizmoViewport=O.GizmoViewport,exports.Grid=y.Grid,exports.useCubeTexture=I.useCubeTexture,exports.useFBX=H.useFBX,exports.useGLTF=V.useGLTF,exports.useKTX2=W.useKTX2,exports.useProgress=Q.useProgress,exports.IsObject=X.IsObject,exports.useTexture=X.useTexture,exports.useVideoTexture=K.useVideoTexture,exports.useFont=N.useFont,exports.Stats=U.Stats,exports.useDepthBuffer=_.useDepthBuffer,exports.useAspect=J.useAspect,exports.useCamera=Y.useCamera,exports.useDetectGPU=Z.useDetectGPU,exports.useHelper=$.useHelper,exports.Bvh=ee.Bvh,exports.useBVH=ee.useBVH,exports.useContextBridge=re.useContextBridge,exports.useAnimations=se.useAnimations,exports.useFBO=te.useFBO,exports.useIntersect=oe.useIntersect,exports.useBoxProjectedEnv=ie.useBoxProjectedEnv,exports.BBAnchor=ae.BBAnchor,exports.useTrailTexture=ue.useTrailTexture,exports.useCubeCamera=ce.useCubeCamera,exports.Example=ne.Example,exports.SpriteAnimator=je.SpriteAnimator,exports.FaceLandmarker=pe.FaceLandmarker,exports.FaceLandmarkerDefaults=pe.FaceLandmarkerDefaults,exports.useFaceLandmarker=pe.useFaceLandmarker,exports.CurveModifier=xe.CurveModifier,exports.MeshDistortMaterial=le.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=qe.MeshReflectorMaterial,exports.MeshRefractionMaterial=de.MeshRefractionMaterial,exports.MeshTransmissionMaterial=he.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Ce.MeshDiscardMaterial,exports.PointMaterial=Me.PointMaterial,exports.PointMaterialImpl=Me.PointMaterialImpl,exports.shaderMaterial=Se.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=Te.Box,exports.Capsule=Te.Capsule,exports.Circle=Te.Circle,exports.Cone=Te.Cone,exports.Cylinder=Te.Cylinder,exports.Dodecahedron=Te.Dodecahedron,exports.Extrude=Te.Extrude,exports.Icosahedron=Te.Icosahedron,exports.Lathe=Te.Lathe,exports.Octahedron=Te.Octahedron,exports.Plane=Te.Plane,exports.Polyhedron=Te.Polyhedron,exports.Ring=Te.Ring,exports.Shape=Te.Shape,exports.Sphere=Te.Sphere,exports.Tetrahedron=Te.Tetrahedron,exports.Torus=Te.Torus,exports.TorusKnot=Te.TorusKnot,exports.Tube=Te.Tube,exports.Facemesh=Pe.Facemesh,exports.FacemeshDatas=Pe.FacemeshDatas,exports.FacemeshEye=Pe.FacemeshEye,exports.FacemeshEyeDefaults=Pe.FacemeshEyeDefaults,exports.RoundedBox=be.RoundedBox,exports.ScreenQuad=Be.ScreenQuad,exports.Center=ge.Center,exports.Resize=ve.Resize,exports.Bounds=Fe.Bounds,exports.useBounds=Fe.useBounds,exports.CameraShake=Le.CameraShake,exports.Float=Ae.Float,exports.Stage=ke.Stage,exports.Backdrop=De.Backdrop,exports.Shadow=Ee.Shadow,exports.Caustics=Ge.Caustics,exports.ContactShadows=Re.ContactShadows,exports.AccumulativeShadows=we.AccumulativeShadows,exports.RandomizedLight=we.RandomizedLight,exports.accumulativeContext=we.accumulativeContext,exports.Reflector=ze.Reflector,exports.SpotLight=Oe.SpotLight,exports.SpotLightShadow=Oe.SpotLightShadow,exports.Environment=ye.Environment,exports.EnvironmentCube=ye.EnvironmentCube,exports.EnvironmentMap=ye.EnvironmentMap,exports.EnvironmentPortal=ye.EnvironmentPortal,exports.Lightformer=Ie.Lightformer,exports.Sky=He.Sky,exports.calcPosFromAngles=He.calcPosFromAngles,exports.Stars=Ve.Stars,exports.Cloud=We.Cloud,exports.Sparkles=Qe.Sparkles,exports.useEnvironment=Xe.useEnvironment,exports.useMatcapTexture=Ke.useMatcapTexture,exports.useNormalTexture=Ne.useNormalTexture,exports.Wireframe=Ue.Wireframe,exports.Point=_e.Point,exports.Points=_e.Points,exports.PointsBuffer=_e.PointsBuffer,exports.PositionPoint=_e.PositionPoint,exports.Instance=Je.Instance,exports.Instances=Je.Instances,exports.Merged=Je.Merged,exports.Segment=Ye.Segment,exports.SegmentObject=Ye.SegmentObject,exports.Segments=Ye.Segments,exports.Detailed=Ze.Detailed,exports.Preload=$e.Preload,exports.BakeShadows=er.BakeShadows,exports.meshBounds=rr.meshBounds,exports.AdaptiveDpr=sr.AdaptiveDpr,exports.AdaptiveEvents=tr.AdaptiveEvents,exports.PerformanceMonitor=or.PerformanceMonitor,exports.usePerformanceMonitor=or.usePerformanceMonitor,exports.RenderTexture=ir.RenderTexture,exports.Mask=ar.Mask,exports.useMask=ar.useMask,exports.Hud=ur.Hud,exports.MeshPortalMaterial=cr.MeshPortalMaterial;
|
package/core/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { PositionalAudio } from './PositionalAudio.js';
|
|
|
8
8
|
export { Text } from './Text.js';
|
|
9
9
|
export { Text3D } from './Text3D.js';
|
|
10
10
|
export { Effects, isWebGL2Available } from './Effects.js';
|
|
11
|
-
export { GradientTexture } from './GradientTexture.js';
|
|
11
|
+
export { GradientTexture, GradientType } from './GradientTexture.js';
|
|
12
12
|
export { Image } from './Image.js';
|
|
13
13
|
export { Edges } from './Edges.js';
|
|
14
14
|
export { Trail, useTrail } from './Trail.js';
|