@react-three/drei 9.51.7 → 9.51.9
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 +2 -2
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -3
- package/core/GizmoHelper.js +17 -52
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewcube.js +2 -6
- package/core/GizmoViewport.cjs.js +1 -1
- package/core/GizmoViewport.js +1 -3
- package/core/Hud.cjs.js +1 -1
- package/core/Hud.js +6 -1
- package/core/MeshTransmissionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.d.ts +1 -1
- package/core/MeshTransmissionMaterial.js +2 -4
- package/index.cjs.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1490,13 +1490,13 @@ type MeshTransmissionMaterialProps = {
|
|
|
1490
1490
|
roughness?: number
|
|
1491
1491
|
/** RGB color shift, default: 0.3 */
|
|
1492
1492
|
rgbShift?: number
|
|
1493
|
-
/**
|
|
1493
|
+
/** Noise, default: 0.03 */
|
|
1494
1494
|
noise?: number
|
|
1495
1495
|
/** Color saturation, default: 1 */
|
|
1496
1496
|
saturation?: number
|
|
1497
1497
|
/** Color contrast, default: 1 */
|
|
1498
1498
|
contrast?: number
|
|
1499
|
-
/** Resolution of the local buffer, default:
|
|
1499
|
+
/** Resolution of the local buffer, default: 1024 */
|
|
1500
1500
|
resolution?: number
|
|
1501
1501
|
/** Refraction samples, default: 10 */
|
|
1502
1502
|
samples?: number
|
package/core/GizmoHelper.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("three"),n=require("./OrthographicCamera.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("three"),n=require("./OrthographicCamera.cjs.js"),o=require("./Hud.cjs.js");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 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)}require("@babel/runtime/helpers/extends"),require("react-merge-refs"),require("./useFBO.cjs.js");var i=u(e);const a=i.createContext({}),c=2*Math.PI,s=new t.Object3D,l=new t.Matrix4,[p,d]=[new t.Quaternion,new t.Quaternion],f=new t.Vector3,h=new t.Vector3;exports.GizmoHelper=({alignment:e="bottom-right",margin:u=[80,80],renderPriority:m=1,onUpdate:y,onTarget:g,children:b})=>{const j=r.useThree((e=>e.size)),w=r.useThree((e=>e.camera)),q=r.useThree((e=>e.controls)),v=r.useThree((e=>e.invalidate)),O=i.useRef(),x=i.useRef(null),P=i.useRef(!1),T=i.useRef(0),C=i.useRef(new t.Vector3(0,0,0)),R=i.useRef(new t.Vector3(0,0,0));i.useEffect((()=>{R.current.copy(w.up)}),[w]);const E=i.useCallback((e=>{P.current=!0,(q||g)&&(C.current=(null==q?void 0:q.target)||(null==g?void 0:g())),T.current=w.position.distanceTo(f),p.copy(w.quaternion),h.copy(e).multiplyScalar(T.current).add(f),s.lookAt(h),d.copy(s.quaternion),v()}),[q,w,g,v]);r.useFrame(((e,r)=>{if(x.current&&O.current){var t;if(P.current)if(p.angleTo(d)<.01)P.current=!1,"minPolarAngle"in q&&w.up.copy(R.current);else{const e=r*c;p.rotateTowards(d,e),w.position.set(0,0,1).applyQuaternion(p).multiplyScalar(T.current).add(C.current),w.up.set(0,1,0).applyQuaternion(p).normalize(),w.quaternion.copy(p),y?y():q&&q.update(),v()}l.copy(w.matrix).invert(),null==(t=O.current)||t.quaternion.setFromRotationMatrix(l)}}));const M=i.useMemo((()=>({tweenCamera:E})),[E]),[z,k]=u,Q=e.endsWith("-center")?0:e.endsWith("-left")?-j.width/2+z:j.width/2-z,V=e.startsWith("center-")?0:e.startsWith("top-")?j.height/2-k:-j.height/2+k;return i.createElement(o.Hud,{renderPriority:m},i.createElement(a.Provider,{value:M},i.createElement(n.OrthographicCamera,{makeDefault:!0,ref:x,position:[0,0,200]}),i.createElement("group",{ref:O,position:[Q,V,0]},b)))},exports.useGizmoContext=()=>i.useContext(a);
|
package/core/GizmoHelper.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Vector3 } from 'three';
|
|
2
2
|
declare type GizmoHelperContext = {
|
|
3
3
|
tweenCamera: (direction: Vector3) => void;
|
|
4
|
-
raycast: (raycaster: Raycaster, intersects: Intersection[]) => void;
|
|
5
4
|
};
|
|
6
5
|
export declare const useGizmoContext: () => GizmoHelperContext;
|
|
7
6
|
export declare type GizmoHelperProps = JSX.IntrinsicElements['group'] & {
|
|
@@ -12,5 +11,5 @@ export declare type GizmoHelperProps = JSX.IntrinsicElements['group'] & {
|
|
|
12
11
|
onUpdate?: () => void;
|
|
13
12
|
onTarget?: () => Vector3;
|
|
14
13
|
};
|
|
15
|
-
export declare const GizmoHelper: ({ alignment, margin, renderPriority,
|
|
14
|
+
export declare const GizmoHelper: ({ alignment, margin, renderPriority, onUpdate, onTarget, children, }: GizmoHelperProps) => any;
|
|
16
15
|
export {};
|
package/core/GizmoHelper.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { useThree, useFrame
|
|
3
|
-
import { Object3D, Matrix4, Quaternion, Vector3
|
|
2
|
+
import { useThree, useFrame } from '@react-three/fiber';
|
|
3
|
+
import { Object3D, Matrix4, Quaternion, Vector3 } from 'three';
|
|
4
4
|
import { OrthographicCamera } from './OrthographicCamera.js';
|
|
5
|
-
import {
|
|
5
|
+
import { Hud } from './Hud.js';
|
|
6
6
|
|
|
7
7
|
const Context = /*#__PURE__*/React.createContext({});
|
|
8
8
|
const useGizmoContext = () => {
|
|
@@ -23,35 +23,18 @@ const isOrbitControls = controls => {
|
|
|
23
23
|
const GizmoHelper = ({
|
|
24
24
|
alignment = 'bottom-right',
|
|
25
25
|
margin = [80, 80],
|
|
26
|
-
renderPriority =
|
|
27
|
-
autoClear = true,
|
|
26
|
+
renderPriority = 1,
|
|
28
27
|
onUpdate,
|
|
29
28
|
onTarget,
|
|
30
|
-
children
|
|
29
|
+
children
|
|
31
30
|
}) => {
|
|
32
|
-
const size = useThree(
|
|
33
|
-
|
|
34
|
-
}) => size);
|
|
35
|
-
const mainCamera = useThree(({
|
|
36
|
-
camera
|
|
37
|
-
}) => camera); // @ts-expect-error new in @react-three/fiber@7.0.5
|
|
31
|
+
const size = useThree(state => state.size);
|
|
32
|
+
const mainCamera = useThree(state => state.camera); // @ts-ignore
|
|
38
33
|
|
|
39
|
-
const defaultControls = useThree(
|
|
40
|
-
|
|
41
|
-
}) => controls);
|
|
42
|
-
const gl = useThree(({
|
|
43
|
-
gl
|
|
44
|
-
}) => gl);
|
|
45
|
-
const scene = useThree(({
|
|
46
|
-
scene
|
|
47
|
-
}) => scene);
|
|
48
|
-
const invalidate = useThree(({
|
|
49
|
-
invalidate
|
|
50
|
-
}) => invalidate);
|
|
51
|
-
const backgroundRef = React.useRef();
|
|
34
|
+
const defaultControls = useThree(state => state.controls);
|
|
35
|
+
const invalidate = useThree(state => state.invalidate);
|
|
52
36
|
const gizmoRef = React.useRef();
|
|
53
37
|
const virtualCam = React.useRef(null);
|
|
54
|
-
const [virtualScene] = React.useState(() => new Scene());
|
|
55
38
|
const animating = React.useRef(false);
|
|
56
39
|
const radius = React.useRef(0);
|
|
57
40
|
const focusPoint = React.useRef(new Vector3(0, 0, 0));
|
|
@@ -71,19 +54,6 @@ const GizmoHelper = ({
|
|
|
71
54
|
q2.copy(dummy.quaternion);
|
|
72
55
|
invalidate();
|
|
73
56
|
}, [defaultControls, mainCamera, onTarget, invalidate]);
|
|
74
|
-
React.useEffect(() => {
|
|
75
|
-
if (scene.background) {
|
|
76
|
-
//Interchange the actual scene background with the virtual scene
|
|
77
|
-
backgroundRef.current = scene.background;
|
|
78
|
-
scene.background = null;
|
|
79
|
-
virtualScene.background = backgroundRef.current;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return () => {
|
|
83
|
-
// reset on unmount
|
|
84
|
-
if (backgroundRef.current) scene.background = backgroundRef.current;
|
|
85
|
-
};
|
|
86
|
-
}, []);
|
|
87
57
|
useFrame((_, delta) => {
|
|
88
58
|
if (virtualCam.current && gizmoRef.current) {
|
|
89
59
|
var _gizmoRef$current;
|
|
@@ -113,33 +83,28 @@ const GizmoHelper = ({
|
|
|
113
83
|
|
|
114
84
|
|
|
115
85
|
matrix.copy(mainCamera.matrix).invert();
|
|
116
|
-
(_gizmoRef$current = gizmoRef.current) == null ? void 0 : _gizmoRef$current.quaternion.setFromRotationMatrix(matrix);
|
|
117
|
-
|
|
118
|
-
const oldClear = gl.autoClear;
|
|
119
|
-
if (autoClear) gl.autoClear = false;
|
|
120
|
-
gl.clearDepth();
|
|
121
|
-
gl.render(virtualScene, virtualCam.current);
|
|
122
|
-
gl.autoClear = oldClear;
|
|
86
|
+
(_gizmoRef$current = gizmoRef.current) == null ? void 0 : _gizmoRef$current.quaternion.setFromRotationMatrix(matrix);
|
|
123
87
|
}
|
|
124
|
-
}
|
|
125
|
-
const raycast = useCamera(virtualCam);
|
|
88
|
+
});
|
|
126
89
|
const gizmoHelperContext = React.useMemo(() => ({
|
|
127
|
-
tweenCamera
|
|
128
|
-
raycast
|
|
90
|
+
tweenCamera
|
|
129
91
|
}), [tweenCamera]); // Position gizmo component within scene
|
|
130
92
|
|
|
131
93
|
const [marginX, marginY] = margin;
|
|
132
94
|
const x = alignment.endsWith('-center') ? 0 : alignment.endsWith('-left') ? -size.width / 2 + marginX : size.width / 2 - marginX;
|
|
133
95
|
const y = alignment.startsWith('center-') ? 0 : alignment.startsWith('top-') ? size.height / 2 - marginY : -size.height / 2 + marginY;
|
|
134
|
-
return
|
|
96
|
+
return /*#__PURE__*/React.createElement(Hud, {
|
|
97
|
+
renderPriority: renderPriority
|
|
98
|
+
}, /*#__PURE__*/React.createElement(Context.Provider, {
|
|
135
99
|
value: gizmoHelperContext
|
|
136
100
|
}, /*#__PURE__*/React.createElement(OrthographicCamera, {
|
|
101
|
+
makeDefault: true,
|
|
137
102
|
ref: virtualCam,
|
|
138
103
|
position: [0, 0, 200]
|
|
139
104
|
}), /*#__PURE__*/React.createElement("group", {
|
|
140
105
|
ref: gizmoRef,
|
|
141
106
|
position: [x, y, 0]
|
|
142
|
-
},
|
|
107
|
+
}, children)));
|
|
143
108
|
};
|
|
144
109
|
|
|
145
110
|
export { GizmoHelper, useGizmoContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),n=require("three");function a(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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./Hud.cjs.js");var l=a(e),s=i(t);const c="#f0f0f0",u="#999",p="black",m="black",f=["Right","Left","Top","Bottom","Front","Back"],h=e=>new n.Vector3(...e).multiplyScalar(.38),d=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(h),g=[.25,.25,.25],y=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(h),b=y.map((e=>e.toArray().map((e=>0==e?.5:.25)))),x=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:a=f,color:i=c,hoverColor:l=u,textColor:h=p,strokeColor:d=m,opacity:g=1})=>{const y=r.useThree((e=>e.gl)),b=s.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.strokeStyle=d,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=h,r.fillText(a[t].toUpperCase(),64,76),new n.CanvasTexture(e)}),[t,a,o,i,h,d]);return s.createElement("meshLambertMaterial",{map:b,"map-encoding":y.outputEncoding,"map-anisotropy":y.capabilities.getMaxAnisotropy()||1,attach:`material-${t}`,color:e?l:"white",transparent:!0,opacity:g})},C=e=>{const{tweenCamera:t}=o.useGizmoContext(),[r,n]=s.useState(null);return s.createElement("mesh",{onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,o)=>s.createElement(x,l.default({key:o,index:o,hover:r===o},e)))),s.createElement("boxGeometry",null))},E=({onClick:e,dimensions:t,position:r,hoverColor:n=u})=>{const{tweenCamera:a}=o.useGizmoContext(),[i,l]=s.useState(!1);return s.createElement("mesh",{scale:1.01,position:r,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),a(r)})},s.createElement("meshBasicMaterial",{color:i?n:"white",transparent:!0,opacity:.6,visible:i}),s.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>s.createElement("group",{scale:[60,60,60]},s.createElement(C,e),y.map(((t,r)=>s.createElement(E,l.default({key:r,position:t,dimensions:b[r]},e)))),d.map(((t,r)=>s.createElement(E,l.default({key:r,position:t,dimensions:g},e)))),s.createElement("ambientLight",{intensity:.5}),s.createElement("pointLight",{position:[10,10,10],intensity:.5}));
|
package/core/GizmoViewcube.js
CHANGED
|
@@ -59,8 +59,7 @@ const FaceMaterial = ({
|
|
|
59
59
|
|
|
60
60
|
const FaceCube = props => {
|
|
61
61
|
const {
|
|
62
|
-
tweenCamera
|
|
63
|
-
raycast
|
|
62
|
+
tweenCamera
|
|
64
63
|
} = useGizmoContext();
|
|
65
64
|
const [hover, setHover] = React.useState(null);
|
|
66
65
|
|
|
@@ -80,7 +79,6 @@ const FaceCube = props => {
|
|
|
80
79
|
};
|
|
81
80
|
|
|
82
81
|
return /*#__PURE__*/React.createElement("mesh", {
|
|
83
|
-
raycast: raycast,
|
|
84
82
|
onPointerOut: handlePointerOut,
|
|
85
83
|
onPointerMove: handlePointerMove,
|
|
86
84
|
onClick: props.onClick || handleClick
|
|
@@ -98,8 +96,7 @@ const EdgeCube = ({
|
|
|
98
96
|
hoverColor = colors.hover
|
|
99
97
|
}) => {
|
|
100
98
|
const {
|
|
101
|
-
tweenCamera
|
|
102
|
-
raycast
|
|
99
|
+
tweenCamera
|
|
103
100
|
} = useGizmoContext();
|
|
104
101
|
const [hover, setHover] = React.useState(false);
|
|
105
102
|
|
|
@@ -121,7 +118,6 @@ const EdgeCube = ({
|
|
|
121
118
|
return /*#__PURE__*/React.createElement("mesh", {
|
|
122
119
|
scale: 1.01,
|
|
123
120
|
position: position,
|
|
124
|
-
raycast: raycast,
|
|
125
121
|
onPointerOver: handlePointerOver,
|
|
126
122
|
onPointerOut: handlePointerOut,
|
|
127
123
|
onClick: onClick || handleClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three"),o=require("./GizmoHelper.cjs.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three"),o=require("./GizmoHelper.cjs.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useFBO.cjs.js"),require("./Hud.cjs.js");var i=n(e),c=l(t);function s({scale:e=[.8,.05,.05],color:t,rotation:r}){return c.createElement("group",{rotation:r},c.createElement("mesh",{position:[.4,0,0]},c.createElement("boxGeometry",{args:e}),c.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function u({onClick:e,font:t,disabled:o,arcStyle:n,label:l,labelColor:s,axisHeadScale:u=1,...p}){const d=r.useThree((e=>e.gl)),f=c.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const r=e.getContext("2d");return r.beginPath(),r.arc(32,32,16,0,2*Math.PI),r.closePath(),r.fillStyle=n,r.fill(),l&&(r.font=t,r.textAlign="center",r.fillStyle=s,r.fillText(l,32,41)),new a.CanvasTexture(e)}),[n,l,s,t]),[m,b]=c.useState(!1),g=(l?1:.75)*(m?1.2:1)*u;return c.createElement("sprite",i.default({scale:g,onPointerOver:o?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:o?void 0:e||(e=>{e.stopPropagation(),b(!1)})},p),c.createElement("spriteMaterial",{map:f,"map-encoding":d.outputEncoding,"map-anisotropy":d.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:r,font:a="18px Inter var, Arial, sans-serif",axisColors:n=["#ff2060","#20df80","#2080ff"],axisHeadScale:l=1,axisScale:p,labels:d=["X","Y","Z"],labelColor:f="#000",onClick:m,...b})=>{const[g,E,h]=n,{tweenCamera:y}=o.useGizmoContext(),x={font:a,disabled:r,labelColor:f,onClick:m,axisHeadScale:l,onPointerDown:r?void 0:e=>{y(e.object.position),e.stopPropagation()}};return c.createElement("group",i.default({scale:40},b),c.createElement(s,{color:g,rotation:[0,0,0],scale:p}),c.createElement(s,{color:E,rotation:[0,0,Math.PI/2],scale:p}),c.createElement(s,{color:h,rotation:[0,-Math.PI/2,0],scale:p}),!t&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[1,0,0],label:d[0]},x)),c.createElement(u,i.default({arcStyle:E,position:[0,1,0],label:d[1]},x)),c.createElement(u,i.default({arcStyle:h,position:[0,0,1],label:d[2]},x)),!e&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[-1,0,0]},x)),c.createElement(u,i.default({arcStyle:E,position:[0,-1,0]},x)),c.createElement(u,i.default({arcStyle:h,position:[0,0,-1]},x)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
|
package/core/GizmoViewport.js
CHANGED
|
@@ -94,14 +94,12 @@ const GizmoViewport = ({
|
|
|
94
94
|
}) => {
|
|
95
95
|
const [colorX, colorY, colorZ] = axisColors;
|
|
96
96
|
const {
|
|
97
|
-
tweenCamera
|
|
98
|
-
raycast
|
|
97
|
+
tweenCamera
|
|
99
98
|
} = useGizmoContext();
|
|
100
99
|
const axisHeadProps = {
|
|
101
100
|
font,
|
|
102
101
|
disabled,
|
|
103
102
|
labelColor,
|
|
104
|
-
raycast,
|
|
105
103
|
onClick,
|
|
106
104
|
axisHeadScale,
|
|
107
105
|
onPointerDown: !disabled ? e => {
|
package/core/Hud.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 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(r);function c({defaultScene:e,defaultCamera:r,renderPriority:n=1}){const{gl:a,scene:c,camera:l}=t.useThree();return t.useFrame((()=>{1===n&&(a.autoClear=!0,a.render(e,r)),a.autoClear=!1,a.clearDepth(),a.render(c,l)}),n),u.createElement(u.Fragment,null)}exports.Hud=function({children:e,renderPriority:r=1}){const{scene:n,camera:l}=t.useThree(),[
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");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(r);function c({defaultScene:e,defaultCamera:r,renderPriority:n=1}){const{gl:a,scene:c,camera:l}=t.useThree();let o;return t.useFrame((()=>{o=a.autoClear,1===n&&(a.autoClear=!0,a.render(e,r)),a.autoClear=!1,a.clearDepth(),a.render(c,l),a.autoClear=o}),n),u.createElement(u.Fragment,null)}exports.Hud=function({children:e,renderPriority:r=1}){const{scene:n,camera:l}=t.useThree(),[o]=u.useState((()=>new a.Scene));return u.createElement(u.Fragment,null,t.createPortal(u.createElement(u.Fragment,null,e,u.createElement(c,{defaultScene:n,defaultCamera:l,renderPriority:r})),o,{events:{priority:r+1}}))};
|
package/core/Hud.js
CHANGED
|
@@ -12,7 +12,10 @@ function RenderHud({
|
|
|
12
12
|
scene,
|
|
13
13
|
camera
|
|
14
14
|
} = useThree();
|
|
15
|
+
let oldCLear;
|
|
15
16
|
useFrame(() => {
|
|
17
|
+
oldCLear = gl.autoClear;
|
|
18
|
+
|
|
16
19
|
if (renderPriority === 1) {
|
|
17
20
|
// Clear scene and render the default scene
|
|
18
21
|
gl.autoClear = true;
|
|
@@ -22,7 +25,9 @@ function RenderHud({
|
|
|
22
25
|
|
|
23
26
|
gl.autoClear = false;
|
|
24
27
|
gl.clearDepth();
|
|
25
|
-
gl.render(scene, camera);
|
|
28
|
+
gl.render(scene, camera); // Restore default
|
|
29
|
+
|
|
30
|
+
gl.autoClear = oldCLear;
|
|
26
31
|
}, renderPriority);
|
|
27
32
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
28
33
|
}
|
|
@@ -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"),
|
|
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"),o=require("./useFBO.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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 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 i=a(e),u=s(r),l=s(t);class f extends u.MeshPhysicalMaterial{constructor({samples:e=5,...r}={}){super(r),this.uniforms={refraction:{value:0},rgbShift:{value:.3},noise:{value:.03},saturation:{value:1},contrast:{value:1},buffer:{value:null},resolution:{value:new u.Vector2}},this.onBeforeCompile=r=>{r.uniforms={...r.uniforms,...this.uniforms},r.fragmentShader="uniform float rgbShift;\n uniform vec2 resolution;\n uniform vec3 refractionColor;\n uniform float refraction;\n uniform float noise;\n uniform float saturation;\n uniform float contrast;\n uniform sampler2D buffer;\n \n vec3 sat(vec3 rgb, float adjustment) {\n const vec3 W = vec3(0.2125, 0.7154, 0.0721);\n vec3 intensity = vec3(dot(rgb, W));\n return mix(intensity, rgb, adjustment);\n }\n"+r.fragmentShader,r.fragmentShader=r.fragmentShader.replace("#include <transmission_pars_fragment>",""),r.fragmentShader=r.fragmentShader.replace("#include <transmission_fragment>",""),r.fragmentShader=r.fragmentShader.replace("vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;",`vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec2 refractNormal = vNormal.xy * (1.0 - vNormal.z * 0.85);\n vec3 refractCol = vec3(0.0); \n float randomCoords = rand(uv);\n vec2 randomCoords2;\n float roughBlur = roughness * roughness;\n float slide;\n #pragma unroll_loop_start\n for (int i = 0; i < ${e}; i ++) {\n slide = float(UNROLLED_LOOP_INDEX) / float(${e}) * 0.1 + randomCoords * noise;\n randomCoords2 = vec2(rand(uv + randomCoords + 0.1 * float(UNROLLED_LOOP_INDEX)), rand(uv - randomCoords - 0.1 * float(UNROLLED_LOOP_INDEX))) - 0.5;\n randomCoords2 = normalize(randomCoords2) * sqrt(rand(uv + 0.12 * float(UNROLLED_LOOP_INDEX)));\n refractCol.r += texture2D(buffer, uv - refractNormal * (refraction + slide * 1.0) * rgbShift + randomCoords2 * roughBlur).r;\n refractCol.g += texture2D(buffer, uv - refractNormal * (refraction + slide * 2.0) * rgbShift + randomCoords2 * roughBlur).g;\n refractCol.b += texture2D(buffer, uv - refractNormal * (refraction + slide * 3.0) * rgbShift + randomCoords2 * roughBlur).b;\n refractCol = sat(refractCol, saturation);\n }\n #pragma unroll_loop_end\n refractCol /= float(${e});\n vec3 outgoingLight = (refractCol * totalDiffuse * contrast) + totalSpecular + totalEmissiveRadiance;`)},Object.keys(this.uniforms).forEach((e=>Object.defineProperty(this,e,{get:()=>this.uniforms[e].value,set:r=>this.uniforms[e].value=r})))}}const c=l.forwardRef((({buffer:e,samples:r=10,resolution:t=1024,background:a,...s},u)=>{n.extend({MeshTransmissionMaterial:f});const c=l.useRef(null),{size:d,viewport:m}=n.useThree(),g=o.useFBO(t),v=l.useMemo((()=>({samples:r})),[r]);let h,b,p;return n.useFrame((r=>{e||(p=c.current.__r3f.parent,p&&(b=p.visible,p.visible=!1,r.gl.setRenderTarget(g),h=r.scene.background,a&&(r.scene.background=a),r.gl.render(r.scene,r.camera),r.scene.background=h,r.gl.setRenderTarget(null),p.visible=b))})),l.useImperativeHandle(u,(()=>c.current),[]),l.createElement("meshTransmissionMaterial",i.default({args:[v],ref:c,buffer:e||g.texture,resolution:[d.width*m.dpr,d.height*m.dpr]},s))}));exports.MeshTransmissionMaterial=c;
|
|
@@ -8,7 +8,7 @@ declare type MeshTransmissionMaterialType = Omit<JSX.IntrinsicElements['meshPhys
|
|
|
8
8
|
noise?: number;
|
|
9
9
|
saturation?: number;
|
|
10
10
|
contrast?: number;
|
|
11
|
-
resolution?: ReactThreeFiber.Vector2
|
|
11
|
+
resolution?: ReactThreeFiber.Vector2;
|
|
12
12
|
buffer?: THREE.Texture;
|
|
13
13
|
args?: [{
|
|
14
14
|
samples: number;
|
|
@@ -90,7 +90,7 @@ class MeshTransmissionMaterialImpl extends THREE.MeshPhysicalMaterial {
|
|
|
90
90
|
const MeshTransmissionMaterial = /*#__PURE__*/React.forwardRef(({
|
|
91
91
|
buffer,
|
|
92
92
|
samples = 10,
|
|
93
|
-
resolution,
|
|
93
|
+
resolution = 1024,
|
|
94
94
|
background,
|
|
95
95
|
...props
|
|
96
96
|
}, fref) => {
|
|
@@ -102,9 +102,7 @@ const MeshTransmissionMaterial = /*#__PURE__*/React.forwardRef(({
|
|
|
102
102
|
size,
|
|
103
103
|
viewport
|
|
104
104
|
} = useThree();
|
|
105
|
-
const fbo = useFBO(resolution
|
|
106
|
-
samples: 0
|
|
107
|
-
});
|
|
105
|
+
const fbo = useFBO(resolution);
|
|
108
106
|
const config = React.useMemo(() => ({
|
|
109
107
|
samples
|
|
110
108
|
}), [samples]);
|