@react-three/drei 9.0.0-beta.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -26
- package/core/AdaptiveEvents.cjs.js +1 -1
- package/core/AdaptiveEvents.js +8 -3
- package/core/ArcballControls.cjs.js +1 -1
- package/core/ArcballControls.js +13 -25
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.d.ts +2 -1
- package/core/Bounds.js +25 -14
- package/core/Clone.cjs.js +1 -0
- package/core/Clone.d.ts +11 -0
- package/core/Clone.js +92 -0
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +3 -1
- package/core/Cloud.js +4 -1
- package/core/ComputedAttribute.cjs.js +1 -0
- package/core/ComputedAttribute.d.ts +9 -0
- package/core/ComputedAttribute.js +34 -0
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +3 -1
- package/core/ContactShadows.js +15 -2
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeCamera.js +6 -6
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/DeviceOrientationControls.d.ts +1 -1
- package/core/DeviceOrientationControls.js +2 -6
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.d.ts +3 -2
- package/core/Effects.js +2 -2
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +13 -3
- package/core/Environment.js +96 -33
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/FirstPersonControls.d.ts +4 -2
- package/core/FirstPersonControls.js +9 -8
- package/core/Float.cjs.js +1 -1
- package/core/Float.d.ts +1 -1
- package/core/Float.js +5 -4
- package/core/FlyControls.cjs.js +1 -1
- package/core/FlyControls.d.ts +1 -0
- package/core/FlyControls.js +10 -11
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoHelper.d.ts +2 -1
- package/core/GizmoHelper.js +31 -41
- package/core/Image.cjs.js +1 -1
- package/core/Image.d.ts +5 -3
- package/core/Image.js +6 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +1 -1
- package/core/Instances.js +5 -11
- package/core/Lightformer.cjs.js +1 -0
- package/core/Lightformer.d.ts +41 -0
- package/core/Lightformer.js +51 -0
- package/core/MapControls.cjs.js +1 -1
- package/core/MapControls.d.ts +2 -1
- package/core/MapControls.js +8 -11
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +1 -2
- package/core/MeshReflectorMaterial.js +4 -5
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrbitControls.js +18 -31
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointMaterial.d.ts +5 -8
- package/core/PointMaterial.js +16 -34
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/PointerLockControls.d.ts +3 -1
- package/core/PointerLockControls.js +43 -25
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +3 -3
- package/core/Points.js +11 -30
- package/core/PositionalAudio.d.ts +1 -1
- package/core/Reflector.d.ts +1 -1
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +21 -0
- package/core/Sampler.js +65 -0
- package/core/SpotLight.d.ts +1 -1
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.js +1 -2
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.js +3 -0
- package/core/Stats.cjs.js +1 -1
- package/core/Stats.js +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text.d.ts +2 -1
- package/core/Text.js +3 -2
- package/core/TrackballControls.cjs.js +1 -1
- package/core/TrackballControls.d.ts +1 -1
- package/core/TrackballControls.js +7 -5
- package/core/Trail.cjs.js +1 -0
- package/core/Trail.d.ts +21 -0
- package/core/Trail.js +160 -0
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/TransformControls.js +7 -13
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +6 -0
- package/core/index.js +9 -2
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +8 -0
- package/core/useBoxProjectedEnv.js +98 -0
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBO.d.ts +1 -1
- package/core/useFBO.js +22 -24
- package/core/useGLTF.d.ts +1 -1
- package/core/useHelper.d.ts +3 -1
- package/core/useMatcapTexture.cjs.js +1 -1
- package/core/useProgress.d.ts +1 -1
- package/index.cjs.js +1 -1
- package/index.js +7 -1
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/ConvolutionMaterial.js +2 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.d.ts +0 -3
- package/materials/MeshReflectorMaterial.js +8 -34
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/SpotLightMaterial.js +3 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +9 -2
- package/package.json +6 -5
- package/web/CycleRaycast.cjs.js +1 -1
- package/web/CycleRaycast.js +23 -20
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +16 -12
- package/web/Select.cjs.js +1 -1
- package/web/Select.js +9 -8
- package/web/index.cjs.js +1 -1
- package/web/index.js +9 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class n extends e.ShaderMaterial{constructor(n=new e.Vector2){super({uniforms:{inputBuffer:new e.Uniform(null),depthBuffer:new e.Uniform(null),resolution:new e.Uniform(new e.Vector2),texelSize:new e.Uniform(new e.Vector2),halfTexelSize:new e.Uniform(new e.Vector2),kernel:new e.Uniform(0),scale:new e.Uniform(1),cameraNear:new e.Uniform(0),cameraFar:new e.Uniform(1),minDepthThreshold:new e.Uniform(0),maxDepthThreshold:new e.Uniform(1),depthScale:new e.Uniform(0),depthToBlurRatioBias:new e.Uniform(.25)},fragmentShader:"#include <common>\n #include <dithering_pars_fragment> \n uniform sampler2D inputBuffer;\n uniform sampler2D depthBuffer;\n uniform float cameraNear;\n uniform float cameraFar;\n uniform float minDepthThreshold;\n uniform float maxDepthThreshold;\n uniform float depthScale;\n uniform float depthToBlurRatioBias;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n float depthFactor = 0.0;\n \n #ifdef USE_DEPTH\n vec4 depth = texture2D(depthBuffer, vUv);\n depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n depthFactor *= depthScale;\n depthFactor = max(0.0, min(1.0, depthFactor + 0.25));\n #endif\n \n vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));\n gl_FragColor = sum * 0.25 ;\n\n #include <dithering_fragment>\n }",vertexShader:"uniform vec2 texelSize;\n uniform vec2 halfTexelSize;\n uniform float kernel;\n uniform float scale;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n vec2 uv = position.xy * 0.5 + 0.5;\n vUv = uv;\n\n vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;\n vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\n vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\n vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\n vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\n\n gl_Position = vec4(position.xy, 1.0, 1.0);\n }",blending:e.NoBlending,depthWrite:!1,depthTest:!1}),this.toneMapped=!1,this.setTexelSize(n.x,n.y),this.kernel=new Float32Array([0,1,2,2,3])}setTexelSize(e,n){this.uniforms.texelSize.value.set(e,n),this.uniforms.halfTexelSize.value.set(e,n).multiplyScalar(.5)}setResolution(e){this.uniforms.resolution.value.copy(e)}}exports.ConvolutionMaterial=n;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class n extends e.ShaderMaterial{constructor(n=new e.Vector2){super({uniforms:{inputBuffer:new e.Uniform(null),depthBuffer:new e.Uniform(null),resolution:new e.Uniform(new e.Vector2),texelSize:new e.Uniform(new e.Vector2),halfTexelSize:new e.Uniform(new e.Vector2),kernel:new e.Uniform(0),scale:new e.Uniform(1),cameraNear:new e.Uniform(0),cameraFar:new e.Uniform(1),minDepthThreshold:new e.Uniform(0),maxDepthThreshold:new e.Uniform(1),depthScale:new e.Uniform(0),depthToBlurRatioBias:new e.Uniform(.25)},fragmentShader:"#include <common>\n #include <dithering_pars_fragment> \n uniform sampler2D inputBuffer;\n uniform sampler2D depthBuffer;\n uniform float cameraNear;\n uniform float cameraFar;\n uniform float minDepthThreshold;\n uniform float maxDepthThreshold;\n uniform float depthScale;\n uniform float depthToBlurRatioBias;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n float depthFactor = 0.0;\n \n #ifdef USE_DEPTH\n vec4 depth = texture2D(depthBuffer, vUv);\n depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n depthFactor *= depthScale;\n depthFactor = max(0.0, min(1.0, depthFactor + 0.25));\n #endif\n \n vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));\n gl_FragColor = sum * 0.25 ;\n\n #include <dithering_fragment>\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }",vertexShader:"uniform vec2 texelSize;\n uniform vec2 halfTexelSize;\n uniform float kernel;\n uniform float scale;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n vec2 uv = position.xy * 0.5 + 0.5;\n vUv = uv;\n\n vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;\n vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\n vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\n vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\n vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\n\n gl_Position = vec4(position.xy, 1.0, 1.0);\n }",blending:e.NoBlending,depthWrite:!1,depthTest:!1}),this.toneMapped=!1,this.setTexelSize(n.x,n.y),this.kernel=new Float32Array([0,1,2,2,3])}setTexelSize(e,n){this.uniforms.texelSize.value.set(e,n),this.uniforms.halfTexelSize.value.set(e,n).multiplyScalar(.5)}setResolution(e){this.uniforms.resolution.value.copy(e)}}exports.ConvolutionMaterial=n;
|
|
@@ -51,6 +51,8 @@ class ConvolutionMaterial extends ShaderMaterial {
|
|
|
51
51
|
gl_FragColor = sum * 0.25 ;
|
|
52
52
|
|
|
53
53
|
#include <dithering_fragment>
|
|
54
|
+
#include <tonemapping_fragment>
|
|
55
|
+
#include <encodings_fragment>
|
|
54
56
|
}`,
|
|
55
57
|
vertexShader: `uniform vec2 texelSize;
|
|
56
58
|
uniform vec2 halfTexelSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.MeshStandardMaterial{constructor(e={}){super(e),this.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.MeshStandardMaterial{constructor(e={}){super(e),this._tDepth={value:null},this._distortionMap={value:null},this._tDiffuse={value:null},this._tDiffuseBlur={value:null},this._textureMatrix={value:null},this._hasBlur={value:!1},this._mirror={value:0},this._mixBlur={value:0},this._blurStrength={value:.5},this._minDepthThreshold={value:.9},this._maxDepthThreshold={value:1},this._depthScale={value:0},this._depthToBlurRatioBias={value:.25},this._distortion={value:1},this._mixContrast={value:1},this.setValues(e)}onBeforeCompile(e){var t;null!=(t=e.defines)&&t.USE_UV||(e.defines.USE_UV=""),e.uniforms.hasBlur=this._hasBlur,e.uniforms.tDiffuse=this._tDiffuse,e.uniforms.tDepth=this._tDepth,e.uniforms.distortionMap=this._distortionMap,e.uniforms.tDiffuseBlur=this._tDiffuseBlur,e.uniforms.textureMatrix=this._textureMatrix,e.uniforms.mirror=this._mirror,e.uniforms.mixBlur=this._mixBlur,e.uniforms.mixStrength=this._blurStrength,e.uniforms.minDepthThreshold=this._minDepthThreshold,e.uniforms.maxDepthThreshold=this._maxDepthThreshold,e.uniforms.depthScale=this._depthScale,e.uniforms.depthToBlurRatioBias=this._depthToBlurRatioBias,e.uniforms.distortion=this._distortion,e.uniforms.mixContrast=this._mixContrast,e.vertexShader=`\n uniform mat4 textureMatrix;\n varying vec4 my_vUv;\n ${e.vertexShader}`,e.vertexShader=e.vertexShader.replace("#include <project_vertex>","#include <project_vertex>\n my_vUv = textureMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );"),e.fragmentShader=`\n uniform sampler2D tDiffuse;\n uniform sampler2D tDiffuseBlur;\n uniform sampler2D tDepth;\n uniform sampler2D distortionMap;\n uniform float distortion;\n uniform float cameraNear;\n\t\t\t uniform float cameraFar;\n uniform bool hasBlur;\n uniform float mixBlur;\n uniform float mirror;\n uniform float mixStrength;\n uniform float minDepthThreshold;\n uniform float maxDepthThreshold;\n uniform float mixContrast;\n uniform float depthScale;\n uniform float depthToBlurRatioBias;\n varying vec4 my_vUv;\n ${e.fragmentShader}`,e.fragmentShader=e.fragmentShader.replace("#include <emissivemap_fragment>","#include <emissivemap_fragment>\n\n float distortionFactor = 0.0;\n #ifdef USE_DISTORTION\n distortionFactor = texture2D(distortionMap, vUv).r * distortion;\n #endif\n\n vec4 new_vUv = my_vUv;\n new_vUv.x += distortionFactor;\n new_vUv.y += distortionFactor;\n\n vec4 base = texture2DProj(tDiffuse, new_vUv);\n vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);\n\n vec4 merge = base;\n\n #ifdef USE_NORMALMAP\n vec2 normal_uv = vec2(0.0);\n vec4 normalColor = texture2D(normalMap, vUv * normalScale);\n vec3 my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );\n vec3 coord = new_vUv.xyz / new_vUv.w;\n normal_uv = coord.xy + coord.z * my_normal.xz * 0.05;\n vec4 base_normal = texture2D(tDiffuse, normal_uv);\n vec4 blur_normal = texture2D(tDiffuseBlur, normal_uv);\n merge = base_normal;\n blur = blur_normal;\n #endif\n\n float depthFactor = 0.0001;\n float blurFactor = 0.0;\n\n #ifdef USE_DEPTH\n vec4 depth = texture2DProj(tDepth, new_vUv);\n depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n depthFactor *= depthScale;\n depthFactor = max(0.0001, min(1.0, depthFactor));\n\n #ifdef USE_BLUR\n blur = blur * min(1.0, depthFactor + depthToBlurRatioBias);\n merge = merge * min(1.0, depthFactor + 0.5);\n #else\n merge = merge * depthFactor;\n #endif\n\n #endif\n\n float reflectorRoughnessFactor = roughness;\n #ifdef USE_ROUGHNESSMAP\n vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );\n reflectorRoughnessFactor *= reflectorTexelRoughness.g;\n #endif\n\n #ifdef USE_BLUR\n blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);\n merge = mix(merge, blur, blurFactor);\n #endif\n\n vec4 newMerge = vec4(0.0, 0.0, 0.0, 1.0);\n newMerge.r = (merge.r - 0.5) * mixContrast + 0.5;\n newMerge.g = (merge.g - 0.5) * mixContrast + 0.5;\n newMerge.b = (merge.b - 0.5) * mixContrast + 0.5;\n\n diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);\n ")}get tDiffuse(){return this._tDiffuse.value}set tDiffuse(e){this._tDiffuse.value=e}get tDepth(){return this._tDepth.value}set tDepth(e){this._tDepth.value=e}get distortionMap(){return this._distortionMap.value}set distortionMap(e){this._distortionMap.value=e}get tDiffuseBlur(){return this._tDiffuseBlur.value}set tDiffuseBlur(e){this._tDiffuseBlur.value=e}get textureMatrix(){return this._textureMatrix.value}set textureMatrix(e){this._textureMatrix.value=e}get hasBlur(){return this._hasBlur.value}set hasBlur(e){this._hasBlur.value=e}get mirror(){return this._mirror.value}set mirror(e){this._mirror.value=e}get mixBlur(){return this._mixBlur.value}set mixBlur(e){this._mixBlur.value=e}get mixStrength(){return this._blurStrength.value}set mixStrength(e){this._blurStrength.value=e}get minDepthThreshold(){return this._minDepthThreshold.value}set minDepthThreshold(e){this._minDepthThreshold.value=e}get maxDepthThreshold(){return this._maxDepthThreshold.value}set maxDepthThreshold(e){this._maxDepthThreshold.value=e}get depthScale(){return this._depthScale.value}set depthScale(e){this._depthScale.value=e}get depthToBlurRatioBias(){return this._depthToBlurRatioBias.value}set depthToBlurRatioBias(e){this._depthToBlurRatioBias.value=e}get distortion(){return this._distortion.value}set distortion(e){this._distortion.value=e}get mixContrast(){return this._mixContrast.value}set mixContrast(e){this._mixContrast.value=e}}exports.MeshReflectorMaterial=t;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Matrix4, MeshStandardMaterial, Texture } from 'three';
|
|
2
2
|
export declare class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
3
|
-
private _debug;
|
|
4
3
|
private _tDepth;
|
|
5
4
|
private _distortionMap;
|
|
6
5
|
private _tDiffuse;
|
|
@@ -42,8 +41,6 @@ export declare class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
42
41
|
set maxDepthThreshold(v: number);
|
|
43
42
|
get depthScale(): number;
|
|
44
43
|
set depthScale(v: number);
|
|
45
|
-
get debug(): number;
|
|
46
|
-
set debug(v: number);
|
|
47
44
|
get depthToBlurRatioBias(): number;
|
|
48
45
|
set depthToBlurRatioBias(v: number);
|
|
49
46
|
get distortion(): number;
|
|
@@ -3,9 +3,6 @@ import { MeshStandardMaterial } from 'three';
|
|
|
3
3
|
class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
4
4
|
constructor(parameters = {}) {
|
|
5
5
|
super(parameters);
|
|
6
|
-
this._debug = {
|
|
7
|
-
value: 0
|
|
8
|
-
};
|
|
9
6
|
this._tDepth = {
|
|
10
7
|
value: null
|
|
11
8
|
};
|
|
@@ -61,7 +58,6 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
61
58
|
shader.defines.USE_UV = '';
|
|
62
59
|
}
|
|
63
60
|
|
|
64
|
-
shader.uniforms.debug = this._debug;
|
|
65
61
|
shader.uniforms.hasBlur = this._hasBlur;
|
|
66
62
|
shader.uniforms.tDiffuse = this._tDiffuse;
|
|
67
63
|
shader.uniforms.tDepth = this._tDepth;
|
|
@@ -79,13 +75,12 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
79
75
|
shader.uniforms.mixContrast = this._mixContrast;
|
|
80
76
|
shader.vertexShader = `
|
|
81
77
|
uniform mat4 textureMatrix;
|
|
82
|
-
varying vec4 my_vUv;
|
|
78
|
+
varying vec4 my_vUv;
|
|
83
79
|
${shader.vertexShader}`;
|
|
84
80
|
shader.vertexShader = shader.vertexShader.replace('#include <project_vertex>', `#include <project_vertex>
|
|
85
81
|
my_vUv = textureMatrix * vec4( position, 1.0 );
|
|
86
82
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );`);
|
|
87
83
|
shader.fragmentShader = `
|
|
88
|
-
uniform int debug;
|
|
89
84
|
uniform sampler2D tDiffuse;
|
|
90
85
|
uniform sampler2D tDiffuseBlur;
|
|
91
86
|
uniform sampler2D tDepth;
|
|
@@ -102,10 +97,10 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
102
97
|
uniform float mixContrast;
|
|
103
98
|
uniform float depthScale;
|
|
104
99
|
uniform float depthToBlurRatioBias;
|
|
105
|
-
varying vec4 my_vUv;
|
|
100
|
+
varying vec4 my_vUv;
|
|
106
101
|
${shader.fragmentShader}`;
|
|
107
102
|
shader.fragmentShader = shader.fragmentShader.replace('#include <emissivemap_fragment>', `#include <emissivemap_fragment>
|
|
108
|
-
|
|
103
|
+
|
|
109
104
|
float distortionFactor = 0.0;
|
|
110
105
|
#ifdef USE_DISTORTION
|
|
111
106
|
distortionFactor = texture2D(distortionMap, vUv).r * distortion;
|
|
@@ -117,9 +112,9 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
117
112
|
|
|
118
113
|
vec4 base = texture2DProj(tDiffuse, new_vUv);
|
|
119
114
|
vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);
|
|
120
|
-
|
|
115
|
+
|
|
121
116
|
vec4 merge = base;
|
|
122
|
-
|
|
117
|
+
|
|
123
118
|
#ifdef USE_NORMALMAP
|
|
124
119
|
vec2 normal_uv = vec2(0.0);
|
|
125
120
|
vec4 normalColor = texture2D(normalMap, vUv * normalScale);
|
|
@@ -147,7 +142,7 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
147
142
|
#else
|
|
148
143
|
merge = merge * depthFactor;
|
|
149
144
|
#endif
|
|
150
|
-
|
|
145
|
+
|
|
151
146
|
#endif
|
|
152
147
|
|
|
153
148
|
float reflectorRoughnessFactor = roughness;
|
|
@@ -155,7 +150,7 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
155
150
|
vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );
|
|
156
151
|
reflectorRoughnessFactor *= reflectorTexelRoughness.g;
|
|
157
152
|
#endif
|
|
158
|
-
|
|
153
|
+
|
|
159
154
|
#ifdef USE_BLUR
|
|
160
155
|
blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);
|
|
161
156
|
merge = mix(merge, blur, blurFactor);
|
|
@@ -166,20 +161,7 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
166
161
|
newMerge.g = (merge.g - 0.5) * mixContrast + 0.5;
|
|
167
162
|
newMerge.b = (merge.b - 0.5) * mixContrast + 0.5;
|
|
168
163
|
|
|
169
|
-
diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);
|
|
170
|
-
|
|
171
|
-
if (debug == 1) {
|
|
172
|
-
diffuseColor = vec4(vec3(depthFactor), 1.0);
|
|
173
|
-
}
|
|
174
|
-
if (debug == 2) {
|
|
175
|
-
diffuseColor = vec4(vec3(blurFactor), 1.0);
|
|
176
|
-
}
|
|
177
|
-
if (debug == 3) {
|
|
178
|
-
diffuseColor = texture2DProj(tDiffuse, new_vUv);
|
|
179
|
-
}
|
|
180
|
-
if (debug == 4) {
|
|
181
|
-
diffuseColor = texture2DProj(tDiffuseBlur, new_vUv);
|
|
182
|
-
}
|
|
164
|
+
diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);
|
|
183
165
|
`);
|
|
184
166
|
}
|
|
185
167
|
|
|
@@ -279,14 +261,6 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
279
261
|
this._depthScale.value = v;
|
|
280
262
|
}
|
|
281
263
|
|
|
282
|
-
get debug() {
|
|
283
|
-
return this._debug.value;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
set debug(v) {
|
|
287
|
-
this._debug.value = v;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
264
|
get depthToBlurRatioBias() {
|
|
291
265
|
return this._depthToBlurRatioBias.value;
|
|
292
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("three");class
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("three");class e extends n.ShaderMaterial{constructor(){super({uniforms:{depth:{value:null},opacity:{value:1},attenuation:{value:2.5},anglePower:{value:12},spotPosition:{value:new n.Vector3(0,0,0)},lightColor:{value:new n.Color("white")},cameraNear:{value:0},cameraFar:{value:1},resolution:{value:new n.Vector2(0,0)}},transparent:!0,depthWrite:!1,vertexShader:"\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n varying float vViewZ;\n varying float vIntensity;\n uniform vec3 spotPosition;\n uniform float attenuation; \n\n void main() {\n // compute intensity\n vNormal = normalize( normalMatrix * normal );\n vec4 worldPosition\t= modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n vec4 viewPosition = viewMatrix * worldPosition;\n vViewZ = viewPosition.z;\n float intensity\t= distance(worldPosition.xyz, spotPosition) / attenuation;\n intensity\t= 1.0 - clamp(intensity, 0.0, 1.0);\n vIntensity = intensity; \n // set gl_Position\n gl_Position\t= projectionMatrix * viewPosition;\n\n }",fragmentShader:"\n #include <packing>\n\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n uniform vec3 lightColor;\n uniform vec3 spotPosition;\n uniform float attenuation;\n uniform float anglePower;\n uniform sampler2D depth;\n uniform vec2 resolution;\n uniform float cameraNear;\n uniform float cameraFar;\n varying float vViewZ;\n varying float vIntensity;\n uniform float opacity;\n\n float readDepth( sampler2D depthSampler, vec2 coord ) {\n float fragCoordZ = texture2D( depthSampler, coord ).x;\n float viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\n return viewZ;\n }\n\n void main() {\n float d = 1.0;\n bool isSoft = resolution[0] > 0.0 && resolution[1] > 0.0;\n if (isSoft) {\n vec2 sUv = gl_FragCoord.xy / resolution;\n d = readDepth(depth, sUv);\n }\n float intensity = vIntensity;\n vec3 normal\t= vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n float angleIntensity\t= pow( dot(normal, vec3(0.0, 0.0, 1.0)), anglePower );\n intensity\t*= angleIntensity;\n // fades when z is close to sampled depth, meaning the cone is intersecting existing geometry\n if (isSoft) {\n intensity\t*= smoothstep(0., 1., vViewZ - d);\n }\n gl_FragColor = vec4(lightColor, intensity * opacity);\n\n #include <tonemapping_fragment>\n\t #include <encodings_fragment>\n }"})}}exports.SpotLightMaterial=e;
|
|
@@ -99,6 +99,9 @@ class SpotLightMaterial extends ShaderMaterial {
|
|
|
99
99
|
intensity *= smoothstep(0., 1., vViewZ - d);
|
|
100
100
|
}
|
|
101
101
|
gl_FragColor = vec4(lightColor, intensity * opacity);
|
|
102
|
+
|
|
103
|
+
#include <tonemapping_fragment>
|
|
104
|
+
#include <encodings_fragment>
|
|
102
105
|
}`
|
|
103
106
|
});
|
|
104
107
|
}
|
package/native/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/QuadraticBezierLine.cjs.js"),s=require("../core/CubicBezierLine.cjs.js"),o=require("../core/Line.cjs.js"),t=require("../core/PositionalAudio.cjs.js"),i=require("../core/Text.cjs.js"),c=require("../core/Effects.cjs.js"),u=require("../core/GradientTexture.cjs.js"),a=require("../core/Image.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/QuadraticBezierLine.cjs.js"),s=require("../core/CubicBezierLine.cjs.js"),o=require("../core/Line.cjs.js"),t=require("../core/PositionalAudio.cjs.js"),i=require("../core/Text.cjs.js"),c=require("../core/Effects.cjs.js"),u=require("../core/GradientTexture.cjs.js"),a=require("../core/Image.cjs.js"),n=require("../core/Edges.cjs.js"),j=require("../core/Trail.cjs.js"),p=require("../core/Sampler.cjs.js"),l=require("../core/ComputedAttribute.cjs.js"),x=require("../core/Clone.cjs.js"),q=require("../core/OrthographicCamera.cjs.js"),d=require("../core/PerspectiveCamera.cjs.js"),C=require("../core/CubeCamera.cjs.js"),m=require("../core/DeviceOrientationControls.cjs.js"),h=require("../core/FlyControls.cjs.js"),b=require("../core/MapControls.cjs.js"),B=require("../core/OrbitControls.cjs.js"),P=require("../core/TrackballControls.cjs.js"),S=require("../core/ArcballControls.cjs.js"),M=require("../core/TransformControls.cjs.js"),T=require("../core/PointerLockControls.cjs.js"),f=require("../core/FirstPersonControls.cjs.js"),g=require("../core/GizmoHelper.cjs.js"),v=require("../core/GizmoViewcube.cjs.js"),L=require("../core/GizmoViewport.cjs.js"),A=require("../core/useCubeTexture.cjs.js"),E=require("../core/useFBX.cjs.js"),G=require("../core/useGLTF.cjs.js"),k=require("../core/useProgress.cjs.js"),D=require("../core/useTexture.cjs.js"),F=require("../core/useKTX2.cjs.js"),w=require("../core/Stats.cjs.js"),z=require("../core/useDepthBuffer.cjs.js"),I=require("../core/useAspect.cjs.js"),O=require("../core/useCamera.cjs.js"),R=require("../core/useDetectGPU.cjs.js"),y=require("../core/useHelper.cjs.js"),H=require("../core/useBVH.cjs.js"),V=require("../core/useContextBridge.cjs.js"),Q=require("../core/useAnimations.cjs.js"),X=require("../core/useFBO.cjs.js"),K=require("../core/useIntersect.cjs.js"),W=require("../core/useBoxProjectedEnv.cjs.js"),N=require("../core/CurveModifier.cjs.js"),U=require("../core/MeshDistortMaterial.cjs.js"),_=require("../core/MeshWobbleMaterial.cjs.js"),J=require("../core/MeshReflectorMaterial.cjs.js"),Y=require("../core/PointMaterial.cjs.js"),Z=require("../core/shaderMaterial.cjs.js"),$=require("../core/softShadows.cjs.js"),ee=require("../core/shapes.cjs.js"),re=require("../core/RoundedBox.cjs.js"),se=require("../core/ScreenQuad.cjs.js"),oe=require("../core/Center.cjs.js"),te=require("../core/Bounds.cjs.js"),ie=require("../core/CameraShake.cjs.js"),ce=require("../core/Float.cjs.js"),ue=require("../core/Stage.cjs.js"),ae=require("../core/Backdrop.cjs.js"),ne=require("../core/Shadow.cjs.js"),je=require("../core/ContactShadows.cjs.js"),pe=require("../core/Reflector.cjs.js"),le=require("../core/SpotLight.cjs.js"),xe=require("../core/Environment.cjs.js"),qe=require("../core/Lightformer.cjs.js"),de=require("../core/Sky.cjs.js"),Ce=require("../core/Stars.cjs.js"),me=require("../core/Cloud.cjs.js"),he=require("../core/useMatcapTexture.cjs.js"),be=require("../core/useNormalTexture.cjs.js"),Be=require("../core/Points.cjs.js"),Pe=require("../core/Instances.cjs.js"),Se=require("../core/Segments.cjs.js"),Me=require("../core/Detailed.cjs.js"),Te=require("../core/Preload.cjs.js"),fe=require("../core/BakeShadows.cjs.js"),ge=require("../core/meshBounds.cjs.js"),ve=require("../core/AdaptiveDpr.cjs.js"),Le=require("../core/AdaptiveEvents.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("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("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=t.PositionalAudio,exports.Text=i.Text,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=u.GradientTexture,exports.Image=a.Image,exports.Edges=n.Edges,exports.Trail=j.Trail,exports.useTrail=j.useTrail,exports.Sampler=p.Sampler,exports.ComputedAttribute=l.ComputedAttribute,exports.Clone=x.Clone,exports.OrthographicCamera=q.OrthographicCamera,exports.PerspectiveCamera=d.PerspectiveCamera,exports.CubeCamera=C.CubeCamera,exports.DeviceOrientationControls=m.DeviceOrientationControls,exports.FlyControls=h.FlyControls,exports.MapControls=b.MapControls,exports.OrbitControls=B.OrbitControls,exports.TrackballControls=P.TrackballControls,exports.ArcballControls=S.ArcballControls,exports.TransformControls=M.TransformControls,exports.PointerLockControls=T.PointerLockControls,exports.FirstPersonControls=f.FirstPersonControls,exports.GizmoHelper=g.GizmoHelper,exports.useGizmoContext=g.useGizmoContext,exports.GizmoViewcube=v.GizmoViewcube,exports.GizmoViewport=L.GizmoViewport,exports.useCubeTexture=A.useCubeTexture,exports.useFBX=E.useFBX,exports.useGLTF=G.useGLTF,exports.useProgress=k.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.useKTX2=F.useKTX2,exports.Stats=w.Stats,exports.useDepthBuffer=z.useDepthBuffer,exports.useAspect=I.useAspect,exports.useCamera=O.useCamera,exports.useDetectGPU=R.useDetectGPU,exports.useHelper=y.useHelper,exports.useBVH=H.useBVH,exports.useContextBridge=V.useContextBridge,exports.useAnimations=Q.useAnimations,exports.useFBO=X.useFBO,exports.useIntersect=K.useIntersect,exports.useBoxProjectedEnv=W.useBoxProjectedEnv,exports.CurveModifier=N.CurveModifier,exports.MeshDistortMaterial=U.MeshDistortMaterial,exports.MeshWobbleMaterial=_.MeshWobbleMaterial,exports.MeshReflectorMaterial=J.MeshReflectorMaterial,exports.PointMaterial=Y.PointMaterial,exports.PointMaterialImpl=Y.PointMaterialImpl,exports.shaderMaterial=Z.shaderMaterial,exports.softShadows=$.softShadows,exports.Box=ee.Box,exports.Circle=ee.Circle,exports.Cone=ee.Cone,exports.Cylinder=ee.Cylinder,exports.Dodecahedron=ee.Dodecahedron,exports.Extrude=ee.Extrude,exports.Icosahedron=ee.Icosahedron,exports.Lathe=ee.Lathe,exports.Octahedron=ee.Octahedron,exports.Plane=ee.Plane,exports.Polyhedron=ee.Polyhedron,exports.Ring=ee.Ring,exports.Sphere=ee.Sphere,exports.Tetrahedron=ee.Tetrahedron,exports.Torus=ee.Torus,exports.TorusKnot=ee.TorusKnot,exports.Tube=ee.Tube,exports.RoundedBox=re.RoundedBox,exports.ScreenQuad=se.ScreenQuad,exports.Center=oe.Center,exports.Bounds=te.Bounds,exports.useBounds=te.useBounds,exports.CameraShake=ie.CameraShake,exports.Float=ce.Float,exports.Stage=ue.Stage,exports.Backdrop=ae.Backdrop,exports.Shadow=ne.Shadow,exports.ContactShadows=je.ContactShadows,exports.Reflector=pe.Reflector,exports.SpotLight=le.SpotLight,exports.Environment=xe.Environment,exports.EnvironmentCube=xe.EnvironmentCube,exports.EnvironmentMap=xe.EnvironmentMap,exports.EnvironmentPortal=xe.EnvironmentPortal,exports.Lightformer=qe.Lightformer,exports.Sky=de.Sky,exports.calcPosFromAngles=de.calcPosFromAngles,exports.Stars=Ce.Stars,exports.Cloud=me.Cloud,exports.useMatcapTexture=he.useMatcapTexture,exports.useNormalTexture=be.useNormalTexture,exports.Point=Be.Point,exports.Points=Be.Points,exports.PointsBuffer=Be.PointsBuffer,exports.Instance=Pe.Instance,exports.Instances=Pe.Instances,exports.Merged=Pe.Merged,exports.Segment=Se.Segment,exports.Segments=Se.Segments,exports.Detailed=Me.Detailed,exports.Preload=Te.Preload,exports.BakeShadows=fe.BakeShadows,exports.meshBounds=ge.meshBounds,exports.AdaptiveDpr=ve.AdaptiveDpr,exports.AdaptiveEvents=Le.AdaptiveEvents;
|
package/native/index.js
CHANGED
|
@@ -8,6 +8,10 @@ export { Effects, isWebGL2Available } from '../core/Effects.js';
|
|
|
8
8
|
export { GradientTexture } from '../core/GradientTexture.js';
|
|
9
9
|
export { Image } from '../core/Image.js';
|
|
10
10
|
export { Edges } from '../core/Edges.js';
|
|
11
|
+
export { Trail, useTrail } from '../core/Trail.js';
|
|
12
|
+
export { Sampler } from '../core/Sampler.js';
|
|
13
|
+
export { ComputedAttribute } from '../core/ComputedAttribute.js';
|
|
14
|
+
export { Clone } from '../core/Clone.js';
|
|
11
15
|
export { OrthographicCamera } from '../core/OrthographicCamera.js';
|
|
12
16
|
export { PerspectiveCamera } from '../core/PerspectiveCamera.js';
|
|
13
17
|
export { CubeCamera } from '../core/CubeCamera.js';
|
|
@@ -40,6 +44,7 @@ export { useContextBridge } from '../core/useContextBridge.js';
|
|
|
40
44
|
export { useAnimations } from '../core/useAnimations.js';
|
|
41
45
|
export { useFBO } from '../core/useFBO.js';
|
|
42
46
|
export { useIntersect } from '../core/useIntersect.js';
|
|
47
|
+
export { useBoxProjectedEnv } from '../core/useBoxProjectedEnv.js';
|
|
43
48
|
export { CurveModifier } from '../core/CurveModifier.js';
|
|
44
49
|
export { MeshDistortMaterial } from '../core/MeshDistortMaterial.js';
|
|
45
50
|
export { MeshWobbleMaterial } from '../core/MeshWobbleMaterial.js';
|
|
@@ -60,7 +65,8 @@ export { Shadow } from '../core/Shadow.js';
|
|
|
60
65
|
export { ContactShadows } from '../core/ContactShadows.js';
|
|
61
66
|
export { Reflector } from '../core/Reflector.js';
|
|
62
67
|
export { SpotLight } from '../core/SpotLight.js';
|
|
63
|
-
export { Environment } from '../core/Environment.js';
|
|
68
|
+
export { Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal } from '../core/Environment.js';
|
|
69
|
+
export { Lightformer } from '../core/Lightformer.js';
|
|
64
70
|
export { Sky, calcPosFromAngles } from '../core/Sky.js';
|
|
65
71
|
export { Stars } from '../core/Stars.js';
|
|
66
72
|
export { Cloud } from '../core/Cloud.js';
|
|
@@ -83,8 +89,9 @@ import 'three';
|
|
|
83
89
|
import 'three-stdlib';
|
|
84
90
|
import 'troika-three-text';
|
|
85
91
|
import 'suspend-react';
|
|
86
|
-
import '
|
|
92
|
+
import 'meshline';
|
|
87
93
|
import 'lodash.pick';
|
|
94
|
+
import 'lodash.omit';
|
|
88
95
|
import 'zustand';
|
|
89
96
|
import 'stats.js';
|
|
90
97
|
import '../helpers/useEffectfulState.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-three/drei",
|
|
3
|
-
"version": "9.0.0
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "useful add-ons for react-three-fiber",
|
|
6
6
|
"keywords": [
|
|
@@ -42,17 +42,18 @@
|
|
|
42
42
|
"@babel/runtime": "^7.11.2",
|
|
43
43
|
"@react-spring/three": "^9.3.1",
|
|
44
44
|
"@use-gesture/react": "^10.2.0",
|
|
45
|
-
"detect-gpu": "^
|
|
45
|
+
"detect-gpu": "^4.0.14",
|
|
46
46
|
"glsl-noise": "^0.0.0",
|
|
47
47
|
"lodash.omit": "^4.5.0",
|
|
48
48
|
"lodash.pick": "^4.4.0",
|
|
49
|
+
"meshline": "^2.0.4",
|
|
49
50
|
"react-composer": "^5.0.2",
|
|
50
51
|
"react-merge-refs": "^1.1.0",
|
|
51
52
|
"stats.js": "^0.17.0",
|
|
52
53
|
"suspend-react": "^0.0.8",
|
|
53
|
-
"three-mesh-bvh": "^0.5.
|
|
54
|
-
"three-stdlib": "^2.8.
|
|
55
|
-
"troika-three-text": "^0.
|
|
54
|
+
"three-mesh-bvh": "^0.5.7",
|
|
55
|
+
"three-stdlib": "^2.8.9",
|
|
56
|
+
"troika-three-text": "^0.46.3",
|
|
56
57
|
"utility-types": "^3.10.0",
|
|
57
58
|
"zustand": "^3.5.13"
|
|
58
59
|
},
|
package/web/CycleRaycast.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var r=n(e);exports.CycleRaycast=function({onChanged:e,portal:n,preventDefault:o=!0,scroll:l=!0,keyCode:u=9}){const c=r.useRef(0),d=t.useThree((e=>e.setEvents)),i=t.useThree((e=>e.get)),a=t.useThree((e=>e.gl));return r.useEffect((()=>{var t;let r,s=[];const v=i().events.filter,f=null!==(t=null==n?void 0:n.current)&&void 0!==t?t:a.domElement.parentNode,h=()=>f&&e&&e(s,Math.round(c.current)%s.length);d({filter:(e,t)=>{let n=[...e];n.length===s.length&&s.every((e=>n.map((e=>e.object.uuid)).includes(e.object.uuid)))||(c.current=0,s=n,h()),v&&(n=v(n,t));for(let e=0;e<Math.round(c.current)%n.length;e++){const e=n.shift();n=[...n,e]}return n}});const m=e=>{var t,n;c.current=e(c.current),null==(t=i().events.handlers)||t.onPointerCancel(void 0),null==(n=i().events.handlers)||n.onPointerMove(r),h()},p=e=>{(e.keyCode||e.which===u)&&(o&&e.preventDefault(),s.length>1&&m((e=>e+1)))},g=e=>{o&&e.preventDefault();let t=0;e||(e=window.event),e.wheelDelta?t=e.wheelDelta/120:e.detail&&(t=-e.detail/3),s.length>1&&m((e=>Math.abs(e-t)))},b=e=>r=e;return document.addEventListener("pointermove",b,{passive:!0}),l&&document.addEventListener("wheel",g),void 0!==u&&document.addEventListener("keydown",p),()=>{d({filter:v}),void 0!==u&&document.removeEventListener("keydown",p),l&&document.removeEventListener("wheel",g),document.removeEventListener("pointermove",b)}}),[a,i,d,o,l,u]),null};
|
package/web/CycleRaycast.js
CHANGED
|
@@ -9,7 +9,7 @@ function CycleRaycast({
|
|
|
9
9
|
keyCode = 9
|
|
10
10
|
}) {
|
|
11
11
|
const cycle = React.useRef(0);
|
|
12
|
-
const
|
|
12
|
+
const setEvents = useThree(state => state.setEvents);
|
|
13
13
|
const get = useThree(state => state.get);
|
|
14
14
|
const gl = useThree(state => state.gl);
|
|
15
15
|
React.useEffect(() => {
|
|
@@ -17,33 +17,34 @@ function CycleRaycast({
|
|
|
17
17
|
|
|
18
18
|
let hits = [];
|
|
19
19
|
let lastEvent = undefined;
|
|
20
|
-
const prev =
|
|
20
|
+
const prev = get().events.filter;
|
|
21
21
|
const target = (_portal$current = portal == null ? void 0 : portal.current) !== null && _portal$current !== void 0 ? _portal$current : gl.domElement.parentNode; // Render custom status
|
|
22
22
|
|
|
23
23
|
const renderStatus = () => target && onChanged && onChanged(hits, Math.round(cycle.current) % hits.length); // Overwrite the raycasters custom filter (this only exists in r3f)
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
setEvents({
|
|
27
|
+
filter: (intersections, state) => {
|
|
28
|
+
// Reset cycle when the intersections change
|
|
29
|
+
let clone = [...intersections];
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
if (clone.length !== hits.length || !hits.every(hit => clone.map(e => e.object.uuid).includes(hit.object.uuid))) {
|
|
32
|
+
cycle.current = 0;
|
|
33
|
+
hits = clone;
|
|
34
|
+
renderStatus();
|
|
35
|
+
} // Run custom filter if there is one
|
|
35
36
|
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
if (prev) clone = prev(clone, state); // Cycle through the actual raycast intersects
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return clone;
|
|
45
|
-
}; // Cycle, refresh events and render status
|
|
40
|
+
for (let i = 0; i < Math.round(cycle.current) % clone.length; i++) {
|
|
41
|
+
const first = clone.shift();
|
|
42
|
+
clone = [...clone, first];
|
|
43
|
+
}
|
|
46
44
|
|
|
45
|
+
return clone;
|
|
46
|
+
}
|
|
47
|
+
}); // Cycle, refresh events and render status
|
|
47
48
|
|
|
48
49
|
const refresh = fn => {
|
|
49
50
|
var _get$events$handlers, _get$events$handlers2;
|
|
@@ -82,12 +83,14 @@ function CycleRaycast({
|
|
|
82
83
|
if (keyCode !== undefined) document.addEventListener('keydown', tabEvent);
|
|
83
84
|
return () => {
|
|
84
85
|
// Clean up
|
|
85
|
-
|
|
86
|
+
setEvents({
|
|
87
|
+
filter: prev
|
|
88
|
+
});
|
|
86
89
|
if (keyCode !== undefined) document.removeEventListener('keydown', tabEvent);
|
|
87
90
|
if (scroll) document.removeEventListener('wheel', wheelEvent);
|
|
88
91
|
document.removeEventListener('pointermove', moveEvent);
|
|
89
92
|
};
|
|
90
|
-
}, [gl, get,
|
|
93
|
+
}, [gl, get, setEvents, preventDefault, scroll, keyCode]);
|
|
91
94
|
return null;
|
|
92
95
|
}
|
|
93
96
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),o=require("react-dom/client"),s=require("@react-three/fiber"),n=require("react-merge-refs");function l(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)}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),o=require("react-dom/client"),s=require("@react-three/fiber"),n=require("react-merge-refs");function l(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)}var a=l(e),c=i(t),f=i(r),u=i(o),d=l(n);const h=f.createContext(null);function p(){return f.useContext(h)}const m=f.forwardRef((({children:e},t)=>{const r=f.useRef(null),o=p(),{width:n,height:l}=s.useThree((e=>e.viewport));return s.useFrame((()=>{r.current.position.x=o.horizontal?-n*(o.pages-1)*o.offset:0,r.current.position.y=o.horizontal?0:l*(o.pages-1)*o.offset})),f.createElement("group",{ref:d.default([t,r])},e)})),v=f.forwardRef((({children:e,style:t,...r},o)=>{const n=p(),l=f.useRef(null),{width:i,height:c}=s.useThree((e=>e.size)),m=f.useContext(s.context),v=f.useMemo((()=>u.createRoot(n.fixed)),[n.fixed]);return s.useFrame((()=>{n.delta>n.eps&&(l.current.style.transform=`translate3d(${n.horizontal?-i*(n.pages-1)*n.offset:0}px,${n.horizontal?0:c*(n.pages-1)*-n.offset}px,0)`)})),v.render(f.createElement("div",a.default({ref:d.default([o,l]),style:{...t,position:"absolute",top:0,left:0,willChange:"transform"}},r),f.createElement(h.Provider,{value:n},f.createElement(s.context.Provider,{value:m},e)))),null})),y=f.forwardRef((({html:e,...t},r)=>{const o=e?v:m;return f.createElement(o,a.default({ref:r},t))}));exports.Scroll=y,exports.ScrollControls=function({eps:e=1e-5,enabled:t=!0,infinite:r,horizontal:o,pages:n=1,distance:l=1,damping:i=4,style:a={},children:u}){const{get:d,setEvents:p,gl:m,size:v,invalidate:y,events:g,raycaster:w}=s.useThree(),[x]=f.useState((()=>document.createElement("div"))),[E]=f.useState((()=>document.createElement("div"))),[b]=f.useState((()=>document.createElement("div"))),z=m.domElement.parentNode,L=f.useRef(0),C=f.useMemo((()=>{const t={el:x,eps:e,fill:E,fixed:b,horizontal:o,damping:i,offset:0,delta:0,scroll:L,pages:n,range(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset<o?0:this.offset>s?1:(this.offset-o)/(s-o)},curve(e,t,r=0){return Math.sin(this.range(e,t,r)*Math.PI)},visible(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset>=o&&this.offset<=s}};return t}),[e,i,o,n]);f.useEffect((()=>{x.style.position="absolute",x.style.width="100%",x.style.height="100%",x.style[o?"overflowX":"overflowY"]="auto",x.style[o?"overflowY":"overflowX"]="hidden",x.style.top="0px",x.style.left="0px";for(const e in a)x.style[e]=a[e];b.style.position="sticky",b.style.top="0px",b.style.left="0px",b.style.width="100%",b.style.height="100%",b.style.overflow="hidden",x.appendChild(b),E.style.height=o?"100%":n*l*100+"%",E.style.width=o?n*l*100+"%":"100%",E.style.pointerEvents="none",x.appendChild(E),z.appendChild(x),x[o?"scrollLeft":"scrollTop"]=1;const e=g.connected||m.domElement;requestAnimationFrame((()=>null==g.connect?void 0:g.connect(x)));const t=d().events.compute;return p({compute(e,t){const r=e.clientX-e.target.offsetLeft,o=e.clientX-e.target.offsetLeft;t.pointer.set(r/t.size.width*2-1,-o/t.size.height*2+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),()=>{z.removeChild(x),p({compute:t}),null==g.connect||g.connect(e)}}),[n,l,o,x,E,b,z]),f.useEffect((()=>{const e=v[o?"width":"height"],s=x[o?"scrollWidth":"scrollHeight"],n=s-e;let l=0,i=!0,a=!0;const c=()=>{if(t&&!a&&(y(),l=x[o?"scrollLeft":"scrollTop"],L.current=l/n,r)){if(!i)if(l>=n){const e=1-C.offset;x[o?"scrollLeft":"scrollTop"]=1,L.current=C.offset=-e,i=!0}else if(l<=0){const e=1+C.offset;x[o?"scrollLeft":"scrollTop"]=s,L.current=C.offset=e,i=!0}i&&setTimeout((()=>i=!1),40)}};x.addEventListener("scroll",c,{passive:!0}),requestAnimationFrame((()=>a=!1));const f=e=>x.scrollLeft+=e.deltaY/2;return o&&x.addEventListener("wheel",f,{passive:!0}),()=>{x.removeEventListener("scroll",c),o&&x.removeEventListener("wheel",f)}}),[x,v,r,C,y,o,t]);let M=0;return s.useFrame(((t,r)=>{C.offset=c.MathUtils.damp(M=C.offset,L.current,i,r),C.delta=c.MathUtils.damp(C.delta,Math.abs(M-C.offset),i,r),C.delta>e&&y()})),f.createElement(h.Provider,{value:C},u)},exports.useScroll=p;
|
package/web/ScrollControls.js
CHANGED
|
@@ -21,6 +21,8 @@ function ScrollControls({
|
|
|
21
21
|
children
|
|
22
22
|
}) {
|
|
23
23
|
const {
|
|
24
|
+
get,
|
|
25
|
+
setEvents,
|
|
24
26
|
gl,
|
|
25
27
|
size,
|
|
26
28
|
invalidate,
|
|
@@ -94,21 +96,23 @@ function ScrollControls({
|
|
|
94
96
|
target.appendChild(el); // Init scroll one pixel in to allow upward/leftward scroll
|
|
95
97
|
|
|
96
98
|
el[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;
|
|
97
|
-
const oldTarget =
|
|
99
|
+
const oldTarget = events.connected || gl.domElement;
|
|
98
100
|
requestAnimationFrame(() => events.connect == null ? void 0 : events.connect(el));
|
|
99
|
-
const oldCompute =
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
});
|
|
101
|
+
const oldCompute = get().events.compute;
|
|
102
|
+
setEvents({
|
|
103
|
+
compute(event, state) {
|
|
104
|
+
const offsetX = event.clientX - event.target.offsetLeft;
|
|
105
|
+
const offsetY = event.clientX - event.target.offsetLeft;
|
|
106
|
+
state.pointer.set(offsetX / state.size.width * 2 - 1, -(offsetY / state.size.height) * 2 + 1);
|
|
107
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
108
|
+
}
|
|
108
109
|
|
|
110
|
+
});
|
|
109
111
|
return () => {
|
|
110
112
|
target.removeChild(el);
|
|
111
|
-
|
|
113
|
+
setEvents({
|
|
114
|
+
compute: oldCompute
|
|
115
|
+
});
|
|
112
116
|
events.connect == null ? void 0 : events.connect(oldTarget);
|
|
113
117
|
};
|
|
114
118
|
}, [pages, distance, horizontal, el, fill, fixed, target]);
|
|
@@ -160,7 +164,7 @@ function ScrollControls({
|
|
|
160
164
|
el.removeEventListener('scroll', onScroll);
|
|
161
165
|
if (horizontal) el.removeEventListener('wheel', onWheel);
|
|
162
166
|
};
|
|
163
|
-
}, [el, size, infinite, state, invalidate, horizontal]);
|
|
167
|
+
}, [el, size, infinite, state, invalidate, horizontal, enabled]);
|
|
164
168
|
let last = 0;
|
|
165
169
|
useFrame((_, delta) => {
|
|
166
170
|
state.offset = THREE.MathUtils.damp(last = state.offset, scroll.current, damping, delta);
|
package/web/Select.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),n=require("three"),r=require("three-stdlib"),o=require("@react-three/fiber"),i=require("zustand/shallow");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),n=require("three"),r=require("three-stdlib"),o=require("@react-three/fiber"),i=require("zustand/shallow");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var c=l(e),u=s(t),a=s(n),d=l(i);const f=u.createContext([]);exports.Select=function({box:e,multiple:t,children:n,onChange:i,border:l="1px solid #55aaff",backgroundColor:s="rgba(75, 160, 255, 0.1)",filter:p=(e=>e),...v}){const{setEvents:b,camera:y,raycaster:h,gl:m,controls:x,size:E,get:g}=o.useThree(),[j,w]=u.useState(!1),[C,P]=u.useReducer(((e,{object:t,shift:n})=>void 0===t?[]:Array.isArray(t)?t:n?e.includes(t)?e.filter((e=>e!==t)):[t,...e]:e[0]===t?[]:[t]),[]);u.useEffect((()=>{null==i||i(C)}),[C]);const O=u.useCallback((e=>{e.stopPropagation(),P({object:p([e.object])[0],shift:t&&e.shiftKey})}),[]),M=u.useCallback((e=>!j&&P({})),[j]),k=u.useRef(null);return u.useEffect((()=>{if(!e||!t)return;const n=new r.SelectionBox(y,k.current),o=document.createElement("div");o.style.pointerEvents="none",o.style.border=l,o.style.backgroundColor=s,o.style.position="fixed";const i=new a.Vector2,c=new a.Vector2,u=new a.Vector2,f=g().events.enabled,v=null==x?void 0:x.enabled;let h=!1;function j(e,t){const{offsetX:n,offsetY:r}=e,{width:o,height:i}=E;t.set(n/o*2-1,-r/i*2+1)}function w(e){e.shiftKey&&(!function(e){var t;x&&(x.enabled=!1),b({enabled:!1}),h=!0,null==(t=m.domElement.parentElement)||t.appendChild(o),o.style.left=`${e.clientX}px`,o.style.top=`${e.clientY}px`,o.style.width="0px",o.style.height="0px",i.x=e.clientX,i.y=e.clientY}(e),j(e,n.startPoint))}let C=[];function O(e){if(h){!function(e){u.x=Math.max(i.x,e.clientX),u.y=Math.max(i.y,e.clientY),c.x=Math.min(i.x,e.clientX),c.y=Math.min(i.y,e.clientY),o.style.left=`${c.x}px`,o.style.top=`${c.y}px`,o.style.width=u.x-c.x+"px",o.style.height=u.y-c.y+"px"}(e),j(e,n.endPoint);const t=n.select().sort((e=>e.uuid)).filter((e=>e.isMesh));d.default(t,C)||(C=t,P({object:p(t)}))}}function M(e){var t;h&&h&&(x&&(x.enabled=v),b({enabled:f}),h=!1,null==(t=o.parentElement)||t.removeChild(o))}return document.addEventListener("pointerdown",w,{passive:!0}),document.addEventListener("pointermove",O,{passive:!0,capture:!0}),document.addEventListener("pointerup",M,{passive:!0}),()=>{document.removeEventListener("pointerdown",w),document.removeEventListener("pointermove",O),document.removeEventListener("pointerup",M)}}),[E,h,y,x,m]),u.createElement("group",c.default({ref:k,onClick:O,onPointerOver:()=>w(!0),onPointerOut:()=>w(!1),onPointerMissed:M},v),u.createElement(f.Provider,{value:C},n))},exports.useSelect=function(){return u.useContext(f)};
|
package/web/Select.js
CHANGED
|
@@ -17,6 +17,7 @@ function Select({
|
|
|
17
17
|
...props
|
|
18
18
|
}) {
|
|
19
19
|
const {
|
|
20
|
+
setEvents,
|
|
20
21
|
camera,
|
|
21
22
|
raycaster,
|
|
22
23
|
gl,
|
|
@@ -52,19 +53,15 @@ function Select({
|
|
|
52
53
|
const startPoint = new THREE.Vector2();
|
|
53
54
|
const pointTopLeft = new THREE.Vector2();
|
|
54
55
|
const pointBottomRight = new THREE.Vector2();
|
|
55
|
-
const oldRaycasterEnabled =
|
|
56
|
+
const oldRaycasterEnabled = get().events.enabled;
|
|
56
57
|
const oldControlsEnabled = controls == null ? void 0 : controls.enabled;
|
|
57
58
|
let isDown = false;
|
|
58
59
|
|
|
59
60
|
function prepareRay(event, vec) {
|
|
60
|
-
var _raycaster$computeOff;
|
|
61
|
-
|
|
62
|
-
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
63
|
-
// Events trigger outside of canvas when moved
|
|
64
61
|
const {
|
|
65
62
|
offsetX,
|
|
66
63
|
offsetY
|
|
67
|
-
} =
|
|
64
|
+
} = event;
|
|
68
65
|
const {
|
|
69
66
|
width,
|
|
70
67
|
height
|
|
@@ -76,7 +73,9 @@ function Select({
|
|
|
76
73
|
var _gl$domElement$parent;
|
|
77
74
|
|
|
78
75
|
if (controls) controls.enabled = false;
|
|
79
|
-
|
|
76
|
+
setEvents({
|
|
77
|
+
enabled: false
|
|
78
|
+
});
|
|
80
79
|
isDown = true;
|
|
81
80
|
(_gl$domElement$parent = gl.domElement.parentElement) == null ? void 0 : _gl$domElement$parent.appendChild(element);
|
|
82
81
|
element.style.left = `${event.clientX}px`;
|
|
@@ -103,7 +102,9 @@ function Select({
|
|
|
103
102
|
var _element$parentElemen;
|
|
104
103
|
|
|
105
104
|
if (controls) controls.enabled = oldControlsEnabled;
|
|
106
|
-
|
|
105
|
+
setEvents({
|
|
106
|
+
enabled: oldRaycasterEnabled
|
|
107
|
+
});
|
|
107
108
|
isDown = false;
|
|
108
109
|
(_element$parentElemen = element.parentElement) == null ? void 0 : _element$parentElemen.removeChild(element);
|
|
109
110
|
}
|