@react-three/fiber 10.0.0-canary.aecbafb → 10.0.0-canary.c3fa45d

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.
@@ -170,7 +170,7 @@ function useEnvironment({
170
170
  fiber.useLoader.clear(loader, multiFile ? [files] : files);
171
171
  }
172
172
  renderer.domElement.addEventListener("webglcontextlost", clearGainmapTexture, { once: true });
173
- }, [files, renderer.domElement]);
173
+ }, [extension, files, loader, multiFile, renderer.domElement]);
174
174
  const loaderResult = fiber.useLoader(
175
175
  loader,
176
176
  multiFile ? [files] : files,
@@ -370,7 +370,22 @@ function EnvironmentPortal({
370
370
  environmentIntensity,
371
371
  environmentRotation
372
372
  });
373
- }, [children, virtualScene, fbo.texture, scene, defaultScene, background, frames, gl]);
373
+ }, [
374
+ children,
375
+ virtualScene,
376
+ fbo.texture,
377
+ scene,
378
+ defaultScene,
379
+ background,
380
+ frames,
381
+ gl,
382
+ blur,
383
+ backgroundBlurriness,
384
+ backgroundIntensity,
385
+ backgroundRotation,
386
+ environmentIntensity,
387
+ environmentRotation
388
+ ]);
374
389
  let count = 1;
