@react-three/drei 9.56.25 → 9.56.26

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("three"),e=require("../core/shaderMaterial.cjs.js"),n=require("three-mesh-bvh");function i(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return r[n]}})}})),e.default=r,Object.freeze(e)}var o=i(r);const t=e.shaderMaterial({envMap:null,bounces:3,ior:2.4,correctMips:!0,aberrationStrength:.01,fresnel:0,bvh:new n.MeshBVHUniformStruct,color:new o.Color("white"),resolution:new o.Vector2},"\n #ifndef USE_COLOR\n uniform vec3 color;\n #endif\n varying vec3 vWorldPosition; \n varying vec3 vNormal;\n varying mat4 projectionMatrixInv;\n varying mat4 viewMatrixInv;\n varying vec3 viewDirection;\n varying mat4 vInstanceMatrix;\n varying vec3 vColor;\n \n void main() { \n vec4 transformedNormal = vec4(normal, 0.0);\n vec4 transformedPosition = vec4(position, 1.0);\n #ifdef USE_INSTANCING\n vInstanceMatrix = instanceMatrix;\n transformedNormal = instanceMatrix * transformedNormal;\n transformedPosition = instanceMatrix * transformedPosition;\n #else\n vInstanceMatrix = mat4(1.0);\n #endif\n\n vColor = color;\n #ifdef USE_INSTANCING_COLOR\n vColor *= instanceColor.rgb;\n #endif\n \n projectionMatrixInv = inverse(projectionMatrix);\n viewMatrixInv = inverse(viewMatrix);\n\n vWorldPosition = (modelMatrix * transformedPosition).xyz;\n vNormal = normalize((viewMatrixInv * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);\n viewDirection = normalize(vWorldPosition - cameraPosition);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;\n }",`\n #define ENVMAP_TYPE_CUBE_UV\n precision highp isampler2D;\n precision highp usampler2D;\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n \n #ifdef ENVMAP_TYPE_CUBEM\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n uniform float bounces;\n ${n.shaderStructs}\n ${n.shaderIntersectFunction}\n uniform BVH bvh;\n uniform float ior;\n uniform bool correctMips;\n uniform vec2 resolution;\n uniform float fresnel;\n uniform mat4 modelMatrix;\n \n uniform float aberrationStrength;\n varying mat4 projectionMatrixInv;\n varying mat4 viewMatrixInv;\n varying vec3 viewDirection; \n varying mat4 vInstanceMatrix;\n varying vec3 vColor;\n \n float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {\n return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );\n }\n \n vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 normal, float ior, mat4 modelMatrixInverse) {\n vec3 rayOrigin = ro;\n vec3 rayDirection = rd;\n rayDirection = refract(rayDirection, normal, 1.0 / ior);\n rayOrigin = vWorldPosition + rayDirection * 0.001;\n rayOrigin = (modelMatrixInverse * vec4(rayOrigin, 1.0)).xyz;\n rayDirection = normalize((modelMatrixInverse * vec4(rayDirection, 0.0)).xyz);\n for(float i = 0.0; i < bounces; i++) {\n uvec4 faceIndices = uvec4( 0u );\n vec3 faceNormal = vec3( 0.0, 0.0, 1.0 );\n vec3 barycoord = vec3( 0.0 );\n float side = 1.0;\n float dist = 0.0;\n bvhIntersectFirstHit( bvh, rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist );\n vec3 hitPos = rayOrigin + rayDirection * max(dist - 0.001, 0.0); \n vec3 tempDir = refract(rayDirection, faceNormal, ior);\n if (length(tempDir) != 0.0) {\n rayDirection = tempDir;\n break;\n }\n rayDirection = reflect(rayDirection, faceNormal);\n rayOrigin = hitPos + rayDirection * 0.01;\n }\n rayDirection = normalize((modelMatrix * vec4(rayDirection, 0.0)).xyz);\n return rayDirection;\n }\n \n #include <common>\n #include <cube_uv_reflection_fragment>\n \n #ifdef ENVMAP_TYPE_CUBEM\n vec4 textureGradient(samplerCube envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n return textureGrad(envMap, rayDirection, dFdx(correctMips ? directionCamPerfect: rayDirection), dFdy(correctMips ? directionCamPerfect: rayDirection));\n }\n #else\n vec4 textureGradient(sampler2D envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n vec2 uvv = equirectUv( rayDirection );\n vec2 smoothUv = equirectUv( directionCamPerfect );\n return textureGrad(envMap, uvv, dFdx(correctMips ? smoothUv : uvv), dFdy(correctMips ? smoothUv : uvv));\n }\n #endif\n \n void main() {\n mat4 modelMatrixInverse = inverse(modelMatrix * vInstanceMatrix);\n vec2 uv = gl_FragCoord.xy / resolution;\n vec3 directionCamPerfect = (projectionMatrixInv * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;\n directionCamPerfect = (viewMatrixInv * vec4(directionCamPerfect, 0.0)).xyz;\n directionCamPerfect = normalize(directionCamPerfect);\n vec3 normal = vNormal;\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vWorldPosition - cameraPosition);\n vec3 finalColor;\n #ifdef CHROMATIC_ABERRATIONS\n vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), modelMatrixInverse);\n #ifdef FAST_CHROMA \n vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));\n vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));\n #else\n vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), modelMatrixInverse);\n vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), modelMatrixInverse);\n #endif\n float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;\n float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;\n float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;\n finalColor = vec3(finalColorR, finalColorG, finalColorB) * vColor;\n #else\n rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), modelMatrixInverse);\n finalColor = textureGradient(envMap, rayDirection, directionCamPerfect).rgb; \n finalColor *= vColor;\n #endif\n float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;\n gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0); \n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }`);exports.MeshRefractionMaterial=t;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("../core/shaderMaterial.cjs.js"),n=require("three-mesh-bvh");function i(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}var o=i(e);const t=r.shaderMaterial({envMap:null,bounces:3,ior:2.4,correctMips:!0,aberrationStrength:.01,fresnel:0,bvh:new n.MeshBVHUniformStruct,color:new o.Color("white"),resolution:new o.Vector2,viewMatrixInverse:new o.Matrix4,projectionMatrixInverse:new o.Matrix4},"\n uniform mat4 viewMatrixInverse;\n\n varying vec3 vWorldPosition; \n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #ifdef USE_INSTANCING_COLOR\n varying vec3 vInstanceColor;\n #endif\n\n void main() { \n vec4 transformedNormal = vec4(normal, 0.0);\n vec4 transformedPosition = vec4(position, 1.0);\n #ifdef USE_INSTANCING\n transformedNormal = instanceMatrix * transformedNormal;\n transformedPosition = instanceMatrix * transformedPosition;\n #endif\n\n #ifdef USE_INSTANCING\n vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);\n #else\n vModelMatrixInverse = inverse(modelMatrix);\n #endif\n\n #ifdef USE_INSTANCING_COLOR\n vInstanceColor = instanceColor.rgb;\n #endif\n\n vWorldPosition = (modelMatrix * transformedPosition).xyz;\n vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;\n }",`\n #define ENVMAP_TYPE_CUBE_UV\n precision highp isampler2D;\n precision highp usampler2D;\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #ifdef USE_INSTANCING_COLOR\n varying vec3 vInstanceColor;\n #endif\n \n #ifdef ENVMAP_TYPE_CUBEM\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n uniform float bounces;\n ${n.shaderStructs}\n ${n.shaderIntersectFunction}\n uniform BVH bvh;\n uniform float ior;\n uniform bool correctMips;\n uniform vec2 resolution;\n uniform float fresnel;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrixInverse;\n uniform mat4 viewMatrixInverse;\n uniform float aberrationStrength;\n uniform vec3 color;\n \n float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {\n return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );\n }\n \n vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 normal, float ior, mat4 modelMatrixInverse) {\n vec3 rayOrigin = ro;\n vec3 rayDirection = rd;\n rayDirection = refract(rayDirection, normal, 1.0 / ior);\n rayOrigin = vWorldPosition + rayDirection * 0.001;\n rayOrigin = (modelMatrixInverse * vec4(rayOrigin, 1.0)).xyz;\n rayDirection = normalize((modelMatrixInverse * vec4(rayDirection, 0.0)).xyz);\n for(float i = 0.0; i < bounces; i++) {\n uvec4 faceIndices = uvec4( 0u );\n vec3 faceNormal = vec3( 0.0, 0.0, 1.0 );\n vec3 barycoord = vec3( 0.0 );\n float side = 1.0;\n float dist = 0.0;\n bvhIntersectFirstHit( bvh, rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist );\n vec3 hitPos = rayOrigin + rayDirection * max(dist - 0.001, 0.0); \n vec3 tempDir = refract(rayDirection, faceNormal, ior);\n if (length(tempDir) != 0.0) {\n rayDirection = tempDir;\n break;\n }\n rayDirection = reflect(rayDirection, faceNormal);\n rayOrigin = hitPos + rayDirection * 0.01;\n }\n rayDirection = normalize((modelMatrix * vec4(rayDirection, 0.0)).xyz);\n return rayDirection;\n }\n \n #include <common>\n #include <cube_uv_reflection_fragment>\n \n #ifdef ENVMAP_TYPE_CUBEM\n vec4 textureGradient(samplerCube envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n return textureGrad(envMap, rayDirection, dFdx(correctMips ? directionCamPerfect: rayDirection), dFdy(correctMips ? directionCamPerfect: rayDirection));\n }\n #else\n vec4 textureGradient(sampler2D envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n vec2 uvv = equirectUv( rayDirection );\n vec2 smoothUv = equirectUv( directionCamPerfect );\n return textureGrad(envMap, uvv, dFdx(correctMips ? smoothUv : uvv), dFdy(correctMips ? smoothUv : uvv));\n }\n #endif\n \n void main() {\n vec2 uv = gl_FragCoord.xy / resolution;\n vec3 directionCamPerfect = (projectionMatrixInverse * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;\n directionCamPerfect = (viewMatrixInverse * vec4(directionCamPerfect, 0.0)).xyz;\n directionCamPerfect = normalize(directionCamPerfect);\n vec3 normal = vNormal;\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vWorldPosition - cameraPosition);\n vec3 finalColor;\n #ifdef CHROMATIC_ABERRATIONS\n vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n #ifdef FAST_CHROMA \n vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));\n vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));\n #else\n vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), vModelMatrixInverse);\n vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), vModelMatrixInverse);\n #endif\n float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;\n float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;\n float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;\n finalColor = vec3(finalColorR, finalColorG, finalColorB);\n #else\n rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n finalColor = textureGradient(envMap, rayDirection, directionCamPerfect).rgb; \n #endif\n\n finalColor *= color;\n #ifdef USE_INSTANCING_COLOR\n finalColor *= vInstanceColor;\n #endif\n\n vec3 viewDirection = normalize(vWorldPosition - cameraPosition);\n float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;\n gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0); \n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }`);exports.MeshRefractionMaterial=t;
@@ -12,43 +12,42 @@ const MeshRefractionMaterial = shaderMaterial({
12
12
  fresnel: 0,
13
13
  bvh: new MeshBVHUniformStruct(),
14
14
  color: new THREE.Color('white'),
15
- resolution: new THREE.Vector2()
15
+ resolution: new THREE.Vector2(),
16
+ viewMatrixInverse: new THREE.Matrix4(),
17
+ projectionMatrixInverse: new THREE.Matrix4()
16
18
  },
17
19
  /*glsl*/
18
20
  `
19
- #ifndef USE_COLOR
20
- uniform vec3 color;
21
- #endif
21
+ uniform mat4 viewMatrixInverse;
22
+
22
23
  varying vec3 vWorldPosition;
23
24
  varying vec3 vNormal;
24
- varying mat4 projectionMatrixInv;
25
- varying mat4 viewMatrixInv;
26
- varying vec3 viewDirection;
27
- varying mat4 vInstanceMatrix;
28
- varying vec3 vColor;
29
-
25
+ varying mat4 vModelMatrixInverse;
26
+
27
+ #ifdef USE_INSTANCING_COLOR
28
+ varying vec3 vInstanceColor;
29
+ #endif
30
+
30
31
  void main() {
31
32
  vec4 transformedNormal = vec4(normal, 0.0);
32
33
  vec4 transformedPosition = vec4(position, 1.0);
33
34
  #ifdef USE_INSTANCING
34
- vInstanceMatrix = instanceMatrix;
35
35
  transformedNormal = instanceMatrix * transformedNormal;
36
36
  transformedPosition = instanceMatrix * transformedPosition;
37
+ #endif
38
+
39
+ #ifdef USE_INSTANCING
40
+ vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);
37
41
  #else
38
- vInstanceMatrix = mat4(1.0);
42
+ vModelMatrixInverse = inverse(modelMatrix);
39
43
  #endif
40
44
 
41
- vColor = color;
42
45
  #ifdef USE_INSTANCING_COLOR
43
- vColor *= instanceColor.rgb;
46
+ vInstanceColor = instanceColor.rgb;
44
47
  #endif
45
-
46
- projectionMatrixInv = inverse(projectionMatrix);
47
- viewMatrixInv = inverse(viewMatrix);
48
48
 
49
49
  vWorldPosition = (modelMatrix * transformedPosition).xyz;
50
- vNormal = normalize((viewMatrixInv * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);
51
- viewDirection = normalize(vWorldPosition - cameraPosition);
50
+ vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);
52
51
  gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;
53
52
  }`,
54
53
  /*glsl*/
@@ -58,6 +57,11 @@ const MeshRefractionMaterial = shaderMaterial({
58
57
  precision highp usampler2D;
59
58
  varying vec3 vWorldPosition;
60
59
  varying vec3 vNormal;
60
+ varying mat4 vModelMatrixInverse;
61
+
62
+ #ifdef USE_INSTANCING_COLOR
63
+ varying vec3 vInstanceColor;
64
+ #endif
61
65
 
62
66
  #ifdef ENVMAP_TYPE_CUBEM
63
67
  uniform samplerCube envMap;
@@ -74,13 +78,10 @@ const MeshRefractionMaterial = shaderMaterial({
74
78
  uniform vec2 resolution;
75
79
  uniform float fresnel;
76
80
  uniform mat4 modelMatrix;
77
-
81
+ uniform mat4 projectionMatrixInverse;
82
+ uniform mat4 viewMatrixInverse;
78
83
  uniform float aberrationStrength;
79
- varying mat4 projectionMatrixInv;
80
- varying mat4 viewMatrixInv;
81
- varying vec3 viewDirection;
82
- varying mat4 vInstanceMatrix;
83
- varying vec3 vColor;
84
+ uniform vec3 color;
84
85
 
85
86
  float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {
86
87
  return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );
@@ -129,33 +130,38 @@ const MeshRefractionMaterial = shaderMaterial({
129
130
  #endif
130
131
 
131
132
  void main() {
132
- mat4 modelMatrixInverse = inverse(modelMatrix * vInstanceMatrix);
133
133
  vec2 uv = gl_FragCoord.xy / resolution;
134
- vec3 directionCamPerfect = (projectionMatrixInv * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;
135
- directionCamPerfect = (viewMatrixInv * vec4(directionCamPerfect, 0.0)).xyz;
134
+ vec3 directionCamPerfect = (projectionMatrixInverse * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;
135
+ directionCamPerfect = (viewMatrixInverse * vec4(directionCamPerfect, 0.0)).xyz;
136
136
  directionCamPerfect = normalize(directionCamPerfect);
137
137
  vec3 normal = vNormal;
138
138
  vec3 rayOrigin = cameraPosition;
139
139
  vec3 rayDirection = normalize(vWorldPosition - cameraPosition);
140
140
  vec3 finalColor;
141
141
  #ifdef CHROMATIC_ABERRATIONS
142
- vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), modelMatrixInverse);
142
+ vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);
143
143
  #ifdef FAST_CHROMA
144
144
  vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));
145
145
  vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));
146
146
  #else
147
- vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), modelMatrixInverse);
148
- vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), modelMatrixInverse);
147
+ vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), vModelMatrixInverse);
148
+ vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), vModelMatrixInverse);
149
149
  #endif
150
150
  float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;
151
151
  float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;
152
152
  float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;
153
- finalColor = vec3(finalColorR, finalColorG, finalColorB) * vColor;
153
+ finalColor = vec3(finalColorR, finalColorG, finalColorB);
154
154
  #else
155
- rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), modelMatrixInverse);
155
+ rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);
156
156
  finalColor = textureGradient(envMap, rayDirection, directionCamPerfect).rgb;
157
- finalColor *= vColor;
158
157
  #endif
158
+
159
+ finalColor *= color;
160
+ #ifdef USE_INSTANCING_COLOR
161
+ finalColor *= vInstanceColor;
162
+ #endif
163
+
164
+ vec3 viewDirection = normalize(vWorldPosition - cameraPosition);
159
165
  float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;
160
166
  gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0);
161
167
  #include <tonemapping_fragment>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/drei",
3
- "version": "9.56.25",
3
+ "version": "9.56.26",
4
4
  "private": false,
5
5
  "description": "useful add-ons for react-three-fiber",
6
6
  "keywords": [