From 6546d3fa4629d838304ff379bec4c8b3de5277f2 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 16 Sep 2024 09:41:22 -0400 Subject: [PATCH] WebGPURenderer: Added basic three.webgpu.nodes.js (#1225) * Initial updates * Update three.js * Update * Add src * Update patch and delete src * Update declarations * Add builds * Format --- package.json | 3 +- pnpm-lock.yaml | 8 +- src-testing/changes.patch | 110 +++++----- src-testing/create-src.js | 3 +- src-testing/declarations.js | 3 +- three.js | 2 +- types/three/build/three.webgpu.nodes.d.ts | 1 + types/three/build/three.webgpu.nodes.min.d.ts | 1 + types/three/src/Three.WebGPU.Nodes.d.ts | 201 ++++++++++++++++++ types/three/src/Three.WebGPU.d.ts | 2 +- .../renderers/common/StandardRenderer.d.ts | 12 -- .../webgpu/WebGPURenderer.Nodes.d.ts | 12 ++ .../src/renderers/webgpu/WebGPURenderer.d.ts | 10 +- .../webgpu/nodes/BasicNodeLibrary.d.ts | 5 + .../webgpu/nodes/StandardNodeLibrary.d.ts | 5 + 15 files changed, 299 insertions(+), 79 deletions(-) create mode 100644 types/three/build/three.webgpu.nodes.d.ts create mode 100644 types/three/build/three.webgpu.nodes.min.d.ts create mode 100644 types/three/src/Three.WebGPU.Nodes.d.ts delete mode 100644 types/three/src/renderers/common/StandardRenderer.d.ts create mode 100644 types/three/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts create mode 100644 types/three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts create mode 100644 types/three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts diff --git a/package.json b/package.json index ee4826e16..a5a76ab56 100644 --- a/package.json +++ b/package.json @@ -22,5 +22,6 @@ "dprint": "^0.47.2", "source-map-support": "^0.5.21", "typescript": "latest" - } + }, + "packageManager": "pnpm@9.9.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee542bf26..40d425e3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1994,8 +1994,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.6.0-dev.20240819: - resolution: {integrity: sha512-uNOMaNm8jBELjhuXZG5tSS6Pa6O/Wf89hawKkWaZcZvbkgkY2ykvNTNrkCP7QCQTSS3jwEVvd+pRhxJPxUeG4g==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true @@ -2218,7 +2218,7 @@ snapshots: typescript-5.3: typescript@5.3.3 typescript-5.4: typescript@5.4.5 typescript-5.5: typescript@5.5.4 - typescript-5.6: typescript@5.6.0-dev.20240819 + typescript-5.6: typescript@5.6.2 typescript-5.7: typescript@5.7.0-dev.20240831 '@definitelytyped/typescript-versions@0.1.4': {} @@ -4348,7 +4348,7 @@ snapshots: typescript@5.5.4: {} - typescript@5.6.0-dev.20240819: {} + typescript@5.6.2: {} typescript@5.7.0-dev.20240831: {} diff --git a/src-testing/changes.patch b/src-testing/changes.patch index d7fe7326e..6b537222c 100644 --- a/src-testing/changes.patch +++ b/src-testing/changes.patch @@ -4864,10 +4864,10 @@ index 0ec34b04..573cae2b 100644 this.vertexProgram = vertexProgram; diff --git a/src-testing/src/renderers/common/Renderer.ts b/src-testing/src/renderers/common/Renderer.ts -index d7e32017..eacf3c69 100644 +index 98e8a43f..fabd1b2d 100644 --- a/src-testing/src/renderers/common/Renderer.ts +++ b/src-testing/src/renderers/common/Renderer.ts -@@ -36,7 +36,36 @@ import { +@@ -35,7 +35,36 @@ import { HalfFloatType, RGBAFormat, PCFShadowMap, @@ -4904,9 +4904,9 @@ index d7e32017..eacf3c69 100644 const _scene = /*@__PURE__*/ new Scene(); const _drawingBufferSize = /*@__PURE__*/ new Vector2(); -@@ -45,8 +74,156 @@ const _frustum = /*@__PURE__*/ new Frustum(); +@@ -44,8 +73,156 @@ const _frustum = /*@__PURE__*/ new Frustum(); const _projScreenMatrix = /*@__PURE__*/ new Matrix4(); - const _vector3 = /*@__PURE__*/ new Vector3(); + const _vector4 = /*@__PURE__*/ new Vector4(); +export interface RendererParameters { + logarithmicDepthBuffer?: boolean | undefined; @@ -5062,7 +5062,7 @@ index d7e32017..eacf3c69 100644 this.isRenderer = true; // -@@ -169,12 +346,12 @@ class Renderer { +@@ -168,12 +345,12 @@ class Renderer { getShaderAsync: async (scene, camera, object) => { await this.compileAsync(scene, camera); @@ -5079,7 +5079,7 @@ index d7e32017..eacf3c69 100644 object, material, scene, -@@ -262,12 +439,12 @@ class Renderer { +@@ -261,12 +438,12 @@ class Renderer { return this.backend.coordinateSystem; } @@ -5094,7 +5094,7 @@ index d7e32017..eacf3c69 100644 const previousRenderId = nodeFrame.renderId; const previousRenderContext = this._currentRenderContext; -@@ -276,15 +453,15 @@ class Renderer { +@@ -275,15 +452,15 @@ class Renderer { // @@ -5113,7 +5113,7 @@ index d7e32017..eacf3c69 100644 this._currentRenderContext = renderContext; this._currentRenderObjectFunction = this.renderObject; -@@ -313,7 +490,7 @@ class Renderer { +@@ -312,7 +489,7 @@ class Renderer { // @@ -5122,7 +5122,7 @@ index d7e32017..eacf3c69 100644 renderList.begin(); this._projectObject(scene, camera, 0, renderList); -@@ -321,8 +498,8 @@ class Renderer { +@@ -320,8 +497,8 @@ class Renderer { // include lights from target scene if (targetScene !== scene) { targetScene.traverseVisible(function (object) { @@ -5133,7 +5133,7 @@ index d7e32017..eacf3c69 100644 } }); } -@@ -332,12 +509,12 @@ class Renderer { +@@ -331,12 +508,12 @@ class Renderer { // if (renderTarget !== null) { @@ -5150,7 +5150,7 @@ index d7e32017..eacf3c69 100644 } else { renderContext.textures = null; renderContext.depthTexture = null; -@@ -345,11 +522,11 @@ class Renderer { +@@ -344,11 +521,11 @@ class Renderer { // @@ -5164,7 +5164,7 @@ index d7e32017..eacf3c69 100644 // process render lists -@@ -377,7 +554,7 @@ class Renderer { +@@ -376,7 +553,7 @@ class Renderer { await Promise.all(compilationPromises); } @@ -5173,7 +5173,7 @@ index d7e32017..eacf3c69 100644 if (this._initialized === false) await this.init(); const renderContext = this._renderScene(scene, camera); -@@ -385,7 +562,7 @@ class Renderer { +@@ -384,7 +561,7 @@ class Renderer { await this.backend.resolveTimestampAsync(renderContext, 'render'); } @@ -5182,7 +5182,7 @@ index d7e32017..eacf3c69 100644 this._mrt = mrt; return this; -@@ -395,14 +572,14 @@ class Renderer { +@@ -394,14 +571,14 @@ class Renderer { return this._mrt; } @@ -5200,7 +5200,7 @@ index d7e32017..eacf3c69 100644 const renderBundleData = this.backend.get(renderBundle); if (renderBundleData.renderContexts === undefined) renderBundleData.renderContexts = new Set(); -@@ -440,7 +617,7 @@ class Renderer { +@@ -439,7 +616,7 @@ class Renderer { for (let i = 0, l = renderObjects.length; i < l; i++) { const renderObject = renderObjects[i]; @@ -5209,7 +5209,7 @@ index d7e32017..eacf3c69 100644 // -@@ -450,17 +627,17 @@ class Renderer { +@@ -449,17 +626,17 @@ class Renderer { ); renderObject.object.normalMatrix.getNormalMatrix(renderObject.object.modelViewMatrix); @@ -5231,7 +5231,7 @@ index d7e32017..eacf3c69 100644 if (this._initialized === false) { console.warn( 'THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.', -@@ -515,12 +692,12 @@ class Renderer { +@@ -514,12 +691,12 @@ class Renderer { return frameBufferTarget; } @@ -5246,7 +5246,7 @@ index d7e32017..eacf3c69 100644 const previousRenderId = nodeFrame.renderId; const previousRenderContext = this._currentRenderContext; -@@ -549,7 +726,7 @@ class Renderer { +@@ -548,7 +725,7 @@ class Renderer { // @@ -5255,7 +5255,7 @@ index d7e32017..eacf3c69 100644 this._currentRenderContext = renderContext; this._currentRenderObjectFunction = this._renderObjectFunction || this.renderObject; -@@ -621,7 +798,7 @@ class Renderer { +@@ -620,7 +797,7 @@ class Renderer { _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); _frustum.setFromProjectionMatrix(_projScreenMatrix, coordinateSystem); @@ -5264,7 +5264,7 @@ index d7e32017..eacf3c69 100644 renderList.begin(); this._projectObject(scene, camera, 0, renderList); -@@ -635,14 +812,14 @@ class Renderer { +@@ -634,14 +811,14 @@ class Renderer { // if (renderTarget !== null) { @@ -5285,7 +5285,7 @@ index d7e32017..eacf3c69 100644 renderContext.renderTarget = renderTarget; renderContext.depth = renderTarget.depthBuffer; renderContext.stencil = renderTarget.stencilBuffer; -@@ -663,11 +840,11 @@ class Renderer { +@@ -662,11 +839,11 @@ class Renderer { // @@ -5299,18 +5299,18 @@ index d7e32017..eacf3c69 100644 // -@@ -704,8 +881,8 @@ class Renderer { +@@ -703,8 +880,8 @@ class Renderer { const quad = this._quad; - if (this._nodes.hasOutputChange(renderTarget.texture)) { - quad.material.fragmentNode = this._nodes.getOutputNode(renderTarget.texture); -+ if (this._nodes!.hasOutputChange(renderTarget.texture)) { -+ quad.material.fragmentNode = this._nodes!.getOutputNode(renderTarget.texture); ++ if (this._nodes!.hasOutputChange(renderTarget!.texture)) { ++ quad.material.fragmentNode = this._nodes!.getOutputNode(renderTarget!.texture); quad.material.needsUpdate = true; } -@@ -733,13 +910,13 @@ class Renderer { +@@ -732,13 +909,13 @@ class Renderer { return this._activeMipmapLevel; } @@ -5327,7 +5327,7 @@ index d7e32017..eacf3c69 100644 return await this.backend.getArrayBufferAsync(attribute); } -@@ -751,11 +928,11 @@ class Renderer { +@@ -750,11 +927,11 @@ class Renderer { return this._pixelRatio; } @@ -5341,7 +5341,7 @@ index d7e32017..eacf3c69 100644 return target.set(this._width, this._height); } -@@ -765,7 +942,7 @@ class Renderer { +@@ -764,7 +941,7 @@ class Renderer { this.setSize(this._width, this._height, false); } @@ -5350,7 +5350,7 @@ index d7e32017..eacf3c69 100644 this._width = width; this._height = height; -@@ -779,7 +956,7 @@ class Renderer { +@@ -778,7 +955,7 @@ class Renderer { if (this._initialized) this.backend.updateSize(); } @@ -5359,7 +5359,7 @@ index d7e32017..eacf3c69 100644 this._width = width; this._height = height; -@@ -796,15 +973,15 @@ class Renderer { +@@ -795,15 +972,15 @@ class Renderer { if (this._initialized) this.backend.updateSize(); } @@ -5378,7 +5378,7 @@ index d7e32017..eacf3c69 100644 const scissor = this._scissor; target.x = scissor.x; -@@ -815,13 +992,15 @@ class Renderer { +@@ -814,13 +991,15 @@ class Renderer { return target; } @@ -5398,7 +5398,7 @@ index d7e32017..eacf3c69 100644 } } -@@ -829,34 +1008,36 @@ class Renderer { +@@ -828,34 +1007,36 @@ class Renderer { return this._scissorTest; } @@ -5443,7 +5443,7 @@ index d7e32017..eacf3c69 100644 this._clearColor.set(color); this._clearColor.a = alpha; } -@@ -865,7 +1046,7 @@ class Renderer { +@@ -864,7 +1045,7 @@ class Renderer { return this._clearColor.a; } @@ -5452,7 +5452,7 @@ index d7e32017..eacf3c69 100644 this._clearColor.a = alpha; } -@@ -873,7 +1054,7 @@ class Renderer { +@@ -872,7 +1053,7 @@ class Renderer { return this._clearDepth; } @@ -5461,7 +5461,7 @@ index d7e32017..eacf3c69 100644 this._clearDepth = depth; } -@@ -881,11 +1062,11 @@ class Renderer { +@@ -880,11 +1061,11 @@ class Renderer { return this._clearStencil; } @@ -5475,7 +5475,7 @@ index d7e32017..eacf3c69 100644 const renderContext = this._currentRenderContext; return renderContext && this.backend.isOccluded(renderContext, object); -@@ -905,9 +1086,9 @@ class Renderer { +@@ -904,9 +1085,9 @@ class Renderer { let renderTargetData = null; if (renderTarget !== null) { @@ -5487,18 +5487,18 @@ index d7e32017..eacf3c69 100644 } this.backend.clear(color, depth, stencil, renderTargetData); -@@ -918,8 +1099,8 @@ class Renderer { +@@ -917,8 +1098,8 @@ class Renderer { const quad = this._quad; - if (this._nodes.hasOutputChange(renderTarget.texture)) { - quad.material.fragmentNode = this._nodes.getOutputNode(renderTarget.texture); -+ if (this._nodes!.hasOutputChange(renderTarget!.texture)) { -+ quad.material.fragmentNode = this._nodes!.getOutputNode(renderTarget!.texture); ++ if (this._nodes!.hasOutputChange(renderTarget.texture)) { ++ quad.material.fragmentNode = this._nodes!.getOutputNode(renderTarget.texture); quad.material.needsUpdate = true; } -@@ -968,20 +1149,20 @@ class Renderer { +@@ -967,20 +1148,20 @@ class Renderer { dispose() { this.info.dispose(); @@ -5528,7 +5528,7 @@ index d7e32017..eacf3c69 100644 this._renderTarget = renderTarget; this._activeCubeFace = activeCubeFace; this._activeMipmapLevel = activeMipmapLevel; -@@ -991,7 +1172,19 @@ class Renderer { +@@ -990,7 +1171,19 @@ class Renderer { return this._renderTarget; } @@ -5549,7 +5549,7 @@ index d7e32017..eacf3c69 100644 this._renderObjectFunction = renderObjectFunction; } -@@ -999,10 +1192,10 @@ class Renderer { +@@ -998,10 +1191,10 @@ class Renderer { return this._renderObjectFunction; } @@ -5562,7 +5562,7 @@ index d7e32017..eacf3c69 100644 const previousRenderId = nodeFrame.renderId; -@@ -1017,9 +1210,9 @@ class Renderer { +@@ -1016,9 +1209,9 @@ class Renderer { // const backend = this.backend; @@ -5575,7 +5575,7 @@ index d7e32017..eacf3c69 100644 const computeList = Array.isArray(computeNodes) ? computeNodes : [computeNodes]; -@@ -1066,13 +1259,13 @@ class Renderer { +@@ -1065,13 +1258,13 @@ class Renderer { nodeFrame.renderId = previousRenderId; } @@ -5591,7 +5591,7 @@ index d7e32017..eacf3c69 100644 if (this._initialized === false) { console.warn( 'THREE.Renderer: .hasFeature() called before the backend is initialized. Try using .hasFeatureAsync() instead.', -@@ -1084,64 +1277,77 @@ class Renderer { +@@ -1083,64 +1276,77 @@ class Renderer { return this.backend.hasFeature(name); } @@ -5656,7 +5656,7 @@ index d7e32017..eacf3c69 100644 + } else if ((object as Sprite).isSprite) { + if (!object.frustumCulled || _frustum.intersectsSprite(object as Sprite)) { if (this.sortObjects === true) { - _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix); + _vector4.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix); } - const geometry = object.geometry; @@ -5665,7 +5665,7 @@ index d7e32017..eacf3c69 100644 + const material = (object as Sprite).material; if (material.visible) { - renderList.push(object, geometry, material, groupOrder, _vector3.z, null); + renderList.push(object, geometry, material, groupOrder, _vector4.z, null); } } - } else if (object.isLineLoop) { @@ -5684,13 +5684,13 @@ index d7e32017..eacf3c69 100644 if (this.sortObjects === true) { if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); - _vector3 + _vector4 - .copy(geometry.boundingSphere.center) + .copy(geometry.boundingSphere!.center) .applyMatrix4(object.matrixWorld) .applyMatrix4(_projScreenMatrix); } -@@ -1151,7 +1357,7 @@ class Renderer { +@@ -1150,7 +1356,7 @@ class Renderer { for (let i = 0, l = groups.length; i < l; i++) { const group = groups[i]; @@ -5698,8 +5698,8 @@ index d7e32017..eacf3c69 100644 + const groupMaterial = material[group.materialIndex!]; if (groupMaterial && groupMaterial.visible) { - renderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group); -@@ -1168,7 +1374,7 @@ class Renderer { + renderList.push(object, geometry, groupMaterial, groupOrder, _vector4.z, group); +@@ -1167,7 +1373,7 @@ class Renderer { const baseRenderList = renderList; // replace render list @@ -5708,7 +5708,7 @@ index d7e32017..eacf3c69 100644 renderList.begin(); -@@ -1188,13 +1394,13 @@ class Renderer { +@@ -1187,13 +1393,13 @@ class Renderer { } } @@ -5724,7 +5724,7 @@ index d7e32017..eacf3c69 100644 // process renderable objects for (let i = 0, il = renderList.length; i < il; i++) { -@@ -1205,42 +1411,50 @@ class Renderer { +@@ -1204,42 +1410,50 @@ class Renderer { const { object, geometry, material, group } = renderItem; @@ -5786,7 +5786,7 @@ index d7e32017..eacf3c69 100644 let overridePositionNode; let overrideFragmentNode; let overrideDepthNode; -@@ -1325,21 +1539,29 @@ class Renderer { +@@ -1324,21 +1538,29 @@ class Renderer { object.onAfterRender(this, scene, camera, geometry, material, group); } @@ -5820,7 +5820,7 @@ index d7e32017..eacf3c69 100644 // -@@ -1348,10 +1570,10 @@ class Renderer { +@@ -1347,10 +1569,10 @@ class Renderer { // @@ -5835,7 +5835,7 @@ index d7e32017..eacf3c69 100644 // -@@ -1363,33 +1585,40 @@ class Renderer { +@@ -1362,33 +1584,40 @@ class Renderer { this.backend.draw(renderObject, this.info); diff --git a/src-testing/create-src.js b/src-testing/create-src.js index 22533c68c..698c99f01 100644 --- a/src-testing/create-src.js +++ b/src-testing/create-src.js @@ -41,7 +41,6 @@ const files = [ 'renderers/common/nodes/NodeUniform', 'renderers/common/nodes/NodeUniformsGroup', 'renderers/common/nodes/Nodes', - 'renderers/common/nodes/StandardNodeLibrary', 'renderers/common/Animation', 'renderers/common/Attributes', 'renderers/common/Backend', @@ -82,6 +81,8 @@ const files = [ 'renderers/common/UniformsGroup', 'renderers/webgl-fallback/nodes/GLSLNodeBuilder', 'renderers/webgl-fallback/WebGLBackend', + 'renderers/webgpu/nodes/BasicNodeLibrary', + 'renderers/webgpu/nodes/StandardNodeLibrary', 'renderers/webgpu/nodes/WGSLNodeBuilder', 'renderers/webgpu/nodes/WGSLNodeFunction', 'renderers/webgpu/nodes/WGSLNodeParser', diff --git a/src-testing/declarations.js b/src-testing/declarations.js index 27ef37fb0..53db9937c 100644 --- a/src-testing/declarations.js +++ b/src-testing/declarations.js @@ -19,7 +19,6 @@ const files = [ 'renderers/common/nodes/NodeLibrary', 'renderers/common/nodes/NodeUniform', 'renderers/common/nodes/NodeUniformsGroup', - 'renderers/common/nodes/StandardNodeLibrary', 'renderers/common/Animation', 'renderers/common/Attributes', 'renderers/common/Background', @@ -54,6 +53,8 @@ const files = [ 'renderers/common/Uniform', 'renderers/common/UniformBuffer', 'renderers/common/UniformsGroup', + 'renderers/webgpu/nodes/BasicNodeLibrary', + 'renderers/webgpu/nodes/StandardNodeLibrary', ]; const inDir = './src'; diff --git a/three.js b/three.js index 17abdb5e4..fe3201979 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit 17abdb5e4b88368a6c1528743d014e641b32cf85 +Subproject commit fe3201979bdc24e2eabe70ed3edd19d06cf7fe66 diff --git a/types/three/build/three.webgpu.nodes.d.ts b/types/three/build/three.webgpu.nodes.d.ts new file mode 100644 index 000000000..bb2fbdb0c --- /dev/null +++ b/types/three/build/three.webgpu.nodes.d.ts @@ -0,0 +1 @@ +export * from "../src/Three.WebGPU.Nodes.js"; diff --git a/types/three/build/three.webgpu.nodes.min.d.ts b/types/three/build/three.webgpu.nodes.min.d.ts new file mode 100644 index 000000000..bb2fbdb0c --- /dev/null +++ b/types/three/build/three.webgpu.nodes.min.d.ts @@ -0,0 +1 @@ +export * from "../src/Three.WebGPU.Nodes.js"; diff --git a/types/three/src/Three.WebGPU.Nodes.d.ts b/types/three/src/Three.WebGPU.Nodes.d.ts new file mode 100644 index 000000000..6d39508d9 --- /dev/null +++ b/types/three/src/Three.WebGPU.Nodes.d.ts @@ -0,0 +1,201 @@ +export * from "./animation/AnimationAction.js"; +export * from "./animation/AnimationClip.js"; +export * from "./animation/AnimationMixer.js"; +export * from "./animation/AnimationObjectGroup.js"; +export { AnimationUtils } from "./animation/AnimationUtils.js"; +export * from "./animation/KeyframeTrack.js"; +export * from "./animation/PropertyBinding.js"; +export * from "./animation/PropertyMixer.js"; +export * from "./animation/tracks/BooleanKeyframeTrack.js"; +export * from "./animation/tracks/ColorKeyframeTrack.js"; +export * from "./animation/tracks/NumberKeyframeTrack.js"; +export * from "./animation/tracks/QuaternionKeyframeTrack.js"; +export * from "./animation/tracks/StringKeyframeTrack.js"; +export * from "./animation/tracks/VectorKeyframeTrack.js"; +export * from "./audio/Audio.js"; +export * from "./audio/AudioAnalyser.js"; +export * from "./audio/AudioContext.js"; +export * from "./audio/AudioListener.js"; +export * from "./audio/PositionalAudio.js"; +export * from "./cameras/ArrayCamera.js"; +export * from "./cameras/Camera.js"; +export * from "./cameras/CubeCamera.js"; +export * from "./cameras/OrthographicCamera.js"; +export * from "./cameras/PerspectiveCamera.js"; +export * from "./cameras/StereoCamera.js"; +export * from "./constants.js"; +export * from "./core/BufferAttribute.js"; +export * from "./core/BufferGeometry.js"; +export * from "./core/Clock.js"; +export * from "./core/EventDispatcher.js"; +export * from "./core/GLBufferAttribute.js"; +export * from "./core/InstancedBufferAttribute.js"; +export * from "./core/InstancedBufferGeometry.js"; +export * from "./core/InstancedInterleavedBuffer.js"; +export * from "./core/InterleavedBuffer.js"; +export * from "./core/InterleavedBufferAttribute.js"; +export * from "./core/Layers.js"; +export * from "./core/Object3D.js"; +export * from "./core/Raycaster.js"; +export * from "./core/RenderTarget.js"; +export * from "./core/Uniform.js"; +export * from "./core/UniformsGroup.js"; +export * from "./extras/Controls.js"; +export * from "./extras/core/Curve.js"; +export * from "./extras/core/CurvePath.js"; +export * from "./extras/core/Path.js"; +export * from "./extras/core/Shape.js"; +export * from "./extras/core/ShapePath.js"; +export * from "./extras/curves/Curves.js"; +export { DataUtils } from "./extras/DataUtils.js"; +export * from "./extras/ImageUtils.js"; +// export * from "./extras/PMREMGenerator.js"; +export * from "./extras/ShapeUtils.js"; +export { TextureUtils } from "./extras/TextureUtils.js"; +export * from "./geometries/Geometries.js"; +export * from "./helpers/ArrowHelper.js"; +export * from "./helpers/AxesHelper.js"; +export * from "./helpers/Box3Helper.js"; +export * from "./helpers/BoxHelper.js"; +export * from "./helpers/CameraHelper.js"; +export * from "./helpers/DirectionalLightHelper.js"; +export * from "./helpers/GridHelper.js"; +export * from "./helpers/HemisphereLightHelper.js"; +export * from "./helpers/PlaneHelper.js"; +export * from "./helpers/PointLightHelper.js"; +export * from "./helpers/PolarGridHelper.js"; +export * from "./helpers/SkeletonHelper.js"; +export * from "./helpers/SpotLightHelper.js"; +export * from "./lights/AmbientLight.js"; +export * from "./lights/DirectionalLight.js"; +export type { DirectionalLightShadow } from "./lights/DirectionalLightShadow.js"; +export * from "./lights/HemisphereLight.js"; +export * from "./lights/Light.js"; +export * from "./lights/LightProbe.js"; +export type { LightShadow, LightShadowJSON } from "./lights/LightShadow.js"; +export * from "./lights/PointLight.js"; +export type { PointLightShadow } from "./lights/PointLightShadow.js"; +export * from "./lights/RectAreaLight.js"; +export * from "./lights/SpotLight.js"; +export type { SpotLightShadow } from "./lights/SpotLightShadow.js"; +export * from "./loaders/AnimationLoader.js"; +export * from "./loaders/AudioLoader.js"; +export * from "./loaders/BufferGeometryLoader.js"; +export * from "./loaders/Cache.js"; +export * from "./loaders/CompressedTextureLoader.js"; +export * from "./loaders/CubeTextureLoader.js"; +export * from "./loaders/DataTextureLoader.js"; +export * from "./loaders/FileLoader.js"; +export * from "./loaders/ImageBitmapLoader.js"; +export * from "./loaders/ImageLoader.js"; +export * from "./loaders/Loader.js"; +export * from "./loaders/LoaderUtils.js"; +export * from "./loaders/LoadingManager.js"; +export * from "./loaders/MaterialLoader.js"; +export * from "./loaders/ObjectLoader.js"; +export * from "./loaders/TextureLoader.js"; +export * from "./materials/Materials.js"; +export * from "./materials/nodes/NodeMaterials.js"; +export * from "./math/Box2.js"; +export * from "./math/Box3.js"; +export * from "./math/Color.js"; +export { ColorManagement, DefinedColorSpace, WorkingColorSpace } from "./math/ColorManagement.js"; +export * from "./math/Cylindrical.js"; +export * from "./math/Euler.js"; +export * from "./math/Frustum.js"; +export * from "./math/Interpolant.js"; +export * from "./math/interpolants/CubicInterpolant.js"; +export * from "./math/interpolants/DiscreteInterpolant.js"; +export * from "./math/interpolants/LinearInterpolant.js"; +export * from "./math/interpolants/QuaternionLinearInterpolant.js"; +export * from "./math/Line3.js"; +export { MathUtils } from "./math/MathUtils.js"; +export * from "./math/Matrix2.js"; +export * from "./math/Matrix3.js"; +export * from "./math/Matrix4.js"; +export * from "./math/Plane.js"; +export * from "./math/Quaternion.js"; +export * from "./math/Ray.js"; +export * from "./math/Sphere.js"; +export * from "./math/Spherical.js"; +export * from "./math/SphericalHarmonics3.js"; +export * from "./math/Triangle.js"; +export * from "./math/Vector2.js"; +export * from "./math/Vector3.js"; +export * from "./math/Vector4.js"; +export * from "./objects/BatchedMesh.js"; +export * from "./objects/Bone.js"; +export * from "./objects/Group.js"; +export * from "./objects/InstancedMesh.js"; +export * from "./objects/Line.js"; +export * from "./objects/LineLoop.js"; +export * from "./objects/LineSegments.js"; +export * from "./objects/LOD.js"; +export * from "./objects/Mesh.js"; +export * from "./objects/Points.js"; +export * from "./objects/Skeleton.js"; +export * from "./objects/SkinnedMesh.js"; +export * from "./objects/Sprite.js"; +// export * from "./renderers/shaders/ShaderChunk.js"; +// export * from "./renderers/shaders/ShaderLib.js"; +// export * from "./renderers/shaders/UniformsLib.js"; +// export { UniformsUtils } from './renderers/shaders/UniformsUtils.js'; +export type { WebGLProgramParameters, WebGLProgramParametersWithUniforms } from "./renderers/webgl/WebGLPrograms.js"; +export type { WebGLShadowMap } from "./renderers/webgl/WebGLShadowMap.js"; +// export * from "./renderers/webgl/WebGLUtils.js"; +export * from "./renderers/WebGL3DRenderTarget.js"; +export * from "./renderers/WebGLArrayRenderTarget.js"; +export * from "./renderers/WebGLCubeRenderTarget.js"; +// export * from "./renderers/WebGLRenderer.js"; +export * from "./renderers/WebGLRenderTarget.js"; +export type { + WebXRController, + WebXRSpaceEventMap, + XRControllerEventType, + XRGripSpace, + XRHandInputState, + XRHandJoints, + XRHandSpace, + XRJointSpace, + XRTargetRaySpace, +} from "./renderers/webxr/WebXRController.js"; +export type { WebXRDepthSensing } from "./renderers/webxr/WebXRDepthSensing.js"; +export type { + WebXRArrayCamera, + WebXRCamera, + WebXRManager, + WebXRManagerEventMap, +} from "./renderers/webxr/WebXRManager.js"; +export * from "./scenes/Fog.js"; +export * from "./scenes/FogExp2.js"; +export * from "./scenes/Scene.js"; +export * from "./textures/CanvasTexture.js"; +export * from "./textures/CompressedArrayTexture.js"; +export * from "./textures/CompressedCubeTexture.js"; +export * from "./textures/CompressedTexture.js"; +export * from "./textures/CubeTexture.js"; +export * from "./textures/Data3DTexture.js"; +export * from "./textures/DataArrayTexture.js"; +export * from "./textures/DataTexture.js"; +export * from "./textures/DepthTexture.js"; +export * from "./textures/FramebufferTexture.js"; +export * from "./textures/Source.js"; +export * from "./textures/Texture.js"; +export * from "./textures/VideoTexture.js"; +export * from "./Three.Legacy.js"; +export { createCanvasElement } from "./utils.js"; + +export { default as IESSpotLight } from "./lights/webgpu/IESSpotLight.js"; +export { default as NodeLoader } from "./loaders/nodes/NodeLoader.js"; +export { default as NodeMaterialLoader } from "./loaders/nodes/NodeMaterialLoader.js"; +export { default as NodeObjectLoader } from "./loaders/nodes/NodeObjectLoader.js"; +export * from "./nodes/Nodes.js"; +export * from "./nodes/TSL.js"; +export { default as PMREMGenerator } from "./renderers/common/extras/PMREMGenerator.js"; +export { default as PostProcessing } from "./renderers/common/PostProcessing.js"; +export { default as QuadMesh } from "./renderers/common/QuadMesh.js"; +export type { default as Renderer } from "./renderers/common/Renderer.js"; +export { default as StorageBufferAttribute } from "./renderers/common/StorageBufferAttribute.js"; +export { default as StorageInstancedBufferAttribute } from "./renderers/common/StorageInstancedBufferAttribute.js"; +export { default as StorageTexture } from "./renderers/common/StorageTexture.js"; +export { default as WebGPURenderer } from "./renderers/webgpu/WebGPURenderer.Nodes.js"; diff --git a/types/three/src/Three.WebGPU.d.ts b/types/three/src/Three.WebGPU.d.ts index f7cbcfa2d..3008051ce 100644 --- a/types/three/src/Three.WebGPU.d.ts +++ b/types/three/src/Three.WebGPU.d.ts @@ -95,7 +95,6 @@ export * from "./loaders/MaterialLoader.js"; export * from "./loaders/ObjectLoader.js"; export * from "./loaders/TextureLoader.js"; export * from "./materials/Materials.js"; -export * from "./materials/nodes/NodeMaterials.js"; export * from "./math/Box2.js"; export * from "./math/Box3.js"; export * from "./math/Color.js"; @@ -189,6 +188,7 @@ export { default as IESSpotLight } from "./lights/webgpu/IESSpotLight.js"; export { default as NodeLoader } from "./loaders/nodes/NodeLoader.js"; export { default as NodeMaterialLoader } from "./loaders/nodes/NodeMaterialLoader.js"; export { default as NodeObjectLoader } from "./loaders/nodes/NodeObjectLoader.js"; +export * from "./materials/nodes/NodeMaterials.js"; export * from "./nodes/Nodes.js"; export * from "./nodes/TSL.js"; export { default as PMREMGenerator } from "./renderers/common/extras/PMREMGenerator.js"; diff --git a/types/three/src/renderers/common/StandardRenderer.d.ts b/types/three/src/renderers/common/StandardRenderer.d.ts deleted file mode 100644 index e8f2d1474..000000000 --- a/types/three/src/renderers/common/StandardRenderer.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import Backend from "./Backend.js"; -import Renderer, { RendererParameters } from "./Renderer.js"; - -export interface StandardRendererParameters extends RendererParameters {} - -declare class StandardRenderer extends Renderer { - readonly isStandardRenderer: true; - - constructor(backend: Backend, parameters?: StandardRendererParameters); -} - -export default StandardRenderer; diff --git a/types/three/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts b/types/three/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts new file mode 100644 index 000000000..b9eb0ddeb --- /dev/null +++ b/types/three/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts @@ -0,0 +1,12 @@ +import Renderer, { RendererParameters } from "../common/Renderer.js"; +import { WebGPUBackendParameters } from "./WebGPUBackend.js"; + +export interface WebGPURendererParameters extends RendererParameters, WebGPUBackendParameters { + forceWebGL?: boolean | undefined; +} + +export default class WebGPURenderer extends Renderer { + readonly isWebGPURenderer: true; + + constructor(parameters?: WebGPURendererParameters); +} diff --git a/types/three/src/renderers/webgpu/WebGPURenderer.d.ts b/types/three/src/renderers/webgpu/WebGPURenderer.d.ts index 9c36444a8..d952e0ba5 100644 --- a/types/three/src/renderers/webgpu/WebGPURenderer.d.ts +++ b/types/three/src/renderers/webgpu/WebGPURenderer.d.ts @@ -1,10 +1,14 @@ -import StandardRenderer, { StandardRendererParameters } from "../common/StandardRenderer.js"; +import Renderer, { RendererParameters } from "../common/Renderer.js"; import { WebGPUBackendParameters } from "./WebGPUBackend.js"; -export interface WebGPURendererParameters extends StandardRendererParameters, WebGPUBackendParameters { +export interface WebGPURendererParameters extends RendererParameters, WebGPUBackendParameters { forceWebGL?: boolean | undefined; } -export default class WebGPURenderer extends StandardRenderer { +declare class WebGPURenderer extends Renderer { + readonly isWebGPURenderer: true; + constructor(parameters?: WebGPURendererParameters); } + +export default WebGPURenderer; diff --git a/types/three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts b/types/three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts new file mode 100644 index 000000000..2ed2b59f2 --- /dev/null +++ b/types/three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts @@ -0,0 +1,5 @@ +import NodeLibrary from "../../common/nodes/NodeLibrary.js"; +declare class BasicNodeLibrary extends NodeLibrary { + constructor(); +} +export default BasicNodeLibrary; diff --git a/types/three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts b/types/three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts new file mode 100644 index 000000000..67c2f82e7 --- /dev/null +++ b/types/three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts @@ -0,0 +1,5 @@ +import NodeLibrary from "../../common/nodes/NodeLibrary.js"; +declare class StandardNodeLibrary extends NodeLibrary { + constructor(); +} +export default StandardNodeLibrary;