375
390
  fiber.useFrame(() => {
376
391
  if (frames === Infinity || count < frames) {
@@ -1297,7 +1312,7 @@ function createEvents(store) {
1297
1312
  }
1298
1313
  function processDeferredPointer(event, pointerId) {
1299
1314
  const state = store.getState();
1300
- const { onPointerMissed, onDragOverMissed, internal } = state;
1315
+ const { internal } = state;
1301
1316
  if (!state.events.enabled) return;
1302
1317
  const filter = filterPointerEvents;
1303
1318
  const hits = intersect(event, filter);
@@ -1532,6 +1547,7 @@ function createPointerEvents(store) {
1532
1547
  }
1533
1548
  },
1534
1549
  connect: (target) => {
1550
+ if (!target) return;
1535
1551
  const { set, events } = store.getState();
1536
1552
  events.disconnect?.();
1537
1553
  set((state) => ({ events: { ...state.events, connected: target } }));
@@ -1894,7 +1910,7 @@ function shouldRun(job, now) {
1894
1910
  const minInterval = 1e3 / job.fps;
1895
1911
  const lastRun = job.lastRun ?? 0;
1896
1912
  const elapsed = now - lastRun;
1897
- if (elapsed < minInterval) return false;
1913
+ if (elapsed < minInterval - 1) return false;
1898
1914
  if (job.drop) {
1899
1915
  job.lastRun = now;
1900
1916
  } else {
@@ -2921,14 +2937,16 @@ const createStore = (invalidate, advance) => {
2921
2937
  oldSize = size;
2922
2938
  oldDpr = viewport.dpr;
2923
2939
  updateCamera(camera, size);
2924
- if (canvasTarget) {
2940
+ if (internal.isSecondary && canvasTarget) {
2925
2941
  if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
2926
- const updateStyle = typeof HTMLCanvasElement !== "undefined" && canvasTarget.domElement instanceof HTMLCanvasElement;
2927
- canvasTarget.setSize(size.width, size.height, updateStyle);
2942
+ canvasTarget.setSize(size.width, size.height, false);
2928
2943
  } else {
2929
2944
  if (viewport.dpr > 0) actualRenderer.setPixelRatio(viewport.dpr);
2930
- const updateStyle = typeof HTMLCanvasElement !== "undefined" && actualRenderer.domElement instanceof HTMLCanvasElement;
2931
- actualRenderer.setSize(size.width, size.height, updateStyle);
2945
+ actualRenderer.setSize(size.width, size.height, false);
2946
+ if (canvasTarget) {
2947
+ if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
2948
+ canvasTarget.setSize(size.width, size.height, false);
2949
+ }
2932
2950
  }
2933
2951
  }
2934
2952
  if (camera !== oldCamera) {
@@ -15213,7 +15231,6 @@ function createRoot(canvas) {
15213
15231
  events,
15214
15232
  onCreated: onCreatedCallback,
15215
15233
  shadows = false,
15216
- textureColorSpace = webgpu.SRGBColorSpace,
15217
15234
  orthographic = false,
15218
15235
  frameloop = "always",
15219
15236
  dpr = [1, 2],
@@ -15228,6 +15245,7 @@ function createRoot(canvas) {
15228
15245
  _sizeProps,
15229
15246
  forceEven
15230
15247
  } = props;
15248
+ const textureColorSpace = is.obj(glConfig) && !is.fun(glConfig) && !isRenderer(glConfig) && glConfig.textureColorSpace || is.obj(rendererConfig) && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && rendererConfig.textureColorSpace || webgpu.SRGBColorSpace;
15231
15249
  const state = store.getState();
15232
15250
  const defaultGPUProps = {
15233
15251
  canvas,
@@ -15380,7 +15398,7 @@ function createRoot(canvas) {
15380
15398
  lastConfiguredProps.performance = performance;
15381
15399
  }
15382
15400
  if (!state.xr) {
15383
- const handleXRFrame = (timestamp, frame) => {
15401
+ const handleXRFrame = (timestamp, _frame) => {
15384
15402
  const state2 = store.getState();
15385
15403
  if (state2.frameloop === "never") return;
15386
15404
  advance(timestamp);
@@ -15416,15 +15434,22 @@ function createRoot(canvas) {
15416
15434
  const oldType = renderer.shadowMap.type;
15417
15435
  renderer.shadowMap.enabled = !!shadows;
15418
15436
  if (is.boo(shadows)) {
15419
- renderer.shadowMap.type = webgpu.PCFSoftShadowMap;
15437
+ renderer.shadowMap.type = webgpu.PCFShadowMap;
15420
15438
  } else if (is.str(shadows)) {
15439
+ if (shadows === "soft") {
15440
+ notifyDepreciated({
15441
+ heading: 'shadows="soft" is deprecated',
15442
+ body: "Three has depreciated soft and improved basic PCFShadows, we converted for you.",
15443
+ link: "https://github.com/mrdoob/three.js/wiki/Migration-Guide?utm_source=chatgpt.com#181--182"
15444
+ });
15445
+ }
15421
15446
  const types = {
15422
15447
  basic: webgpu.BasicShadowMap,
15423
15448
  percentage: webgpu.PCFShadowMap,
15424
- soft: webgpu.PCFSoftShadowMap,
15449
+ soft: webgpu.PCFShadowMap,
15425
15450
  variance: webgpu.VSMShadowMap
15426
15451
  };
15427
- renderer.shadowMap.type = types[shadows] ?? webgpu.PCFSoftShadowMap;
15452
+ renderer.shadowMap.type = types[shadows] ?? webgpu.PCFShadowMap;
15428
15453
  } else if (is.obj(shadows)) {
15429
15454
  Object.assign(renderer.shadowMap, shadows);
15430
15455
  }
@@ -15440,13 +15465,24 @@ function createRoot(canvas) {
15440
15465
  if (state.textureColorSpace !== textureColorSpace) state.set(() => ({ textureColorSpace }));
15441
15466
  lastConfiguredProps.textureColorSpace = textureColorSpace;
15442
15467
  }
15468
+ const r3fProps = ["textureColorSpace"];
15469
+ const constructorOnlyProps = ["samples", "antialias", "alpha", "canvas", "powerPreference"];
15470
+ const nonApplyProps = [...r3fProps, ...constructorOnlyProps];
15443
15471
  if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, renderer, shallowLoose)) {
15444
- applyProps(renderer, glConfig);
15472
+ const glProps = {};
15473
+ for (const key in glConfig) {
15474
+ if (!nonApplyProps.includes(key)) glProps[key] = glConfig[key];
15475
+ }
15476
+ applyProps(renderer, glProps);
15445
15477
  }
15446
15478
  if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer) {
15447
15479
  const currentRenderer = state.renderer;
15448
15480
  if (!is.equ(rendererConfig, currentRenderer, shallowLoose)) {
15449
- applyProps(currentRenderer, rendererConfig);
15481
+ const rendererProps = {};
15482
+ for (const key in rendererConfig) {
15483
+ if (!nonApplyProps.includes(key)) rendererProps[key] = rendererConfig[key];
15484
+ }
15485
+ applyProps(currentRenderer, rendererProps);
15450
15486
  }
15451
15487
  }
15452
15488
  const scheduler = getScheduler();
@@ -15760,8 +15796,18 @@ function CanvasImpl({
15760
15796
  forceEven,
15761
15797
  ...props
15762
15798
  }) {
15763
- const { primaryCanvas, scheduler, ...rendererConfig } = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp) ? rendererProp : { primaryCanvas: void 0, scheduler: void 0 };
15764
- const renderer = Object.keys(rendererConfig).length > 0 ? rendererConfig : rendererProp;
15799
+ const isRendererConfig = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp);
15800
+ let primaryCanvas;
15801
+ let scheduler;
15802
+ let renderer;
15803
+ if (isRendererConfig) {
15804
+ const { primaryCanvas: pc, scheduler: sc, ...rest } = rendererProp;
15805
+ primaryCanvas = pc;
15806
+ scheduler = sc;
15807
+ renderer = Object.keys(rest).length > 0 ? rest : rendererProp;
15808
+ } else {
15809
+ renderer = rendererProp;
15810
+ }
15765
15811
  React__namespace.useMemo(() => extend(THREE), []);
15766
15812
  const Bridge = useBridge();
15767
15813
  const backgroundProps = React__namespace.useMemo(() => {
@@ -15971,7 +16017,16 @@ function CanvasImpl({
15971
16017
  ...style
15972
16018
  },
15973
16019
  ...props,
15974
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx("canvas", { ref: canvasRef, id, className: "r3f-canvas", style: { display: "block" }, children: fallback }) })
16020
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
16021
+ "canvas",
16022
+ {
16023
+ ref: canvasRef,
16024
+ id,
16025
+ className: "r3f-canvas",
16026
+ style: { display: "block", width: "100%", height: "100%" },
16027
+ children: fallback
16028
+ }
16029
+ ) })
15975
16030
  }
15976
16031
  );
15977
16032
  }
@@ -857,6 +857,20 @@ interface Renderer {
857
857
  render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
858
858
  }
859
859
 
860
+ //* Color Management Config ==============================
861
+
862
+ /**
863
+ * Color management configuration shared by both WebGL and WebGPU renderers.
864
+ */
865
+ interface ColorManagementConfig {
866
+ /**
867
+ * Color space assigned to 8-bit input textures (color maps).
868
+ * Defaults to sRGB. Most textures are authored in sRGB.
869
+ * @default THREE.SRGBColorSpace
870
+ */
871
+ textureColorSpace?: THREE$1.ColorSpace
872
+ }
873
+
860
874
  //* WebGL Renderer Props ==============================
861
875
 
862
876
  type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
@@ -867,7 +881,7 @@ type GLProps =
867
881
  | Renderer
868
882
  | ((defaultProps: DefaultGLProps) => Renderer)
869
883
  | ((defaultProps: DefaultGLProps) => Promise<Renderer>)
870
- | Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
884
+ | (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
871
885
 
872
886
  //* WebGPU Renderer Props ==============================
873
887
 
@@ -893,9 +907,9 @@ interface CanvasSchedulerConfig {
893
907
  }
894
908
 
895
909
  /**
896
- * Extended renderer configuration for multi-canvas support.
910
+ * Extended renderer configuration for multi-canvas support and color management.
897
911
  */
898
- interface RendererConfigExtended {
912
+ interface RendererConfigExtended extends ColorManagementConfig {
899
913
  /** Share renderer from another canvas (WebGPU only) */
900
914
  primaryCanvas?: string
901
915
  /** Canvas-level scheduler options */
@@ -960,8 +974,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
960
974
  * @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
961
975
  */
962
976
  shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
963
- /** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
964
- textureColorSpace?: THREE$1.ColorSpace
965
977
  /** Creates an orthographic camera */
966
978
  orthographic?: boolean
967
979
  /**
@@ -1214,7 +1226,7 @@ interface CanvasProps
1214
1226
  */
1215
1227
  resize?: Options
1216
1228
  /** The target where events are being subscribed to, default: the div that wraps canvas */
1217
- eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
1229
+ eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
1218
1230
  /** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
1219
1231
  eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
1220
1232
  /** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
@@ -4754,4 +4766,4 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4754
4766
  }
4755
4767
 
4756
4768
  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, Scheduler, Texture, _roots, act, 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, getScheduler, 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, 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 };
4757
- export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4769
+ export type { Act, AddPhaseOptions, 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, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -857,6 +857,20 @@ interface Renderer {
857
857
  render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
858
858
  }
859
859
 
860
+ //* Color Management Config ==============================
861
+
862
+ /**
863
+ * Color management configuration shared by both WebGL and WebGPU renderers.
864
+ */
865
+ interface ColorManagementConfig {
866
+ /**
867
+ * Color space assigned to 8-bit input textures (color maps).
868
+ * Defaults to sRGB. Most textures are authored in sRGB.
869
+ * @default THREE.SRGBColorSpace
870
+ */
871
+ textureColorSpace?: THREE$1.ColorSpace
872
+ }
873
+
860
874
  //* WebGL Renderer Props ==============================
861
875
 
862
876
  type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
@@ -867,7 +881,7 @@ type GLProps =
867
881
  | Renderer
868
882
  | ((defaultProps: DefaultGLProps) => Renderer)
869
883
  | ((defaultProps: DefaultGLProps) => Promise<Renderer>)
870
- | Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
884
+ | (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
871
885
 
872
886
  //* WebGPU Renderer Props ==============================
873
887
 
@@ -893,9 +907,9 @@ interface CanvasSchedulerConfig {
893
907
  }
894
908
 
895
909
  /**
896
- * Extended renderer configuration for multi-canvas support.
910
+ * Extended renderer configuration for multi-canvas support and color management.
897
911
  */
898
- interface RendererConfigExtended {
912
+ interface RendererConfigExtended extends ColorManagementConfig {
899
913
  /** Share renderer from another canvas (WebGPU only) */
900
914
  primaryCanvas?: string
901
915
  /** Canvas-level scheduler options */
@@ -960,8 +974,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
960
974
  * @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
961
975
  */
962
976
  shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
963
- /** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
964
- textureColorSpace?: THREE$1.ColorSpace
965
977
  /** Creates an orthographic camera */
966
978
  orthographic?: boolean
967
979
  /**
@@ -1214,7 +1226,7 @@ interface CanvasProps
1214
1226
  */
1215
1227
  resize?: Options
1216
1228
  /** The target where events are being subscribed to, default: the div that wraps canvas */
1217
- eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
1229
+ eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
1218
1230
  /** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
1219
1231
  eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
1220
1232
  /** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
@@ -4754,4 +4766,4 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4754
4766
  }
4755
4767
 
4756
4768
  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, Scheduler, Texture, _roots, act, 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, getScheduler, 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, 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 };
4757
- export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4769
+ export type { Act, AddPhaseOptions, 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, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -857,6 +857,20 @@ interface Renderer {
857
857
  render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
858
858
  }
859
859
 
860
+ //* Color Management Config ==============================
861
+
862
+ /**
863
+ * Color management configuration shared by both WebGL and WebGPU renderers.
864
+ */
865
+ interface ColorManagementConfig {
866
+ /**
867
+ * Color space assigned to 8-bit input textures (color maps).
868
+ * Defaults to sRGB. Most textures are authored in sRGB.
869
+ * @default THREE.SRGBColorSpace
870
+ */
871
+ textureColorSpace?: THREE$1.ColorSpace
872
+ }
873
+
860
874
  //* WebGL Renderer Props ==============================
861
875
 
862
876
  type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
@@ -867,7 +881,7 @@ type GLProps =
867
881
  | Renderer
868
882
  | ((defaultProps: DefaultGLProps) => Renderer)
869
883
  | ((defaultProps: DefaultGLProps) => Promise<Renderer>)
870
- | Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
884
+ | (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
871
885
 
872
886
  //* WebGPU Renderer Props ==============================
873
887
 
@@ -893,9 +907,9 @@ interface CanvasSchedulerConfig {
893
907
  }
894
908
 
895
909
  /**
896
- * Extended renderer configuration for multi-canvas support.
910
+ * Extended renderer configuration for multi-canvas support and color management.
897
911
  */
898
- interface RendererConfigExtended {
912
+ interface RendererConfigExtended extends ColorManagementConfig {
899
913
  /** Share renderer from another canvas (WebGPU only) */
900
914
  primaryCanvas?: string
901
915
  /** Canvas-level scheduler options */
@@ -960,8 +974,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
960
974
  * @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
961
975
  */
962
976
  shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
963
- /** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
964
- textureColorSpace?: THREE$1.ColorSpace
965
977
  /** Creates an orthographic camera */
966
978
  orthographic?: boolean
967
979
  /**
@@ -1214,7 +1226,7 @@ interface CanvasProps
1214
1226
  */
1215
1227
  resize?: Options
1216
1228
  /** The target where events are being subscribed to, default: the div that wraps canvas */
1217
- eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
1229
+ eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
1218
1230
  /** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
1219
1231
  eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
1220
1232
  /** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
@@ -4754,4 +4766,4 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
4754
4766
  }
4755
4767
 
4756
4768
  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, Scheduler, Texture, _roots, act, 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, getScheduler, 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, 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 };
4757
- export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
4769
+ export type { Act, AddPhaseOptions, 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, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameControls, FrameNextCallback, FrameNextControls, FrameNextState, FrameState, FrameTimingState, 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, RootOptions, WebGPURootState as RootState, RootStore, SchedulerApi, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureOperations, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
@@ -1,5 +1,5 @@
1
1
  import * as webgpu from 'three/webgpu';
2
- import { RenderTarget, CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader, Scene, WebGLCubeRenderTarget, HalfFloatType, Color, Frustum, Matrix4, Group, BoxGeometry, MeshBasicNodeMaterial, Mesh, Node, NodeUpdateType, Layers, SRGBColorSpace, RGBAFormat, UnsignedByteType, Vector3, Vector2, TextureLoader, Texture as Texture$1, CanvasTarget, Raycaster, OrthographicCamera, PerspectiveCamera, PCFSoftShadowMap, VSMShadowMap, PCFShadowMap, BasicShadowMap, ACESFilmicToneMapping, WebGPURenderer, Vector4, PostProcessing } from 'three/webgpu';
2
+ import { RenderTarget, CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader, Scene, WebGLCubeRenderTarget, HalfFloatType, Color, Frustum, Matrix4, Group, BoxGeometry, MeshBasicNodeMaterial, Mesh, Node, NodeUpdateType, Layers, SRGBColorSpace, RGBAFormat, UnsignedByteType, Vector3, Vector2, TextureLoader, Texture as Texture$1, CanvasTarget, Raycaster, OrthographicCamera, PerspectiveCamera, PCFShadowMap, VSMShadowMap, BasicShadowMap, ACESFilmicToneMapping, WebGPURenderer, Vector4, PostProcessing } from 'three/webgpu';
3
3
  import { Inspector } from 'three/addons/inspector/Inspector.js';
4
4
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
5
5
  import * as React from 'react';
@@ -149,7 +149,7 @@ function useEnvironment({
149
149
  useLoader$1.clear(loader, multiFile ? [files] : files);
150
150
  }
151
151
  renderer.domElement.addEventListener("webglcontextlost", clearGainmapTexture, { once: true });
152
- }, [files, renderer.domElement]);
152
+ }, [extension, files, loader, multiFile, renderer.domElement]);
153
153
  const loaderResult = useLoader$1(
154
154
  loader,
155
155
  multiFile ? [files] : files,
@@ -349,7 +349,22 @@ function EnvironmentPortal({
349
349
  environmentIntensity,
350
350
  environmentRotation
351
351
  });
352
- }, [children, virtualScene, fbo.texture, scene, defaultScene, background, frames, gl]);
352
+ }, [
353
+ children,
354
+ virtualScene,
355
+ fbo.texture,
356
+ scene,
357
+ defaultScene,
358
+ background,
359
+ frames,
360
+ gl,
361
+ blur,
362
+ backgroundBlurriness,
363
+ backgroundIntensity,
364
+ backgroundRotation,
365
+ environmentIntensity,
366
+ environmentRotation
367
+ ]);
353
368
  let count = 1;
354
369
  useFrame$1(() => {
355
370
  if (frames === Infinity || count < frames) {
@@ -1276,7 +1291,7 @@ function createEvents(store) {
1276
1291
  }
1277
1292
  function processDeferredPointer(event, pointerId) {
1278
1293
  const state = store.getState();
1279
- const { onPointerMissed, onDragOverMissed, internal } = state;
1294
+ const { internal } = state;
1280
1295
  if (!state.events.enabled) return;
1281
1296
  const filter = filterPointerEvents;
1282
1297
  const hits = intersect(event, filter);
@@ -1511,6 +1526,7 @@ function createPointerEvents(store) {
1511
1526
  }
1512
1527
  },
1513
1528
  connect: (target) => {
1529
+ if (!target) return;
1514
1530
  const { set, events } = store.getState();
1515
1531
  events.disconnect?.();
1516
1532
  set((state) => ({ events: { ...state.events, connected: target } }));
@@ -1873,7 +1889,7 @@ function shouldRun(job, now) {
1873
1889
  const minInterval = 1e3 / job.fps;
1874
1890
  const lastRun = job.lastRun ?? 0;
1875
1891
  const elapsed = now - lastRun;
1876
- if (elapsed < minInterval) return false;
1892
+ if (elapsed < minInterval - 1) return false;
1877
1893
  if (job.drop) {
1878
1894
  job.lastRun = now;
1879
1895
  } else {
@@ -2900,14 +2916,16 @@ const createStore = (invalidate, advance) => {
2900
2916
  oldSize = size;
2901
2917
  oldDpr = viewport.dpr;
2902
2918
  updateCamera(camera, size);
2903
- if (canvasTarget) {
2919
+ if (internal.isSecondary && canvasTarget) {
2904
2920
  if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
2905
- const updateStyle = typeof HTMLCanvasElement !== "undefined" && canvasTarget.domElement instanceof HTMLCanvasElement;
2906
- canvasTarget.setSize(size.width, size.height, updateStyle);
2921
+ canvasTarget.setSize(size.width, size.height, false);
2907
2922
  } else {
2908
2923
  if (viewport.dpr > 0) actualRenderer.setPixelRatio(viewport.dpr);
2909
- const updateStyle = typeof HTMLCanvasElement !== "undefined" && actualRenderer.domElement instanceof HTMLCanvasElement;
2910
- actualRenderer.setSize(size.width, size.height, updateStyle);
2924
+ actualRenderer.setSize(size.width, size.height, false);
2925
+ if (canvasTarget) {
2926
+ if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
2927
+ canvasTarget.setSize(size.width, size.height, false);
2928
+ }
2911
2929
  }
2912
2930
  }
2913
2931
  if (camera !== oldCamera) {
@@ -15192,7 +15210,6 @@ function createRoot(canvas) {
15192
15210
  events,
15193
15211
  onCreated: onCreatedCallback,
15194
15212
  shadows = false,
15195
- textureColorSpace = SRGBColorSpace,
15196
15213
  orthographic = false,
15197
15214
  frameloop = "always",
15198
15215
  dpr = [1, 2],
@@ -15207,6 +15224,7 @@ function createRoot(canvas) {
15207
15224
  _sizeProps,
15208
15225
  forceEven
15209
15226
  } = props;
15227
+ const textureColorSpace = is.obj(glConfig) && !is.fun(glConfig) && !isRenderer(glConfig) && glConfig.textureColorSpace || is.obj(rendererConfig) && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && rendererConfig.textureColorSpace || SRGBColorSpace;
15210
15228
  const state = store.getState();
15211
15229
  const defaultGPUProps = {
15212
15230
  canvas,
@@ -15359,7 +15377,7 @@ function createRoot(canvas) {
15359
15377
  lastConfiguredProps.performance = performance;
15360
15378
  }
15361
15379
  if (!state.xr) {
15362
- const handleXRFrame = (timestamp, frame) => {
15380
+ const handleXRFrame = (timestamp, _frame) => {
15363
15381
  const state2 = store.getState();
15364
15382
  if (state2.frameloop === "never") return;
15365
15383
  advance(timestamp);
@@ -15395,15 +15413,22 @@ function createRoot(canvas) {
15395
15413
  const oldType = renderer.shadowMap.type;
15396
15414
  renderer.shadowMap.enabled = !!shadows;
15397
15415
  if (is.boo(shadows)) {
15398
- renderer.shadowMap.type = PCFSoftShadowMap;
15416
+ renderer.shadowMap.type = PCFShadowMap;
15399
15417
  } else if (is.str(shadows)) {
15418
+ if (shadows === "soft") {
15419
+ notifyDepreciated({
15420
+ heading: 'shadows="soft" is deprecated',
15421
+ body: "Three has depreciated soft and improved basic PCFShadows, we converted for you.",
15422
+ link: "https://github.com/mrdoob/three.js/wiki/Migration-Guide?utm_source=chatgpt.com#181--182"
15423
+ });
15424
+ }
15400
15425
  const types = {
15401
15426
  basic: BasicShadowMap,
15402
15427
  percentage: PCFShadowMap,
15403
- soft: PCFSoftShadowMap,
15428
+ soft: PCFShadowMap,
15404
15429
  variance: VSMShadowMap
15405
15430
  };
15406
- renderer.shadowMap.type = types[shadows] ?? PCFSoftShadowMap;
15431
+ renderer.shadowMap.type = types[shadows] ?? PCFShadowMap;
15407
15432
  } else if (is.obj(shadows)) {
15408
15433
  Object.assign(renderer.shadowMap, shadows);
15409
15434
  }
@@ -15419,13 +15444,24 @@ function createRoot(canvas) {
15419
15444
  if (state.textureColorSpace !== textureColorSpace) state.set(() => ({ textureColorSpace }));
15420
15445
  lastConfiguredProps.textureColorSpace = textureColorSpace;
15421
15446
  }
15447
+ const r3fProps = ["textureColorSpace"];
15448
+ const constructorOnlyProps = ["samples", "antialias", "alpha", "canvas", "powerPreference"];
15449
+ const nonApplyProps = [...r3fProps, ...constructorOnlyProps];
15422
15450
  if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, renderer, shallowLoose)) {
15423
- applyProps(renderer, glConfig);
15451
+ const glProps = {};
15452
+ for (const key in glConfig) {
15453
+ if (!nonApplyProps.includes(key)) glProps[key] = glConfig[key];
15454
+ }
15455
+ applyProps(renderer, glProps);
15424
15456
  }
15425
15457
  if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer) {
15426
15458
  const currentRenderer = state.renderer;
15427
15459
  if (!is.equ(rendererConfig, currentRenderer, shallowLoose)) {
15428
- applyProps(currentRenderer, rendererConfig);
15460
+ const rendererProps = {};
15461
+ for (const key in rendererConfig) {
15462
+ if (!nonApplyProps.includes(key)) rendererProps[key] = rendererConfig[key];
15463
+ }
15464
+ applyProps(currentRenderer, rendererProps);
15429
15465
  }
15430
15466
  }
15431
15467
  const scheduler = getScheduler();
@@ -15739,8 +15775,18 @@ function CanvasImpl({
15739
15775
  forceEven,
15740
15776
  ...props
15741
15777
  }) {
15742
- const { primaryCanvas, scheduler, ...rendererConfig } = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp) ? rendererProp : { primaryCanvas: void 0, scheduler: void 0 };
15743
- const renderer = Object.keys(rendererConfig).length > 0 ? rendererConfig : rendererProp;
15778
+ const isRendererConfig = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp);
15779
+ let primaryCanvas;
15780
+ let scheduler;
15781
+ let renderer;
15782
+ if (isRendererConfig) {
15783
+ const { primaryCanvas: pc, scheduler: sc, ...rest } = rendererProp;
15784
+ primaryCanvas = pc;
15785
+ scheduler = sc;
15786
+ renderer = Object.keys(rest).length > 0 ? rest : rendererProp;
15787
+ } else {
15788
+ renderer = rendererProp;
15789
+ }
15744
15790
  React.useMemo(() => extend(THREE), []);
15745
15791
  const Bridge = useBridge();
15746
15792
  const backgroundProps = React.useMemo(() => {
@@ -15950,7 +15996,16 @@ function CanvasImpl({
15950
15996
  ...style
15951
15997
  },
15952
15998
  ...props,
15953
- children: /* @__PURE__ */ jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx("canvas", { ref: canvasRef, id, className: "r3f-canvas", style: { display: "block" }, children: fallback }) })
15999
+ children: /* @__PURE__ */ jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx(
16000
+ "canvas",
16001
+ {
16002
+ ref: canvasRef,
16003
+ id,
16004
+ className: "r3f-canvas",
16005
+ style: { display: "block", width: "100%", height: "100%" },
16006
+ children: fallback
16007
+ }
16008
+ ) })
15954
16009
  }
15955
16010
  );
15956
16011
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "10.0.0-canary.aecbafb",
3
+ "version": "10.0.0-canary.c3fa45d",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",