@react-three/fiber 10.0.0-canary.611635d → 10.0.0-canary.6eb9584

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/dist/index.cjs CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  const webgpu = require('three/webgpu');
4
4
  const three = require('three');
5
- const Inspector_js = require('three/addons/inspector/Inspector.js');
6
5
  const jsxRuntime = require('react/jsx-runtime');
7
6
  const React = require('react');
8
7
  const useMeasure = require('react-use-measure');
@@ -52,18 +51,22 @@ const Tb__default = /*#__PURE__*/_interopDefaultCompat(Tb);
52
51
 
53
52
  const R3F_BUILD_LEGACY = true;
54
53
  const R3F_BUILD_WEBGPU = true;
54
+ async function loadInspector() {
55
+ const { Inspector } = await import('three/addons/inspector/Inspector.js');
56
+ return Inspector;
57
+ }
55
58
 
56
59
  const THREE = /*#__PURE__*/_mergeNamespaces({
57
60
  __proto__: null,
58
61
  CubeRenderTarget: webgpu.CubeRenderTarget,
59
62
  CubeRenderTargetCompat: webgpu.CubeRenderTarget,
60
- Inspector: Inspector_js.Inspector,
61
63
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
62
64
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
63
65
  RenderTargetCompat: webgpu.RenderTarget,
64
66
  WebGLCubeRenderTarget: three.WebGLCubeRenderTarget,
65
67
  WebGLRenderTarget: three.WebGLRenderTarget,
66
- WebGLRenderer: three.WebGLRenderer
68
+ WebGLRenderer: three.WebGLRenderer,
69
+ loadInspector: loadInspector
67
70
  }, [webgpu__namespace]);
68
71
 
69
72
  const primaryRegistry = /* @__PURE__ */ new Map();
package/dist/index.d.cts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera } from 'three/webgpu';
3
4
  import * as THREE$1 from 'three';
@@ -47,6 +48,9 @@ function _mergeNamespaces(n, m) {
47
48
  declare const R3F_BUILD_LEGACY = true;
48
49
  declare const R3F_BUILD_WEBGPU = true;
49
50
 
51
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
52
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
53
+
50
54
  var THREE = /*#__PURE__*/_mergeNamespaces({
51
55
  __proto__: null,
52
56
  CubeRenderTarget: CubeRenderTarget,
@@ -58,7 +62,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
62
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
59
63
  WebGLRenderTarget: WebGLRenderTarget,
60
64
  WebGLRenderer: WebGLRenderer,
61
- WebGLRendererParameters: WebGLRendererParameters
65
+ WebGLRendererParameters: WebGLRendererParameters,
66
+ loadInspector: loadInspector
62
67
  }, [three_webgpu]);
63
68
 
64
69
  //* Utility Types ==============================
package/dist/index.d.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera } from 'three/webgpu';
3
4
  import * as THREE$1 from 'three';
@@ -47,6 +48,9 @@ function _mergeNamespaces(n, m) {
47
48
  declare const R3F_BUILD_LEGACY = true;
48
49
  declare const R3F_BUILD_WEBGPU = true;
49
50
 
51
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
52
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
53
+
50
54
  var THREE = /*#__PURE__*/_mergeNamespaces({
51
55
  __proto__: null,
52
56
  CubeRenderTarget: CubeRenderTarget,
@@ -58,7 +62,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
62
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
59
63
  WebGLRenderTarget: WebGLRenderTarget,
60
64
  WebGLRenderer: WebGLRenderer,
61
- WebGLRendererParameters: WebGLRendererParameters
65
+ WebGLRendererParameters: WebGLRendererParameters,
66
+ loadInspector: loadInspector
62
67
  }, [three_webgpu]);
63
68
 
64
69
  //* Utility Types ==============================
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera } from 'three/webgpu';
3
4
  import * as THREE$1 from 'three';
