@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.
- package/dist/index.cjs +74 -19
- package/dist/index.d.cts +19 -7
- package/dist/index.d.mts +19 -7
- package/dist/index.d.ts +19 -7
- package/dist/index.mjs +75 -20
- package/dist/legacy.cjs +74 -19
- package/dist/legacy.d.cts +19 -7
- package/dist/legacy.d.mts +19 -7
- package/dist/legacy.d.ts +19 -7
- package/dist/legacy.mjs +75 -20
- package/dist/webgpu/index.cjs +74 -19
- package/dist/webgpu/index.d.cts +19 -7
- package/dist/webgpu/index.d.mts +19 -7
- package/dist/webgpu/index.d.ts +19 -7
- package/dist/webgpu/index.mjs +75 -20
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -160,7 +160,7 @@ function useEnvironment({
|
|
|
160
160
|
fiber.useLoader.clear(loader, multiFile ? [files] : files);
|
|
161
161
|
}
|
|
162
162
|
renderer.domElement.addEventListener("webglcontextlost", clearGainmapTexture, { once: true });
|
|
163
|
-
}, [files, renderer.domElement]);
|
|
163
|
+
}, [extension, files, loader, multiFile, renderer.domElement]);
|
|
164
164
|
const loaderResult = fiber.useLoader(
|
|
165
165
|
loader,
|
|
166
166
|
multiFile ? [files] : files,
|
|
@@ -360,7 +360,22 @@ function EnvironmentPortal({
|
|
|
360
360
|
environmentIntensity,
|
|
361
361
|
environmentRotation
|
|
362
362
|
});
|
|
363
|
-
}, [
|
|
363
|
+
}, [
|
|
364
|
+
children,
|
|
365
|
+
virtualScene,
|
|
366
|
+
fbo.texture,
|
|
367
|
+
scene,
|
|
368
|
+
defaultScene,
|
|
369
|
+
background,
|
|
370
|
+
frames,
|
|
371
|
+
gl,
|
|
372
|
+
blur,
|
|
373
|
+
backgroundBlurriness,
|
|
374
|
+
backgroundIntensity,
|
|
375
|
+
backgroundRotation,
|
|
376
|
+
environmentIntensity,
|
|
377
|
+
environmentRotation
|
|
378
|
+
]);
|
|
364
379
|
let count = 1;
|
|
365
380
|
fiber.useFrame(() => {
|
|
366
381
|
if (frames === Infinity || count < frames) {
|
|
@@ -1287,7 +1302,7 @@ function createEvents(store) {
|
|
|
1287
1302
|
}
|
|
1288
1303
|
function processDeferredPointer(event, pointerId) {
|
|
1289
1304
|
const state = store.getState();
|
|
1290
|
-
const {
|
|
1305
|
+
const { internal } = state;
|
|
1291
1306
|
if (!state.events.enabled) return;
|
|
1292
1307
|
const filter = filterPointerEvents;
|
|
1293
1308
|
const hits = intersect(event, filter);
|
|
@@ -1522,6 +1537,7 @@ function createPointerEvents(store) {
|
|
|
1522
1537
|
}
|
|
1523
1538
|
},
|
|
1524
1539
|
connect: (target) => {
|
|
1540
|
+
if (!target) return;
|
|
1525
1541
|
const { set, events } = store.getState();
|
|
1526
1542
|
events.disconnect?.();
|
|
1527
1543
|
set((state) => ({ events: { ...state.events, connected: target } }));
|
|
@@ -1884,7 +1900,7 @@ function shouldRun(job, now) {
|
|
|
1884
1900
|
const minInterval = 1e3 / job.fps;
|
|
1885
1901
|
const lastRun = job.lastRun ?? 0;
|
|
1886
1902
|
const elapsed = now - lastRun;
|
|
1887
|
-
if (elapsed < minInterval) return false;
|
|
1903
|
+
if (elapsed < minInterval - 1) return false;
|
|
1888
1904
|
if (job.drop) {
|
|
1889
1905
|
job.lastRun = now;
|
|
1890
1906
|
} else {
|
|
@@ -2911,14 +2927,16 @@ const createStore = (invalidate, advance) => {
|
|
|
2911
2927
|
oldSize = size;
|
|
2912
2928
|
oldDpr = viewport.dpr;
|
|
2913
2929
|
updateCamera(camera, size);
|
|
2914
|
-
if (canvasTarget) {
|
|
2930
|
+
if (internal.isSecondary && canvasTarget) {
|
|
2915
2931
|
if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
|
|
2916
|
-
|
|
2917
|
-
canvasTarget.setSize(size.width, size.height, updateStyle);
|
|
2932
|
+
canvasTarget.setSize(size.width, size.height, false);
|
|
2918
2933
|
} else {
|
|
2919
2934
|
if (viewport.dpr > 0) actualRenderer.setPixelRatio(viewport.dpr);
|
|
2920
|
-
|
|
2921
|
-
|
|
2935
|
+
actualRenderer.setSize(size.width, size.height, false);
|
|
2936
|
+
if (canvasTarget) {
|
|
2937
|
+
if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
|
|
2938
|
+
canvasTarget.setSize(size.width, size.height, false);
|
|
2939
|
+
}
|
|
2922
2940
|
}
|
|
2923
2941
|
}
|
|
2924
2942
|
if (camera !== oldCamera) {
|
|
@@ -15205,7 +15223,6 @@ function createRoot(canvas) {
|
|
|
15205
15223
|
events,
|
|
15206
15224
|
onCreated: onCreatedCallback,
|
|
15207
15225
|
shadows = false,
|
|
15208
|
-
textureColorSpace = webgpu.SRGBColorSpace,
|
|
15209
15226
|
orthographic = false,
|
|
15210
15227
|
frameloop = "always",
|
|
15211
15228
|
dpr = [1, 2],
|
|
@@ -15220,6 +15237,7 @@ function createRoot(canvas) {
|
|
|
15220
15237
|
_sizeProps,
|
|
15221
15238
|
forceEven
|
|
15222
15239
|
} = props;
|
|
15240
|
+
const textureColorSpace = is.obj(glConfig) && !is.fun(glConfig) && !isRenderer(glConfig) && glConfig.textureColorSpace || is.obj(rendererConfig) && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && rendererConfig.textureColorSpace || webgpu.SRGBColorSpace;
|
|
15223
15241
|
const state = store.getState();
|
|
15224
15242
|
const defaultGLProps = {
|
|
15225
15243
|
canvas,
|
|
@@ -15390,7 +15408,7 @@ function createRoot(canvas) {
|
|
|
15390
15408
|
lastConfiguredProps.performance = performance;
|
|
15391
15409
|
}
|
|
15392
15410
|
if (!state.xr) {
|
|
15393
|
-
const handleXRFrame = (timestamp,
|
|
15411
|
+
const handleXRFrame = (timestamp, _frame) => {
|
|
15394
15412
|
const state2 = store.getState();
|
|
15395
15413
|
if (state2.frameloop === "never") return;
|
|
15396
15414
|
advance(timestamp);
|
|
@@ -15426,15 +15444,22 @@ function createRoot(canvas) {
|
|
|
15426
15444
|
const oldType = renderer.shadowMap.type;
|
|
15427
15445
|
renderer.shadowMap.enabled = !!shadows;
|
|
15428
15446
|
if (is.boo(shadows)) {
|
|
15429
|
-
renderer.shadowMap.type = webgpu.
|
|
15447
|
+
renderer.shadowMap.type = webgpu.PCFShadowMap;
|
|
15430
15448
|
} else if (is.str(shadows)) {
|
|
15449
|
+
if (shadows === "soft") {
|
|
15450
|
+
notifyDepreciated({
|
|
15451
|
+
heading: 'shadows="soft" is deprecated',
|
|
15452
|
+
body: "Three has depreciated soft and improved basic PCFShadows, we converted for you.",
|
|
15453
|
+
link: "https://github.com/mrdoob/three.js/wiki/Migration-Guide?utm_source=chatgpt.com#181--182"
|
|
15454
|
+
});
|
|
15455
|
+
}
|
|
15431
15456
|
const types = {
|
|
15432
15457
|
basic: webgpu.BasicShadowMap,
|
|
15433
15458
|
percentage: webgpu.PCFShadowMap,
|
|
15434
|
-
soft: webgpu.
|
|
15459
|
+
soft: webgpu.PCFShadowMap,
|
|
15435
15460
|
variance: webgpu.VSMShadowMap
|
|
15436
15461
|
};
|
|
15437
|
-
renderer.shadowMap.type = types[shadows] ?? webgpu.
|
|
15462
|
+
renderer.shadowMap.type = types[shadows] ?? webgpu.PCFShadowMap;
|
|
15438
15463
|
} else if (is.obj(shadows)) {
|
|
15439
15464
|
Object.assign(renderer.shadowMap, shadows);
|
|
15440
15465
|
}
|
|
@@ -15450,13 +15475,24 @@ function createRoot(canvas) {
|
|
|
15450
15475
|
if (state.textureColorSpace !== textureColorSpace) state.set(() => ({ textureColorSpace }));
|
|
15451
15476
|
lastConfiguredProps.textureColorSpace = textureColorSpace;
|
|
15452
15477
|
}
|
|
15478
|
+
const r3fProps = ["textureColorSpace"];
|
|
15479
|
+
const constructorOnlyProps = ["samples", "antialias", "alpha", "canvas", "powerPreference"];
|
|
15480
|
+
const nonApplyProps = [...r3fProps, ...constructorOnlyProps];
|
|
15453
15481
|
if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, renderer, shallowLoose)) {
|
|
15454
|
-
|
|
15482
|
+
const glProps = {};
|
|
15483
|
+
for (const key in glConfig) {
|
|
15484
|
+
if (!nonApplyProps.includes(key)) glProps[key] = glConfig[key];
|
|
15485
|
+
}
|
|
15486
|
+
applyProps(renderer, glProps);
|
|
15455
15487
|
}
|
|
15456
15488
|
if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer) {
|
|
15457
15489
|
const currentRenderer = state.renderer;
|
|
15458
15490
|
if (!is.equ(rendererConfig, currentRenderer, shallowLoose)) {
|
|
15459
|
-
|
|
15491
|
+
const rendererProps = {};
|
|
15492
|
+
for (const key in rendererConfig) {
|
|
15493
|
+
if (!nonApplyProps.includes(key)) rendererProps[key] = rendererConfig[key];
|
|
15494
|
+
}
|
|
15495
|
+
applyProps(currentRenderer, rendererProps);
|
|
15460
15496
|
}
|
|
15461
15497
|
}
|
|
15462
15498
|
const scheduler = getScheduler();
|
|
@@ -15770,8 +15806,18 @@ function CanvasImpl({
|
|
|
15770
15806
|
forceEven,
|
|
15771
15807
|
...props
|
|
15772
15808
|
}) {
|
|
15773
|
-
const
|
|
15774
|
-
|
|
15809
|
+
const isRendererConfig = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp);
|
|
15810
|
+
let primaryCanvas;
|
|
15811
|
+
let scheduler;
|
|
15812
|
+
let renderer;
|
|
15813
|
+
if (isRendererConfig) {
|
|
15814
|
+
const { primaryCanvas: pc, scheduler: sc, ...rest } = rendererProp;
|
|
15815
|
+
primaryCanvas = pc;
|
|
15816
|
+
scheduler = sc;
|
|
15817
|
+
renderer = Object.keys(rest).length > 0 ? rest : rendererProp;
|
|
15818
|
+
} else {
|
|
15819
|
+
renderer = rendererProp;
|
|
15820
|
+
}
|
|
15775
15821
|
React__namespace.useMemo(() => extend(THREE), []);
|
|
15776
15822
|
const Bridge = useBridge();
|
|
15777
15823
|
const backgroundProps = React__namespace.useMemo(() => {
|
|
@@ -15981,7 +16027,16 @@ function CanvasImpl({
|
|
|
15981
16027
|
...style
|
|
15982
16028
|
},
|
|
15983
16029
|
...props,
|
|
15984
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16030
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16031
|
+
"canvas",
|
|
16032
|
+
{
|
|
16033
|
+
ref: canvasRef,
|
|
16034
|
+
id,
|
|
16035
|
+
className: "r3f-canvas",
|
|
16036
|
+
style: { display: "block", width: "100%", height: "100%" },
|
|
16037
|
+
children: fallback
|
|
16038
|
+
}
|
|
16039
|
+
) })
|
|
15985
16040
|
}
|
|
15986
16041
|
);
|
|
15987
16042
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -855,6 +855,20 @@ interface Renderer {
|
|
|
855
855
|
render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
|
|
856
856
|
}
|
|
857
857
|
|
|
858
|
+
//* Color Management Config ==============================
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Color management configuration shared by both WebGL and WebGPU renderers.
|
|
862
|
+
*/
|
|
863
|
+
interface ColorManagementConfig {
|
|
864
|
+
/**
|
|
865
|
+
* Color space assigned to 8-bit input textures (color maps).
|
|
866
|
+
* Defaults to sRGB. Most textures are authored in sRGB.
|
|
867
|
+
* @default THREE.SRGBColorSpace
|
|
868
|
+
*/
|
|
869
|
+
textureColorSpace?: THREE$1.ColorSpace
|
|
870
|
+
}
|
|
871
|
+
|
|
858
872
|
//* WebGL Renderer Props ==============================
|
|
859
873
|
|
|
860
874
|
type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
|
|
@@ -865,7 +879,7 @@ type GLProps =
|
|
|
865
879
|
| Renderer
|
|
866
880
|
| ((defaultProps: DefaultGLProps) => Renderer)
|
|
867
881
|
| ((defaultProps: DefaultGLProps) => Promise<Renderer>)
|
|
868
|
-
| Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
|
|
882
|
+
| (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
|
|
869
883
|
|
|
870
884
|
//* WebGPU Renderer Props ==============================
|
|
871
885
|
|
|
@@ -891,9 +905,9 @@ interface CanvasSchedulerConfig {
|
|
|
891
905
|
}
|
|
892
906
|
|
|
893
907
|
/**
|
|
894
|
-
* Extended renderer configuration for multi-canvas support.
|
|
908
|
+
* Extended renderer configuration for multi-canvas support and color management.
|
|
895
909
|
*/
|
|
896
|
-
interface RendererConfigExtended {
|
|
910
|
+
interface RendererConfigExtended extends ColorManagementConfig {
|
|
897
911
|
/** Share renderer from another canvas (WebGPU only) */
|
|
898
912
|
primaryCanvas?: string
|
|
899
913
|
/** Canvas-level scheduler options */
|
|
@@ -958,8 +972,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
|
|
|
958
972
|
* @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
|
|
959
973
|
*/
|
|
960
974
|
shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
|
|
961
|
-
/** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
|
|
962
|
-
textureColorSpace?: THREE$1.ColorSpace
|
|
963
975
|
/** Creates an orthographic camera */
|
|
964
976
|
orthographic?: boolean
|
|
965
977
|
/**
|
|
@@ -1212,7 +1224,7 @@ interface CanvasProps
|
|
|
1212
1224
|
*/
|
|
1213
1225
|
resize?: Options
|
|
1214
1226
|
/** The target where events are being subscribed to, default: the div that wraps canvas */
|
|
1215
|
-
eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
|
|
1227
|
+
eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
|
|
1216
1228
|
/** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
|
|
1217
1229
|
eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
|
|
1218
1230
|
/** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
|
|
@@ -4367,4 +4379,4 @@ declare function isOnce(value: unknown): value is {
|
|
|
4367
4379
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
4368
4380
|
|
|
4369
4381
|
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, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, 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, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
4370
|
-
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
|
4382
|
+
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.d.mts
CHANGED
|
@@ -855,6 +855,20 @@ interface Renderer {
|
|
|
855
855
|
render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
|
|
856
856
|
}
|
|
857
857
|
|
|
858
|
+
//* Color Management Config ==============================
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Color management configuration shared by both WebGL and WebGPU renderers.
|
|
862
|
+
*/
|
|
863
|
+
interface ColorManagementConfig {
|
|
864
|
+
/**
|
|
865
|
+
* Color space assigned to 8-bit input textures (color maps).
|
|
866
|
+
* Defaults to sRGB. Most textures are authored in sRGB.
|
|
867
|
+
* @default THREE.SRGBColorSpace
|
|
868
|
+
*/
|
|
869
|
+
textureColorSpace?: THREE$1.ColorSpace
|
|
870
|
+
}
|
|
871
|
+
|
|
858
872
|
//* WebGL Renderer Props ==============================
|
|
859
873
|
|
|
860
874
|
type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
|
|
@@ -865,7 +879,7 @@ type GLProps =
|
|
|
865
879
|
| Renderer
|
|
866
880
|
| ((defaultProps: DefaultGLProps) => Renderer)
|
|
867
881
|
| ((defaultProps: DefaultGLProps) => Promise<Renderer>)
|
|
868
|
-
| Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
|
|
882
|
+
| (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
|
|
869
883
|
|
|
870
884
|
//* WebGPU Renderer Props ==============================
|
|
871
885
|
|
|
@@ -891,9 +905,9 @@ interface CanvasSchedulerConfig {
|
|
|
891
905
|
}
|
|
892
906
|
|
|
893
907
|
/**
|
|
894
|
-
* Extended renderer configuration for multi-canvas support.
|
|
908
|
+
* Extended renderer configuration for multi-canvas support and color management.
|
|
895
909
|
*/
|
|
896
|
-
interface RendererConfigExtended {
|
|
910
|
+
interface RendererConfigExtended extends ColorManagementConfig {
|
|
897
911
|
/** Share renderer from another canvas (WebGPU only) */
|
|
898
912
|
primaryCanvas?: string
|
|
899
913
|
/** Canvas-level scheduler options */
|
|
@@ -958,8 +972,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
|
|
|
958
972
|
* @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
|
|
959
973
|
*/
|
|
960
974
|
shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
|
|
961
|
-
/** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
|
|
962
|
-
textureColorSpace?: THREE$1.ColorSpace
|
|
963
975
|
/** Creates an orthographic camera */
|
|
964
976
|
orthographic?: boolean
|
|
965
977
|
/**
|
|
@@ -1212,7 +1224,7 @@ interface CanvasProps
|
|
|
1212
1224
|
*/
|
|
1213
1225
|
resize?: Options
|
|
1214
1226
|
/** The target where events are being subscribed to, default: the div that wraps canvas */
|
|
1215
|
-
eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
|
|
1227
|
+
eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
|
|
1216
1228
|
/** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
|
|
1217
1229
|
eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
|
|
1218
1230
|
/** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
|
|
@@ -4367,4 +4379,4 @@ declare function isOnce(value: unknown): value is {
|
|
|
4367
4379
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
4368
4380
|
|
|
4369
4381
|
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, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, 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, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
4370
|
-
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
|
4382
|
+
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -855,6 +855,20 @@ interface Renderer {
|
|
|
855
855
|
render: (scene: THREE$1.Scene, camera: THREE$1.Camera) => any
|
|
856
856
|
}
|
|
857
857
|
|
|
858
|
+
//* Color Management Config ==============================
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Color management configuration shared by both WebGL and WebGPU renderers.
|
|
862
|
+
*/
|
|
863
|
+
interface ColorManagementConfig {
|
|
864
|
+
/**
|
|
865
|
+
* Color space assigned to 8-bit input textures (color maps).
|
|
866
|
+
* Defaults to sRGB. Most textures are authored in sRGB.
|
|
867
|
+
* @default THREE.SRGBColorSpace
|
|
868
|
+
*/
|
|
869
|
+
textureColorSpace?: THREE$1.ColorSpace
|
|
870
|
+
}
|
|
871
|
+
|
|
858
872
|
//* WebGL Renderer Props ==============================
|
|
859
873
|
|
|
860
874
|
type DefaultGLProps = Omit<THREE$1.WebGLRendererParameters, 'canvas'> & {
|
|
@@ -865,7 +879,7 @@ type GLProps =
|
|
|
865
879
|
| Renderer
|
|
866
880
|
| ((defaultProps: DefaultGLProps) => Renderer)
|
|
867
881
|
| ((defaultProps: DefaultGLProps) => Promise<Renderer>)
|
|
868
|
-
| Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters>
|
|
882
|
+
| (Partial<Properties<THREE$1.WebGLRenderer> | THREE$1.WebGLRendererParameters> & ColorManagementConfig)
|
|
869
883
|
|
|
870
884
|
//* WebGPU Renderer Props ==============================
|
|
871
885
|
|
|
@@ -891,9 +905,9 @@ interface CanvasSchedulerConfig {
|
|
|
891
905
|
}
|
|
892
906
|
|
|
893
907
|
/**
|
|
894
|
-
* Extended renderer configuration for multi-canvas support.
|
|
908
|
+
* Extended renderer configuration for multi-canvas support and color management.
|
|
895
909
|
*/
|
|
896
|
-
interface RendererConfigExtended {
|
|
910
|
+
interface RendererConfigExtended extends ColorManagementConfig {
|
|
897
911
|
/** Share renderer from another canvas (WebGPU only) */
|
|
898
912
|
primaryCanvas?: string
|
|
899
913
|
/** Canvas-level scheduler options */
|
|
@@ -958,8 +972,6 @@ interface RenderProps<TCanvas extends HTMLCanvasElement | OffscreenCanvas$1> {
|
|
|
958
972
|
* @see https://threejs.org/docs/#api/en/renderers/WebGLRenderer.shadowMap
|
|
959
973
|
*/
|
|
960
974
|
shadows?: boolean | 'basic' | 'percentage' | 'soft' | 'variance' | Partial<THREE$1.WebGLShadowMap>
|
|
961
|
-
/** Color space assigned to 8-bit input textures (color maps). Defaults to sRGB. Most textures are authored in sRGB. */
|
|
962
|
-
textureColorSpace?: THREE$1.ColorSpace
|
|
963
975
|
/** Creates an orthographic camera */
|
|
964
976
|
orthographic?: boolean
|
|
965
977
|
/**
|
|
@@ -1212,7 +1224,7 @@ interface CanvasProps
|
|
|
1212
1224
|
*/
|
|
1213
1225
|
resize?: Options
|
|
1214
1226
|
/** The target where events are being subscribed to, default: the div that wraps canvas */
|
|
1215
|
-
eventSource?: HTMLElement | React$1.RefObject<HTMLElement>
|
|
1227
|
+
eventSource?: HTMLElement | React$1.RefObject<HTMLElement | null>
|
|
1216
1228
|
/** The event prefix that is cast into canvas pointer x/y events, default: "offset" */
|
|
1217
1229
|
eventPrefix?: 'offset' | 'client' | 'page' | 'layer' | 'screen'
|
|
1218
1230
|
/** Enable/disable automatic HMR refresh for TSL nodes and uniforms, default: true in dev */
|
|
@@ -4367,4 +4379,4 @@ declare function isOnce(value: unknown): value is {
|
|
|
4367
4379
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
4368
4380
|
|
|
4369
4381
|
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, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, 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, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
4370
|
-
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
|
4382
|
+
export type { Act, AddPhaseOptions, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, 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, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootOptions, RootState, RootStore, SchedulerApi, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureEntry, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseFrameNextOptions, UseFrameOptions, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.mjs
CHANGED
|
@@ -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,
|
|
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 } from 'three/webgpu';
|
|
3
3
|
import { WebGLRenderTarget, WebGLRenderer } from 'three';
|
|
4
4
|
import { Inspector } from 'three/addons/inspector/Inspector.js';
|
|
5
5
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
@@ -139,7 +139,7 @@ function useEnvironment({
|
|
|
139
139
|
useLoader$1.clear(loader, multiFile ? [files] : files);
|
|
140
140
|
}
|
|
141
141
|
renderer.domElement.addEventListener("webglcontextlost", clearGainmapTexture, { once: true });
|
|
142
|
-
}, [files, renderer.domElement]);
|
|
142
|
+
}, [extension, files, loader, multiFile, renderer.domElement]);
|
|
143
143
|
const loaderResult = useLoader$1(
|
|
144
144
|
loader,
|
|
145
145
|
multiFile ? [files] : files,
|
|
@@ -339,7 +339,22 @@ function EnvironmentPortal({
|
|
|
339
339
|
environmentIntensity,
|
|
340
340
|
environmentRotation
|
|
341
341
|
});
|
|
342
|
-
}, [
|
|
342
|
+
}, [
|
|
343
|
+
children,
|
|
344
|
+
virtualScene,
|
|
345
|
+
fbo.texture,
|
|
346
|
+
scene,
|
|
347
|
+
defaultScene,
|
|
348
|
+
background,
|
|
349
|
+
frames,
|
|
350
|
+
gl,
|
|
351
|
+
blur,
|
|
352
|
+
backgroundBlurriness,
|
|
353
|
+
backgroundIntensity,
|
|
354
|
+
backgroundRotation,
|
|
355
|
+
environmentIntensity,
|
|
356
|
+
environmentRotation
|
|
357
|
+
]);
|
|
343
358
|
let count = 1;
|
|
344
359
|
useFrame$1(() => {
|
|
345
360
|
if (frames === Infinity || count < frames) {
|
|
@@ -1266,7 +1281,7 @@ function createEvents(store) {
|
|
|
1266
1281
|
}
|
|
1267
1282
|
function processDeferredPointer(event, pointerId) {
|
|
1268
1283
|
const state = store.getState();
|
|
1269
|
-
const {
|
|
1284
|
+
const { internal } = state;
|
|
1270
1285
|
if (!state.events.enabled) return;
|
|
1271
1286
|
const filter = filterPointerEvents;
|
|
1272
1287
|
const hits = intersect(event, filter);
|
|
@@ -1501,6 +1516,7 @@ function createPointerEvents(store) {
|
|
|
1501
1516
|
}
|
|
1502
1517
|
},
|
|
1503
1518
|
connect: (target) => {
|
|
1519
|
+
if (!target) return;
|
|
1504
1520
|
const { set, events } = store.getState();
|
|
1505
1521
|
events.disconnect?.();
|
|
1506
1522
|
set((state) => ({ events: { ...state.events, connected: target } }));
|
|
@@ -1863,7 +1879,7 @@ function shouldRun(job, now) {
|
|
|
1863
1879
|
const minInterval = 1e3 / job.fps;
|
|
1864
1880
|
const lastRun = job.lastRun ?? 0;
|
|
1865
1881
|
const elapsed = now - lastRun;
|
|
1866
|
-
if (elapsed < minInterval) return false;
|
|
1882
|
+
if (elapsed < minInterval - 1) return false;
|
|
1867
1883
|
if (job.drop) {
|
|
1868
1884
|
job.lastRun = now;
|
|
1869
1885
|
} else {
|
|
@@ -2890,14 +2906,16 @@ const createStore = (invalidate, advance) => {
|
|
|
2890
2906
|
oldSize = size;
|
|
2891
2907
|
oldDpr = viewport.dpr;
|
|
2892
2908
|
updateCamera(camera, size);
|
|
2893
|
-
if (canvasTarget) {
|
|
2909
|
+
if (internal.isSecondary && canvasTarget) {
|
|
2894
2910
|
if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
|
|
2895
|
-
|
|
2896
|
-
canvasTarget.setSize(size.width, size.height, updateStyle);
|
|
2911
|
+
canvasTarget.setSize(size.width, size.height, false);
|
|
2897
2912
|
} else {
|
|
2898
2913
|
if (viewport.dpr > 0) actualRenderer.setPixelRatio(viewport.dpr);
|
|
2899
|
-
|
|
2900
|
-
|
|
2914
|
+
actualRenderer.setSize(size.width, size.height, false);
|
|
2915
|
+
if (canvasTarget) {
|
|
2916
|
+
if (viewport.dpr > 0) canvasTarget.setPixelRatio(viewport.dpr);
|
|
2917
|
+
canvasTarget.setSize(size.width, size.height, false);
|
|
2918
|
+
}
|
|
2901
2919
|
}
|
|
2902
2920
|
}
|
|
2903
2921
|
if (camera !== oldCamera) {
|
|
@@ -15184,7 +15202,6 @@ function createRoot(canvas) {
|
|
|
15184
15202
|
events,
|
|
15185
15203
|
onCreated: onCreatedCallback,
|
|
15186
15204
|
shadows = false,
|
|
15187
|
-
textureColorSpace = SRGBColorSpace,
|
|
15188
15205
|
orthographic = false,
|
|
15189
15206
|
frameloop = "always",
|
|
15190
15207
|
dpr = [1, 2],
|
|
@@ -15199,6 +15216,7 @@ function createRoot(canvas) {
|
|
|
15199
15216
|
_sizeProps,
|
|
15200
15217
|
forceEven
|
|
15201
15218
|
} = props;
|
|
15219
|
+
const textureColorSpace = is.obj(glConfig) && !is.fun(glConfig) && !isRenderer(glConfig) && glConfig.textureColorSpace || is.obj(rendererConfig) && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && rendererConfig.textureColorSpace || SRGBColorSpace;
|
|
15202
15220
|
const state = store.getState();
|
|
15203
15221
|
const defaultGLProps = {
|
|
15204
15222
|
canvas,
|
|
@@ -15369,7 +15387,7 @@ function createRoot(canvas) {
|
|
|
15369
15387
|
lastConfiguredProps.performance = performance;
|
|
15370
15388
|
}
|
|
15371
15389
|
if (!state.xr) {
|
|
15372
|
-
const handleXRFrame = (timestamp,
|
|
15390
|
+
const handleXRFrame = (timestamp, _frame) => {
|
|
15373
15391
|
const state2 = store.getState();
|
|
15374
15392
|
if (state2.frameloop === "never") return;
|
|
15375
15393
|
advance(timestamp);
|
|
@@ -15405,15 +15423,22 @@ function createRoot(canvas) {
|
|
|
15405
15423
|
const oldType = renderer.shadowMap.type;
|
|
15406
15424
|
renderer.shadowMap.enabled = !!shadows;
|
|
15407
15425
|
if (is.boo(shadows)) {
|
|
15408
|
-
renderer.shadowMap.type =
|
|
15426
|
+
renderer.shadowMap.type = PCFShadowMap;
|
|
15409
15427
|
} else if (is.str(shadows)) {
|
|
15428
|
+
if (shadows === "soft") {
|
|
15429
|
+
notifyDepreciated({
|
|
15430
|
+
heading: 'shadows="soft" is deprecated',
|
|
15431
|
+
body: "Three has depreciated soft and improved basic PCFShadows, we converted for you.",
|
|
15432
|
+
link: "https://github.com/mrdoob/three.js/wiki/Migration-Guide?utm_source=chatgpt.com#181--182"
|
|
15433
|
+
});
|
|
15434
|
+
}
|
|
15410
15435
|
const types = {
|
|
15411
15436
|
basic: BasicShadowMap,
|
|
15412
15437
|
percentage: PCFShadowMap,
|
|
15413
|
-
soft:
|
|
15438
|
+
soft: PCFShadowMap,
|
|
15414
15439
|
variance: VSMShadowMap
|
|
15415
15440
|
};
|
|
15416
|
-
renderer.shadowMap.type = types[shadows] ??
|
|
15441
|
+
renderer.shadowMap.type = types[shadows] ?? PCFShadowMap;
|
|
15417
15442
|
} else if (is.obj(shadows)) {
|
|
15418
15443
|
Object.assign(renderer.shadowMap, shadows);
|
|
15419
15444
|
}
|
|
@@ -15429,13 +15454,24 @@ function createRoot(canvas) {
|
|
|
15429
15454
|
if (state.textureColorSpace !== textureColorSpace) state.set(() => ({ textureColorSpace }));
|
|
15430
15455
|
lastConfiguredProps.textureColorSpace = textureColorSpace;
|
|
15431
15456
|
}
|
|
15457
|
+
const r3fProps = ["textureColorSpace"];
|
|
15458
|
+
const constructorOnlyProps = ["samples", "antialias", "alpha", "canvas", "powerPreference"];
|
|
15459
|
+
const nonApplyProps = [...r3fProps, ...constructorOnlyProps];
|
|
15432
15460
|
if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, renderer, shallowLoose)) {
|
|
15433
|
-
|
|
15461
|
+
const glProps = {};
|
|
15462
|
+
for (const key in glConfig) {
|
|
15463
|
+
if (!nonApplyProps.includes(key)) glProps[key] = glConfig[key];
|
|
15464
|
+
}
|
|
15465
|
+
applyProps(renderer, glProps);
|
|
15434
15466
|
}
|
|
15435
15467
|
if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer) {
|
|
15436
15468
|
const currentRenderer = state.renderer;
|
|
15437
15469
|
if (!is.equ(rendererConfig, currentRenderer, shallowLoose)) {
|
|
15438
|
-
|
|
15470
|
+
const rendererProps = {};
|
|
15471
|
+
for (const key in rendererConfig) {
|
|
15472
|
+
if (!nonApplyProps.includes(key)) rendererProps[key] = rendererConfig[key];
|
|
15473
|
+
}
|
|
15474
|
+
applyProps(currentRenderer, rendererProps);
|
|
15439
15475
|
}
|
|
15440
15476
|
}
|
|
15441
15477
|
const scheduler = getScheduler();
|
|
@@ -15749,8 +15785,18 @@ function CanvasImpl({
|
|
|
15749
15785
|
forceEven,
|
|
15750
15786
|
...props
|
|
15751
15787
|
}) {
|
|
15752
|
-
const
|
|
15753
|
-
|
|
15788
|
+
const isRendererConfig = typeof rendererProp === "object" && rendererProp !== null && !("render" in rendererProp) && ("primaryCanvas" in rendererProp || "scheduler" in rendererProp);
|
|
15789
|
+
let primaryCanvas;
|
|
15790
|
+
let scheduler;
|
|
15791
|
+
let renderer;
|
|
15792
|
+
if (isRendererConfig) {
|
|
15793
|
+
const { primaryCanvas: pc, scheduler: sc, ...rest } = rendererProp;
|
|
15794
|
+
primaryCanvas = pc;
|
|
15795
|
+
scheduler = sc;
|
|
15796
|
+
renderer = Object.keys(rest).length > 0 ? rest : rendererProp;
|
|
15797
|
+
} else {
|
|
15798
|
+
renderer = rendererProp;
|
|
15799
|
+
}
|
|
15754
15800
|
React.useMemo(() => extend(THREE), []);
|
|
15755
15801
|
const Bridge = useBridge();
|
|
15756
15802
|
const backgroundProps = React.useMemo(() => {
|
|
@@ -15960,7 +16006,16 @@ function CanvasImpl({
|
|
|
15960
16006
|
...style
|
|
15961
16007
|
},
|
|
15962
16008
|
...props,
|
|
15963
|
-
children: /* @__PURE__ */ jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx(
|
|
16009
|
+
children: /* @__PURE__ */ jsx("div", { ref: containerRef, className: "r3f-canvas-container", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx(
|
|
16010
|
+
"canvas",
|
|
16011
|
+
{
|
|
16012
|
+
ref: canvasRef,
|
|
16013
|
+
id,
|
|
16014
|
+
className: "r3f-canvas",
|
|
16015
|
+
style: { display: "block", width: "100%", height: "100%" },
|
|
16016
|
+
children: fallback
|
|
16017
|
+
}
|
|
16018
|
+
) })
|
|
15964
16019
|
}
|
|
15965
16020
|
);
|
|
15966
16021
|
}
|