diff --git a/src-testing/changes.patch b/src-testing/changes.patch index aa55b7991..e4b1db3bd 100644 --- a/src-testing/changes.patch +++ b/src-testing/changes.patch @@ -4872,7 +4872,7 @@ 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 b1af9168..89229eeb 100644 +index 1d948688..6561a466 100644 --- a/src-testing/src/renderers/common/Renderer.ts +++ b/src-testing/src/renderers/common/Renderer.ts @@ -35,7 +35,36 @@ import { @@ -5070,7 +5070,7 @@ index b1af9168..89229eeb 100644 this.isRenderer = true; // -@@ -168,12 +345,12 @@ class Renderer { +@@ -170,12 +347,12 @@ class Renderer { getShaderAsync: async (scene, camera, object) => { await this.compileAsync(scene, camera); @@ -5087,7 +5087,7 @@ index b1af9168..89229eeb 100644 object, material, scene, -@@ -261,12 +438,12 @@ class Renderer { +@@ -263,12 +440,12 @@ class Renderer { return this.backend.coordinateSystem; } @@ -5102,7 +5102,7 @@ index b1af9168..89229eeb 100644 const previousRenderId = nodeFrame.renderId; const previousRenderContext = this._currentRenderContext; -@@ -275,15 +452,15 @@ class Renderer { +@@ -277,15 +454,15 @@ class Renderer { // @@ -5121,7 +5121,7 @@ index b1af9168..89229eeb 100644 this._currentRenderContext = renderContext; this._currentRenderObjectFunction = this.renderObject; -@@ -312,7 +489,7 @@ class Renderer { +@@ -314,7 +491,7 @@ class Renderer { // @@ -5130,7 +5130,7 @@ index b1af9168..89229eeb 100644 renderList.begin(); this._projectObject(scene, camera, 0, renderList); -@@ -320,8 +497,8 @@ class Renderer { +@@ -322,8 +499,8 @@ class Renderer { // include lights from target scene if (targetScene !== scene) { targetScene.traverseVisible(function (object) { @@ -5141,7 +5141,7 @@ index b1af9168..89229eeb 100644 } }); } -@@ -331,12 +508,12 @@ class Renderer { +@@ -333,12 +510,12 @@ class Renderer { // if (renderTarget !== null) { @@ -5158,7 +5158,7 @@ index b1af9168..89229eeb 100644 } else { renderContext.textures = null; renderContext.depthTexture = null; -@@ -344,11 +521,11 @@ class Renderer { +@@ -346,11 +523,11 @@ class Renderer { // @@ -5172,7 +5172,7 @@ index b1af9168..89229eeb 100644 // process render lists -@@ -376,7 +553,7 @@ class Renderer { +@@ -378,7 +555,7 @@ class Renderer { await Promise.all(compilationPromises); } @@ -5181,7 +5181,7 @@ index b1af9168..89229eeb 100644 if (this._initialized === false) await this.init(); const renderContext = this._renderScene(scene, camera); -@@ -384,7 +561,7 @@ class Renderer { +@@ -386,7 +563,7 @@ class Renderer { await this.backend.resolveTimestampAsync(renderContext, 'render'); } @@ -5190,7 +5190,7 @@ index b1af9168..89229eeb 100644 this._mrt = mrt; return this; -@@ -394,14 +571,14 @@ class Renderer { +@@ -396,14 +573,14 @@ class Renderer { return this._mrt; } @@ -5208,19 +5208,13 @@ index b1af9168..89229eeb 100644 const renderBundleData = this.backend.get(renderBundle); if (renderBundleData.renderContexts === undefined) renderBundleData.renderContexts = new Set(); -@@ -439,7 +616,7 @@ class Renderer { +@@ -441,19 +618,19 @@ class Renderer { for (let i = 0, l = renderObjects.length; i < l; i++) { const renderObject = renderObjects[i]; - this._nodes.updateBefore(renderObject); + this._nodes!.updateBefore(renderObject); - // - -@@ -449,17 +626,17 @@ class Renderer { - ); - renderObject.object.normalMatrix.getNormalMatrix(renderObject.object.modelViewMatrix); - - this._nodes.updateForRender(renderObject); - this._bindings.updateForRender(renderObject); + this._nodes!.updateForRender(renderObject); @@ -5239,7 +5233,7 @@ index b1af9168..89229eeb 100644 if (this._initialized === false) { console.warn( 'THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.', -@@ -514,12 +691,12 @@ class Renderer { +@@ -508,12 +685,12 @@ class Renderer { return frameBufferTarget; } @@ -5254,7 +5248,7 @@ index b1af9168..89229eeb 100644 const previousRenderId = nodeFrame.renderId; const previousRenderContext = this._currentRenderContext; -@@ -548,7 +725,7 @@ class Renderer { +@@ -542,7 +719,7 @@ class Renderer { // @@ -5263,7 +5257,7 @@ index b1af9168..89229eeb 100644 this._currentRenderContext = renderContext; this._currentRenderObjectFunction = this._renderObjectFunction || this.renderObject; -@@ -620,7 +797,7 @@ class Renderer { +@@ -614,7 +791,7 @@ class Renderer { _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); _frustum.setFromProjectionMatrix(_projScreenMatrix, coordinateSystem); @@ -5272,7 +5266,7 @@ index b1af9168..89229eeb 100644 renderList.begin(); this._projectObject(scene, camera, 0, renderList); -@@ -634,14 +811,14 @@ class Renderer { +@@ -628,14 +805,14 @@ class Renderer { // if (renderTarget !== null) { @@ -5293,7 +5287,7 @@ index b1af9168..89229eeb 100644 renderContext.renderTarget = renderTarget; renderContext.depth = renderTarget.depthBuffer; renderContext.stencil = renderTarget.stencilBuffer; -@@ -662,11 +839,11 @@ class Renderer { +@@ -656,11 +833,11 @@ class Renderer { // @@ -5307,7 +5301,7 @@ index b1af9168..89229eeb 100644 // -@@ -703,8 +880,8 @@ class Renderer { +@@ -697,8 +874,8 @@ class Renderer { const quad = this._quad; @@ -5318,7 +5312,7 @@ index b1af9168..89229eeb 100644 quad.material.needsUpdate = true; } -@@ -732,13 +909,13 @@ class Renderer { +@@ -726,13 +903,13 @@ class Renderer { return this._activeMipmapLevel; } @@ -5335,7 +5329,7 @@ index b1af9168..89229eeb 100644 return await this.backend.getArrayBufferAsync(attribute); } -@@ -750,11 +927,11 @@ class Renderer { +@@ -744,11 +921,11 @@ class Renderer { return this._pixelRatio; } @@ -5349,7 +5343,7 @@ index b1af9168..89229eeb 100644 return target.set(this._width, this._height); } -@@ -764,7 +941,7 @@ class Renderer { +@@ -758,7 +935,7 @@ class Renderer { this.setSize(this._width, this._height, false); } @@ -5358,7 +5352,7 @@ index b1af9168..89229eeb 100644 this._width = width; this._height = height; -@@ -778,7 +955,7 @@ class Renderer { +@@ -772,7 +949,7 @@ class Renderer { if (this._initialized) this.backend.updateSize(); } @@ -5367,7 +5361,7 @@ index b1af9168..89229eeb 100644 this._width = width; this._height = height; -@@ -795,15 +972,15 @@ class Renderer { +@@ -789,15 +966,15 @@ class Renderer { if (this._initialized) this.backend.updateSize(); } @@ -5386,7 +5380,7 @@ index b1af9168..89229eeb 100644 const scissor = this._scissor; target.x = scissor.x; -@@ -814,13 +991,15 @@ class Renderer { +@@ -808,13 +985,15 @@ class Renderer { return target; } @@ -5406,7 +5400,7 @@ index b1af9168..89229eeb 100644 } } -@@ -828,34 +1007,36 @@ class Renderer { +@@ -822,34 +1001,36 @@ class Renderer { return this._scissorTest; } @@ -5451,7 +5445,7 @@ index b1af9168..89229eeb 100644 this._clearColor.set(color); this._clearColor.a = alpha; } -@@ -864,7 +1045,7 @@ class Renderer { +@@ -858,7 +1039,7 @@ class Renderer { return this._clearColor.a; } @@ -5460,7 +5454,7 @@ index b1af9168..89229eeb 100644 this._clearColor.a = alpha; } -@@ -872,7 +1053,7 @@ class Renderer { +@@ -866,7 +1047,7 @@ class Renderer { return this._clearDepth; } @@ -5469,7 +5463,7 @@ index b1af9168..89229eeb 100644 this._clearDepth = depth; } -@@ -880,11 +1061,11 @@ class Renderer { +@@ -874,11 +1055,11 @@ class Renderer { return this._clearStencil; } @@ -5483,7 +5477,7 @@ index b1af9168..89229eeb 100644 const renderContext = this._currentRenderContext; return renderContext && this.backend.isOccluded(renderContext, object); -@@ -904,9 +1085,9 @@ class Renderer { +@@ -898,9 +1079,9 @@ class Renderer { let renderTargetData = null; if (renderTarget !== null) { @@ -5495,7 +5489,7 @@ index b1af9168..89229eeb 100644 } this.backend.clear(color, depth, stencil, renderTargetData); -@@ -917,8 +1098,8 @@ class Renderer { +@@ -911,8 +1092,8 @@ class Renderer { const quad = this._quad; @@ -5506,7 +5500,7 @@ index b1af9168..89229eeb 100644 quad.material.needsUpdate = true; } -@@ -967,20 +1148,20 @@ class Renderer { +@@ -961,20 +1142,20 @@ class Renderer { dispose() { this.info.dispose(); @@ -5536,7 +5530,7 @@ index b1af9168..89229eeb 100644 this._renderTarget = renderTarget; this._activeCubeFace = activeCubeFace; this._activeMipmapLevel = activeMipmapLevel; -@@ -990,7 +1171,19 @@ class Renderer { +@@ -984,7 +1165,19 @@ class Renderer { return this._renderTarget; } @@ -5557,7 +5551,7 @@ index b1af9168..89229eeb 100644 this._renderObjectFunction = renderObjectFunction; } -@@ -998,10 +1191,10 @@ class Renderer { +@@ -992,10 +1185,10 @@ class Renderer { return this._renderObjectFunction; } @@ -5570,7 +5564,7 @@ index b1af9168..89229eeb 100644 const previousRenderId = nodeFrame.renderId; -@@ -1016,9 +1209,9 @@ class Renderer { +@@ -1010,9 +1203,9 @@ class Renderer { // const backend = this.backend; @@ -5583,7 +5577,7 @@ index b1af9168..89229eeb 100644 const computeList = Array.isArray(computeNodes) ? computeNodes : [computeNodes]; -@@ -1065,13 +1258,13 @@ class Renderer { +@@ -1059,13 +1252,13 @@ class Renderer { nodeFrame.renderId = previousRenderId; } @@ -5599,7 +5593,7 @@ index b1af9168..89229eeb 100644 if (this._initialized === false) { console.warn( 'THREE.Renderer: .hasFeature() called before the backend is initialized. Try using .hasFeatureAsync() instead.', -@@ -1083,64 +1276,77 @@ class Renderer { +@@ -1077,64 +1270,77 @@ class Renderer { return this.backend.hasFeature(name); } @@ -5698,7 +5692,7 @@ index b1af9168..89229eeb 100644 .applyMatrix4(object.matrixWorld) .applyMatrix4(_projScreenMatrix); } -@@ -1150,7 +1356,7 @@ class Renderer { +@@ -1144,7 +1350,7 @@ class Renderer { for (let i = 0, l = groups.length; i < l; i++) { const group = groups[i]; @@ -5707,7 +5701,7 @@ index b1af9168..89229eeb 100644 if (groupMaterial && groupMaterial.visible) { renderList.push(object, geometry, groupMaterial, groupOrder, _vector4.z, group); -@@ -1167,7 +1373,7 @@ class Renderer { +@@ -1161,7 +1367,7 @@ class Renderer { const baseRenderList = renderList; // replace render list @@ -5716,7 +5710,7 @@ index b1af9168..89229eeb 100644 renderList.begin(); -@@ -1187,13 +1393,13 @@ class Renderer { +@@ -1181,13 +1387,13 @@ class Renderer { } } @@ -5732,7 +5726,7 @@ index b1af9168..89229eeb 100644 // process renderable objects for (let i = 0, il = renderList.length; i < il; i++) { -@@ -1204,42 +1410,50 @@ class Renderer { +@@ -1198,42 +1404,50 @@ class Renderer { const { object, geometry, material, group } = renderItem; @@ -5794,7 +5788,7 @@ index b1af9168..89229eeb 100644 let overridePositionNode; let overrideFragmentNode; let overrideDepthNode; -@@ -1324,14 +1538,22 @@ class Renderer { +@@ -1318,14 +1532,22 @@ class Renderer { object.onAfterRender(this, scene, camera, geometry, material, group); } @@ -5820,19 +5814,13 @@ index b1af9168..89229eeb 100644 passId, ); renderObject.drawRange = object.geometry.drawRange; -@@ -1339,7 +1561,7 @@ class Renderer { +@@ -1333,12 +1555,12 @@ class Renderer { // - this._nodes.updateBefore(renderObject); + this._nodes!.updateBefore(renderObject); - // - -@@ -1348,10 +1570,10 @@ class Renderer { - - // - - this._nodes.updateForRender(renderObject); - this._geometries.updateForRender(renderObject); - this._bindings.updateForRender(renderObject); @@ -5844,7 +5832,7 @@ index b1af9168..89229eeb 100644 // -@@ -1363,33 +1585,40 @@ class Renderer { +@@ -1350,31 +1572,38 @@ class Renderer { this.backend.draw(renderObject, this.info); @@ -5878,8 +5866,6 @@ index b1af9168..89229eeb 100644 - this._nodes.updateBefore(renderObject); + this._nodes!.updateBefore(renderObject); - // - - this._nodes.updateForRender(renderObject); - this._geometries.updateForRender(renderObject); - this._bindings.updateForRender(renderObject); @@ -6748,17 +6734,21 @@ index d2d92cb2..c022f814 100644 for (const uniform of this.uniforms) { const node = uniform.nodeUniform.node; diff --git a/src-testing/src/renderers/common/nodes/Nodes.ts b/src-testing/src/renderers/common/nodes/Nodes.ts -index 7fb333a4..e64d6c57 100644 +index 9405a1d4..fd9aed09 100644 --- a/src-testing/src/renderers/common/nodes/Nodes.ts +++ b/src-testing/src/renderers/common/nodes/Nodes.ts -@@ -15,14 +15,75 @@ import { +@@ -15,6 +15,7 @@ import { normalWorld, pmremTexture, viewportUV, + ShaderNodeObject, } from '../../../nodes/TSL.js'; - import { EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js'; + import { +@@ -22,11 +23,71 @@ import { + EquirectangularReflectionMapping, + EquirectangularRefractionMapping, + } from '../../../constants.js'; +import { Color } from '../../../math/Color.js'; +import { Texture } from '../../../textures/Texture.js'; +import { CubeTexture } from '../../../textures/CubeTexture.js'; @@ -6829,7 +6819,7 @@ index 7fb333a4..e64d6c57 100644 super(); this.renderer = renderer; -@@ -33,7 +94,7 @@ class Nodes extends DataMap { +@@ -37,7 +98,7 @@ class Nodes extends DataMap { this.groupsData = new ChainMap(); } @@ -6838,7 +6828,7 @@ index 7fb333a4..e64d6c57 100644 const groupNode = nodeUniformsGroup.groupNode; const name = groupNode.name; -@@ -73,7 +134,7 @@ class Nodes extends DataMap { +@@ -77,7 +138,7 @@ class Nodes extends DataMap { // other groups are updated just when groupNode.needsUpdate is true @@ -6847,7 +6837,7 @@ index 7fb333a4..e64d6c57 100644 let groupData = this.groupsData.get(groupChain); if (groupData === undefined) this.groupsData.set(groupChain, (groupData = {})); -@@ -87,11 +148,11 @@ class Nodes extends DataMap { +@@ -91,11 +152,11 @@ class Nodes extends DataMap { return false; } @@ -6861,7 +6851,7 @@ index 7fb333a4..e64d6c57 100644 const renderObjectData = this.get(renderObject); let nodeBuilderState = renderObjectData.nodeBuilderState; -@@ -128,20 +189,20 @@ class Nodes extends DataMap { +@@ -132,20 +193,20 @@ class Nodes extends DataMap { return nodeBuilderState; } @@ -6887,7 +6877,7 @@ index 7fb333a4..e64d6c57 100644 const computeData = this.get(computeNode); let nodeBuilderState = computeData.nodeBuilderState; -@@ -158,7 +219,7 @@ class Nodes extends DataMap { +@@ -162,7 +223,7 @@ class Nodes extends DataMap { return nodeBuilderState; } @@ -6896,7 +6886,7 @@ index 7fb333a4..e64d6c57 100644 return new NodeBuilderState( nodeBuilder.vertexShader, nodeBuilder.fragmentShader, -@@ -173,20 +234,20 @@ class Nodes extends DataMap { +@@ -177,20 +238,20 @@ class Nodes extends DataMap { ); } @@ -6922,7 +6912,7 @@ index 7fb333a4..e64d6c57 100644 const callId = this.renderer.info.calls; let cacheKeyData = this.callHashCache.get(chain); -@@ -212,7 +273,7 @@ class Nodes extends DataMap { +@@ -216,7 +277,7 @@ class Nodes extends DataMap { return cacheKeyData.cacheKey; } @@ -6931,7 +6921,7 @@ index 7fb333a4..e64d6c57 100644 this.updateEnvironment(scene); this.updateFog(scene); this.updateBackground(scene); -@@ -222,7 +283,7 @@ class Nodes extends DataMap { +@@ -226,7 +287,7 @@ class Nodes extends DataMap { return this.renderer.getRenderTarget() ? false : true; } @@ -6940,20 +6930,33 @@ index 7fb333a4..e64d6c57 100644 const sceneData = this.get(scene); const background = scene.background; -@@ -235,9 +296,9 @@ class Nodes extends DataMap { +@@ -239,28 +300,31 @@ class Nodes extends DataMap { let backgroundNode = null; if ( - background.isCubeTexture === true || -- background.mapping === EquirectangularReflectionMapping || -- background.mapping === EquirectangularRefractionMapping + (background as CubeTexture).isCubeTexture === true || -+ (background as CubeTexture).mapping === EquirectangularReflectionMapping || -+ (background as CubeTexture).mapping === EquirectangularRefractionMapping + background.mapping === EquirectangularReflectionMapping || + background.mapping === EquirectangularRefractionMapping || + background.mapping === CubeUVReflectionMapping ) { - if (scene.backgroundBlurriness > 0) { - backgroundNode = pmremTexture(background, normalWorld); -@@ -252,10 +313,10 @@ class Nodes extends DataMap { +- if (scene.backgroundBlurriness > 0 || background.mapping === CubeUVReflectionMapping) { +- backgroundNode = pmremTexture(background, normalWorld); ++ if ( ++ scene.backgroundBlurriness > 0 || ++ (background as CubeTexture).mapping === CubeUVReflectionMapping ++ ) { ++ backgroundNode = pmremTexture(background as CubeTexture, normalWorld); + } else { + let envMap; + +- if (background.isCubeTexture === true) { +- envMap = cubeTexture(background); ++ if ((background as CubeTexture).isCubeTexture === true) { ++ envMap = cubeTexture(background as CubeTexture); + } else { + envMap = texture(background); + } backgroundNode = cubeMapNode(envMap); } @@ -6968,7 +6971,7 @@ index 7fb333a4..e64d6c57 100644 } sceneData.backgroundNode = backgroundNode; -@@ -268,7 +329,7 @@ class Nodes extends DataMap { +@@ -273,7 +337,7 @@ class Nodes extends DataMap { } } @@ -6977,7 +6980,7 @@ index 7fb333a4..e64d6c57 100644 const sceneData = this.get(scene); const fog = scene.fog; -@@ -276,9 +337,9 @@ class Nodes extends DataMap { +@@ -281,9 +345,9 @@ class Nodes extends DataMap { if (sceneData.fog !== fog) { let fogNode = null; @@ -6989,7 +6992,7 @@ index 7fb333a4..e64d6c57 100644 fogNode = rangeFog( reference('color', 'color', fog), reference('near', 'float', fog), -@@ -297,7 +358,7 @@ class Nodes extends DataMap { +@@ -302,7 +366,7 @@ class Nodes extends DataMap { } } @@ -6998,7 +7001,7 @@ index 7fb333a4..e64d6c57 100644 const sceneData = this.get(scene); const environment = scene.environment; -@@ -305,7 +366,7 @@ class Nodes extends DataMap { +@@ -310,7 +374,7 @@ class Nodes extends DataMap { if (sceneData.environment !== environment) { let environmentNode = null; @@ -7007,7 +7010,7 @@ index 7fb333a4..e64d6c57 100644 environmentNode = cubeTexture(environment); } else if (environment.isTexture === true) { environmentNode = texture(environment); -@@ -322,7 +383,13 @@ class Nodes extends DataMap { +@@ -327,7 +391,13 @@ class Nodes extends DataMap { } } @@ -7022,7 +7025,7 @@ index 7fb333a4..e64d6c57 100644 const nodeFrame = this.nodeFrame; nodeFrame.renderer = renderer; nodeFrame.scene = scene; -@@ -333,7 +400,7 @@ class Nodes extends DataMap { +@@ -338,7 +408,7 @@ class Nodes extends DataMap { return nodeFrame; } @@ -7031,7 +7034,7 @@ index 7fb333a4..e64d6c57 100644 return this.getNodeFrame( renderObject.renderer, renderObject.scene, -@@ -349,17 +416,17 @@ class Nodes extends DataMap { +@@ -354,17 +424,17 @@ class Nodes extends DataMap { return renderer.toneMapping + ',' + renderer.currentColorSpace; } @@ -7052,7 +7055,7 @@ index 7fb333a4..e64d6c57 100644 renderer.toneMapping, renderer.currentColorSpace, ); -@@ -369,7 +436,7 @@ class Nodes extends DataMap { +@@ -374,7 +444,7 @@ class Nodes extends DataMap { return output; } @@ -7061,7 +7064,7 @@ index 7fb333a4..e64d6c57 100644 const nodeBuilder = renderObject.getNodeBuilderState(); for (const node of nodeBuilder.updateBeforeNodes) { -@@ -379,7 +446,7 @@ class Nodes extends DataMap { +@@ -384,7 +454,7 @@ class Nodes extends DataMap { } } @@ -7070,7 +7073,7 @@ index 7fb333a4..e64d6c57 100644 const nodeBuilder = renderObject.getNodeBuilderState(); for (const node of nodeBuilder.updateAfterNodes) { -@@ -389,7 +456,7 @@ class Nodes extends DataMap { +@@ -394,7 +464,7 @@ class Nodes extends DataMap { } } @@ -7079,7 +7082,7 @@ index 7fb333a4..e64d6c57 100644 const nodeFrame = this.getNodeFrame(); const nodeBuilder = this.getForCompute(computeNode); -@@ -398,7 +465,7 @@ class Nodes extends DataMap { +@@ -403,7 +473,7 @@ class Nodes extends DataMap { } } diff --git a/three.js b/three.js index 6b74981b6..29cb17fec 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit 6b74981b67da7a33a78a1f8817b90eacd4b05d1f +Subproject commit 29cb17fecd153455bae0cf058aa58d87b4baad63 diff --git a/types/three/src/nodes/accessors/ModelNode.d.ts b/types/three/src/nodes/accessors/ModelNode.d.ts index a0546e220..802e3e4e8 100644 --- a/types/three/src/nodes/accessors/ModelNode.d.ts +++ b/types/three/src/nodes/accessors/ModelNode.d.ts @@ -1,4 +1,5 @@ import { Matrix4 } from "../../math/Matrix4.js"; +import Node from "../core/Node.js"; import { UniformNode } from "../Nodes.js"; import { ShaderNodeObject } from "../tsl/TSLCore.js"; import Object3DNode from "./Object3DNode.js"; @@ -7,14 +8,16 @@ import Object3DNode from "./Object3DNode.js"; * Similar to {@link Object3DNode} but the object comes from {@link NodeFrame} */ export default class ModelNode extends Object3DNode { - constructor(scope?: string); + constructor(scope: string); } export const modelDirection: ShaderNodeObject; -export const modelViewMatrix: ShaderNodeObject; -export const modelNormalMatrix: ShaderNodeObject; export const modelWorldMatrix: ShaderNodeObject; export const modelPosition: ShaderNodeObject; export const modelScale: ShaderNodeObject; export const modelViewPosition: ShaderNodeObject; export const modelWorldMatrixInverse: ShaderNodeObject>; +export const modelViewMatrix: ShaderNodeObject; + +export const highPrecisionModelViewMatrix: ShaderNodeObject; +export const highPrecisionModelViewNormalMatrix: ShaderNodeObject; diff --git a/types/three/src/nodes/accessors/Normal.d.ts b/types/three/src/nodes/accessors/Normal.d.ts index 22e5b6868..a53f1b04a 100644 --- a/types/three/src/nodes/accessors/Normal.d.ts +++ b/types/three/src/nodes/accessors/Normal.d.ts @@ -1,4 +1,6 @@ +import { Matrix4 } from "../../math/Matrix4.js"; import AttributeNode from "../core/AttributeNode.js"; +import Node from "../core/Node.js"; import VarNode from "../core/VarNode.js"; import { ShaderNodeObject } from "../tsl/TSLCore.js"; @@ -17,3 +19,7 @@ export const transformedNormalView: ShaderNodeObject; export const transformedNormalWorld: ShaderNodeObject; export const transformedClearcoatNormalView: ShaderNodeObject; + +export const transformNormal: (normal: Node, matrix?: Node) => ShaderNodeObject; + +export const transformNormalToView: (normal: Node, matrix?: Node) => ShaderNodeObject; diff --git a/types/three/src/nodes/accessors/Object3DNode.d.ts b/types/three/src/nodes/accessors/Object3DNode.d.ts index f5ed7250f..21e6776c9 100644 --- a/types/three/src/nodes/accessors/Object3DNode.d.ts +++ b/types/three/src/nodes/accessors/Object3DNode.d.ts @@ -6,10 +6,8 @@ export default class Object3DNode extends Node { scope: string; object3d: Object3D | null; - constructor(scope?: string, object3d?: Object3D | null); + constructor(scope: string, object3d?: Object3D | null); - static VIEW_MATRIX: "viewMatrix"; - static NORMAL_MATRIX: "normalMatrix"; static WORLD_MATRIX: "worldMatrix"; static POSITION: "position"; static SCALE: "scale"; @@ -18,8 +16,6 @@ export default class Object3DNode extends Node { } export const objectDirection: (object3d: Object3D) => ShaderNodeObject; -export const objectViewMatrix: (object3d: Object3D) => ShaderNodeObject; -export const objectNormalMatrix: (object3d: Object3D) => ShaderNodeObject; export const objectWorldMatrix: (object3d: Object3D) => ShaderNodeObject; export const objectPosition: (object3d: Object3D) => ShaderNodeObject; export const objectScale: (object3d: Object3D) => ShaderNodeObject; diff --git a/types/three/src/nodes/accessors/VelocityNode.d.ts b/types/three/src/nodes/accessors/VelocityNode.d.ts index fffa55829..9383c9db1 100644 --- a/types/three/src/nodes/accessors/VelocityNode.d.ts +++ b/types/three/src/nodes/accessors/VelocityNode.d.ts @@ -4,8 +4,9 @@ import UniformNode from "../core/UniformNode.js"; import { ShaderNodeObject } from "../tsl/TSLCore.js"; declare class VelocityNode extends TempNode { + previousModelWorldMatrix: UniformNode; previousProjectionMatrix: UniformNode; - previousModelViewMatrix: UniformNode; + previousCameraViewMatrix: UniformNode; constructor(); }