@babylonjs/core 5.45.2 → 5.47.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/Actions/actionManager.js +6 -1
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.js +23 -23
- package/Actions/condition.js.map +1 -1
- package/Animations/animatable.js +48 -48
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.js +53 -53
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +53 -53
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/runtimeAnimation.js +36 -36
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioEngine.js +14 -14
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.js +14 -14
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.js +47 -47
- package/Audio/sound.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/fadeInOutBehavior.js +11 -11
- package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +34 -34
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.js +15 -15
- package/Bones/bone.js.map +1 -1
- package/Bones/boneIKController.js +9 -9
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.js +50 -50
- package/Bones/boneLookController.js.map +1 -1
- package/Bones/skeleton.js +35 -35
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.js +14 -14
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/dataBuffer.js +6 -6
- package/Buffers/dataBuffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +42 -42
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +18 -18
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +178 -178
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/arcRotateCamera.js +176 -176
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +90 -90
- package/Cameras/camera.js.map +1 -1
- package/Cameras/flyCamera.js +82 -82
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/freeCamera.js +54 -54
- package/Cameras/freeCamera.js.map +1 -1
- package/Compute/computeShader.js +12 -12
- package/Compute/computeShader.js.map +1 -1
- package/Culling/ray.d.ts +1 -1
- package/Debug/axesViewer.js +12 -12
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/debugLayer.js +21 -21
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +20 -20
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/physicsViewer.js +3 -3
- package/Debug/physicsViewer.js.map +1 -1
- package/Debug/rayHelper.js +10 -10
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +81 -81
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSource.d.ts +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +31 -31
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
- package/DeviceInput/eventFactory.d.ts +1 -1
- package/DeviceInput/eventFactory.js +4 -4
- package/DeviceInput/eventFactory.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +2 -2
- package/DeviceInput/webDeviceInputSystem.js +2 -2
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +3 -3
- package/Engines/Extensions/engine.multiRender.js +1 -1
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.js +1 -1
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Native/nativeDataStream.d.ts +1 -1
- package/Engines/Native/nativeHardwareTexture.js +3 -3
- package/Engines/Native/nativeHardwareTexture.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +5 -5
- package/Engines/Native/nativePipelineContext.js +7 -7
- package/Engines/Native/nativePipelineContext.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.js +6 -6
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +4 -4
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderProcessingOptions.d.ts +1 -1
- package/Engines/WebGL/webGLHardwareTexture.js +3 -3
- package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +3 -3
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +6 -6
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +5 -5
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +11 -11
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +7 -7
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js +4 -4
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +7 -7
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +9 -9
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js +5 -5
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +10 -10
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.js +6 -6
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js +3 -3
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +3 -3
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/engine.js +134 -134
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +6 -6
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +25 -25
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +25 -25
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.js +243 -243
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +132 -132
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/keyboardEvents.js +10 -10
- package/Events/keyboardEvents.js.map +1 -1
- package/Events/pointerEvents.js +10 -10
- package/Events/pointerEvents.js.map +1 -1
- package/Gamepads/Controllers/poseEnabledController.js +9 -9
- package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
- package/Gamepads/Controllers/webVRController.js +13 -13
- package/Gamepads/Controllers/webVRController.js.map +1 -1
- package/Gamepads/gamepad.js +20 -20
- package/Gamepads/gamepad.js.map +1 -1
- package/Gizmos/axisDragGizmo.js +45 -45
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +12 -12
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +74 -74
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +34 -34
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +40 -40
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +23 -23
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +12 -12
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.js +40 -40
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +47 -47
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.js +41 -41
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Helpers/environmentHelper.js +18 -18
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/textureDome.js +96 -96
- package/Helpers/textureDome.js.map +1 -1
- package/IAccessibilityTag.d.ts +2 -2
- package/Inputs/scene.inputManager.d.ts +4 -3
- package/Inputs/scene.inputManager.js +12 -11
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +21 -21
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +90 -90
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.js +48 -48
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.js +32 -32
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +26 -26
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layer.js +40 -40
- package/Layers/layer.js.map +1 -1
- package/LensFlares/lensFlare.js +15 -15
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.js +4 -4
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +18 -18
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +115 -115
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/directionalLight.js +31 -31
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/light.js +72 -72
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.js +18 -18
- package/Lights/pointLight.js.map +1 -1
- package/Lights/spotLight.js +30 -30
- package/Lights/spotLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.js +124 -124
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +8 -8
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +14 -14
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +9 -9
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +26 -26
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +34 -34
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +14 -14
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +16 -16
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +7 -7
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +13 -13
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js +30 -30
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +1 -1
- package/Materials/Node/nodeMaterial.js +60 -60
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +35 -35
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +50 -50
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.js +5 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +4 -4
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +53 -55
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js +17 -17
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +5 -5
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +209 -209
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +5 -5
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +6 -6
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +51 -51
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/baseTexture.js +99 -99
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +61 -61
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/externalTexture.js +16 -16
- package/Materials/Textures/externalTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +44 -44
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.js +31 -31
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +73 -73
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +47 -47
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.js +6 -6
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +142 -142
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +1 -1
- package/Materials/Textures/texture.js +26 -26
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +1 -1
- package/Materials/Textures/textureSampler.js +20 -20
- package/Materials/Textures/textureSampler.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +6 -6
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.js +39 -39
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +41 -41
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.js +6 -6
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +18 -18
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.js +9 -9
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/fresnelParameters.d.ts +2 -2
- package/Materials/fresnelParameters.js +13 -13
- package/Materials/fresnelParameters.js.map +1 -1
- package/Materials/material.detailMapConfiguration.js +5 -5
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +223 -223
- package/Materials/material.js.map +1 -1
- package/Materials/materialPluginBase.js +5 -5
- package/Materials/materialPluginBase.js.map +1 -1
- package/Materials/materialPluginEvent.d.ts +14 -14
- package/Materials/materialPluginManager.d.ts +1 -1
- package/Materials/multiMaterial.js +16 -16
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +14 -14
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +100 -100
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.js +3 -3
- package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
- package/Maths/math.functions.js +2 -0
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.path.js +11 -11
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.vector.d.ts +27 -7
- package/Maths/math.vector.js +75 -48
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +2 -2
- package/Meshes/Compression/dracoCompression.js +23 -23
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +9 -9
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/abstractMesh.js +179 -179
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.js +32 -32
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/goldbergMesh.d.ts +1 -1
- package/Meshes/linesMesh.js +3 -3
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.js +166 -166
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/polygonMesh.js +5 -5
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.js +59 -59
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/transformNode.js +52 -52
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +12 -12
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/arrayTools.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +3 -3
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/coroutine.d.ts +5 -5
- package/Misc/deferred.js +9 -9
- package/Misc/deferred.js.map +1 -1
- package/Misc/depthReducer.js +7 -7
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +1 -1
- package/Misc/error.d.ts +1 -1
- package/Misc/fileTools.d.ts +5 -5
- package/Misc/filesInput.js +6 -6
- package/Misc/filesInput.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +9 -9
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/observable.js +12 -12
- package/Misc/observable.js.map +1 -1
- package/Misc/perfCounter.js +16 -16
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/sceneOptimizer.js +76 -76
- package/Misc/sceneOptimizer.js.map +1 -1
- package/Misc/stringDictionary.d.ts +1 -1
- package/Misc/trajectoryClassifier.js +67 -67
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Misc/videoRecorder.js +15 -15
- package/Misc/videoRecorder.js.map +1 -1
- package/Misc/virtualJoystick.js +12 -12
- package/Misc/virtualJoystick.js.map +1 -1
- package/Morph/morphTarget.js +28 -28
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.js +18 -18
- package/Morph/morphTargetManager.js.map +1 -1
- package/Offline/database.js +12 -12
- package/Offline/database.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js +25 -25
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +20 -20
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/baseParticleSystem.js +232 -232
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/cloudPoint.js +9 -9
- package/Particles/cloudPoint.js.map +1 -1
- package/Particles/gpuParticleSystem.js +123 -123
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js +102 -102
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +5 -0
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.js +18 -18
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.js +23 -23
- package/Particles/solidParticle.js.map +1 -1
- package/Physics/index.d.ts +1 -0
- package/Physics/index.js +1 -0
- package/Physics/index.js.map +1 -1
- package/Physics/v1/physicsEngine.js +14 -14
- package/Physics/v1/physicsEngine.js.map +1 -1
- package/Physics/v1/physicsImpostor.js +149 -149
- package/Physics/v1/physicsImpostor.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +6 -8
- package/Physics/v2/IPhysicsEnginePlugin.js +1 -0
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +10 -1
- package/Physics/v2/physicsBody.js +13 -1
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsConstraint.d.ts +139 -66
- package/Physics/v2/physicsConstraint.js +145 -78
- package/Physics/v2/physicsConstraint.js.map +1 -1
- package/Physics/v2/physicsEngine.js +14 -14
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +137 -129
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +68 -68
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +6 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +226 -225
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +10 -10
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/anaglyphPostProcess.js +7 -7
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +7 -7
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.js +28 -28
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js +7 -7
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +32 -32
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +7 -7
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js +7 -7
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +7 -7
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +7 -7
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +7 -7
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +36 -36
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +7 -7
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +7 -7
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +7 -7
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +7 -7
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +42 -42
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.js +41 -41
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +15 -15
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +2 -2
- package/PostProcesses/postProcess.js +123 -123
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/refractionPostProcess.js +21 -21
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +7 -7
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +19 -19
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +7 -7
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.js +14 -14
- package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.js +7 -7
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +11 -11
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +7 -7
- package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +36 -36
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/depthRenderer.js +8 -8
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +34 -34
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.js +8 -8
- package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +22 -19
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +12 -12
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +18 -18
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +71 -68
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.js +29 -29
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +173 -168
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +51 -51
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/renderingGroup.js +25 -25
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/renderingManager.js +21 -21
- package/Rendering/renderingManager.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +18 -18
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +76 -76
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js +5 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
- package/Shaders/fluidRenderingRender.fragment.js +7 -2
- package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
- package/Shaders/geometry.fragment.d.ts +2 -0
- package/Shaders/geometry.fragment.js +5 -1
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/geometry.vertex.d.ts +2 -0
- package/Shaders/geometry.vertex.js +8 -4
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Sprites/sprite.js +16 -16
- package/Sprites/sprite.js.map +1 -1
- package/Sprites/spriteManager.js +81 -81
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteMap.js +32 -32
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spriteRenderer.js +6 -6
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.js +22 -22
- package/Sprites/thinSprite.js.map +1 -1
- package/States/stencilStateComposer.js +10 -10
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.js +7 -7
- package/XR/features/WebXRAnchorSystem.js.map +1 -1
- package/XR/features/WebXRControllerMovement.d.ts +3 -3
- package/XR/features/WebXRControllerMovement.js +97 -97
- package/XR/features/WebXRControllerMovement.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +24 -24
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.js +26 -26
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.d.ts +1 -1
- package/XR/features/WebXRFeaturePointSystem.js +6 -6
- package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +1 -1
- package/XR/features/WebXRHandTracking.js +95 -95
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +21 -21
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +3 -3
- package/XR/motionController/webXRMotionControllerManager.d.ts +1 -1
- package/XR/native/nativeXRFrame.js +3 -3
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +1 -1
- package/XR/webXRLayerWrapper.d.ts +2 -2
- package/XR/webXRLayerWrapper.js +17 -17
- package/XR/webXRLayerWrapper.js.map +1 -1
- package/abstractScene.d.ts +2 -2
- package/node.d.ts +1 -1
- package/node.js +71 -71
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +777 -777
- package/scene.js.map +1 -1
- package/sceneComponent.d.ts +12 -12
- package/types.d.ts +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fresnelParameters.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/fresnelParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA8DjD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"fresnelParameters.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/fresnelParameters.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeepCopier } from \"../Misc/deepCopier\";\r\nimport type { DeepImmutable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { SerializationHelper } from \"../Misc/decorators\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Options to be used when creating a FresnelParameters.\r\n */\r\nexport type IFresnelParametersCreationOptions = {\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n leftColor?: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n rightColor?: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias?: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled?: boolean;\r\n};\r\n\r\n/**\r\n * Serialized format for FresnelParameters.\r\n */\r\nexport type IFresnelParametersSerialized = {\r\n /**\r\n * Define the color used on edges (grazing angle) [as an array]\r\n */\r\n leftColor: number[];\r\n\r\n /**\r\n * Define the color used on center [as an array]\r\n */\r\n rightColor: number[];\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled: boolean;\r\n};\r\n\r\n/**\r\n * This represents all the required information to add a fresnel effect on a material:\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\nexport class FresnelParameters {\r\n private _isEnabled = true;\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n\r\n this._isEnabled = value;\r\n Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag | Constants.MATERIAL_MiscDirtyFlag);\r\n }\r\n\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n public leftColor: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n public rightColor: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n public bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n public power: number;\r\n\r\n /**\r\n * Creates a new FresnelParameters object.\r\n *\r\n * @param options provide your own settings to optionally to override defaults\r\n */\r\n public constructor(options: IFresnelParametersCreationOptions = {}) {\r\n this.bias = options.bias === undefined ? 0 : options.bias;\r\n this.power = options.power === undefined ? 1 : options.power;\r\n this.leftColor = options.leftColor || Color3.White();\r\n this.rightColor = options.rightColor || Color3.Black();\r\n if (options.isEnabled === false) {\r\n this.isEnabled = false;\r\n }\r\n }\r\n\r\n /**\r\n * Clones the current fresnel and its values\r\n * @returns a clone fresnel configuration\r\n */\r\n public clone(): FresnelParameters {\r\n const newFresnelParameters = new FresnelParameters();\r\n\r\n DeepCopier.DeepCopy(this, newFresnelParameters);\r\n\r\n return newFresnelParameters;\r\n }\r\n\r\n /**\r\n * Determines equality between FresnelParameters objects\r\n * @param otherFresnelParameters defines the second operand\r\n * @returns true if the power, bias, leftColor, rightColor and isEnabled values are equal to the given ones\r\n */\r\n public equals(otherFresnelParameters: DeepImmutable<FresnelParameters>): boolean {\r\n return (\r\n otherFresnelParameters &&\r\n this.bias === otherFresnelParameters.bias &&\r\n this.power === otherFresnelParameters.power &&\r\n this.leftColor.equals(otherFresnelParameters.leftColor) &&\r\n this.rightColor.equals(otherFresnelParameters.rightColor) &&\r\n this.isEnabled === otherFresnelParameters.isEnabled\r\n );\r\n }\r\n\r\n /**\r\n * Serializes the current fresnel parameters to a JSON representation.\r\n * @returns the JSON serialization\r\n */\r\n public serialize(): IFresnelParametersSerialized {\r\n return {\r\n isEnabled: this.isEnabled,\r\n leftColor: this.leftColor.asArray(),\r\n rightColor: this.rightColor.asArray(),\r\n bias: this.bias,\r\n power: this.power,\r\n };\r\n }\r\n\r\n /**\r\n * Parse a JSON object and deserialize it to a new Fresnel parameter object.\r\n * @param parsedFresnelParameters Define the JSON representation\r\n * @returns the parsed parameters\r\n */\r\n public static Parse(parsedFresnelParameters: IFresnelParametersSerialized): FresnelParameters {\r\n return new FresnelParameters({\r\n isEnabled: parsedFresnelParameters.isEnabled,\r\n leftColor: Color3.FromArray(parsedFresnelParameters.leftColor),\r\n rightColor: Color3.FromArray(parsedFresnelParameters.rightColor),\r\n bias: parsedFresnelParameters.bias,\r\n power: parsedFresnelParameters.power || 1.0,\r\n });\r\n }\r\n}\r\n\r\n// References the dependencies.\r\nSerializationHelper._FresnelParametersParser = FresnelParameters.Parse;\r\n"]}
|
|
@@ -26,6 +26,11 @@ export class MaterialDetailMapDefines extends MaterialDefines {
|
|
|
26
26
|
* Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps
|
|
27
27
|
*/
|
|
28
28
|
export class DetailMapConfiguration extends MaterialPluginBase {
|
|
29
|
+
/** @internal */
|
|
30
|
+
_markAllSubMeshesAsTexturesDirty() {
|
|
31
|
+
this._enable(this._isEnabled);
|
|
32
|
+
this._internalMarkAllSubMeshesAsTexturesDirty();
|
|
33
|
+
}
|
|
29
34
|
constructor(material, addToPluginList = true) {
|
|
30
35
|
super(material, "DetailMap", 140, new MaterialDetailMapDefines(), addToPluginList);
|
|
31
36
|
this._texture = null;
|
|
@@ -52,11 +57,6 @@ export class DetailMapConfiguration extends MaterialPluginBase {
|
|
|
52
57
|
this.isEnabled = false;
|
|
53
58
|
this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[1];
|
|
54
59
|
}
|
|
55
|
-
/** @internal */
|
|
56
|
-
_markAllSubMeshesAsTexturesDirty() {
|
|
57
|
-
this._enable(this._isEnabled);
|
|
58
|
-
this._internalMarkAllSubMeshesAsTexturesDirty();
|
|
59
|
-
}
|
|
60
60
|
isReadyForSubMesh(defines, scene, engine) {
|
|
61
61
|
if (!this._isEnabled) {
|
|
62
62
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { BaseTexture } from \"./Textures/baseTexture\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type StandardMaterial = import(\"./standardMaterial\").StandardMaterial;\r\ndeclare type PBRBaseMaterial = import(\"./PBR/pbrBaseMaterial\").PBRBaseMaterial;\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialDetailMapDefines extends MaterialDefines {\r\n DETAIL = false;\r\n DETAILDIRECTUV = 0;\r\n DETAIL_NORMALBLENDMETHOD = 0;\r\n}\r\n\r\n/**\r\n * Plugin that implements the detail map component of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration extends MaterialPluginBase {\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DetailMap\", 140, new MaterialDetailMapDefines(), addToPluginList);\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: MaterialDetailMapDefines, scene: Scene, engine: Engine): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public prepareDefines(defines: MaterialDetailMapDefines, scene: Scene): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDetailInfos\", size: 4, type: \"vec4\" },\r\n { name: \"detailMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAA7D;;QACI,WAAM,GAAG,KAAK,CAAC;QACf,mBAAc,GAAG,CAAC,CAAC;QACnB,6BAAwB,GAAG,CAAC,CAAC;IACjC,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAiD1D,gBAAgB;IACT,gCAAgC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,wCAAwC,EAAE,CAAC;IACpD,CAAC;IAED,YAAY,QAA4C,EAAE,eAAe,GAAG,IAAI;QAC5E,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,wBAAwB,EAAE,EAAE,eAAe,CAAC,CAAC;QAvD/E,aAAQ,GAA0B,IAAI,CAAC;QAQ/C;;;WAGG;QAEI,sBAAiB,GAAG,CAAC,CAAC;QAE7B;;;WAGG;QAEI,wBAAmB,GAAG,CAAC,CAAC;QAE/B;;;WAGG;QAEI,cAAS,GAAG,CAAC,CAAC;QAEb,uBAAkB,GAAG,QAAQ,CAAC,mCAAmC,CAAC;QAQlE,eAAU,GAAG,KAAK,CAAC;QAC3B;;WAEG;QAGI,cAAS,GAAG,KAAK,CAAC;QAcrB,IAAI,CAAC,wCAAwC,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAClH,CAAC;IAEM,iBAAiB,CAAC,OAAiC,EAAE,KAAY,EAAE,MAAc;QACpF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAED,IAAI,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,eAAe,EAAE;YACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,oBAAoB,EAAE;gBAC7F,yCAAyC;gBACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;oBAC1B,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,OAAiC,EAAE,KAAY;QACjE,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAE3D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAEjC,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBAC3B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,oBAAoB,IAAI,IAAI,CAAC,UAAU,EAAE;oBAChH,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC3E,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC;iBAC9D;qBAAM;oBACH,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;iBAC1B;aACJ;SACJ;aAAM;YACH,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;SAC1B;IACL,CAAC;IAEM,cAAc,CAAC,aAA4B,EAAE,KAAY;QAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO;SACV;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAEzC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7D,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,oBAAoB,EAAE;gBACrD,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC7I,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;aAC5E;SACJ;QAED,WAAW;QACX,IAAI,KAAK,CAAC,eAAe,EAAE;YACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,oBAAoB,EAAE;gBACrD,aAAa,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC;IAEM,UAAU,CAAC,OAAoB;QAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC3B,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,iBAAiB,CAAC,cAA6B;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtC;IACL,CAAC;IAEM,cAAc,CAAC,WAA0B;QAC5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAClF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;IACL,CAAC;IAEM,OAAO,CAAC,oBAA8B;;QACzC,IAAI,oBAAoB,EAAE;YACtB,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,EAAE,CAAC;SAC5B;IACL,CAAC;IAEM,YAAY;QACf,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAEM,WAAW,CAAC,QAAkB;QACjC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAEM,WAAW;QACd,OAAO;YACH,GAAG,EAAE;gBACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACnD;SACJ,CAAC;IACN,CAAC;CACJ;AA1JG;IAFC,kBAAkB,CAAC,eAAe,CAAC;IACnC,gBAAgB,CAAC,kCAAkC,CAAC;uDACf;AAOtC;IADC,SAAS,EAAE;iEACiB;AAO7B;IADC,SAAS,EAAE;mEACmB;AAO/B;IADC,SAAS,EAAE;yDACS;AAQrB;IAFC,SAAS,EAAE;IACX,gBAAgB,CAAC,kCAAkC,CAAC;iEACpB;AAQjC;IAFC,SAAS,EAAE;IACX,gBAAgB,CAAC,kCAAkC,CAAC;yDAC5B","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { BaseTexture } from \"./Textures/baseTexture\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type StandardMaterial = import(\"./standardMaterial\").StandardMaterial;\r\ndeclare type PBRBaseMaterial = import(\"./PBR/pbrBaseMaterial\").PBRBaseMaterial;\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialDetailMapDefines extends MaterialDefines {\r\n DETAIL = false;\r\n DETAILDIRECTUV = 0;\r\n DETAIL_NORMALBLENDMETHOD = 0;\r\n}\r\n\r\n/**\r\n * Plugin that implements the detail map component of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration extends MaterialPluginBase {\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DetailMap\", 140, new MaterialDetailMapDefines(), addToPluginList);\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: MaterialDetailMapDefines, scene: Scene, engine: Engine): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public prepareDefines(defines: MaterialDetailMapDefines, scene: Scene): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDetailInfos\", size: 4, type: \"vec4\" },\r\n { name: \"detailMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
package/Materials/material.js
CHANGED
|
@@ -16,229 +16,6 @@ import { MaterialPluginEvent } from "./materialPluginEvent.js";
|
|
|
16
16
|
* Base class for the main features of a material in Babylon.js
|
|
17
17
|
*/
|
|
18
18
|
export class Material {
|
|
19
|
-
/**
|
|
20
|
-
* Creates a material instance
|
|
21
|
-
* @param name defines the name of the material
|
|
22
|
-
* @param scene defines the scene to reference
|
|
23
|
-
* @param doNotAdd specifies if the material should be added to the scene
|
|
24
|
-
*/
|
|
25
|
-
constructor(name, scene, doNotAdd) {
|
|
26
|
-
/**
|
|
27
|
-
* Custom shadow depth material to use for shadow rendering instead of the in-built one
|
|
28
|
-
*/
|
|
29
|
-
this.shadowDepthWrapper = null;
|
|
30
|
-
/**
|
|
31
|
-
* Gets or sets a boolean indicating that the material is allowed (if supported) to do shader hot swapping.
|
|
32
|
-
* This means that the material can keep using a previous shader while a new one is being compiled.
|
|
33
|
-
* This is mostly used when shader parallel compilation is supported (true by default)
|
|
34
|
-
*/
|
|
35
|
-
this.allowShaderHotSwapping = true;
|
|
36
|
-
/**
|
|
37
|
-
* Gets or sets user defined metadata
|
|
38
|
-
*/
|
|
39
|
-
this.metadata = null;
|
|
40
|
-
/**
|
|
41
|
-
* For internal use only. Please do not use.
|
|
42
|
-
*/
|
|
43
|
-
this.reservedDataStore = null;
|
|
44
|
-
/**
|
|
45
|
-
* Specifies if the ready state should be checked on each call
|
|
46
|
-
*/
|
|
47
|
-
this.checkReadyOnEveryCall = false;
|
|
48
|
-
/**
|
|
49
|
-
* Specifies if the ready state should be checked once
|
|
50
|
-
*/
|
|
51
|
-
this.checkReadyOnlyOnce = false;
|
|
52
|
-
/**
|
|
53
|
-
* The state of the material
|
|
54
|
-
*/
|
|
55
|
-
this.state = "";
|
|
56
|
-
/**
|
|
57
|
-
* The alpha value of the material
|
|
58
|
-
*/
|
|
59
|
-
this._alpha = 1.0;
|
|
60
|
-
/**
|
|
61
|
-
* Specifies if back face culling is enabled
|
|
62
|
-
*/
|
|
63
|
-
this._backFaceCulling = true;
|
|
64
|
-
/**
|
|
65
|
-
* Specifies if back or front faces should be culled (when culling is enabled)
|
|
66
|
-
*/
|
|
67
|
-
this._cullBackFaces = true;
|
|
68
|
-
this._blockDirtyMechanism = false;
|
|
69
|
-
/**
|
|
70
|
-
* Callback triggered when the material is compiled
|
|
71
|
-
*/
|
|
72
|
-
this.onCompiled = null;
|
|
73
|
-
/**
|
|
74
|
-
* Callback triggered when an error occurs
|
|
75
|
-
*/
|
|
76
|
-
this.onError = null;
|
|
77
|
-
/**
|
|
78
|
-
* Callback triggered to get the render target textures
|
|
79
|
-
*/
|
|
80
|
-
this.getRenderTargetTextures = null;
|
|
81
|
-
/**
|
|
82
|
-
* Specifies if the material should be serialized
|
|
83
|
-
*/
|
|
84
|
-
this.doNotSerialize = false;
|
|
85
|
-
/**
|
|
86
|
-
* @internal
|
|
87
|
-
*/
|
|
88
|
-
this._storeEffectOnSubMeshes = false;
|
|
89
|
-
/**
|
|
90
|
-
* Stores the animations for the material
|
|
91
|
-
*/
|
|
92
|
-
this.animations = null;
|
|
93
|
-
/**
|
|
94
|
-
* An event triggered when the material is disposed
|
|
95
|
-
*/
|
|
96
|
-
this.onDisposeObservable = new Observable();
|
|
97
|
-
/**
|
|
98
|
-
* An observer which watches for dispose events
|
|
99
|
-
*/
|
|
100
|
-
this._onDisposeObserver = null;
|
|
101
|
-
this._onUnBindObservable = null;
|
|
102
|
-
/**
|
|
103
|
-
* An observer which watches for bind events
|
|
104
|
-
*/
|
|
105
|
-
this._onBindObserver = null;
|
|
106
|
-
/**
|
|
107
|
-
* Stores the value of the alpha mode
|
|
108
|
-
*/
|
|
109
|
-
this._alphaMode = 2;
|
|
110
|
-
/**
|
|
111
|
-
* Stores the state of the need depth pre-pass value
|
|
112
|
-
*/
|
|
113
|
-
this._needDepthPrePass = false;
|
|
114
|
-
/**
|
|
115
|
-
* Specifies if depth writing should be disabled
|
|
116
|
-
*/
|
|
117
|
-
this.disableDepthWrite = false;
|
|
118
|
-
/**
|
|
119
|
-
* Specifies if color writing should be disabled
|
|
120
|
-
*/
|
|
121
|
-
this.disableColorWrite = false;
|
|
122
|
-
/**
|
|
123
|
-
* Specifies if depth writing should be forced
|
|
124
|
-
*/
|
|
125
|
-
this.forceDepthWrite = false;
|
|
126
|
-
/**
|
|
127
|
-
* Specifies the depth function that should be used. 0 means the default engine function
|
|
128
|
-
*/
|
|
129
|
-
this.depthFunction = 0;
|
|
130
|
-
/**
|
|
131
|
-
* Specifies if there should be a separate pass for culling
|
|
132
|
-
*/
|
|
133
|
-
this.separateCullingPass = false;
|
|
134
|
-
/**
|
|
135
|
-
* Stores the state specifying if fog should be enabled
|
|
136
|
-
*/
|
|
137
|
-
this._fogEnabled = true;
|
|
138
|
-
/**
|
|
139
|
-
* Stores the size of points
|
|
140
|
-
*/
|
|
141
|
-
this.pointSize = 1.0;
|
|
142
|
-
/**
|
|
143
|
-
* Stores the z offset Factor value
|
|
144
|
-
*/
|
|
145
|
-
this.zOffset = 0;
|
|
146
|
-
/**
|
|
147
|
-
* Stores the z offset Units value
|
|
148
|
-
*/
|
|
149
|
-
this.zOffsetUnits = 0;
|
|
150
|
-
/**
|
|
151
|
-
* Gives access to the stencil properties of the material
|
|
152
|
-
*/
|
|
153
|
-
this.stencil = new MaterialStencilState();
|
|
154
|
-
/**
|
|
155
|
-
* Specifies if uniform buffers should be used
|
|
156
|
-
*/
|
|
157
|
-
this._useUBO = false;
|
|
158
|
-
/**
|
|
159
|
-
* Stores the fill mode state
|
|
160
|
-
*/
|
|
161
|
-
this._fillMode = Material.TriangleFillMode;
|
|
162
|
-
/**
|
|
163
|
-
* Specifies if the depth write state should be cached
|
|
164
|
-
*/
|
|
165
|
-
this._cachedDepthWriteState = false;
|
|
166
|
-
/**
|
|
167
|
-
* Specifies if the color write state should be cached
|
|
168
|
-
*/
|
|
169
|
-
this._cachedColorWriteState = false;
|
|
170
|
-
/**
|
|
171
|
-
* Specifies if the depth function state should be cached
|
|
172
|
-
*/
|
|
173
|
-
this._cachedDepthFunctionState = 0;
|
|
174
|
-
/** @internal */
|
|
175
|
-
this._indexInSceneMaterialArray = -1;
|
|
176
|
-
/** @internal */
|
|
177
|
-
this.meshMap = null;
|
|
178
|
-
/** @internal */
|
|
179
|
-
this._parentContainer = null;
|
|
180
|
-
/** @internal */
|
|
181
|
-
this._uniformBufferLayoutBuilt = false;
|
|
182
|
-
this._eventInfo = {}; // will be initialized before each event notification
|
|
183
|
-
/** @internal */
|
|
184
|
-
this._callbackPluginEventGeneric = () => void 0;
|
|
185
|
-
/** @internal */
|
|
186
|
-
this._callbackPluginEventIsReadyForSubMesh = () => void 0;
|
|
187
|
-
/** @internal */
|
|
188
|
-
this._callbackPluginEventPrepareDefines = () => void 0;
|
|
189
|
-
/** @internal */
|
|
190
|
-
this._callbackPluginEventPrepareDefinesBeforeAttributes = () => void 0;
|
|
191
|
-
/** @internal */
|
|
192
|
-
this._callbackPluginEventHardBindForSubMesh = () => void 0;
|
|
193
|
-
/** @internal */
|
|
194
|
-
this._callbackPluginEventBindForSubMesh = () => void 0;
|
|
195
|
-
/** @internal */
|
|
196
|
-
this._callbackPluginEventHasRenderTargetTextures = () => void 0;
|
|
197
|
-
/** @internal */
|
|
198
|
-
this._callbackPluginEventFillRenderTargetTextures = () => void 0;
|
|
199
|
-
/**
|
|
200
|
-
* Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.
|
|
201
|
-
*/
|
|
202
|
-
this._forceAlphaTest = false;
|
|
203
|
-
/**
|
|
204
|
-
* The transparency mode of the material.
|
|
205
|
-
*/
|
|
206
|
-
this._transparencyMode = null;
|
|
207
|
-
this.name = name;
|
|
208
|
-
const setScene = scene || EngineStore.LastCreatedScene;
|
|
209
|
-
if (!setScene) {
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
this._scene = setScene;
|
|
213
|
-
this._dirtyCallbacks = {};
|
|
214
|
-
this._dirtyCallbacks[1] = this._markAllSubMeshesAsTexturesDirty.bind(this);
|
|
215
|
-
this._dirtyCallbacks[2] = this._markAllSubMeshesAsLightsDirty.bind(this);
|
|
216
|
-
this._dirtyCallbacks[4] = this._markAllSubMeshesAsFresnelDirty.bind(this);
|
|
217
|
-
this._dirtyCallbacks[8] = this._markAllSubMeshesAsAttributesDirty.bind(this);
|
|
218
|
-
this._dirtyCallbacks[16] = this._markAllSubMeshesAsMiscDirty.bind(this);
|
|
219
|
-
this._dirtyCallbacks[32] = this._markAllSubMeshesAsPrePassDirty.bind(this);
|
|
220
|
-
this._dirtyCallbacks[63] = this._markAllSubMeshesAsAllDirty.bind(this);
|
|
221
|
-
this.id = name || Tools.RandomId();
|
|
222
|
-
this.uniqueId = this._scene.getUniqueId();
|
|
223
|
-
this._materialContext = this._scene.getEngine().createMaterialContext();
|
|
224
|
-
this._drawWrapper = new DrawWrapper(this._scene.getEngine(), false);
|
|
225
|
-
this._drawWrapper.materialContext = this._materialContext;
|
|
226
|
-
if (this._scene.useRightHandedSystem) {
|
|
227
|
-
this.sideOrientation = Material.ClockWiseSideOrientation;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
this.sideOrientation = Material.CounterClockWiseSideOrientation;
|
|
231
|
-
}
|
|
232
|
-
this._uniformBuffer = new UniformBuffer(this._scene.getEngine(), undefined, undefined, name);
|
|
233
|
-
this._useUBO = this.getScene().getEngine().supportsUniformBuffers;
|
|
234
|
-
if (!doNotAdd) {
|
|
235
|
-
this._scene.addMaterial(this);
|
|
236
|
-
}
|
|
237
|
-
if (this._scene.useMaterialMeshMap) {
|
|
238
|
-
this.meshMap = {};
|
|
239
|
-
}
|
|
240
|
-
Material.OnEventObservable.notifyObservers(this, MaterialPluginEvent.Created);
|
|
241
|
-
}
|
|
242
19
|
/**
|
|
243
20
|
* If the material can be rendered to several textures with MRT extension
|
|
244
21
|
*/
|
|
@@ -513,6 +290,229 @@ export class Material {
|
|
|
513
290
|
_setDrawWrapper(drawWrapper) {
|
|
514
291
|
this._drawWrapper = drawWrapper;
|
|
515
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Creates a material instance
|
|
295
|
+
* @param name defines the name of the material
|
|
296
|
+
* @param scene defines the scene to reference
|
|
297
|
+
* @param doNotAdd specifies if the material should be added to the scene
|
|
298
|
+
*/
|
|
299
|
+
constructor(name, scene, doNotAdd) {
|
|
300
|
+
/**
|
|
301
|
+
* Custom shadow depth material to use for shadow rendering instead of the in-built one
|
|
302
|
+
*/
|
|
303
|
+
this.shadowDepthWrapper = null;
|
|
304
|
+
/**
|
|
305
|
+
* Gets or sets a boolean indicating that the material is allowed (if supported) to do shader hot swapping.
|
|
306
|
+
* This means that the material can keep using a previous shader while a new one is being compiled.
|
|
307
|
+
* This is mostly used when shader parallel compilation is supported (true by default)
|
|
308
|
+
*/
|
|
309
|
+
this.allowShaderHotSwapping = true;
|
|
310
|
+
/**
|
|
311
|
+
* Gets or sets user defined metadata
|
|
312
|
+
*/
|
|
313
|
+
this.metadata = null;
|
|
314
|
+
/**
|
|
315
|
+
* For internal use only. Please do not use.
|
|
316
|
+
*/
|
|
317
|
+
this.reservedDataStore = null;
|
|
318
|
+
/**
|
|
319
|
+
* Specifies if the ready state should be checked on each call
|
|
320
|
+
*/
|
|
321
|
+
this.checkReadyOnEveryCall = false;
|
|
322
|
+
/**
|
|
323
|
+
* Specifies if the ready state should be checked once
|
|
324
|
+
*/
|
|
325
|
+
this.checkReadyOnlyOnce = false;
|
|
326
|
+
/**
|
|
327
|
+
* The state of the material
|
|
328
|
+
*/
|
|
329
|
+
this.state = "";
|
|
330
|
+
/**
|
|
331
|
+
* The alpha value of the material
|
|
332
|
+
*/
|
|
333
|
+
this._alpha = 1.0;
|
|
334
|
+
/**
|
|
335
|
+
* Specifies if back face culling is enabled
|
|
336
|
+
*/
|
|
337
|
+
this._backFaceCulling = true;
|
|
338
|
+
/**
|
|
339
|
+
* Specifies if back or front faces should be culled (when culling is enabled)
|
|
340
|
+
*/
|
|
341
|
+
this._cullBackFaces = true;
|
|
342
|
+
this._blockDirtyMechanism = false;
|
|
343
|
+
/**
|
|
344
|
+
* Callback triggered when the material is compiled
|
|
345
|
+
*/
|
|
346
|
+
this.onCompiled = null;
|
|
347
|
+
/**
|
|
348
|
+
* Callback triggered when an error occurs
|
|
349
|
+
*/
|
|
350
|
+
this.onError = null;
|
|
351
|
+
/**
|
|
352
|
+
* Callback triggered to get the render target textures
|
|
353
|
+
*/
|
|
354
|
+
this.getRenderTargetTextures = null;
|
|
355
|
+
/**
|
|
356
|
+
* Specifies if the material should be serialized
|
|
357
|
+
*/
|
|
358
|
+
this.doNotSerialize = false;
|
|
359
|
+
/**
|
|
360
|
+
* @internal
|
|
361
|
+
*/
|
|
362
|
+
this._storeEffectOnSubMeshes = false;
|
|
363
|
+
/**
|
|
364
|
+
* Stores the animations for the material
|
|
365
|
+
*/
|
|
366
|
+
this.animations = null;
|
|
367
|
+
/**
|
|
368
|
+
* An event triggered when the material is disposed
|
|
369
|
+
*/
|
|
370
|
+
this.onDisposeObservable = new Observable();
|
|
371
|
+
/**
|
|
372
|
+
* An observer which watches for dispose events
|
|
373
|
+
*/
|
|
374
|
+
this._onDisposeObserver = null;
|
|
375
|
+
this._onUnBindObservable = null;
|
|
376
|
+
/**
|
|
377
|
+
* An observer which watches for bind events
|
|
378
|
+
*/
|
|
379
|
+
this._onBindObserver = null;
|
|
380
|
+
/**
|
|
381
|
+
* Stores the value of the alpha mode
|
|
382
|
+
*/
|
|
383
|
+
this._alphaMode = 2;
|
|
384
|
+
/**
|
|
385
|
+
* Stores the state of the need depth pre-pass value
|
|
386
|
+
*/
|
|
387
|
+
this._needDepthPrePass = false;
|
|
388
|
+
/**
|
|
389
|
+
* Specifies if depth writing should be disabled
|
|
390
|
+
*/
|
|
391
|
+
this.disableDepthWrite = false;
|
|
392
|
+
/**
|
|
393
|
+
* Specifies if color writing should be disabled
|
|
394
|
+
*/
|
|
395
|
+
this.disableColorWrite = false;
|
|
396
|
+
/**
|
|
397
|
+
* Specifies if depth writing should be forced
|
|
398
|
+
*/
|
|
399
|
+
this.forceDepthWrite = false;
|
|
400
|
+
/**
|
|
401
|
+
* Specifies the depth function that should be used. 0 means the default engine function
|
|
402
|
+
*/
|
|
403
|
+
this.depthFunction = 0;
|
|
404
|
+
/**
|
|
405
|
+
* Specifies if there should be a separate pass for culling
|
|
406
|
+
*/
|
|
407
|
+
this.separateCullingPass = false;
|
|
408
|
+
/**
|
|
409
|
+
* Stores the state specifying if fog should be enabled
|
|
410
|
+
*/
|
|
411
|
+
this._fogEnabled = true;
|
|
412
|
+
/**
|
|
413
|
+
* Stores the size of points
|
|
414
|
+
*/
|
|
415
|
+
this.pointSize = 1.0;
|
|
416
|
+
/**
|
|
417
|
+
* Stores the z offset Factor value
|
|
418
|
+
*/
|
|
419
|
+
this.zOffset = 0;
|
|
420
|
+
/**
|
|
421
|
+
* Stores the z offset Units value
|
|
422
|
+
*/
|
|
423
|
+
this.zOffsetUnits = 0;
|
|
424
|
+
/**
|
|
425
|
+
* Gives access to the stencil properties of the material
|
|
426
|
+
*/
|
|
427
|
+
this.stencil = new MaterialStencilState();
|
|
428
|
+
/**
|
|
429
|
+
* Specifies if uniform buffers should be used
|
|
430
|
+
*/
|
|
431
|
+
this._useUBO = false;
|
|
432
|
+
/**
|
|
433
|
+
* Stores the fill mode state
|
|
434
|
+
*/
|
|
435
|
+
this._fillMode = Material.TriangleFillMode;
|
|
436
|
+
/**
|
|
437
|
+
* Specifies if the depth write state should be cached
|
|
438
|
+
*/
|
|
439
|
+
this._cachedDepthWriteState = false;
|
|
440
|
+
/**
|
|
441
|
+
* Specifies if the color write state should be cached
|
|
442
|
+
*/
|
|
443
|
+
this._cachedColorWriteState = false;
|
|
444
|
+
/**
|
|
445
|
+
* Specifies if the depth function state should be cached
|
|
446
|
+
*/
|
|
447
|
+
this._cachedDepthFunctionState = 0;
|
|
448
|
+
/** @internal */
|
|
449
|
+
this._indexInSceneMaterialArray = -1;
|
|
450
|
+
/** @internal */
|
|
451
|
+
this.meshMap = null;
|
|
452
|
+
/** @internal */
|
|
453
|
+
this._parentContainer = null;
|
|
454
|
+
/** @internal */
|
|
455
|
+
this._uniformBufferLayoutBuilt = false;
|
|
456
|
+
this._eventInfo = {}; // will be initialized before each event notification
|
|
457
|
+
/** @internal */
|
|
458
|
+
this._callbackPluginEventGeneric = () => void 0;
|
|
459
|
+
/** @internal */
|
|
460
|
+
this._callbackPluginEventIsReadyForSubMesh = () => void 0;
|
|
461
|
+
/** @internal */
|
|
462
|
+
this._callbackPluginEventPrepareDefines = () => void 0;
|
|
463
|
+
/** @internal */
|
|
464
|
+
this._callbackPluginEventPrepareDefinesBeforeAttributes = () => void 0;
|
|
465
|
+
/** @internal */
|
|
466
|
+
this._callbackPluginEventHardBindForSubMesh = () => void 0;
|
|
467
|
+
/** @internal */
|
|
468
|
+
this._callbackPluginEventBindForSubMesh = () => void 0;
|
|
469
|
+
/** @internal */
|
|
470
|
+
this._callbackPluginEventHasRenderTargetTextures = () => void 0;
|
|
471
|
+
/** @internal */
|
|
472
|
+
this._callbackPluginEventFillRenderTargetTextures = () => void 0;
|
|
473
|
+
/**
|
|
474
|
+
* Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.
|
|
475
|
+
*/
|
|
476
|
+
this._forceAlphaTest = false;
|
|
477
|
+
/**
|
|
478
|
+
* The transparency mode of the material.
|
|
479
|
+
*/
|
|
480
|
+
this._transparencyMode = null;
|
|
481
|
+
this.name = name;
|
|
482
|
+
const setScene = scene || EngineStore.LastCreatedScene;
|
|
483
|
+
if (!setScene) {
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
this._scene = setScene;
|
|
487
|
+
this._dirtyCallbacks = {};
|
|
488
|
+
this._dirtyCallbacks[1] = this._markAllSubMeshesAsTexturesDirty.bind(this);
|
|
489
|
+
this._dirtyCallbacks[2] = this._markAllSubMeshesAsLightsDirty.bind(this);
|
|
490
|
+
this._dirtyCallbacks[4] = this._markAllSubMeshesAsFresnelDirty.bind(this);
|
|
491
|
+
this._dirtyCallbacks[8] = this._markAllSubMeshesAsAttributesDirty.bind(this);
|
|
492
|
+
this._dirtyCallbacks[16] = this._markAllSubMeshesAsMiscDirty.bind(this);
|
|
493
|
+
this._dirtyCallbacks[32] = this._markAllSubMeshesAsPrePassDirty.bind(this);
|
|
494
|
+
this._dirtyCallbacks[63] = this._markAllSubMeshesAsAllDirty.bind(this);
|
|
495
|
+
this.id = name || Tools.RandomId();
|
|
496
|
+
this.uniqueId = this._scene.getUniqueId();
|
|
497
|
+
this._materialContext = this._scene.getEngine().createMaterialContext();
|
|
498
|
+
this._drawWrapper = new DrawWrapper(this._scene.getEngine(), false);
|
|
499
|
+
this._drawWrapper.materialContext = this._materialContext;
|
|
500
|
+
if (this._scene.useRightHandedSystem) {
|
|
501
|
+
this.sideOrientation = Material.ClockWiseSideOrientation;
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
this.sideOrientation = Material.CounterClockWiseSideOrientation;
|
|
505
|
+
}
|
|
506
|
+
this._uniformBuffer = new UniformBuffer(this._scene.getEngine(), undefined, undefined, name);
|
|
507
|
+
this._useUBO = this.getScene().getEngine().supportsUniformBuffers;
|
|
508
|
+
if (!doNotAdd) {
|
|
509
|
+
this._scene.addMaterial(this);
|
|
510
|
+
}
|
|
511
|
+
if (this._scene.useMaterialMeshMap) {
|
|
512
|
+
this.meshMap = {};
|
|
513
|
+
}
|
|
514
|
+
Material.OnEventObservable.notifyObservers(this, MaterialPluginEvent.Created);
|
|
515
|
+
}
|
|
516
516
|
/**
|
|
517
517
|
* Returns a string representation of the current material
|
|
518
518
|
* @param fullDetails defines a boolean indicating which levels of logging is desired
|