@babylonjs/core 7.12.0 → 7.13.0
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/Animations/animation.js +1 -2
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroupMask.d.ts +1 -1
- package/Animations/animationGroupMask.js +2 -2
- package/Animations/animationGroupMask.js.map +1 -1
- package/Animations/animationKey.d.ts +1 -1
- package/Animations/animationKey.js.map +1 -1
- package/Behaviors/Meshes/handConstraintBehavior.d.ts +3 -3
- package/Behaviors/Meshes/handConstraintBehavior.js +16 -17
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.js +2 -3
- package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
- package/Bones/bone.js +31 -32
- package/Bones/bone.js.map +1 -1
- package/Bones/boneIKController.js +5 -6
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.js +13 -13
- package/Bones/boneLookController.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -6
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +5 -5
- package/Cameras/Inputs/freeCameraVirtualJoystickInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +8 -10
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Compute/computeEffect.js +2 -3
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.js +19 -20
- package/Compute/computeShader.js.map +1 -1
- package/Culling/Helper/IBoundingInfoHelperPlatform.d.ts +4 -0
- package/Culling/Helper/IBoundingInfoHelperPlatform.js.map +1 -1
- package/Culling/Helper/boundingInfoHelper.d.ts +26 -4
- package/Culling/Helper/boundingInfoHelper.js +41 -10
- package/Culling/Helper/boundingInfoHelper.js.map +1 -1
- package/Culling/Helper/computeShaderBoundingHelper.d.ts +12 -3
- package/Culling/Helper/computeShaderBoundingHelper.js +164 -76
- package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.d.ts +11 -0
- package/Culling/Helper/transformFeedbackBoundingHelper.js +46 -14
- package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +1 -1
- package/Decorators/nodeDecorator.js +1 -1
- package/Decorators/nodeDecorator.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +5 -5
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/DeviceInput/eventFactory.js +3 -3
- package/DeviceInput/eventFactory.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +2 -2
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +1 -1
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +2 -2
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +2 -2
- package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +3 -3
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.multiview.js +2 -2
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.js +3 -3
- package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +4 -4
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.js +3 -3
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.renderTargetCube.js +2 -2
- package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/Native/nativeShaderProcessors.js +1 -2
- package/Engines/Native/nativeShaderProcessors.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +2 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +1 -2
- package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
- package/Engines/WebGL/webGLShaderProcessors.js +1 -2
- package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +2 -2
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js +2 -2
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +5 -5
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +3 -3
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +81 -82
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +60 -64
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +1 -2
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +13 -15
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuConstants.d.ts +39 -39
- package/Engines/WebGPU/webgpuConstants.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +6 -8
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -2
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js +3 -3
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +15 -19
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +8 -10
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +26 -28
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +413 -416
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.js +50 -51
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.js +1 -2
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/abstractEngine.js +4 -4
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.js +2 -2
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +9 -9
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +5 -5
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +1 -2
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/shaderStore.js +6 -7
- package/Engines/shaderStore.js.map +1 -1
- package/Engines/thinEngine.js +4 -5
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +11 -0
- package/Engines/webgpuEngine.js +91 -72
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/deviceInputEvents.d.ts +1 -1
- package/Events/deviceInputEvents.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +1 -1
- package/FlowGraph/flowGraph.js +5 -5
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +2 -3
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +1 -1
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.js +3 -3
- package/FlowGraph/flowGraphDataConnection.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.js +2 -3
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/FlowGraph/flowGraphSignalConnection.js +3 -3
- package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
- package/Gamepads/dualShockGamepad.d.ts +2 -2
- package/Gamepads/dualShockGamepad.js +14 -14
- package/Gamepads/dualShockGamepad.js.map +1 -1
- package/Gamepads/xboxGamepad.d.ts +2 -2
- package/Gamepads/xboxGamepad.js +14 -14
- package/Gamepads/xboxGamepad.js.map +1 -1
- package/Gizmos/gizmo.d.ts +2 -2
- package/Gizmos/gizmo.js +4 -4
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +2 -2
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/scaleGizmo.js +3 -3
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Loading/sceneLoader.js +6 -6
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GreasedLine/greasedLineMaterialInterfaces.d.ts +3 -3
- package/Materials/GreasedLine/greasedLineMaterialInterfaces.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterial.js +10 -11
- package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js +8 -9
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +3 -4
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +2 -3
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +1 -2
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +5 -6
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -5
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -8
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +4 -6
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +2 -4
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +5 -6
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +5 -6
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +3 -4
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +7 -9
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +19 -21
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/prePassTextureBlock.js +3 -4
- package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -3
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +4 -5
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +28 -29
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +4 -5
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +5 -6
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +4 -5
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +2 -3
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -2
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +1 -2
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +1 -2
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -2
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +1 -2
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/biPlanarBlock.js +3 -4
- package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +4 -5
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +3 -4
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.js +1 -2
- package/Materials/Node/Blocks/curveBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +1 -2
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -2
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js +35 -35
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +1 -2
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +3 -3
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -2
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +1 -2
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js +10 -12
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/Blocks/voronoiNoiseBlock.js +3 -4
- package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.d.ts +1 -1
- package/Materials/Node/Blocks/waveBlock.js +4 -4
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +3 -4
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/Enums/nodeMaterialBlockConnectionPointMode.d.ts +1 -1
- package/Materials/Node/Enums/nodeMaterialBlockConnectionPointMode.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +3 -4
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +5 -6
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +2 -2
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +10 -10
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +18 -19
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +3 -3
- package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +3 -4
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +1 -1
- package/Materials/Textures/internalTexture.js +13 -13
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/ktx2decoderTypes.d.ts +1 -1
- package/Materials/Textures/ktx2decoderTypes.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.js +1 -2
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/effect.functions.js +2 -3
- package/Materials/effect.functions.js.map +1 -1
- package/Materials/effect.js +3 -4
- package/Materials/effect.js.map +1 -1
- package/Materials/effect.webgl.functions.js +1 -2
- package/Materials/effect.webgl.functions.js.map +1 -1
- package/Materials/material.js +7 -9
- package/Materials/material.js.map +1 -1
- package/Materials/materialPluginEvent.d.ts +1 -1
- package/Materials/materialPluginEvent.js.map +1 -1
- package/Materials/materialPluginManager.js +9 -11
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.d.ts +1 -1
- package/Materials/meshDebugPluginMaterial.js +2 -2
- package/Materials/meshDebugPluginMaterial.js.map +1 -1
- package/Materials/shaderLanguage.d.ts +1 -1
- package/Materials/shaderLanguage.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +1 -2
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +2 -3
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.axis.d.ts +2 -2
- package/Maths/math.axis.js.map +1 -1
- package/Maths/math.path.d.ts +1 -1
- package/Maths/math.path.js +3 -3
- package/Maths/math.path.js.map +1 -1
- package/Meshes/Builders/greasedLineBuilder.d.ts +2 -2
- package/Meshes/Builders/greasedLineBuilder.js +21 -23
- package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +3 -3
- package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineRibbonMesh.js +14 -14
- package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +2 -2
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +2 -2
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.js +2 -2
- package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +2 -2
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js +2 -2
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js +2 -2
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js +2 -2
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.js +3 -3
- package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.js +2 -2
- package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +2 -2
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +2 -2
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.js +3 -3
- package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.js +2 -2
- package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryClampBlock.js +3 -3
- package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js +3 -3
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.js +2 -2
- package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.js +2 -2
- package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.js +2 -2
- package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.js +2 -2
- package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +3 -3
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +2 -2
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +7 -7
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
- package/Meshes/abstractMesh.js +2 -3
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/mesh.js +1 -2
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/meshSimplification.d.ts +1 -1
- package/Meshes/meshSimplification.js +1 -1
- package/Meshes/meshSimplification.js.map +1 -1
- package/Meshes/meshSimplificationSceneComponent.js +2 -2
- package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
- package/Meshes/transformNode.js +7 -8
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/assetsManager.d.ts +1 -1
- package/Misc/assetsManager.js +9 -9
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basis.js +2 -2
- package/Misc/basis.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +1 -1
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/environmentTextureTools.js +3 -3
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/iInspectable.d.ts +1 -1
- package/Misc/iInspectable.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +2 -2
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/timer.d.ts +1 -1
- package/Misc/timer.js +5 -5
- package/Misc/timer.js.map +1 -1
- package/Misc/virtualJoystick.d.ts +1 -1
- package/Misc/virtualJoystick.js +16 -16
- package/Misc/virtualJoystick.js.map +1 -1
- package/Particles/particleSystem.js +3 -3
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +1 -2
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.d.ts +1 -1
- package/Particles/pointsCloudSystem.js +14 -14
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/subEmitter.d.ts +1 -1
- package/Particles/subEmitter.js +1 -1
- package/Particles/subEmitter.js.map +1 -1
- package/Physics/physicsHelper.d.ts +2 -2
- package/Physics/physicsHelper.js +6 -7
- package/Physics/physicsHelper.js.map +1 -1
- package/Physics/v1/physicsImpostor.js +4 -5
- package/Physics/v1/physicsImpostor.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +16 -8
- package/Physics/v2/IPhysicsEnginePlugin.js +9 -0
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +96 -79
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsAggregate.js +8 -9
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +14 -2
- package/Physics/v2/physicsBody.js +30 -11
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsConstraint.js +8 -9
- package/Physics/v2/physicsConstraint.js.map +1 -1
- package/Physics/v2/physicsMaterial.d.ts +1 -1
- package/Physics/v2/physicsMaterial.js.map +1 -1
- package/Physics/v2/physicsShape.js +9 -10
- package/Physics/v2/physicsShape.js.map +1 -1
- package/Physics/v2/ragdoll.js +11 -12
- package/Physics/v2/ragdoll.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
- package/PostProcesses/depthOfFieldEffect.js +3 -3
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/postProcess.js +2 -3
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +1 -1
- package/PostProcesses/tonemapPostProcess.js +4 -4
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +10 -10
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Shaders/spriteMap.fragment.js +3 -2
- package/Shaders/spriteMap.fragment.js.map +1 -1
- package/ShadersWGSL/boundingInfo.compute.js +8 -8
- package/ShadersWGSL/boundingInfo.compute.js.map +1 -1
- package/XR/features/WebXRDepthSensing.js +2 -2
- package/XR/features/WebXRDepthSensing.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +2 -2
- package/XR/features/WebXRHandTracking.js +76 -76
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRLightEstimation.js +2 -2
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/features/WebXRNearInteraction.d.ts +1 -1
- package/XR/features/WebXRNearInteraction.js +5 -5
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRRawCameraAccess.js +2 -2
- package/XR/features/WebXRRawCameraAccess.js.map +1 -1
- package/XR/motionController/webXRProfiledMotionController.js +2 -2
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.js +3 -4
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXREnterExitUI.js +3 -4
- package/XR/webXREnterExitUI.js.map +1 -1
- package/XR/webXRExperienceHelper.js +12 -13
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.d.ts +1 -1
- package/XR/webXRManagedOutputCanvas.js +15 -6
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.js +2 -2
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRTypes.d.ts +2 -2
- package/XR/webXRTypes.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +1 -1
- package/scene.js +4 -4
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflectionTextureBaseBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { BaseTexture } from \"../../../Textures/baseTexture\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport { NodeMaterial } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport { Constants } from \"../../../../Engines/constants\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/reflectionFunction\";\r\nimport { CubeTexture } from \"../../../Textures/cubeTexture\";\r\nimport { Texture } from \"../../../Textures/texture\";\r\nimport { EngineStore } from \"../../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { SubMesh } from \"../../../..//Meshes/subMesh\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Base block used to read a reflection texture from a sampler\r\n */\r\nexport abstract class ReflectionTextureBaseBlock extends NodeMaterialBlock {\r\n /** @internal */\r\n public _define3DName: string;\r\n /** @internal */\r\n public _defineCubicName: string;\r\n /** @internal */\r\n public _defineExplicitName: string;\r\n /** @internal */\r\n public _defineProjectionName: string;\r\n /** @internal */\r\n public _defineLocalCubicName: string;\r\n /** @internal */\r\n public _defineSphericalName: string;\r\n /** @internal */\r\n public _definePlanarName: string;\r\n /** @internal */\r\n public _defineEquirectangularName: string;\r\n /** @internal */\r\n public _defineMirroredEquirectangularFixedName: string;\r\n /** @internal */\r\n public _defineEquirectangularFixedName: string;\r\n /** @internal */\r\n public _defineSkyboxName: string;\r\n /** @internal */\r\n public _defineOppositeZ: string;\r\n /** @internal */\r\n public _cubeSamplerName: string;\r\n /** @internal */\r\n public _2DSamplerName: string;\r\n /** @internal */\r\n public _reflectionPositionName: string;\r\n /** @internal */\r\n public _reflectionSizeName: string;\r\n\r\n protected _positionUVWName: string;\r\n protected _directionWName: string;\r\n protected _reflectionVectorName: string;\r\n /** @internal */\r\n public _reflectionCoordsName: string;\r\n /** @internal */\r\n public _reflectionMatrixName: string;\r\n protected _reflectionColorName: string;\r\n protected _worldPositionNameInFragmentOnlyMode: string;\r\n\r\n protected _texture: Nullable<BaseTexture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<BaseTexture> {\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<BaseTexture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /** Indicates that no code should be generated in the vertex shader. Can be useful in some specific circumstances (like when doing ray marching for eg) */\r\n @editableInPropertyPage(\"Generate only fragment code\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: { rebuild: true, update: true, onValidation: ReflectionTextureBaseBlock._OnGenerateOnlyFragmentCodeChanged },\r\n })\r\n public generateOnlyFragmentCode = false;\r\n\r\n protected static _OnGenerateOnlyFragmentCodeChanged(block: NodeMaterialBlock, _propertyName: string): boolean {\r\n const that = block as ReflectionTextureBaseBlock;\r\n return that._onGenerateOnlyFragmentCodeChanged();\r\n }\r\n\r\n protected _onGenerateOnlyFragmentCodeChanged(): boolean {\r\n this._setTarget();\r\n return true;\r\n }\r\n\r\n protected _setTarget(): void {\r\n this._setInitialTarget(this.generateOnlyFragmentCode ? NodeMaterialBlockTargets.Fragment : NodeMaterialBlockTargets.VertexAndFragment);\r\n }\r\n\r\n /**\r\n * Create a new ReflectionTextureBaseBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ReflectionTextureBaseBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public abstract get position(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public abstract get worldPosition(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public abstract get worldNormal(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world input component\r\n */\r\n public abstract get world(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the camera (or eye) position component\r\n */\r\n public abstract get cameraPosition(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the view input component\r\n */\r\n public abstract get view(): NodeMaterialConnectionPoint;\r\n\r\n protected _getTexture(): Nullable<BaseTexture> {\r\n return this.texture;\r\n }\r\n\r\n /**\r\n * Auto configure the node based on the existing material\r\n * @param material defines the material to configure\r\n * @param additionalFilteringInfo defines additional info to be used when filtering inputs (we might want to skip some non relevant blocks)\r\n */\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n\r\n if (!this.world.isConnected) {\r\n let worldInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.World && additionalFilteringInfo(b));\r\n\r\n if (!worldInput) {\r\n worldInput = new InputBlock(\"world\");\r\n worldInput.setAsSystemValue(NodeMaterialSystemValues.World);\r\n }\r\n worldInput.output.connectTo(this.world);\r\n }\r\n\r\n if (this.view && !this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View && additionalFilteringInfo(b));\r\n\r\n if (!viewInput) {\r\n viewInput = new InputBlock(\"view\");\r\n viewInput.setAsSystemValue(NodeMaterialSystemValues.View);\r\n }\r\n viewInput.output.connectTo(this.view);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const texture = this._getTexture();\r\n\r\n if (!texture || !texture.getTextureMatrix) {\r\n return;\r\n }\r\n\r\n defines.setValue(this._define3DName, texture.isCube, true);\r\n defines.setValue(this._defineLocalCubicName, (<any>texture).boundingBoxSize ? true : false, true);\r\n defines.setValue(this._defineExplicitName, texture.coordinatesMode === Constants.TEXTURE_EXPLICIT_MODE, true);\r\n defines.setValue(this._defineSkyboxName, texture.coordinatesMode === Constants.TEXTURE_SKYBOX_MODE, true);\r\n defines.setValue(this._defineCubicName, texture.coordinatesMode === Constants.TEXTURE_CUBIC_MODE || texture.coordinatesMode === Constants.TEXTURE_INVCUBIC_MODE, true);\r\n defines.setValue(\"INVERTCUBICMAP\", texture.coordinatesMode === Constants.TEXTURE_INVCUBIC_MODE, true);\r\n defines.setValue(this._defineSphericalName, texture.coordinatesMode === Constants.TEXTURE_SPHERICAL_MODE, true);\r\n defines.setValue(this._definePlanarName, texture.coordinatesMode === Constants.TEXTURE_PLANAR_MODE, true);\r\n defines.setValue(this._defineProjectionName, texture.coordinatesMode === Constants.TEXTURE_PROJECTION_MODE, true);\r\n defines.setValue(this._defineEquirectangularName, texture.coordinatesMode === Constants.TEXTURE_EQUIRECTANGULAR_MODE, true);\r\n defines.setValue(this._defineEquirectangularFixedName, texture.coordinatesMode === Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MODE, true);\r\n defines.setValue(this._defineMirroredEquirectangularFixedName, texture.coordinatesMode === Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE, true);\r\n }\r\n\r\n public override isReady() {\r\n const texture = this._getTexture();\r\n\r\n if (texture && !texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh, _subMesh?: SubMesh) {\r\n const texture = this._getTexture();\r\n\r\n if (!mesh || !texture) {\r\n return;\r\n }\r\n\r\n effect.setMatrix(this._reflectionMatrixName, texture.getReflectionTextureMatrix());\r\n\r\n if (texture.isCube) {\r\n effect.setTexture(this._cubeSamplerName, texture);\r\n } else {\r\n effect.setTexture(this._2DSamplerName, texture);\r\n }\r\n\r\n if ((<any>texture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>texture;\r\n effect.setVector3(this._reflectionPositionName, cubeTexture.boundingBoxPosition);\r\n effect.setVector3(this._reflectionSizeName, cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the code to inject in the vertex shader\r\n * @param state current state of the node material building\r\n * @returns the shader code\r\n */\r\n public handleVertexSide(state: NodeMaterialBuildState): string {\r\n if (this.generateOnlyFragmentCode && state.target === NodeMaterialBlockTargets.Vertex) {\r\n return \"\";\r\n }\r\n\r\n this._define3DName = state._getFreeDefineName(\"REFLECTIONMAP_3D\");\r\n this._defineCubicName = state._getFreeDefineName(\"REFLECTIONMAP_CUBIC\");\r\n this._defineSphericalName = state._getFreeDefineName(\"REFLECTIONMAP_SPHERICAL\");\r\n this._definePlanarName = state._getFreeDefineName(\"REFLECTIONMAP_PLANAR\");\r\n this._defineProjectionName = state._getFreeDefineName(\"REFLECTIONMAP_PROJECTION\");\r\n this._defineExplicitName = state._getFreeDefineName(\"REFLECTIONMAP_EXPLICIT\");\r\n this._defineEquirectangularName = state._getFreeDefineName(\"REFLECTIONMAP_EQUIRECTANGULAR\");\r\n this._defineLocalCubicName = state._getFreeDefineName(\"USE_LOCAL_REFLECTIONMAP_CUBIC\");\r\n this._defineMirroredEquirectangularFixedName = state._getFreeDefineName(\"REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED\");\r\n this._defineEquirectangularFixedName = state._getFreeDefineName(\"REFLECTIONMAP_EQUIRECTANGULAR_FIXED\");\r\n this._defineSkyboxName = state._getFreeDefineName(\"REFLECTIONMAP_SKYBOX\");\r\n this._defineOppositeZ = state._getFreeDefineName(\"REFLECTIONMAP_OPPOSITEZ\");\r\n\r\n this._reflectionMatrixName = state._getFreeVariableName(\"reflectionMatrix\");\r\n\r\n state._emitUniformFromString(this._reflectionMatrixName, NodeMaterialBlockConnectionPointTypes.Matrix);\r\n\r\n let code = \"\";\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n this._worldPositionNameInFragmentOnlyMode = state._getFreeVariableName(\"worldPosition\");\r\n\r\n const worldPosVaryingName = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : \"v_\" + this.worldPosition.associatedVariableName;\r\n if (this.generateOnlyFragmentCode || state._emitVaryingFromString(worldPosVaryingName, NodeMaterialBlockConnectionPointTypes.Vector4)) {\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(worldPosVaryingName, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this.worldPosition.associatedVariableName};\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${worldPosVaryingName} = ${this.worldPosition.associatedVariableName};\\n`;\r\n }\r\n }\r\n\r\n this._positionUVWName = state._getFreeVariableName(\"positionUVW\");\r\n this._directionWName = state._getFreeVariableName(\"directionW\");\r\n\r\n if (this.generateOnlyFragmentCode || state._emitVaryingFromString(this._positionUVWName, NodeMaterialBlockConnectionPointTypes.Vector3, this._defineSkyboxName)) {\r\n code += `#ifdef ${this._defineSkyboxName}\\n`;\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(this._positionUVWName, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this.position.associatedVariableName}.xyz;\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${this._positionUVWName} = ${this.position.associatedVariableName}.xyz;\\n`;\r\n }\r\n code += `#endif\\n`;\r\n }\r\n\r\n if (\r\n this.generateOnlyFragmentCode ||\r\n state._emitVaryingFromString(\r\n this._directionWName,\r\n NodeMaterialBlockConnectionPointTypes.Vector3,\r\n `defined(${this._defineEquirectangularFixedName}) || defined(${this._defineMirroredEquirectangularFixedName})`\r\n )\r\n ) {\r\n code += `#if defined(${this._defineEquirectangularFixedName}) || defined(${this._defineMirroredEquirectangularFixedName})\\n`;\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(this._directionWName, NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(vec3${state.fSuffix}(${this.world.associatedVariableName} * vec4${state.fSuffix}(${\r\n this.position.associatedVariableName\r\n }.xyz, 0.0)));\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${this._directionWName} = normalize(vec3${state.fSuffix}(${this.world.associatedVariableName} * vec4${state.fSuffix}(${\r\n this.position.associatedVariableName\r\n }.xyz, 0.0)));\\n`;\r\n }\r\n code += `#endif\\n`;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Handles the inits for the fragment code path\r\n * @param state node material build state\r\n */\r\n public handleFragmentSideInits(state: NodeMaterialBuildState) {\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n\r\n // Samplers\r\n this._cubeSamplerName = state._getFreeVariableName(this.name + \"CubeSampler\");\r\n state.samplers.push(this._cubeSamplerName);\r\n\r\n this._2DSamplerName = state._getFreeVariableName(this.name + \"2DSampler\");\r\n state.samplers.push(this._2DSamplerName);\r\n\r\n state._samplerDeclaration += `#ifdef ${this._define3DName}\\n`;\r\n state._emitCubeSampler(this._cubeSamplerName, \"\", true);\r\n state._samplerDeclaration += `#else\\n`;\r\n state._emit2DSampler(this._2DSamplerName, \"\", true);\r\n state._samplerDeclaration += `#endif\\n`;\r\n\r\n // Fragment\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"reflectionFunction\", comments, {\r\n replaceStrings: [\r\n { search: /vec3 computeReflectionCoords/g, replace: \"void DUMMYFUNC\" },\r\n { search: /fn computeReflectionCoords/g, replace: \"void DUMMYFUNC\" },\r\n ],\r\n });\r\n\r\n this._reflectionColorName = state._getFreeVariableName(\"reflectionColor\");\r\n this._reflectionVectorName = state._getFreeVariableName(\"reflectionUVW\");\r\n this._reflectionCoordsName = state._getFreeVariableName(\"reflectionCoords\");\r\n\r\n this._reflectionPositionName = state._getFreeVariableName(\"vReflectionPosition\");\r\n state._emitUniformFromString(this._reflectionPositionName, NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._reflectionSizeName = state._getFreeVariableName(\"vReflectionPosition\");\r\n state._emitUniformFromString(this._reflectionSizeName, NodeMaterialBlockConnectionPointTypes.Vector3);\r\n }\r\n\r\n /**\r\n * Generates the reflection coords code for the fragment code path\r\n * @param state defines the build state\r\n * @param worldNormalVarName name of the world normal variable\r\n * @param worldPos name of the world position variable. If not provided, will use the world position connected to this block\r\n * @param onlyReflectionVector if true, generates code only for the reflection vector computation, not for the reflection coordinates\r\n * @param doNotEmitInvertZ if true, does not emit the invertZ code\r\n * @returns the shader code\r\n */\r\n public handleFragmentSideCodeReflectionCoords(\r\n state: NodeMaterialBuildState,\r\n worldNormalVarName: string,\r\n worldPos?: string,\r\n onlyReflectionVector = false,\r\n doNotEmitInvertZ = false\r\n ): string {\r\n if (!worldPos) {\r\n worldPos = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : `v_${this.worldPosition.associatedVariableName}`;\r\n }\r\n let reflectionMatrix = this._reflectionMatrixName;\r\n const direction = `normalize(${this._directionWName})`;\r\n const positionUVW = `${this._positionUVWName}`;\r\n const vEyePosition = `${this.cameraPosition.associatedVariableName}`;\r\n const view = `${this.view.associatedVariableName}`;\r\n\r\n worldNormalVarName += \".xyz\";\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL && !this.generateOnlyFragmentCode) {\r\n worldPos = \"fragmentInputs.\" + worldPos;\r\n\r\n reflectionMatrix = \"uniforms.\" + reflectionMatrix;\r\n }\r\n\r\n let code = `\r\n #ifdef ${this._defineMirroredEquirectangularFixedName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeMirroredFixedEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${direction});\r\n #endif\r\n\r\n #ifdef ${this._defineEquirectangularFixedName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeFixedEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${direction});\r\n #endif\r\n\r\n #ifdef ${this._defineEquirectangularName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineSphericalName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeSphericalCoords(${worldPos}, ${worldNormalVarName}, ${view}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._definePlanarName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computePlanarCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineCubicName}\r\n #ifdef ${this._defineLocalCubicName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeCubicLocalCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix}, ${this._reflectionSizeName}, ${this._reflectionPositionName});\r\n #else\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeCubicCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n #endif\r\n\r\n #ifdef ${this._defineProjectionName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeProjectionCoords(${worldPos}, ${view}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineSkyboxName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeSkyBoxCoords(${positionUVW}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineExplicitName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = vec3(0, 0, 0);\r\n #endif\\n`;\r\n\r\n if (!doNotEmitInvertZ) {\r\n code += `#ifdef ${this._defineOppositeZ}\r\n ${this._reflectionVectorName}.z *= -1.0;\r\n #endif\\n`;\r\n }\r\n\r\n if (!onlyReflectionVector) {\r\n code += `\r\n #ifdef ${this._define3DName}\r\n ${state._declareLocalVar(this._reflectionCoordsName, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this._reflectionVectorName};\r\n #else\r\n ${state._declareLocalVar(this._reflectionCoordsName, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this._reflectionVectorName}.xy;\r\n #ifdef ${this._defineProjectionName}\r\n ${this._reflectionCoordsName} /= ${this._reflectionVectorName}.z;\r\n #endif\r\n ${this._reflectionCoordsName}.y = 1.0 - ${this._reflectionCoordsName}.y;\r\n #endif\\n`;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Generates the reflection color code for the fragment code path\r\n * @param state defines the build state\r\n * @param lodVarName name of the lod variable\r\n * @param swizzleLookupTexture swizzle to use for the final color variable\r\n * @returns the shader code\r\n */\r\n public handleFragmentSideCodeReflectionColor(state: NodeMaterialBuildState, lodVarName?: string, swizzleLookupTexture = \".rgb\"): string {\r\n let colorType = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n\r\n if (swizzleLookupTexture.length === 3) {\r\n colorType = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n }\r\n\r\n let code = `${state._declareLocalVar(this._reflectionColorName, colorType)};\r\n #ifdef ${this._define3DName}\\n`;\r\n\r\n if (lodVarName) {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSampleCubeLOD(this._reflectionVectorName, this._cubeSamplerName, lodVarName)}${swizzleLookupTexture};\\n`;\r\n } else {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSampleCube(this._reflectionVectorName, this._cubeSamplerName)}${swizzleLookupTexture};\\n`;\r\n }\r\n\r\n code += `\r\n #else\\n`;\r\n\r\n if (lodVarName) {\r\n code += `${this._reflectionColorName} =${state._generateTextureSampleLOD(this._reflectionCoordsName, this._2DSamplerName, lodVarName)}${swizzleLookupTexture};\\n`;\r\n } else {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSample(this._reflectionCoordsName, this._2DSamplerName)}${swizzleLookupTexture};\\n`;\r\n }\r\n\r\n code += `#endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Generates the code corresponding to the connected output points\r\n * @param state node material build state\r\n * @param varName name of the variable to output\r\n * @returns the shader code\r\n */\r\n public writeOutputs(state: NodeMaterialBuildState, varName: string): string {\r\n let code = \"\";\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n code += `${state._declareOutput(output)} = ${varName}.${output.name};\\n`;\r\n }\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n if (this.texture.isCube) {\r\n const forcedExtension = (this.texture as CubeTexture).forcedExtension;\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.CubeTexture(\"${this.texture.name}\", undefined, undefined, ${\r\n this.texture.noMipmap\r\n }, null, undefined, undefined, undefined, ${this.texture._prefiltered}, ${forcedExtension ? '\"' + forcedExtension + '\"' : \"null\"});\\n`;\r\n } else {\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null);\\n`;\r\n }\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n if (this.texture && !this.texture.isRenderTarget) {\r\n serializationObject.texture = this.texture.serialize();\r\n }\r\n\r\n serializationObject.generateOnlyFragmentCode = this.generateOnlyFragmentCode;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n if (serializationObject.texture.isCube) {\r\n this.texture = CubeTexture.Parse(serializationObject.texture, scene, rootUrl);\r\n } else {\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl);\r\n }\r\n }\r\n\r\n this.generateOnlyFragmentCode = serializationObject.generateOnlyFragmentCode;\r\n\r\n this._setTarget();\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ReflectionTextureBaseBlock\", ReflectionTextureBaseBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"reflectionTextureBaseBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { BaseTexture } from \"../../../Textures/baseTexture\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport { NodeMaterial } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport { Constants } from \"../../../../Engines/constants\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/reflectionFunction\";\r\nimport { CubeTexture } from \"../../../Textures/cubeTexture\";\r\nimport { Texture } from \"../../../Textures/texture\";\r\nimport { EngineStore } from \"../../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { SubMesh } from \"../../../..//Meshes/subMesh\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Base block used to read a reflection texture from a sampler\r\n */\r\nexport abstract class ReflectionTextureBaseBlock extends NodeMaterialBlock {\r\n /** @internal */\r\n public _define3DName: string;\r\n /** @internal */\r\n public _defineCubicName: string;\r\n /** @internal */\r\n public _defineExplicitName: string;\r\n /** @internal */\r\n public _defineProjectionName: string;\r\n /** @internal */\r\n public _defineLocalCubicName: string;\r\n /** @internal */\r\n public _defineSphericalName: string;\r\n /** @internal */\r\n public _definePlanarName: string;\r\n /** @internal */\r\n public _defineEquirectangularName: string;\r\n /** @internal */\r\n public _defineMirroredEquirectangularFixedName: string;\r\n /** @internal */\r\n public _defineEquirectangularFixedName: string;\r\n /** @internal */\r\n public _defineSkyboxName: string;\r\n /** @internal */\r\n public _defineOppositeZ: string;\r\n /** @internal */\r\n public _cubeSamplerName: string;\r\n /** @internal */\r\n public _2DSamplerName: string;\r\n /** @internal */\r\n public _reflectionPositionName: string;\r\n /** @internal */\r\n public _reflectionSizeName: string;\r\n\r\n protected _positionUVWName: string;\r\n protected _directionWName: string;\r\n protected _reflectionVectorName: string;\r\n /** @internal */\r\n public _reflectionCoordsName: string;\r\n /** @internal */\r\n public _reflectionMatrixName: string;\r\n protected _reflectionColorName: string;\r\n protected _worldPositionNameInFragmentOnlyMode: string;\r\n\r\n protected _texture: Nullable<BaseTexture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<BaseTexture> {\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<BaseTexture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /** Indicates that no code should be generated in the vertex shader. Can be useful in some specific circumstances (like when doing ray marching for eg) */\r\n @editableInPropertyPage(\"Generate only fragment code\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: { rebuild: true, update: true, onValidation: ReflectionTextureBaseBlock._OnGenerateOnlyFragmentCodeChanged },\r\n })\r\n public generateOnlyFragmentCode = false;\r\n\r\n protected static _OnGenerateOnlyFragmentCodeChanged(block: NodeMaterialBlock, _propertyName: string): boolean {\r\n const that = block as ReflectionTextureBaseBlock;\r\n return that._onGenerateOnlyFragmentCodeChanged();\r\n }\r\n\r\n protected _onGenerateOnlyFragmentCodeChanged(): boolean {\r\n this._setTarget();\r\n return true;\r\n }\r\n\r\n protected _setTarget(): void {\r\n this._setInitialTarget(this.generateOnlyFragmentCode ? NodeMaterialBlockTargets.Fragment : NodeMaterialBlockTargets.VertexAndFragment);\r\n }\r\n\r\n /**\r\n * Create a new ReflectionTextureBaseBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ReflectionTextureBaseBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public abstract get position(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public abstract get worldPosition(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public abstract get worldNormal(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the world input component\r\n */\r\n public abstract get world(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the camera (or eye) position component\r\n */\r\n public abstract get cameraPosition(): NodeMaterialConnectionPoint;\r\n\r\n /**\r\n * Gets the view input component\r\n */\r\n public abstract get view(): NodeMaterialConnectionPoint;\r\n\r\n protected _getTexture(): Nullable<BaseTexture> {\r\n return this.texture;\r\n }\r\n\r\n /**\r\n * Auto configure the node based on the existing material\r\n * @param material defines the material to configure\r\n * @param additionalFilteringInfo defines additional info to be used when filtering inputs (we might want to skip some non relevant blocks)\r\n */\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n\r\n if (!this.world.isConnected) {\r\n let worldInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.World && additionalFilteringInfo(b));\r\n\r\n if (!worldInput) {\r\n worldInput = new InputBlock(\"world\");\r\n worldInput.setAsSystemValue(NodeMaterialSystemValues.World);\r\n }\r\n worldInput.output.connectTo(this.world);\r\n }\r\n\r\n if (this.view && !this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View && additionalFilteringInfo(b));\r\n\r\n if (!viewInput) {\r\n viewInput = new InputBlock(\"view\");\r\n viewInput.setAsSystemValue(NodeMaterialSystemValues.View);\r\n }\r\n viewInput.output.connectTo(this.view);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const texture = this._getTexture();\r\n\r\n if (!texture || !texture.getTextureMatrix) {\r\n return;\r\n }\r\n\r\n defines.setValue(this._define3DName, texture.isCube, true);\r\n defines.setValue(this._defineLocalCubicName, (<any>texture).boundingBoxSize ? true : false, true);\r\n defines.setValue(this._defineExplicitName, texture.coordinatesMode === Constants.TEXTURE_EXPLICIT_MODE, true);\r\n defines.setValue(this._defineSkyboxName, texture.coordinatesMode === Constants.TEXTURE_SKYBOX_MODE, true);\r\n defines.setValue(this._defineCubicName, texture.coordinatesMode === Constants.TEXTURE_CUBIC_MODE || texture.coordinatesMode === Constants.TEXTURE_INVCUBIC_MODE, true);\r\n defines.setValue(\"INVERTCUBICMAP\", texture.coordinatesMode === Constants.TEXTURE_INVCUBIC_MODE, true);\r\n defines.setValue(this._defineSphericalName, texture.coordinatesMode === Constants.TEXTURE_SPHERICAL_MODE, true);\r\n defines.setValue(this._definePlanarName, texture.coordinatesMode === Constants.TEXTURE_PLANAR_MODE, true);\r\n defines.setValue(this._defineProjectionName, texture.coordinatesMode === Constants.TEXTURE_PROJECTION_MODE, true);\r\n defines.setValue(this._defineEquirectangularName, texture.coordinatesMode === Constants.TEXTURE_EQUIRECTANGULAR_MODE, true);\r\n defines.setValue(this._defineEquirectangularFixedName, texture.coordinatesMode === Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MODE, true);\r\n defines.setValue(this._defineMirroredEquirectangularFixedName, texture.coordinatesMode === Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE, true);\r\n }\r\n\r\n public override isReady() {\r\n const texture = this._getTexture();\r\n\r\n if (texture && !texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh, _subMesh?: SubMesh) {\r\n const texture = this._getTexture();\r\n\r\n if (!mesh || !texture) {\r\n return;\r\n }\r\n\r\n effect.setMatrix(this._reflectionMatrixName, texture.getReflectionTextureMatrix());\r\n\r\n if (texture.isCube) {\r\n effect.setTexture(this._cubeSamplerName, texture);\r\n } else {\r\n effect.setTexture(this._2DSamplerName, texture);\r\n }\r\n\r\n if ((<any>texture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>texture;\r\n effect.setVector3(this._reflectionPositionName, cubeTexture.boundingBoxPosition);\r\n effect.setVector3(this._reflectionSizeName, cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the code to inject in the vertex shader\r\n * @param state current state of the node material building\r\n * @returns the shader code\r\n */\r\n public handleVertexSide(state: NodeMaterialBuildState): string {\r\n if (this.generateOnlyFragmentCode && state.target === NodeMaterialBlockTargets.Vertex) {\r\n return \"\";\r\n }\r\n\r\n this._define3DName = state._getFreeDefineName(\"REFLECTIONMAP_3D\");\r\n this._defineCubicName = state._getFreeDefineName(\"REFLECTIONMAP_CUBIC\");\r\n this._defineSphericalName = state._getFreeDefineName(\"REFLECTIONMAP_SPHERICAL\");\r\n this._definePlanarName = state._getFreeDefineName(\"REFLECTIONMAP_PLANAR\");\r\n this._defineProjectionName = state._getFreeDefineName(\"REFLECTIONMAP_PROJECTION\");\r\n this._defineExplicitName = state._getFreeDefineName(\"REFLECTIONMAP_EXPLICIT\");\r\n this._defineEquirectangularName = state._getFreeDefineName(\"REFLECTIONMAP_EQUIRECTANGULAR\");\r\n this._defineLocalCubicName = state._getFreeDefineName(\"USE_LOCAL_REFLECTIONMAP_CUBIC\");\r\n this._defineMirroredEquirectangularFixedName = state._getFreeDefineName(\"REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED\");\r\n this._defineEquirectangularFixedName = state._getFreeDefineName(\"REFLECTIONMAP_EQUIRECTANGULAR_FIXED\");\r\n this._defineSkyboxName = state._getFreeDefineName(\"REFLECTIONMAP_SKYBOX\");\r\n this._defineOppositeZ = state._getFreeDefineName(\"REFLECTIONMAP_OPPOSITEZ\");\r\n\r\n this._reflectionMatrixName = state._getFreeVariableName(\"reflectionMatrix\");\r\n\r\n state._emitUniformFromString(this._reflectionMatrixName, NodeMaterialBlockConnectionPointTypes.Matrix);\r\n\r\n let code = \"\";\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n this._worldPositionNameInFragmentOnlyMode = state._getFreeVariableName(\"worldPosition\");\r\n\r\n const worldPosVaryingName = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : \"v_\" + this.worldPosition.associatedVariableName;\r\n if (this.generateOnlyFragmentCode || state._emitVaryingFromString(worldPosVaryingName, NodeMaterialBlockConnectionPointTypes.Vector4)) {\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(worldPosVaryingName, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this.worldPosition.associatedVariableName};\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${worldPosVaryingName} = ${this.worldPosition.associatedVariableName};\\n`;\r\n }\r\n }\r\n\r\n this._positionUVWName = state._getFreeVariableName(\"positionUVW\");\r\n this._directionWName = state._getFreeVariableName(\"directionW\");\r\n\r\n if (this.generateOnlyFragmentCode || state._emitVaryingFromString(this._positionUVWName, NodeMaterialBlockConnectionPointTypes.Vector3, this._defineSkyboxName)) {\r\n code += `#ifdef ${this._defineSkyboxName}\\n`;\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(this._positionUVWName, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this.position.associatedVariableName}.xyz;\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${this._positionUVWName} = ${this.position.associatedVariableName}.xyz;\\n`;\r\n }\r\n code += `#endif\\n`;\r\n }\r\n\r\n if (\r\n this.generateOnlyFragmentCode ||\r\n state._emitVaryingFromString(\r\n this._directionWName,\r\n NodeMaterialBlockConnectionPointTypes.Vector3,\r\n `defined(${this._defineEquirectangularFixedName}) || defined(${this._defineMirroredEquirectangularFixedName})`\r\n )\r\n ) {\r\n code += `#if defined(${this._defineEquirectangularFixedName}) || defined(${this._defineMirroredEquirectangularFixedName})\\n`;\r\n if (this.generateOnlyFragmentCode) {\r\n code += `${state._declareLocalVar(this._directionWName, NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(vec3${state.fSuffix}(${this.world.associatedVariableName} * vec4${state.fSuffix}(${\r\n this.position.associatedVariableName\r\n }.xyz, 0.0)));\\n`;\r\n } else {\r\n code += `${isWebGPU ? \"vertexOutputs.\" : \"\"}${this._directionWName} = normalize(vec3${state.fSuffix}(${this.world.associatedVariableName} * vec4${state.fSuffix}(${\r\n this.position.associatedVariableName\r\n }.xyz, 0.0)));\\n`;\r\n }\r\n code += `#endif\\n`;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Handles the inits for the fragment code path\r\n * @param state node material build state\r\n */\r\n public handleFragmentSideInits(state: NodeMaterialBuildState) {\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n\r\n // Samplers\r\n this._cubeSamplerName = state._getFreeVariableName(this.name + \"CubeSampler\");\r\n state.samplers.push(this._cubeSamplerName);\r\n\r\n this._2DSamplerName = state._getFreeVariableName(this.name + \"2DSampler\");\r\n state.samplers.push(this._2DSamplerName);\r\n\r\n state._samplerDeclaration += `#ifdef ${this._define3DName}\\n`;\r\n state._emitCubeSampler(this._cubeSamplerName, \"\", true);\r\n state._samplerDeclaration += `#else\\n`;\r\n state._emit2DSampler(this._2DSamplerName, \"\", true);\r\n state._samplerDeclaration += `#endif\\n`;\r\n\r\n // Fragment\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"reflectionFunction\", comments, {\r\n replaceStrings: [\r\n { search: /vec3 computeReflectionCoords/g, replace: \"void DUMMYFUNC\" },\r\n { search: /fn computeReflectionCoords/g, replace: \"void DUMMYFUNC\" },\r\n ],\r\n });\r\n\r\n this._reflectionColorName = state._getFreeVariableName(\"reflectionColor\");\r\n this._reflectionVectorName = state._getFreeVariableName(\"reflectionUVW\");\r\n this._reflectionCoordsName = state._getFreeVariableName(\"reflectionCoords\");\r\n\r\n this._reflectionPositionName = state._getFreeVariableName(\"vReflectionPosition\");\r\n state._emitUniformFromString(this._reflectionPositionName, NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._reflectionSizeName = state._getFreeVariableName(\"vReflectionPosition\");\r\n state._emitUniformFromString(this._reflectionSizeName, NodeMaterialBlockConnectionPointTypes.Vector3);\r\n }\r\n\r\n /**\r\n * Generates the reflection coords code for the fragment code path\r\n * @param state defines the build state\r\n * @param worldNormalVarName name of the world normal variable\r\n * @param worldPos name of the world position variable. If not provided, will use the world position connected to this block\r\n * @param onlyReflectionVector if true, generates code only for the reflection vector computation, not for the reflection coordinates\r\n * @param doNotEmitInvertZ if true, does not emit the invertZ code\r\n * @returns the shader code\r\n */\r\n public handleFragmentSideCodeReflectionCoords(\r\n state: NodeMaterialBuildState,\r\n worldNormalVarName: string,\r\n worldPos?: string,\r\n onlyReflectionVector = false,\r\n doNotEmitInvertZ = false\r\n ): string {\r\n if (!worldPos) {\r\n worldPos = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : `v_${this.worldPosition.associatedVariableName}`;\r\n }\r\n let reflectionMatrix = this._reflectionMatrixName;\r\n const direction = `normalize(${this._directionWName})`;\r\n const positionUVW = `${this._positionUVWName}`;\r\n const vEyePosition = `${this.cameraPosition.associatedVariableName}`;\r\n const view = `${this.view.associatedVariableName}`;\r\n\r\n worldNormalVarName += \".xyz\";\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL && !this.generateOnlyFragmentCode) {\r\n worldPos = \"fragmentInputs.\" + worldPos;\r\n\r\n reflectionMatrix = \"uniforms.\" + reflectionMatrix;\r\n }\r\n\r\n let code = `\r\n #ifdef ${this._defineMirroredEquirectangularFixedName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeMirroredFixedEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${direction});\r\n #endif\r\n\r\n #ifdef ${this._defineEquirectangularFixedName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeFixedEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${direction});\r\n #endif\r\n\r\n #ifdef ${this._defineEquirectangularName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeEquirectangularCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineSphericalName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeSphericalCoords(${worldPos}, ${worldNormalVarName}, ${view}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._definePlanarName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computePlanarCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineCubicName}\r\n #ifdef ${this._defineLocalCubicName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeCubicLocalCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix}, ${this._reflectionSizeName}, ${this._reflectionPositionName});\r\n #else\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeCubicCoords(${worldPos}, ${worldNormalVarName}, ${vEyePosition}.xyz, ${reflectionMatrix});\r\n #endif\r\n #endif\r\n\r\n #ifdef ${this._defineProjectionName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeProjectionCoords(${worldPos}, ${view}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineSkyboxName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = computeSkyBoxCoords(${positionUVW}, ${reflectionMatrix});\r\n #endif\r\n\r\n #ifdef ${this._defineExplicitName}\r\n ${state._declareLocalVar(this._reflectionVectorName, NodeMaterialBlockConnectionPointTypes.Vector3)} = vec3(0, 0, 0);\r\n #endif\\n`;\r\n\r\n if (!doNotEmitInvertZ) {\r\n code += `#ifdef ${this._defineOppositeZ}\r\n ${this._reflectionVectorName}.z *= -1.0;\r\n #endif\\n`;\r\n }\r\n\r\n if (!onlyReflectionVector) {\r\n code += `\r\n #ifdef ${this._define3DName}\r\n ${state._declareLocalVar(this._reflectionCoordsName, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this._reflectionVectorName};\r\n #else\r\n ${state._declareLocalVar(this._reflectionCoordsName, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this._reflectionVectorName}.xy;\r\n #ifdef ${this._defineProjectionName}\r\n ${this._reflectionCoordsName} /= ${this._reflectionVectorName}.z;\r\n #endif\r\n ${this._reflectionCoordsName}.y = 1.0 - ${this._reflectionCoordsName}.y;\r\n #endif\\n`;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Generates the reflection color code for the fragment code path\r\n * @param state defines the build state\r\n * @param lodVarName name of the lod variable\r\n * @param swizzleLookupTexture swizzle to use for the final color variable\r\n * @returns the shader code\r\n */\r\n public handleFragmentSideCodeReflectionColor(state: NodeMaterialBuildState, lodVarName?: string, swizzleLookupTexture = \".rgb\"): string {\r\n let colorType = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n\r\n if (swizzleLookupTexture.length === 3) {\r\n colorType = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n }\r\n\r\n let code = `${state._declareLocalVar(this._reflectionColorName, colorType)};\r\n #ifdef ${this._define3DName}\\n`;\r\n\r\n if (lodVarName) {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSampleCubeLOD(this._reflectionVectorName, this._cubeSamplerName, lodVarName)}${swizzleLookupTexture};\\n`;\r\n } else {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSampleCube(this._reflectionVectorName, this._cubeSamplerName)}${swizzleLookupTexture};\\n`;\r\n }\r\n\r\n code += `\r\n #else\\n`;\r\n\r\n if (lodVarName) {\r\n code += `${this._reflectionColorName} =${state._generateTextureSampleLOD(this._reflectionCoordsName, this._2DSamplerName, lodVarName)}${swizzleLookupTexture};\\n`;\r\n } else {\r\n code += `${this._reflectionColorName} = ${state._generateTextureSample(this._reflectionCoordsName, this._2DSamplerName)}${swizzleLookupTexture};\\n`;\r\n }\r\n\r\n code += `#endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Generates the code corresponding to the connected output points\r\n * @param state node material build state\r\n * @param varName name of the variable to output\r\n * @returns the shader code\r\n */\r\n public writeOutputs(state: NodeMaterialBuildState, varName: string): string {\r\n let code = \"\";\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n code += `${state._declareOutput(output)} = ${varName}.${output.name};\\n`;\r\n }\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n if (this.texture.isCube) {\r\n const forcedExtension = (this.texture as CubeTexture).forcedExtension;\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.CubeTexture(\"${this.texture.name}\", undefined, undefined, ${\r\n this.texture.noMipmap\r\n }, null, undefined, undefined, undefined, ${this.texture._prefiltered}, ${forcedExtension ? '\"' + forcedExtension + '\"' : \"null\"});\\n`;\r\n } else {\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null);\\n`;\r\n }\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n if (this.texture && !this.texture.isRenderTarget) {\r\n serializationObject.texture = this.texture.serialize();\r\n }\r\n\r\n serializationObject.generateOnlyFragmentCode = this.generateOnlyFragmentCode;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n if (serializationObject.texture.isCube) {\r\n this.texture = CubeTexture.Parse(serializationObject.texture, scene, rootUrl);\r\n } else {\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl);\r\n }\r\n }\r\n\r\n this.generateOnlyFragmentCode = serializationObject.generateOnlyFragmentCode;\r\n\r\n this._setTarget();\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ReflectionTextureBaseBlock\", ReflectionTextureBaseBlock);\r\n"]}
|
|
@@ -3,8 +3,7 @@ import { NodeMaterialBlock } from "../../nodeMaterialBlock.js";
|
|
|
3
3
|
import { NodeMaterialBlockConnectionPointTypes } from "../../Enums/nodeMaterialBlockConnectionPointTypes.js";
|
|
4
4
|
import { NodeMaterialBlockTargets } from "../../Enums/nodeMaterialBlockTargets.js";
|
|
5
5
|
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
6
|
-
import { editableInPropertyPage
|
|
7
|
-
import { ShaderLanguage } from "../../../shaderLanguage.js";
|
|
6
|
+
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* Block used to retrieve the depth (zbuffer) of the scene
|
|
@@ -109,14 +108,14 @@ export class SceneDepthBlock extends NodeMaterialBlock {
|
|
|
109
108
|
if (state.target === NodeMaterialBlockTargets.Fragment) {
|
|
110
109
|
return;
|
|
111
110
|
}
|
|
112
|
-
const textureReadFunc = state.shaderLanguage === ShaderLanguage.GLSL
|
|
111
|
+
const textureReadFunc = state.shaderLanguage === 0 /* ShaderLanguage.GLSL */
|
|
113
112
|
? `texture2D(${this._samplerName},`
|
|
114
113
|
: `textureSampleLevel(${this._samplerName}, ${this._samplerName + `Sampler`},`;
|
|
115
|
-
const complement = state.shaderLanguage === ShaderLanguage.GLSL ? "" : ", 0";
|
|
114
|
+
const complement = state.shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? "" : ", 0";
|
|
116
115
|
state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)}= ${textureReadFunc} ${uvInput.associatedVariableName}.xy${complement});\n`;
|
|
117
116
|
return;
|
|
118
117
|
}
|
|
119
|
-
const textureReadFunc = state.shaderLanguage === ShaderLanguage.GLSL
|
|
118
|
+
const textureReadFunc = state.shaderLanguage === 0 /* ShaderLanguage.GLSL */
|
|
120
119
|
? `texture2D(${this._samplerName},`
|
|
121
120
|
: `textureSample(${this._samplerName}, ${this._samplerName + `Sampler`},`;
|
|
122
121
|
if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {
|
|
@@ -180,7 +179,7 @@ export class SceneDepthBlock extends NodeMaterialBlock {
|
|
|
180
179
|
}
|
|
181
180
|
}
|
|
182
181
|
__decorate([
|
|
183
|
-
editableInPropertyPage("Use non linear depth", PropertyTypeForEdition.Boolean
|
|
182
|
+
editableInPropertyPage("Use non linear depth", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", {
|
|
184
183
|
notifiers: {
|
|
185
184
|
activatePreviewCommand: true,
|
|
186
185
|
callback: (scene, block) => {
|
|
@@ -199,7 +198,7 @@ __decorate([
|
|
|
199
198
|
})
|
|
200
199
|
], SceneDepthBlock.prototype, "useNonLinearDepth", void 0);
|
|
201
200
|
__decorate([
|
|
202
|
-
editableInPropertyPage("Store Camera space Z", PropertyTypeForEdition.Boolean
|
|
201
|
+
editableInPropertyPage("Store Camera space Z", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", {
|
|
203
202
|
notifiers: {
|
|
204
203
|
activatePreviewCommand: true,
|
|
205
204
|
callback: (scene, block) => {
|
|
@@ -218,7 +217,7 @@ __decorate([
|
|
|
218
217
|
})
|
|
219
218
|
], SceneDepthBlock.prototype, "storeCameraSpaceZ", void 0);
|
|
220
219
|
__decorate([
|
|
221
|
-
editableInPropertyPage("Force 32 bits float", PropertyTypeForEdition.Boolean
|
|
220
|
+
editableInPropertyPage("Force 32 bits float", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", {
|
|
222
221
|
notifiers: { activatePreviewCommand: true, callback: (scene) => scene?.disableDepthRenderer() },
|
|
223
222
|
})
|
|
224
223
|
], SceneDepthBlock.prototype, "force32itsFloat", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneDepthBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Dual/sceneDepthBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { BaseTexture } from \"../../../Textures/baseTexture\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { InputBlock } from \"../Input/inputBlock\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\n\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Block used to retrieve the depth (zbuffer) of the scene\r\n * @since 5.0.0\r\n */\r\nexport class SceneDepthBlock extends NodeMaterialBlock {\r\n private _samplerName: string;\r\n private _mainUVName: string;\r\n private _tempTextureRead: string;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in non linear mode\r\n */\r\n @editableInPropertyPage(\"Use non linear depth\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: {\r\n activatePreviewCommand: true,\r\n callback: (scene, block) => {\r\n const sceneDepthBlock = block as SceneDepthBlock;\r\n let retVal = false;\r\n if (sceneDepthBlock.useNonLinearDepth) {\r\n sceneDepthBlock.storeCameraSpaceZ = false;\r\n retVal = true;\r\n }\r\n if (scene) {\r\n scene.disableDepthRenderer();\r\n }\r\n return retVal;\r\n },\r\n },\r\n })\r\n public useNonLinearDepth = false;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in camera space Z mode (if set, useNonLinearDepth has no effect)\r\n */\r\n @editableInPropertyPage(\"Store Camera space Z\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: {\r\n activatePreviewCommand: true,\r\n callback: (scene, block) => {\r\n const sceneDepthBlock = block as SceneDepthBlock;\r\n let retVal = false;\r\n if (sceneDepthBlock.storeCameraSpaceZ) {\r\n sceneDepthBlock.useNonLinearDepth = false;\r\n retVal = true;\r\n }\r\n if (scene) {\r\n scene.disableDepthRenderer();\r\n }\r\n return retVal;\r\n },\r\n },\r\n })\r\n public storeCameraSpaceZ = false;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in full 32 bits float mode\r\n */\r\n @editableInPropertyPage(\"Force 32 bits float\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: { activatePreviewCommand: true, callback: (scene) => scene?.disableDepthRenderer() },\r\n })\r\n public force32itsFloat = false;\r\n\r\n /**\r\n * Create a new SceneDepthBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"depth\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n\r\n this._inputs[0]._prioritizeVertex = false;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SceneDepthBlock\";\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the depth output component\r\n */\r\n public get depth(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"textureSampler\");\r\n }\r\n\r\n public override get target() {\r\n if (!this.uv.isConnected) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n if (this.uv.sourceBlock!.isInput) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n return NodeMaterialBlockTargets.Fragment;\r\n }\r\n\r\n private _getTexture(scene: Scene): BaseTexture {\r\n const depthRenderer = scene.enableDepthRenderer(undefined, this.useNonLinearDepth, this.force32itsFloat, undefined, this.storeCameraSpaceZ);\r\n\r\n return depthRenderer.getDepthMap();\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial) {\r\n const texture = this._getTexture(nodeMaterial.getScene());\r\n\r\n effect.setTexture(this._samplerName, texture);\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n const uvInput = this.uv;\r\n\r\n if (uvInput.connectedPoint!.ownerBlock.isInput) {\r\n const uvInputOwnerBlock = uvInput.connectedPoint!.ownerBlock as InputBlock;\r\n\r\n if (!uvInputOwnerBlock.isAttribute) {\r\n state._emitUniformFromString(\r\n uvInput.associatedVariableName,\r\n uvInput.type === NodeMaterialBlockConnectionPointTypes.Vector3\r\n ? NodeMaterialBlockConnectionPointTypes.Vector3\r\n : uvInput.type === NodeMaterialBlockConnectionPointTypes.Vector4\r\n ? NodeMaterialBlockConnectionPointTypes.Vector4\r\n : NodeMaterialBlockConnectionPointTypes.Vector2\r\n );\r\n }\r\n }\r\n\r\n this._mainUVName = \"vMain\" + uvInput.associatedVariableName;\r\n\r\n state._emitVaryingFromString(this._mainUVName, NodeMaterialBlockConnectionPointTypes.Vector2);\r\n\r\n state.compilationString += `${this._mainUVName} = ${uvInput.associatedVariableName}.xy;\\n`;\r\n\r\n if (!this._outputs.some((o) => o.isConnectedInVertexShader)) {\r\n return;\r\n }\r\n\r\n this._writeTextureRead(state, true);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, \"r\", true);\r\n }\r\n }\r\n }\r\n\r\n private _writeTextureRead(state: NodeMaterialBuildState, vertexMode = false) {\r\n const uvInput = this.uv;\r\n\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n const textureReadFunc =\r\n state.shaderLanguage === ShaderLanguage.GLSL\r\n ? `texture2D(${this._samplerName},`\r\n : `textureSampleLevel(${this._samplerName}, ${this._samplerName + Constants.AUTOSAMPLERSUFFIX},`;\r\n\r\n const complement = state.shaderLanguage === ShaderLanguage.GLSL ? \"\" : \", 0\";\r\n\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)}= ${textureReadFunc} ${uvInput.associatedVariableName}.xy${complement});\\n`;\r\n return;\r\n }\r\n\r\n const textureReadFunc =\r\n state.shaderLanguage === ShaderLanguage.GLSL\r\n ? `texture2D(${this._samplerName},`\r\n : `textureSample(${this._samplerName}, ${this._samplerName + Constants.AUTOSAMPLERSUFFIX},`;\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${textureReadFunc} ${uvInput.associatedVariableName}.xy);\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${textureReadFunc} ${this._mainUVName});\\n`;\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string, vertexMode = false) {\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n\r\n if (state.sharedData.bindableBlocks.indexOf(this) < 0) {\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n state._emit2DSampler(this._samplerName);\r\n this._injectVertexCode(state);\r\n return;\r\n }\r\n\r\n // Fragment\r\n if (!this._outputs.some((o) => o.isConnectedInFragmentShader)) {\r\n return;\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n this._writeTextureRead(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, \"r\");\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.useNonLinearDepth = this.useNonLinearDepth;\r\n serializationObject.storeCameraSpaceZ = this.storeCameraSpaceZ;\r\n serializationObject.force32itsFloat = this.force32itsFloat;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.useNonLinearDepth = serializationObject.useNonLinearDepth;\r\n this.storeCameraSpaceZ = !!serializationObject.storeCameraSpaceZ;\r\n this.force32itsFloat = serializationObject.force32itsFloat;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SceneDepthBlock\", SceneDepthBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"sceneDepthBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Dual/sceneDepthBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { BaseTexture } from \"../../../Textures/baseTexture\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { InputBlock } from \"../Input/inputBlock\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\n\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Block used to retrieve the depth (zbuffer) of the scene\r\n * @since 5.0.0\r\n */\r\nexport class SceneDepthBlock extends NodeMaterialBlock {\r\n private _samplerName: string;\r\n private _mainUVName: string;\r\n private _tempTextureRead: string;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in non linear mode\r\n */\r\n @editableInPropertyPage(\"Use non linear depth\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: {\r\n activatePreviewCommand: true,\r\n callback: (scene, block) => {\r\n const sceneDepthBlock = block as SceneDepthBlock;\r\n let retVal = false;\r\n if (sceneDepthBlock.useNonLinearDepth) {\r\n sceneDepthBlock.storeCameraSpaceZ = false;\r\n retVal = true;\r\n }\r\n if (scene) {\r\n scene.disableDepthRenderer();\r\n }\r\n return retVal;\r\n },\r\n },\r\n })\r\n public useNonLinearDepth = false;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in camera space Z mode (if set, useNonLinearDepth has no effect)\r\n */\r\n @editableInPropertyPage(\"Store Camera space Z\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: {\r\n activatePreviewCommand: true,\r\n callback: (scene, block) => {\r\n const sceneDepthBlock = block as SceneDepthBlock;\r\n let retVal = false;\r\n if (sceneDepthBlock.storeCameraSpaceZ) {\r\n sceneDepthBlock.useNonLinearDepth = false;\r\n retVal = true;\r\n }\r\n if (scene) {\r\n scene.disableDepthRenderer();\r\n }\r\n return retVal;\r\n },\r\n },\r\n })\r\n public storeCameraSpaceZ = false;\r\n\r\n /**\r\n * Defines if the depth renderer should be setup in full 32 bits float mode\r\n */\r\n @editableInPropertyPage(\"Force 32 bits float\", PropertyTypeForEdition.Boolean, \"ADVANCED\", {\r\n notifiers: { activatePreviewCommand: true, callback: (scene) => scene?.disableDepthRenderer() },\r\n })\r\n public force32itsFloat = false;\r\n\r\n /**\r\n * Create a new SceneDepthBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"depth\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n\r\n this._inputs[0]._prioritizeVertex = false;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SceneDepthBlock\";\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the depth output component\r\n */\r\n public get depth(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"textureSampler\");\r\n }\r\n\r\n public override get target() {\r\n if (!this.uv.isConnected) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n if (this.uv.sourceBlock!.isInput) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n return NodeMaterialBlockTargets.Fragment;\r\n }\r\n\r\n private _getTexture(scene: Scene): BaseTexture {\r\n const depthRenderer = scene.enableDepthRenderer(undefined, this.useNonLinearDepth, this.force32itsFloat, undefined, this.storeCameraSpaceZ);\r\n\r\n return depthRenderer.getDepthMap();\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial) {\r\n const texture = this._getTexture(nodeMaterial.getScene());\r\n\r\n effect.setTexture(this._samplerName, texture);\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n const uvInput = this.uv;\r\n\r\n if (uvInput.connectedPoint!.ownerBlock.isInput) {\r\n const uvInputOwnerBlock = uvInput.connectedPoint!.ownerBlock as InputBlock;\r\n\r\n if (!uvInputOwnerBlock.isAttribute) {\r\n state._emitUniformFromString(\r\n uvInput.associatedVariableName,\r\n uvInput.type === NodeMaterialBlockConnectionPointTypes.Vector3\r\n ? NodeMaterialBlockConnectionPointTypes.Vector3\r\n : uvInput.type === NodeMaterialBlockConnectionPointTypes.Vector4\r\n ? NodeMaterialBlockConnectionPointTypes.Vector4\r\n : NodeMaterialBlockConnectionPointTypes.Vector2\r\n );\r\n }\r\n }\r\n\r\n this._mainUVName = \"vMain\" + uvInput.associatedVariableName;\r\n\r\n state._emitVaryingFromString(this._mainUVName, NodeMaterialBlockConnectionPointTypes.Vector2);\r\n\r\n state.compilationString += `${this._mainUVName} = ${uvInput.associatedVariableName}.xy;\\n`;\r\n\r\n if (!this._outputs.some((o) => o.isConnectedInVertexShader)) {\r\n return;\r\n }\r\n\r\n this._writeTextureRead(state, true);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, \"r\", true);\r\n }\r\n }\r\n }\r\n\r\n private _writeTextureRead(state: NodeMaterialBuildState, vertexMode = false) {\r\n const uvInput = this.uv;\r\n\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n const textureReadFunc =\r\n state.shaderLanguage === ShaderLanguage.GLSL\r\n ? `texture2D(${this._samplerName},`\r\n : `textureSampleLevel(${this._samplerName}, ${this._samplerName + Constants.AUTOSAMPLERSUFFIX},`;\r\n\r\n const complement = state.shaderLanguage === ShaderLanguage.GLSL ? \"\" : \", 0\";\r\n\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)}= ${textureReadFunc} ${uvInput.associatedVariableName}.xy${complement});\\n`;\r\n return;\r\n }\r\n\r\n const textureReadFunc =\r\n state.shaderLanguage === ShaderLanguage.GLSL\r\n ? `texture2D(${this._samplerName},`\r\n : `textureSample(${this._samplerName}, ${this._samplerName + Constants.AUTOSAMPLERSUFFIX},`;\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${textureReadFunc} ${uvInput.associatedVariableName}.xy);\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${textureReadFunc} ${this._mainUVName});\\n`;\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string, vertexMode = false) {\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle};\\n`;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n\r\n if (state.sharedData.bindableBlocks.indexOf(this) < 0) {\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n state._emit2DSampler(this._samplerName);\r\n this._injectVertexCode(state);\r\n return;\r\n }\r\n\r\n // Fragment\r\n if (!this._outputs.some((o) => o.isConnectedInFragmentShader)) {\r\n return;\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n this._writeTextureRead(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, \"r\");\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.useNonLinearDepth = this.useNonLinearDepth;\r\n serializationObject.storeCameraSpaceZ = this.storeCameraSpaceZ;\r\n serializationObject.force32itsFloat = this.force32itsFloat;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.useNonLinearDepth = serializationObject.useNonLinearDepth;\r\n this.storeCameraSpaceZ = !!serializationObject.storeCameraSpaceZ;\r\n this.force32itsFloat = serializationObject.force32itsFloat;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SceneDepthBlock\", SceneDepthBlock);\r\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { NodeMaterialBlock } from "../../nodeMaterialBlock.js";
|
|
2
2
|
import { NodeMaterialBlockConnectionPointTypes } from "../../Enums/nodeMaterialBlockConnectionPointTypes.js";
|
|
3
3
|
import { NodeMaterialBlockTargets } from "../../Enums/nodeMaterialBlockTargets.js";
|
|
4
|
-
import { NodeMaterialConnectionPointDirection } from "../../nodeMaterialBlockConnectionPoint.js";
|
|
5
4
|
import { NodeMaterial } from "../../nodeMaterial.js";
|
|
6
5
|
import { InputBlock } from "../Input/inputBlock.js";
|
|
7
6
|
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
@@ -12,7 +11,6 @@ import "../../../../Shaders/ShadersInclude/helperFunctions.js";
|
|
|
12
11
|
import { ImageSourceBlock } from "./imageSourceBlock.js";
|
|
13
12
|
import { NodeMaterialConnectionPointCustomObject } from "../../nodeMaterialConnectionPointCustomObject.js";
|
|
14
13
|
import { EngineStore } from "../../../../Engines/engineStore.js";
|
|
15
|
-
import { ShaderLanguage } from "../../../shaderLanguage.js";
|
|
16
14
|
/**
|
|
17
15
|
* Block used to read a texture from a sampler
|
|
18
16
|
*/
|
|
@@ -120,7 +118,7 @@ export class TextureBlock extends NodeMaterialBlock {
|
|
|
120
118
|
this.disableLevelMultiplication = false;
|
|
121
119
|
this._fragmentOnly = fragmentOnly;
|
|
122
120
|
this.registerInput("uv", NodeMaterialBlockConnectionPointTypes.AutoDetect, false, NodeMaterialBlockTargets.VertexAndFragment);
|
|
123
|
-
this.registerInput("source", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.VertexAndFragment, new NodeMaterialConnectionPointCustomObject("source", this, NodeMaterialConnectionPointDirection.Input
|
|
121
|
+
this.registerInput("source", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.VertexAndFragment, new NodeMaterialConnectionPointCustomObject("source", this, 0 /* NodeMaterialConnectionPointDirection.Input */, ImageSourceBlock, "ImageSourceBlock"));
|
|
124
122
|
this.registerInput("layer", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
125
123
|
this.registerInput("lod", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
126
124
|
this.registerOutput("rgba", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);
|
|
@@ -371,7 +369,7 @@ export class TextureBlock extends NodeMaterialBlock {
|
|
|
371
369
|
return coords;
|
|
372
370
|
}
|
|
373
371
|
_samplerFunc(state) {
|
|
374
|
-
if (state.shaderLanguage === ShaderLanguage.WGSL) {
|
|
372
|
+
if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
|
|
375
373
|
return state.target === NodeMaterialBlockTargets.Vertex ? "textureSampleLevel" : "textureSample";
|
|
376
374
|
}
|
|
377
375
|
return this.lod.isConnected ? "texture2DLodEXT" : "texture2D";
|
|
@@ -380,7 +378,7 @@ export class TextureBlock extends NodeMaterialBlock {
|
|
|
380
378
|
return this.lod.isConnected ? `, ${this.lod.associatedVariableName}` : "";
|
|
381
379
|
}
|
|
382
380
|
_generateTextureSample(uv, state) {
|
|
383
|
-
if (state.shaderLanguage === ShaderLanguage.WGSL) {
|
|
381
|
+
if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
|
|
384
382
|
const isVertex = state.target === NodeMaterialBlockTargets.Vertex;
|
|
385
383
|
return `${this._samplerFunc(state)}(${this.samplerName},${this.samplerName + `Sampler`}, ${this._getUVW(uv)}${this._samplerLodSuffix}${isVertex ? ", 0" : ""})`;
|
|
386
384
|
}
|
|
@@ -439,7 +437,7 @@ export class TextureBlock extends NodeMaterialBlock {
|
|
|
439
437
|
}
|
|
440
438
|
let complement = "";
|
|
441
439
|
if (!this.disableLevelMultiplication) {
|
|
442
|
-
complement = ` * ${(state.shaderLanguage === ShaderLanguage.WGSL ? "uniforms." : "") + this._textureInfoName}`;
|
|
440
|
+
complement = ` * ${(state.shaderLanguage === 1 /* ShaderLanguage.WGSL */ ? "uniforms." : "") + this._textureInfoName}`;
|
|
443
441
|
}
|
|
444
442
|
state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle}${complement};\n`;
|
|
445
443
|
this._generateConversionCode(state, output, swizzle);
|