@@ -47,6 +48,9 @@ function _mergeNamespaces(n, m) {
47
48
  declare const R3F_BUILD_LEGACY = true;
48
49
  declare const R3F_BUILD_WEBGPU = true;
49
50
 
51
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
52
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
53
+
50
54
  var THREE = /*#__PURE__*/_mergeNamespaces({
51
55
  __proto__: null,
52
56
  CubeRenderTarget: CubeRenderTarget,
@@ -58,7 +62,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
62
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
59
63
  WebGLRenderTarget: WebGLRenderTarget,
60
64
  WebGLRenderer: WebGLRenderer,
61
- WebGLRendererParameters: WebGLRendererParameters
65
+ WebGLRendererParameters: WebGLRendererParameters,
66
+ loadInspector: loadInspector
62
67
  }, [three_webgpu]);
63
68
 
64
69
  //* Utility Types ==============================
package/dist/index.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import * as webgpu from 'three/webgpu';
2
2
  import { CubeRenderTarget, RenderTarget, Frustum, Matrix4, Group, BoxGeometry, MeshBasicNodeMaterial, Mesh, Node, NodeUpdateType, Layers, ShaderMaterial, Uniform, SRGBColorSpace, RGBAFormat, UnsignedByteType, Vector3, Vector2, TextureLoader, Texture as Texture$1, CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader, CanvasTarget, Raycaster, OrthographicCamera, PerspectiveCamera, Scene, PCFShadowMap, VSMShadowMap, BasicShadowMap, ACESFilmicToneMapping, WebGPURenderer, HalfFloatType, Color } from 'three/webgpu';
3
3
  import { WebGLCubeRenderTarget, WebGLRenderTarget, WebGLRenderer } from 'three';
4
- import { Inspector } from 'three/addons/inspector/Inspector.js';
5
4
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
6
5
  import * as React from 'react';
7
6
  import React__default, { useRef, useMemo, useLayoutEffect, useEffect, useContext, useImperativeHandle, useCallback, useState } from 'react';
@@ -32,18 +31,22 @@ function _mergeNamespaces(n, m) {
32
31
 
33
32
  const R3F_BUILD_LEGACY = true;
34
33
  const R3F_BUILD_WEBGPU = true;
34
+ async function loadInspector() {
35
+ const { Inspector } = await import('three/addons/inspector/Inspector.js');
36
+ return Inspector;
37
+ }
35
38
 
36
39
  const THREE = /*#__PURE__*/_mergeNamespaces({
37
40
  __proto__: null,
38
41
  CubeRenderTarget: CubeRenderTarget,
39
42
  CubeRenderTargetCompat: CubeRenderTarget,
40
- Inspector: Inspector,
41
43
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
42
44
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
43
45
  RenderTargetCompat: RenderTarget,
44
46
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
45
47
  WebGLRenderTarget: WebGLRenderTarget,
46
- WebGLRenderer: WebGLRenderer
48
+ WebGLRenderer: WebGLRenderer,
49
+ loadInspector: loadInspector
47
50
  }, [webgpu]);
48
51
 
49
52
  const primaryRegistry = /* @__PURE__ */ new Map();
package/dist/legacy.cjs CHANGED
@@ -50,11 +50,9 @@ const Tb__default = /*#__PURE__*/_interopDefaultCompat(Tb);
50
50
 
51
51
  const R3F_BUILD_LEGACY = true;
52
52
  const R3F_BUILD_WEBGPU = false;
53
- const Inspector = class Inspector2 {
54
- constructor() {
55
- throw new Error("Inspector is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
56
- }
57
- };
53
+ async function loadInspector() {
54
+ throw new Error("Inspector is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
55
+ }
58
56
  const WebGPURenderer = class WebGPURenderer2 {
59
57
  constructor() {
60
58
  throw new Error("WebGPURenderer is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
@@ -67,12 +65,12 @@ const THREE = /*#__PURE__*/_mergeNamespaces({
67
65
  __proto__: null,
68
66
  CubeRenderTarget: CubeRenderTarget,
69
67
  CubeRenderTargetCompat: three.WebGLCubeRenderTarget,
70
- Inspector: Inspector,
71
68
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
72
69
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
73
70
  RenderTarget: RenderTarget,
74
71
  RenderTargetCompat: three.WebGLRenderTarget,
75
- WebGPURenderer: WebGPURenderer
72
+ WebGPURenderer: WebGPURenderer,
73
+ loadInspector: loadInspector
76
74
  }, [three__namespace]);
77
75
 
78
76
  const primaryRegistry = /* @__PURE__ */ new Map();
package/dist/legacy.d.cts CHANGED
@@ -38,9 +38,9 @@ function _mergeNamespaces(n, m) {
38
38
  declare const R3F_BUILD_LEGACY = true;
39
39
  declare const R3F_BUILD_WEBGPU = false;
40
40
 
41
- declare const Inspector: {
42
- new (): {};
43
- };
41
+ type Inspector = never;
42
+ /** Not available on the legacy (WebGL-only) entry. */
43
+ declare function loadInspector(): Promise<never>;
44
44
  declare const WebGPURenderer: {
45
45
  new (): {};
46
46
  };
@@ -58,7 +58,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
58
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
59
59
  RenderTarget: RenderTarget,
60
60
  RenderTargetCompat: WebGLRenderTarget,
61
- WebGPURenderer: WebGPURenderer
61
+ WebGPURenderer: WebGPURenderer,
62
+ loadInspector: loadInspector
62
63
  }, [THREE$1]);
63
64
 
64
65
  //* Utility Types ==============================
package/dist/legacy.d.mts CHANGED
@@ -38,9 +38,9 @@ function _mergeNamespaces(n, m) {
38
38
  declare const R3F_BUILD_LEGACY = true;
39
39
  declare const R3F_BUILD_WEBGPU = false;
40
40
 
41
- declare const Inspector: {
42
- new (): {};
43
- };
41
+ type Inspector = never;
42
+ /** Not available on the legacy (WebGL-only) entry. */
43
+ declare function loadInspector(): Promise<never>;
44
44
  declare const WebGPURenderer: {
45
45
  new (): {};
46
46
  };
@@ -58,7 +58,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
58
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
59
59
  RenderTarget: RenderTarget,
60
60
  RenderTargetCompat: WebGLRenderTarget,
61
- WebGPURenderer: WebGPURenderer
61
+ WebGPURenderer: WebGPURenderer,
62
+ loadInspector: loadInspector
62
63
  }, [THREE$1]);
63
64
 
64
65
  //* Utility Types ==============================
package/dist/legacy.d.ts CHANGED
@@ -38,9 +38,9 @@ function _mergeNamespaces(n, m) {
38
38
  declare const R3F_BUILD_LEGACY = true;
39
39
  declare const R3F_BUILD_WEBGPU = false;
40
40
 
41
- declare const Inspector: {
42
- new (): {};
43
- };
41
+ type Inspector = never;
42
+ /** Not available on the legacy (WebGL-only) entry. */
43
+ declare function loadInspector(): Promise<never>;
44
44
  declare const WebGPURenderer: {
45
45
  new (): {};
46
46
  };
@@ -58,7 +58,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
58
58
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
59
59
  RenderTarget: RenderTarget,
60
60
  RenderTargetCompat: WebGLRenderTarget,
61
- WebGPURenderer: WebGPURenderer
61
+ WebGPURenderer: WebGPURenderer,
62
+ loadInspector: loadInspector
62
63
  }, [THREE$1]);
63
64
 
64
65
  //* Utility Types ==============================
package/dist/legacy.mjs CHANGED
@@ -30,11 +30,9 @@ function _mergeNamespaces(n, m) {
30
30
 
31
31
  const R3F_BUILD_LEGACY = true;
32
32
  const R3F_BUILD_WEBGPU = false;
33
- const Inspector = class Inspector2 {
34
- constructor() {
35
- throw new Error("Inspector is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
36
- }
37
- };
33
+ async function loadInspector() {
34
+ throw new Error("Inspector is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
35
+ }
38
36
  const WebGPURenderer = class WebGPURenderer2 {
39
37
  constructor() {
40
38
  throw new Error("WebGPURenderer is not available in legacy builds. Use @react-three/fiber/webgpu instead.");
@@ -47,12 +45,12 @@ const THREE = /*#__PURE__*/_mergeNamespaces({
47
45
  __proto__: null,
48
46
  CubeRenderTarget: CubeRenderTarget,
49
47
  CubeRenderTargetCompat: WebGLCubeRenderTarget,
50
- Inspector: Inspector,
51
48
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
52
49
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
53
50
  RenderTarget: RenderTarget,
54
51
  RenderTargetCompat: WebGLRenderTarget,
55
- WebGPURenderer: WebGPURenderer
52
+ WebGPURenderer: WebGPURenderer,
53
+ loadInspector: loadInspector
56
54
  }, [three]);
57
55
 
58
56
  const primaryRegistry = /* @__PURE__ */ new Map();
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  const webgpu = require('three/webgpu');
4
- const Inspector_js = require('three/addons/inspector/Inspector.js');
5
4
  const jsxRuntime = require('react/jsx-runtime');
6
5
  const React = require('react');
7
6
  const useMeasure = require('react-use-measure');
@@ -54,6 +53,10 @@ const Tb__default = /*#__PURE__*/_interopDefaultCompat(Tb);
54
53
 
55
54
  const R3F_BUILD_LEGACY = false;
56
55
  const R3F_BUILD_WEBGPU = true;
56
+ async function loadInspector() {
57
+ const { Inspector } = await import('three/addons/inspector/Inspector.js');
58
+ return Inspector;
59
+ }
57
60
  const WebGLRenderer = class WebGLRenderer2 {
58
61
  constructor() {
59
62
  throw new Error(
@@ -67,13 +70,13 @@ const WebGLCubeRenderTarget = null;
67
70
  const THREE = /*#__PURE__*/_mergeNamespaces({
68
71
  __proto__: null,
69
72
  CubeRenderTargetCompat: webgpu.CubeRenderTarget,
70
- Inspector: Inspector_js.Inspector,
71
73
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
72
74
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
73
75
  RenderTargetCompat: webgpu.RenderTarget,
74
76
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
75
77
  WebGLRenderTarget: WebGLRenderTarget,
76
- WebGLRenderer: WebGLRenderer
78
+ WebGLRenderer: WebGLRenderer,
79
+ loadInspector: loadInspector
77
80
  }, [webgpu__namespace]);
78
81
 
79
82
  const primaryRegistry = /* @__PURE__ */ new Map();
@@ -1158,7 +1161,7 @@ useLoader.clear = function(loader, input, cacheKey) {
1158
1161
  };
1159
1162
  useLoader.loader = getLoader$1;
1160
1163
 
1161
- function useFrame(callback, priorityOrOptions) {
1164
+ function useFrame$1(callback, priorityOrOptions) {
1162
1165
  const store = React__namespace.useContext(context);
1163
1166
  const isInsideCanvas = store !== null;
1164
1167
  const scheduler$1 = scheduler.getScheduler();
@@ -1326,7 +1329,7 @@ function buildFromCache(input, textureCache) {
1326
1329
  }
1327
1330
  }
1328
1331
  function useTexture(input, optionsOrOnLoad) {
1329
- const renderer = useThree((state) => state.internal.actualRenderer);
1332
+ const renderer = useThree$1((state) => state.internal.actualRenderer);
1330
1333
  const store = useStore();
1331
1334
  const options = typeof optionsOrOnLoad === "function" ? { onLoad: optionsOrOnLoad } : optionsOrOnLoad ?? {};
1332
1335
  const { onLoad, cache = true } = options;
@@ -1492,13 +1495,13 @@ function useTextures(selector) {
1492
1495
  };
1493
1496
  }, [store]);
1494
1497
  const subscribe = selector ? () => selector(registry) : (state) => state.textures;
1495
- const selected = useThree(subscribe);
1498
+ const selected = useThree$1(subscribe);
1496
1499
  return selector ? selected : registry;
1497
1500
  }
1498
1501
 
1499
1502
  function useRenderTarget(widthOrOptions, heightOrOptions, options) {
1500
- const isLegacy = useThree((s) => s.isLegacy);
1501
- const size = useThree((s) => s.size);
1503
+ const isLegacy = useThree$1((s) => s.isLegacy);
1504
+ const size = useThree$1((s) => s.size);
1502
1505
  let width;
1503
1506
  let height;
1504
1507
  let opts;
@@ -1555,7 +1558,7 @@ function useEnvironment({
1555
1558
  const { extension, isCubemap } = getExtension(files);
1556
1559
  const loader = getLoader(extension);
1557
1560
  if (!loader) throw new Error("useEnvironment: Unrecognized file extension: " + files);
1558
- const renderer = useThree((state) => state.renderer);
1561
+ const renderer = useThree$1((state) => state.renderer);
1559
1562
  React.useLayoutEffect(() => {
1560
1563
  if (extension !== "webp" && extension !== "jpg" && extension !== "jpeg") return;
1561
1564
  function clearGainmapTexture() {
@@ -1648,7 +1651,7 @@ function useStore() {
1648
1651
  if (!store) throw new Error("R3F: Hooks can only be used within the Canvas component!");
1649
1652
  return store;
1650
1653
  }
1651
- function useThree(selector = (state) => state, equalityFn) {
1654
+ function useThree$1(selector = (state) => state, equalityFn) {
1652
1655
  return useStore()(selector, equalityFn);
1653
1656
  }
1654
1657
  function useInstanceHandle(ref) {
@@ -14739,7 +14742,7 @@ function setEnvProps(background, scene, defaultScene, texture, sceneProps = {})
14739
14742
  };
14740
14743
  }
14741
14744
  function EnvironmentMap({ scene, background = false, map, ...config }) {
14742
- const defaultScene = useThree((state) => state.scene);
14745
+ const defaultScene = useThree$1((state) => state.scene);
14743
14746
  React__namespace.useLayoutEffect(() => {
14744
14747
  if (map) return setEnvProps(background, scene, defaultScene, map, config);
14745
14748
  });
@@ -14757,7 +14760,7 @@ function EnvironmentCube({
14757
14760
  ...rest
14758
14761
  }) {
14759
14762
  const texture = useEnvironment(rest);
14760
- const defaultScene = useThree((state) => state.scene);
14763
+ const defaultScene = useThree$1((state) => state.scene);
14761
14764
  React__namespace.useLayoutEffect(() => {
14762
14765
  return setEnvProps(background, scene, defaultScene, texture, {
14763
14766
  backgroundBlurriness: blur ?? backgroundBlurriness,
@@ -14794,9 +14797,9 @@ function EnvironmentPortal({
14794
14797
  preset = void 0,
14795
14798
  extensions
14796
14799
  }) {
14797
- const renderer = useThree((state) => state.renderer);
14798
- const isLegacy = useThree((state) => state.isLegacy);
14799
- const defaultScene = useThree((state) => state.scene);
14800
+ const renderer = useThree$1((state) => state.renderer);
14801
+ const isLegacy = useThree$1((state) => state.isLegacy);
14802
+ const defaultScene = useThree$1((state) => state.scene);
14800
14803
  const camera = React__namespace.useRef(null);
14801
14804
  const [virtualScene] = React__namespace.useState(() => new webgpu.Scene());
14802
14805
  const fbo = React__namespace.useMemo(() => {
@@ -14840,7 +14843,7 @@ function EnvironmentPortal({
14840
14843
  environmentRotation
14841
14844
  ]);
14842
14845
  let count = 1;
14843
- useFrame(() => {
14846
+ useFrame$1(() => {
14844
14847
  if (frames === Infinity || count < frames) {
14845
14848
  const autoClear = renderer.autoClear;
14846
14849
  renderer.autoClear = true;
@@ -14880,7 +14883,7 @@ function EnvironmentGround(props) {
14880
14883
  ] });
14881
14884
  }
14882
14885
  function EnvironmentColor({ color, scene }) {
14883
- const defaultScene = useThree((state) => state.scene);
14886
+ const defaultScene = useThree$1((state) => state.scene);
14884
14887
  React__namespace.useLayoutEffect(() => {
14885
14888
  if (color === void 0) return;
14886
14889
  const target = resolveScene(scene || defaultScene);
@@ -15474,6 +15477,11 @@ function createTextureOperations(set) {
15474
15477
  removeMultiple: (keys) => removeTextures(set, keys)
15475
15478
  };
15476
15479
  }
15480
+ function scopedNodeName(scope, name) {
15481
+ const raw = scope ? `${scope}_${name}` : name;
15482
+ const safe = raw.replace(/[^A-Za-z0-9_]/g, "_");
15483
+ return /^[A-Za-z_]/.test(safe) ? safe : `_${safe}`;
15484
+ }
15477
15485
  function extractTSLValue(value) {
15478
15486
  if (value === null || value === void 0) return value;
15479
15487
  if (typeof value !== "object") return value;
@@ -15672,8 +15680,7 @@ function createUniform(inName, node, scope) {
15672
15680
  const inValue = vectorize(node);
15673
15681
  const newUniform = tsl.uniform(inValue);
15674
15682
  if (typeof newUniform.setName === "function") {
15675
- const name = scope ? `${scope}_${inName}` : inName;
15676
- newUniform.setName(name);
15683
+ newUniform.setName(scopedNodeName(scope, inName));
15677
15684
  }
15678
15685
  return newUniform;
15679
15686
  }
@@ -15772,7 +15779,7 @@ function useNodes(creatorOrScope, scope) {
15772
15779
  return creatorOrScope(createLazyCreatorState(store.getState(), store));
15773
15780
  },
15774
15781
  prepare: (name, node) => {
15775
- node.setName?.(scope ? `${scope}.${name}` : name);
15782
+ node.setName?.(scopedNodeName(scope, name));
15776
15783
  return node;
15777
15784
  }
15778
15785
  });
@@ -15881,7 +15888,7 @@ function useBuffers(creatorOrScope, scope) {
15881
15888
  },
15882
15889
  prepare: (name, buffer) => {
15883
15890
  if ("setName" in buffer && typeof buffer.setName === "function") {
15884
- buffer.setName(scope ? `${scope}.${name}` : name);
15891
+ buffer.setName(scopedNodeName(scope, name));
15885
15892
  }
15886
15893
  return buffer;
15887
15894
  }
@@ -15952,7 +15959,7 @@ function useGPUStorage(creatorOrScope, scope) {
15952
15959
  return creatorOrScope(createLazyCreatorState(store.getState(), store));
15953
15960
  },
15954
15961
  prepare: (name, storage) => {
15955
- const label = scope ? `${scope}.${name}` : name;
15962
+ const label = scopedNodeName(scope, name);
15956
15963
  if ("setName" in storage && typeof storage.setName === "function") {
15957
15964
  storage.setName(label);
15958
15965
  }
@@ -15983,7 +15990,7 @@ function rebuildAllStorage(store, scope) {
15983
15990
 
15984
15991
  function useRenderPipeline(mainCB, setupCB) {
15985
15992
  const store = useStore();
15986
- const { scene, camera, renderer, isLegacy } = useThree();
15993
+ const { scene, camera, renderer, isLegacy } = useThree$1();
15987
15994
  const callbacksRanRef = React.useRef(false);
15988
15995
  const scenePassCacheRef = React.useRef(null);
15989
15996
  const mainCBRef = React.useRef(mainCB);
@@ -16061,8 +16068,8 @@ function useRenderPipeline(mainCB, setupCB) {
16061
16068
  console.warn("[useRenderPipeline] Setup failed; the render pipeline was not configured:", error);
16062
16069
  }
16063
16070
  }, [store, renderer, scene, camera, isLegacy, rebuildVersion]);
16064
- const passes = useThree((s) => s.passes);
16065
- const renderPipeline = useThree((s) => s.renderPipeline);
16071
+ const passes = useThree$1((s) => s.passes);
16072
+ const renderPipeline = useThree$1((s) => s.renderPipeline);
16066
16073
  return {
16067
16074
  passes,
16068
16075
  renderPipeline,
@@ -16075,6 +16082,8 @@ function useRenderPipeline(mainCB, setupCB) {
16075
16082
  }
16076
16083
 
16077
16084
  extend(THREE);
16085
+ const useThree = useThree$1;
16086
+ const useFrame = useFrame$1;
16078
16087
 
16079
16088
  exports.Scheduler = scheduler.Scheduler;
16080
16089
  exports.getScheduler = scheduler.getScheduler;
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera, WebGPURendererParameters } from 'three/webgpu';
3
4
  import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -40,6 +41,8 @@ function _mergeNamespaces(n, m) {
40
41
  declare const R3F_BUILD_LEGACY = false;
41
42
  declare const R3F_BUILD_WEBGPU = true;
42
43
 
44
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
45
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
43
46
  declare const WebGLRenderer: {
44
47
  new (): {};
45
48
  };
@@ -61,7 +64,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
61
64
  WebGLRenderTarget: WebGLRenderTarget,
62
65
  WebGLRenderer: WebGLRenderer,
63
66
  WebGLRendererParameters: WebGLRendererParameters,
64
- WebGLShadowMap: WebGLShadowMap
67
+ WebGLShadowMap: WebGLShadowMap,
68
+ loadInspector: loadInspector
65
69
  }, [three_webgpu]);
66
70
 
67
71
  //* Utility Types ==============================
@@ -1868,50 +1872,6 @@ declare namespace useLoader {
1868
1872
  var loader: typeof getLoader;
1869
1873
  }
1870
1874
 
1871
- /**
1872
- * Frame hook with phase-based ordering, priority, and FPS throttling.
1873
- *
1874
- * Always delivers full RootState — works both inside and outside Canvas context:
1875
- * - Inside Canvas: Full RootState (renderer, scene, camera, etc.)
1876
- * - Outside Canvas: The job registers immediately but the callback is held until a
1877
- * Canvas adopts it, then runs with full RootState. For hostless / standalone
1878
- * frame loops with no Canvas, use `@pmndrs/scheduler` directly.
1879
- *
1880
- * Returns a controls object for manual stepping, pausing, and resuming.
1881
- *
1882
- * @param callback - Function called each frame with (state, delta). Optional if you only need scheduler access.
1883
- * @param priorityOrOptions - Either a priority number (backwards compat) or options object
1884
- * @returns Controls object with step(), stepAll(), pause(), resume(), isPaused, id, scheduler
1885
- *
1886
- * @example
1887
- * // Simple priority (backwards compat)
1888
- * useFrame((state, delta) => { ... }, 5)
1889
- *
1890
- * @example
1891
- * // With phase-based ordering
1892
- * useFrame((state, delta) => { ... }, { phase: 'physics' })
1893
- *
1894
- * @example
1895
- * // Outside Canvas - callback waits for a Canvas, then always has full state
1896
- * function UI() {
1897
- * useFrame((state, delta) => { syncUI(state.camera) });
1898
- * return <button>...</button>;
1899
- * }
1900
- *
1901
- * @example
1902
- * // Hostless / standalone loop (no Canvas) - use @pmndrs/scheduler directly
1903
- * import { getScheduler } from '@pmndrs/scheduler'
1904
- * getScheduler().register((state, delta) => { updateGame(delta) })
1905
- *
1906
- * @example
1907
- * // Scheduler-only access (no callback)
1908
- * const { scheduler } = useFrame()
1909
- * scheduler.pauseJob('some-job-id')
1910
- *
1911
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe
1912
- */
1913
- declare function useFrame(callback?: FrameNextCallback, priorityOrOptions?: number | UseFrameNextOptions): FrameNextControls;
1914
-
1915
1875
  declare const IsObject: (url: unknown) => url is Record<string, string>;
1916
1876
  type TextureArray<T> = T extends string[] ? Texture$1[] : never;
1917
1877
  type TextureRecord<T> = T extends Record<string, string> ? {
@@ -2097,11 +2057,6 @@ declare function useRenderTarget(width: number, height: number, options?: Render
2097
2057
  * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usestore
2098
2058
  */
2099
2059
  declare function useStore(): RootStore;
2100
- /**
2101
- * Accesses R3F's internal state, containing renderer, canvas, scene, etc.
2102
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree
2103
- */
2104
- declare function useThree<T = RootState>(selector?: (state: RootState) => T, equalityFn?: <T>(state: T, newState: T) => boolean): T;
2105
2060
  /**
2106
2061
  * Exposes an object's {@link Instance}.
2107
2062
  * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle
@@ -4163,5 +4118,23 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4163
4118
  internal: WebGPUInternalState
4164
4119
  }
4165
4120
 
4121
+ /**
4122
+ * @fileoverview WebGPU entry point - WebGPU only, no legacy WebGL
4123
+ *
4124
+ * This entry point is for apps that want to use ONLY WebGPURenderer.
4125
+ * Includes WebGPU-specific hooks (useUniforms, useNodes, useTextures).
4126
+ * Auto-extends THREE with WebGPU node materials (MeshBasicNodeMaterial, etc.)
4127
+ *
4128
+ * Usage:
4129
+ * import { Canvas, useFrame, useUniforms } from '@react-three/fiber/webgpu'
4130
+ */
4131
+
4132
+ /** `useThree` narrowed to WebGPU state — `state.renderer` is a `WebGPURenderer`. */
4133
+ type UseThreeWebGPU = <T = WebGPURootState>(selector?: (state: WebGPURootState) => T, equalityFn?: <U>(state: U, newState: U) => boolean) => T;
4134
+ /** `useFrame` narrowed to WebGPU state — the callback's `state.renderer` is a `WebGPURenderer`. */
4135
+ type UseFrameWebGPU = (callback?: FrameCallback$1<WebGPURootState>, priorityOrOptions?: number | UseFrameNextOptions) => FrameNextControls;
4136
+ declare const useThree: UseThreeWebGPU;
4137
+ declare const useFrame: UseFrameWebGPU;
4138
+
4166
4139
  export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
4167
- export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4140
+ export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameWebGPU, UseTextureOptions, UseTexturesReturn, UseThreeWebGPU, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera, WebGPURendererParameters } from 'three/webgpu';
3
4
  import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -40,6 +41,8 @@ function _mergeNamespaces(n, m) {
40
41
  declare const R3F_BUILD_LEGACY = false;
41
42
  declare const R3F_BUILD_WEBGPU = true;
42
43
 
44
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
45
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
43
46
  declare const WebGLRenderer: {
44
47
  new (): {};
45
48
  };
@@ -61,7 +64,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
61
64
  WebGLRenderTarget: WebGLRenderTarget,
62
65
  WebGLRenderer: WebGLRenderer,
63
66
  WebGLRendererParameters: WebGLRendererParameters,
64
- WebGLShadowMap: WebGLShadowMap
67
+ WebGLShadowMap: WebGLShadowMap,
68
+ loadInspector: loadInspector
65
69
  }, [three_webgpu]);
66
70
 
67
71
  //* Utility Types ==============================
@@ -1868,50 +1872,6 @@ declare namespace useLoader {
1868
1872
  var loader: typeof getLoader;
1869
1873
  }
1870
1874
 
1871
- /**
1872
- * Frame hook with phase-based ordering, priority, and FPS throttling.
1873
- *
1874
- * Always delivers full RootState — works both inside and outside Canvas context:
1875
- * - Inside Canvas: Full RootState (renderer, scene, camera, etc.)
1876
- * - Outside Canvas: The job registers immediately but the callback is held until a
1877
- * Canvas adopts it, then runs with full RootState. For hostless / standalone
1878
- * frame loops with no Canvas, use `@pmndrs/scheduler` directly.
1879
- *
1880
- * Returns a controls object for manual stepping, pausing, and resuming.
1881
- *
1882
- * @param callback - Function called each frame with (state, delta). Optional if you only need scheduler access.
1883
- * @param priorityOrOptions - Either a priority number (backwards compat) or options object
1884
- * @returns Controls object with step(), stepAll(), pause(), resume(), isPaused, id, scheduler
1885
- *
1886
- * @example
1887
- * // Simple priority (backwards compat)
1888
- * useFrame((state, delta) => { ... }, 5)
1889
- *
1890
- * @example
1891
- * // With phase-based ordering
1892
- * useFrame((state, delta) => { ... }, { phase: 'physics' })
1893
- *
1894
- * @example
1895
- * // Outside Canvas - callback waits for a Canvas, then always has full state
1896
- * function UI() {
1897
- * useFrame((state, delta) => { syncUI(state.camera) });
1898
- * return <button>...</button>;
1899
- * }
1900
- *
1901
- * @example
1902
- * // Hostless / standalone loop (no Canvas) - use @pmndrs/scheduler directly
1903
- * import { getScheduler } from '@pmndrs/scheduler'
1904
- * getScheduler().register((state, delta) => { updateGame(delta) })
1905
- *
1906
- * @example
1907
- * // Scheduler-only access (no callback)
1908
- * const { scheduler } = useFrame()
1909
- * scheduler.pauseJob('some-job-id')
1910
- *
1911
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe
1912
- */
1913
- declare function useFrame(callback?: FrameNextCallback, priorityOrOptions?: number | UseFrameNextOptions): FrameNextControls;
1914
-
1915
1875
  declare const IsObject: (url: unknown) => url is Record<string, string>;
1916
1876
  type TextureArray<T> = T extends string[] ? Texture$1[] : never;
1917
1877
  type TextureRecord<T> = T extends Record<string, string> ? {
@@ -2097,11 +2057,6 @@ declare function useRenderTarget(width: number, height: number, options?: Render
2097
2057
  * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usestore
2098
2058
  */
2099
2059
  declare function useStore(): RootStore;
2100
- /**
2101
- * Accesses R3F's internal state, containing renderer, canvas, scene, etc.
2102
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree
2103
- */
2104
- declare function useThree<T = RootState>(selector?: (state: RootState) => T, equalityFn?: <T>(state: T, newState: T) => boolean): T;
2105
2060
  /**
2106
2061
  * Exposes an object's {@link Instance}.
2107
2062
  * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle
@@ -4163,5 +4118,23 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4163
4118
  internal: WebGPUInternalState
4164
4119
  }
4165
4120
 
4121
+ /**
4122
+ * @fileoverview WebGPU entry point - WebGPU only, no legacy WebGL
4123
+ *
4124
+ * This entry point is for apps that want to use ONLY WebGPURenderer.
4125
+ * Includes WebGPU-specific hooks (useUniforms, useNodes, useTextures).
4126
+ * Auto-extends THREE with WebGPU node materials (MeshBasicNodeMaterial, etc.)
4127
+ *
4128
+ * Usage:
4129
+ * import { Canvas, useFrame, useUniforms } from '@react-three/fiber/webgpu'
4130
+ */
4131
+
4132
+ /** `useThree` narrowed to WebGPU state — `state.renderer` is a `WebGPURenderer`. */
4133
+ type UseThreeWebGPU = <T = WebGPURootState>(selector?: (state: WebGPURootState) => T, equalityFn?: <U>(state: U, newState: U) => boolean) => T;
4134
+ /** `useFrame` narrowed to WebGPU state — the callback's `state.renderer` is a `WebGPURenderer`. */
4135
+ type UseFrameWebGPU = (callback?: FrameCallback$1<WebGPURootState>, priorityOrOptions?: number | UseFrameNextOptions) => FrameNextControls;
4136
+ declare const useThree: UseThreeWebGPU;
4137
+ declare const useFrame: UseFrameWebGPU;
4138
+
4166
4139
  export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
4167
- export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4140
+ export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameWebGPU, UseTextureOptions, UseTexturesReturn, UseThreeWebGPU, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -1,3 +1,4 @@
1
+ import * as three_examples_jsm_inspector_Inspector_js from 'three/examples/jsm/inspector/Inspector.js';
1
2
  import * as three_webgpu from 'three/webgpu';
2
3
  import { CubeRenderTarget, RenderTarget, WebGPURenderer, Node, StorageTexture, Data3DTexture, CanvasTarget, ShaderNodeObject, Euler as Euler$2, Color as Color$2, ColorRepresentation as ColorRepresentation$1, Layers as Layers$1, Raycaster, Intersection as Intersection$1, BufferGeometry, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, Vector2 as Vector2$1, Vector3 as Vector3$1, Vector4 as Vector4$1, Matrix3 as Matrix3$1, Loader as Loader$1, ColorSpace, Texture as Texture$1, CubeTexture, Scene, Object3D, Frustum, OrthographicCamera, WebGPURendererParameters } from 'three/webgpu';
3
4
  import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -40,6 +41,8 @@ function _mergeNamespaces(n, m) {
40
41
  declare const R3F_BUILD_LEGACY = false;
41
42
  declare const R3F_BUILD_WEBGPU = true;
42
43
 
44
+ /** Lazily load the three Inspector. Keeps it out of the eager module graph — see note above. */
45
+ declare function loadInspector(): Promise<typeof three_examples_jsm_inspector_Inspector_js.Inspector>;
43
46
  declare const WebGLRenderer: {
44
47
  new (): {};
45
48
  };
@@ -61,7 +64,8 @@ var THREE = /*#__PURE__*/_mergeNamespaces({
61
64
  WebGLRenderTarget: WebGLRenderTarget,
62
65
  WebGLRenderer: WebGLRenderer,
63
66
  WebGLRendererParameters: WebGLRendererParameters,
64
- WebGLShadowMap: WebGLShadowMap
67
+ WebGLShadowMap: WebGLShadowMap,
68
+ loadInspector: loadInspector
65
69
  }, [three_webgpu]);
66
70
 
67
71
  //* Utility Types ==============================
@@ -1868,50 +1872,6 @@ declare namespace useLoader {
1868
1872
  var loader: typeof getLoader;
1869
1873
  }
1870
1874
 
1871
- /**
1872
- * Frame hook with phase-based ordering, priority, and FPS throttling.
1873
- *
1874
- * Always delivers full RootState — works both inside and outside Canvas context:
1875
- * - Inside Canvas: Full RootState (renderer, scene, camera, etc.)
1876
- * - Outside Canvas: The job registers immediately but the callback is held until a
1877
- * Canvas adopts it, then runs with full RootState. For hostless / standalone
1878
- * frame loops with no Canvas, use `@pmndrs/scheduler` directly.
1879
- *
1880
- * Returns a controls object for manual stepping, pausing, and resuming.
1881
- *
1882
- * @param callback - Function called each frame with (state, delta). Optional if you only need scheduler access.
1883
- * @param priorityOrOptions - Either a priority number (backwards compat) or options object
1884
- * @returns Controls object with step(), stepAll(), pause(), resume(), isPaused, id, scheduler
1885
- *
1886
- * @example
1887
- * // Simple priority (backwards compat)
1888
- * useFrame((state, delta) => { ... }, 5)
1889
- *
1890
- * @example
1891
- * // With phase-based ordering
1892
- * useFrame((state, delta) => { ... }, { phase: 'physics' })
1893
- *
1894
- * @example
1895
- * // Outside Canvas - callback waits for a Canvas, then always has full state
1896
- * function UI() {
1897
- * useFrame((state, delta) => { syncUI(state.camera) });
1898
- * return <button>...</button>;
1899
- * }
1900
- *
1901
- * @example
1902
- * // Hostless / standalone loop (no Canvas) - use @pmndrs/scheduler directly
1903
- * import { getScheduler } from '@pmndrs/scheduler'
1904
- * getScheduler().register((state, delta) => { updateGame(delta) })
1905
- *
1906
- * @example
1907
- * // Scheduler-only access (no callback)
1908
- * const { scheduler } = useFrame()
1909
- * scheduler.pauseJob('some-job-id')
1910
- *
1911
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe
1912
- */
1913
- declare function useFrame(callback?: FrameNextCallback, priorityOrOptions?: number | UseFrameNextOptions): FrameNextControls;
1914
-
1915
1875
  declare const IsObject: (url: unknown) => url is Record<string, string>;
1916
1876
  type TextureArray<T> = T extends string[] ? Texture$1[] : never;
1917
1877
  type TextureRecord<T> = T extends Record<string, string> ? {
@@ -2097,11 +2057,6 @@ declare function useRenderTarget(width: number, height: number, options?: Render
2097
2057
  * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usestore
2098
2058
  */
2099
2059
  declare function useStore(): RootStore;
2100
- /**
2101
- * Accesses R3F's internal state, containing renderer, canvas, scene, etc.
2102
- * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree
2103
- */
2104
- declare function useThree<T = RootState>(selector?: (state: RootState) => T, equalityFn?: <T>(state: T, newState: T) => boolean): T;
2105
2060
  /**
2106
2061
  * Exposes an object's {@link Instance}.
2107
2062
  * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle
@@ -4163,5 +4118,23 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4163
4118
  internal: WebGPUInternalState
4164
4119
  }
4165
4120
 
4121
+ /**
4122
+ * @fileoverview WebGPU entry point - WebGPU only, no legacy WebGL
4123
+ *
4124
+ * This entry point is for apps that want to use ONLY WebGPURenderer.
4125
+ * Includes WebGPU-specific hooks (useUniforms, useNodes, useTextures).
4126
+ * Auto-extends THREE with WebGPU node materials (MeshBasicNodeMaterial, etc.)
4127
+ *
4128
+ * Usage:
4129
+ * import { Canvas, useFrame, useUniforms } from '@react-three/fiber/webgpu'
4130
+ */
4131
+
4132
+ /** `useThree` narrowed to WebGPU state — `state.renderer` is a `WebGPURenderer`. */
4133
+ type UseThreeWebGPU = <T = WebGPURootState>(selector?: (state: WebGPURootState) => T, equalityFn?: <U>(state: U, newState: U) => boolean) => T;
4134
+ /** `useFrame` narrowed to WebGPU state — the callback's `state.renderer` is a `WebGPURenderer`. */
4135
+ type UseFrameWebGPU = (callback?: FrameCallback$1<WebGPURootState>, priorityOrOptions?: number | UseFrameNextOptions) => FrameNextControls;
4136
+ declare const useThree: UseThreeWebGPU;
4137
+ declare const useFrame: UseFrameWebGPU;
4138
+
4166
4139
  export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
4167
- export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4140
+ export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameWebGPU, UseTextureOptions, UseTexturesReturn, UseThreeWebGPU, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -1,6 +1,5 @@
1
1
  import * as webgpu from 'three/webgpu';
2
2
  import { CubeRenderTarget, RenderTarget, Frustum, Matrix4, Group, BoxGeometry, MeshBasicNodeMaterial, Mesh, Node, NodeUpdateType, Layers, ShaderMaterial, Uniform, SRGBColorSpace, RGBAFormat, UnsignedByteType, Vector3, Vector2, TextureLoader, Texture as Texture$1, CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader, CanvasTarget, Raycaster, OrthographicCamera, PerspectiveCamera, Scene, PCFShadowMap, VSMShadowMap, BasicShadowMap, ACESFilmicToneMapping, WebGPURenderer, HalfFloatType, Color, Vector4, RenderPipeline } from 'three/webgpu';
3
- import { Inspector } from 'three/addons/inspector/Inspector.js';
4
3
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
5
4
  import * as React from 'react';
6
5
  import React__default, { useRef, useMemo, useLayoutEffect, useEffect, useContext, useImperativeHandle, useCallback, useState } from 'react';
@@ -34,6 +33,10 @@ function _mergeNamespaces(n, m) {
34
33
 
35
34
  const R3F_BUILD_LEGACY = false;
36
35
  const R3F_BUILD_WEBGPU = true;
36
+ async function loadInspector() {
37
+ const { Inspector } = await import('three/addons/inspector/Inspector.js');
38
+ return Inspector;
39
+ }
37
40
  const WebGLRenderer = class WebGLRenderer2 {
38
41
  constructor() {
39
42
  throw new Error(
@@ -47,13 +50,13 @@ const WebGLCubeRenderTarget = null;
47
50
  const THREE = /*#__PURE__*/_mergeNamespaces({
48
51
  __proto__: null,
49
52
  CubeRenderTargetCompat: CubeRenderTarget,
50
- Inspector: Inspector,
51
53
  R3F_BUILD_LEGACY: R3F_BUILD_LEGACY,
52
54
  R3F_BUILD_WEBGPU: R3F_BUILD_WEBGPU,
53
55
  RenderTargetCompat: RenderTarget,
54
56
  WebGLCubeRenderTarget: WebGLCubeRenderTarget,
55
57
  WebGLRenderTarget: WebGLRenderTarget,
56
- WebGLRenderer: WebGLRenderer
58
+ WebGLRenderer: WebGLRenderer,
59
+ loadInspector: loadInspector
57
60
  }, [webgpu]);
58
61
 
59
62
  const primaryRegistry = /* @__PURE__ */ new Map();
@@ -1138,7 +1141,7 @@ useLoader.clear = function(loader, input, cacheKey) {
1138
1141
  };
1139
1142
  useLoader.loader = getLoader$1;
1140
1143
 
1141
- function useFrame(callback, priorityOrOptions) {
1144
+ function useFrame$1(callback, priorityOrOptions) {
1142
1145
  const store = React.useContext(context);
1143
1146
  const isInsideCanvas = store !== null;
1144
1147
  const scheduler = getScheduler();
@@ -1306,7 +1309,7 @@ function buildFromCache(input, textureCache) {
1306
1309
  }
1307
1310
  }
1308
1311
  function useTexture(input, optionsOrOnLoad) {
1309
- const renderer = useThree((state) => state.internal.actualRenderer);
1312
+ const renderer = useThree$1((state) => state.internal.actualRenderer);
1310
1313
  const store = useStore();
1311
1314
  const options = typeof optionsOrOnLoad === "function" ? { onLoad: optionsOrOnLoad } : optionsOrOnLoad ?? {};
1312
1315
  const { onLoad, cache = true } = options;
@@ -1472,13 +1475,13 @@ function useTextures(selector) {
1472
1475
  };
1473
1476
  }, [store]);
1474
1477
  const subscribe = selector ? () => selector(registry) : (state) => state.textures;
1475
- const selected = useThree(subscribe);
1478
+ const selected = useThree$1(subscribe);
1476
1479
  return selector ? selected : registry;
1477
1480
  }
1478
1481
 
1479
1482
  function useRenderTarget(widthOrOptions, heightOrOptions, options) {
1480
- const isLegacy = useThree((s) => s.isLegacy);
1481
- const size = useThree((s) => s.size);
1483
+ const isLegacy = useThree$1((s) => s.isLegacy);
1484
+ const size = useThree$1((s) => s.size);
1482
1485
  let width;
1483
1486
  let height;
1484
1487
  let opts;
@@ -1535,7 +1538,7 @@ function useEnvironment({
1535
1538
  const { extension, isCubemap } = getExtension(files);
1536
1539
  const loader = getLoader(extension);
1537
1540
  if (!loader) throw new Error("useEnvironment: Unrecognized file extension: " + files);
1538
- const renderer = useThree((state) => state.renderer);
1541
+ const renderer = useThree$1((state) => state.renderer);
1539
1542
  useLayoutEffect(() => {
1540
1543
  if (extension !== "webp" && extension !== "jpg" && extension !== "jpeg") return;
1541
1544
  function clearGainmapTexture() {
@@ -1628,7 +1631,7 @@ function useStore() {
1628
1631
  if (!store) throw new Error("R3F: Hooks can only be used within the Canvas component!");
1629
1632
  return store;
1630
1633
  }
1631
- function useThree(selector = (state) => state, equalityFn) {
1634
+ function useThree$1(selector = (state) => state, equalityFn) {
1632
1635
  return useStore()(selector, equalityFn);
1633
1636
  }
1634
1637
  function useInstanceHandle(ref) {
@@ -14719,7 +14722,7 @@ function setEnvProps(background, scene, defaultScene, texture, sceneProps = {})
14719
14722
  };
14720
14723
  }
14721
14724
  function EnvironmentMap({ scene, background = false, map, ...config }) {
14722
- const defaultScene = useThree((state) => state.scene);
14725
+ const defaultScene = useThree$1((state) => state.scene);
14723
14726
  React.useLayoutEffect(() => {
14724
14727
  if (map) return setEnvProps(background, scene, defaultScene, map, config);
14725
14728
  });
@@ -14737,7 +14740,7 @@ function EnvironmentCube({
14737
14740
  ...rest
14738
14741
  }) {
14739
14742
  const texture = useEnvironment(rest);
14740
- const defaultScene = useThree((state) => state.scene);
14743
+ const defaultScene = useThree$1((state) => state.scene);
14741
14744
  React.useLayoutEffect(() => {
14742
14745
  return setEnvProps(background, scene, defaultScene, texture, {
14743
14746
  backgroundBlurriness: blur ?? backgroundBlurriness,
@@ -14774,9 +14777,9 @@ function EnvironmentPortal({
14774
14777
  preset = void 0,
14775
14778
  extensions
14776
14779
  }) {
14777
- const renderer = useThree((state) => state.renderer);
14778
- const isLegacy = useThree((state) => state.isLegacy);
14779
- const defaultScene = useThree((state) => state.scene);
14780
+ const renderer = useThree$1((state) => state.renderer);
14781
+ const isLegacy = useThree$1((state) => state.isLegacy);
14782
+ const defaultScene = useThree$1((state) => state.scene);
14780
14783
  const camera = React.useRef(null);
14781
14784
  const [virtualScene] = React.useState(() => new Scene());
14782
14785
  const fbo = React.useMemo(() => {
@@ -14820,7 +14823,7 @@ function EnvironmentPortal({
14820
14823
  environmentRotation
14821
14824
  ]);
14822
14825
  let count = 1;
14823
- useFrame(() => {
14826
+ useFrame$1(() => {
14824
14827
  if (frames === Infinity || count < frames) {
14825
14828
  const autoClear = renderer.autoClear;
14826
14829
  renderer.autoClear = true;
@@ -14860,7 +14863,7 @@ function EnvironmentGround(props) {
14860
14863
  ] });
14861
14864
  }
14862
14865
  function EnvironmentColor({ color, scene }) {
14863
- const defaultScene = useThree((state) => state.scene);
14866
+ const defaultScene = useThree$1((state) => state.scene);
14864
14867
  React.useLayoutEffect(() => {
14865
14868
  if (color === void 0) return;
14866
14869
  const target = resolveScene(scene || defaultScene);
@@ -15454,6 +15457,11 @@ function createTextureOperations(set) {
15454
15457
  removeMultiple: (keys) => removeTextures(set, keys)
15455
15458
  };
15456
15459
  }
15460
+ function scopedNodeName(scope, name) {
15461
+ const raw = scope ? `${scope}_${name}` : name;
15462
+ const safe = raw.replace(/[^A-Za-z0-9_]/g, "_");
15463
+ return /^[A-Za-z_]/.test(safe) ? safe : `_${safe}`;
15464
+ }
15457
15465
  function extractTSLValue(value) {
15458
15466
  if (value === null || value === void 0) return value;
15459
15467
  if (typeof value !== "object") return value;
@@ -15652,8 +15660,7 @@ function createUniform(inName, node, scope) {
15652
15660
  const inValue = vectorize(node);
15653
15661
  const newUniform = uniform(inValue);
15654
15662
  if (typeof newUniform.setName === "function") {
15655
- const name = scope ? `${scope}_${inName}` : inName;
15656
- newUniform.setName(name);
15663
+ newUniform.setName(scopedNodeName(scope, inName));
15657
15664
  }
15658
15665
  return newUniform;
15659
15666
  }
@@ -15752,7 +15759,7 @@ function useNodes(creatorOrScope, scope) {
15752
15759
  return creatorOrScope(createLazyCreatorState(store.getState(), store));
15753
15760
  },
15754
15761
  prepare: (name, node) => {
15755
- node.setName?.(scope ? `${scope}.${name}` : name);
15762
+ node.setName?.(scopedNodeName(scope, name));
15756
15763
  return node;
15757
15764
  }
15758
15765
  });
@@ -15861,7 +15868,7 @@ function useBuffers(creatorOrScope, scope) {
15861
15868
  },
15862
15869
  prepare: (name, buffer) => {
15863
15870
  if ("setName" in buffer && typeof buffer.setName === "function") {
15864
- buffer.setName(scope ? `${scope}.${name}` : name);
15871
+ buffer.setName(scopedNodeName(scope, name));
15865
15872
  }
15866
15873
  return buffer;
15867
15874
  }
@@ -15932,7 +15939,7 @@ function useGPUStorage(creatorOrScope, scope) {
15932
15939
  return creatorOrScope(createLazyCreatorState(store.getState(), store));
15933
15940
  },
15934
15941
  prepare: (name, storage) => {
15935
- const label = scope ? `${scope}.${name}` : name;
15942
+ const label = scopedNodeName(scope, name);
15936
15943
  if ("setName" in storage && typeof storage.setName === "function") {
15937
15944
  storage.setName(label);
15938
15945
  }
@@ -15963,7 +15970,7 @@ function rebuildAllStorage(store, scope) {
15963
15970
 
15964
15971
  function useRenderPipeline(mainCB, setupCB) {
15965
15972
  const store = useStore();
15966
- const { scene, camera, renderer, isLegacy } = useThree();
15973
+ const { scene, camera, renderer, isLegacy } = useThree$1();
15967
15974
  const callbacksRanRef = useRef(false);
15968
15975
  const scenePassCacheRef = useRef(null);
15969
15976
  const mainCBRef = useRef(mainCB);
@@ -16041,8 +16048,8 @@ function useRenderPipeline(mainCB, setupCB) {
16041
16048
  console.warn("[useRenderPipeline] Setup failed; the render pipeline was not configured:", error);
16042
16049
  }
16043
16050
  }, [store, renderer, scene, camera, isLegacy, rebuildVersion]);
16044
- const passes = useThree((s) => s.passes);
16045
- const renderPipeline = useThree((s) => s.renderPipeline);
16051
+ const passes = useThree$1((s) => s.passes);
16052
+ const renderPipeline = useThree$1((s) => s.renderPipeline);
16046
16053
  return {
16047
16054
  passes,
16048
16055
  renderPipeline,
@@ -16055,5 +16062,7 @@ function useRenderPipeline(mainCB, setupCB) {
16055
16062
  }
16056
16063
 
16057
16064
  extend(THREE);
16065
+ const useThree = useThree$1;
16066
+ const useFrame = useFrame$1;
16058
16067
 
16059
16068
  export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef$1 as isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "10.0.0-canary.611635d",
3
+ "version": "10.0.0-canary.6eb9584",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",