@babylonjs/core 5.0.0-alpha.48 → 5.0.0-alpha.51
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/action.js +5 -5
- package/Actions/action.js.map +1 -1
- package/Actions/actionManager.js +11 -11
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.js +5 -5
- package/Actions/condition.js.map +1 -1
- package/Actions/directActions.js +13 -13
- package/Actions/directActions.js.map +1 -1
- package/Actions/directAudioActions.js +4 -4
- package/Actions/directAudioActions.js.map +1 -1
- package/Actions/index.js +8 -8
- package/Actions/interpolateValueAction.js +8 -8
- package/Actions/interpolateValueAction.js.map +1 -1
- package/Animations/animatable.js +12 -7
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.js +11 -11
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +4 -14
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationPropertiesOverride.js +1 -1
- package/Animations/easing.js +1 -1
- package/Animations/index.js +12 -12
- package/Animations/pathCursor.js +1 -1
- package/Animations/runtimeAnimation.js +12 -7
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/analyser.js +2 -2
- package/Audio/audioEngine.js +5 -5
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.js +9 -9
- package/Audio/index.js +8 -8
- package/Audio/sound.js +7 -7
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.js +1 -1
- package/Audio/weightedsound.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +2 -2
- package/Behaviors/Cameras/bouncingBehavior.js +2 -2
- package/Behaviors/Cameras/framingBehavior.js +5 -5
- package/Behaviors/Cameras/index.js +3 -3
- package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +9 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +119 -62
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +3 -3
- package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
- package/Behaviors/Meshes/index.js +9 -9
- package/Behaviors/Meshes/multiPointerScaleBehavior.js +2 -2
- package/Behaviors/Meshes/pointerDragBehavior.js +10 -9
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.d.ts +4 -0
- package/Behaviors/Meshes/sixDofDragBehavior.js +24 -13
- package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +2 -2
- package/Behaviors/index.js +3 -3
- package/Bones/bone.js +4 -4
- package/Bones/boneIKController.js +2 -2
- package/Bones/boneLookController.js +3 -3
- package/Bones/index.js +4 -4
- package/Bones/skeleton.js +9 -9
- package/Buffers/buffer.js +2 -5
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/index.js +3 -3
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +5 -5
- package/Cameras/Inputs/BaseCameraPointersInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +4 -4
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +9 -9
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +3 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.js +5 -5
- package/Cameras/Inputs/flyCameraMouseInput.js +6 -6
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +4 -4
- package/Cameras/Inputs/followCameraMouseWheelInput.js +4 -4
- package/Cameras/Inputs/followCameraPointersInput.js +3 -3
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +5 -5
- package/Cameras/Inputs/freeCameraGamepadInput.js +4 -4
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +5 -5
- package/Cameras/Inputs/freeCameraMouseInput.js +5 -5
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -5
- package/Cameras/Inputs/freeCameraTouchInput.js +5 -5
- package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +4 -4
- package/Cameras/Inputs/index.js +19 -19
- package/Cameras/RigModes/index.js +4 -4
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
- package/Cameras/RigModes/stereoscopicRigMode.js +4 -4
- package/Cameras/RigModes/vrRigMode.js +6 -6
- package/Cameras/RigModes/webVRRigMode.js +2 -2
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphFreeCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +5 -5
- package/Cameras/Stereoscopic/index.js +9 -9
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +29 -16
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +5 -5
- package/Cameras/VR/index.js +6 -6
- package/Cameras/VR/vrCameraMetrics.js +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +7 -7
- package/Cameras/VR/vrDeviceOrientationFreeCamera.js +6 -6
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +6 -6
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -3
- package/Cameras/VR/vrExperienceHelper.js +52 -39
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.js +13 -13
- package/Cameras/arcRotateCamera.d.ts +10 -0
- package/Cameras/arcRotateCamera.js +40 -13
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/arcRotateCameraInputsManager.js +4 -4
- package/Cameras/camera.js +15 -15
- package/Cameras/camera.js.map +1 -1
- package/Cameras/cameraInputsManager.js +3 -3
- package/Cameras/deviceOrientationCamera.js +5 -5
- package/Cameras/flyCamera.js +6 -6
- package/Cameras/flyCameraInputsManager.js +3 -3
- package/Cameras/followCamera.js +6 -6
- package/Cameras/followCameraInputsManager.js +4 -4
- package/Cameras/freeCamera.js +6 -6
- package/Cameras/freeCameraInputsManager.js +5 -5
- package/Cameras/gamepadCamera.js +3 -3
- package/Cameras/index.js +20 -20
- package/Cameras/targetCamera.js +5 -5
- package/Cameras/touchCamera.js +3 -3
- package/Cameras/universalCamera.js +5 -5
- package/Cameras/virtualJoysticksCamera.js +4 -4
- package/Collisions/collider.js +2 -2
- package/Collisions/collisionCoordinator.js +4 -4
- package/Collisions/index.js +5 -5
- package/Collisions/meshCollisionData.js +1 -1
- package/Collisions/pickingInfo.d.ts +12 -2
- package/Collisions/pickingInfo.js +13 -4
- package/Collisions/pickingInfo.js.map +1 -1
- package/Compute/computeEffect.js +8 -8
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.js +8 -8
- package/Compute/computeShader.js.map +1 -1
- package/Compute/index.js +2 -2
- package/Culling/Octrees/index.js +3 -3
- package/Culling/Octrees/octree.js +2 -2
- package/Culling/Octrees/octreeBlock.js +2 -2
- package/Culling/Octrees/octreeSceneComponent.js +6 -6
- package/Culling/boundingBox.js +3 -3
- package/Culling/boundingInfo.js +4 -4
- package/Culling/boundingSphere.js +2 -2
- package/Culling/index.js +5 -5
- package/Culling/ray.js +6 -6
- package/Debug/axesViewer.js +4 -4
- package/Debug/boneAxesViewer.js +3 -3
- package/Debug/debugLayer.js +4 -4
- package/Debug/directionalLightFrustumViewer.js +19 -19
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/index.js +8 -8
- package/Debug/physicsViewer.js +15 -15
- package/Debug/physicsViewer.js.map +1 -1
- package/Debug/rayHelper.js +5 -5
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +17 -17
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +2 -2
- package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +3 -3
- package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -5
- package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +3 -3
- package/DeviceInput/deviceInputSystem.js +2 -2
- package/DeviceInput/index.js +8 -8
- package/Engines/Extensions/engine.alpha.js +1 -1
- package/Engines/Extensions/engine.computeShader.js +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +7 -7
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.debugging.js +1 -1
- package/Engines/Extensions/engine.dynamicBuffer.js +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +2 -2
- package/Engines/Extensions/engine.externalTexture.js +1 -1
- package/Engines/Extensions/engine.multiRender.js +3 -3
- package/Engines/Extensions/engine.multiview.js +8 -8
- package/Engines/Extensions/engine.query.js +4 -4
- package/Engines/Extensions/engine.rawTexture.js +4 -4
- package/Engines/Extensions/engine.readTexture.js +1 -1
- package/Engines/Extensions/engine.renderTarget.js +5 -5
- package/Engines/Extensions/engine.renderTargetCube.js +3 -3
- package/Engines/Extensions/engine.storageBuffer.js +1 -1
- package/Engines/Extensions/engine.textureSampler.js +1 -1
- package/Engines/Extensions/engine.textureSelector.js +1 -1
- package/Engines/Extensions/engine.transformFeedback.js +1 -1
- package/Engines/Extensions/engine.uniformBuffer.js +2 -2
- package/Engines/Extensions/engine.videoTexture.js +1 -1
- package/Engines/Extensions/engine.views.js +1 -1
- package/Engines/Extensions/engine.webVR.js +7 -7
- package/Engines/Extensions/engine.webVR.js.map +1 -1
- package/Engines/Extensions/index.js +23 -23
- package/Engines/Processors/Expressions/Operators/index.js +4 -4
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js +1 -1
- package/Engines/Processors/Expressions/index.js +2 -2
- package/Engines/Processors/index.js +9 -9
- package/Engines/Processors/shaderCodeConditionNode.js +1 -1
- package/Engines/Processors/shaderCodeInliner.js +13 -13
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderCodeNode.js +4 -4
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/Processors/shaderCodeTestNode.js +1 -1
- package/Engines/Processors/shaderProcessor.js +12 -12
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
- package/Engines/WebGL/webGLShaderProcessors.js +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +2 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.js +4 -4
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
- package/Engines/WebGPU/Extensions/engine.debugging.js +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.externalTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -3
- package/Engines/WebGPU/Extensions/engine.query.js +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +4 -4
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -3
- package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -2
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +2 -2
- package/Engines/WebGPU/Extensions/engine.videoTexture.js +1 -1
- package/Engines/WebGPU/Extensions/index.js +17 -17
- package/Engines/WebGPU/webgpuBufferManager.js +5 -5
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -3
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +2 -2
- package/Engines/WebGPU/webgpuClearQuad.js +4 -4
- package/Engines/WebGPU/webgpuComputeContext.js +3 -3
- package/Engines/WebGPU/webgpuDepthCullingState.js +1 -1
- package/Engines/WebGPU/webgpuExternalTexture.js +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -3
- package/Engines/WebGPU/webgpuMaterialContext.js +2 -2
- package/Engines/WebGPU/webgpuOcclusionQuery.js +2 -2
- package/Engines/WebGPU/webgpuPipelineContext.js +2 -2
- package/Engines/WebGPU/webgpuQuerySet.js +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -2
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +5 -5
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +17 -17
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +5 -5
- package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
- package/Engines/WebGPU/webgpuTintWASM.js +3 -3
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/engine.js +21 -20
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFactory.js +3 -3
- package/Engines/index.js +30 -30
- package/Engines/nativeEngine.d.ts +4 -12
- package/Engines/nativeEngine.js +32 -42
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +25 -0
- package/Engines/nullEngine.js +62 -8
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +2 -2
- package/Engines/shaderStore.js +1 -1
- package/Engines/thinEngine.js +40 -37
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +37 -37
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/index.js +4 -4
- package/Events/pointerEvents.js +1 -1
- package/Gamepads/Controllers/daydreamController.js +4 -4
- package/Gamepads/Controllers/gearVRController.js +5 -5
- package/Gamepads/Controllers/genericController.js +3 -3
- package/Gamepads/Controllers/index.js +8 -8
- package/Gamepads/Controllers/oculusTouchController.js +5 -5
- package/Gamepads/Controllers/poseEnabledController.js +5 -5
- package/Gamepads/Controllers/viveController.js +3 -3
- package/Gamepads/Controllers/webVRController.js +2 -2
- package/Gamepads/Controllers/windowsMotionController.js +9 -9
- package/Gamepads/dualShockGamepad.js +2 -2
- package/Gamepads/gamepad.js +1 -1
- package/Gamepads/gamepadManager.js +9 -9
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gamepads/gamepadSceneComponent.js +7 -7
- package/Gamepads/index.js +6 -6
- package/Gamepads/xboxGamepad.js +2 -2
- package/Gizmos/axisDragGizmo.js +36 -22
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +12 -12
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +31 -32
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/cameraGizmo.js +19 -19
- package/Gizmos/cameraGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +5 -5
- package/Gizmos/gizmoManager.js +11 -11
- package/Gizmos/index.js +12 -12
- package/Gizmos/lightGizmo.js +45 -23
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +10 -10
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +24 -14
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.js +8 -8
- package/Gizmos/rotationGizmo.js +7 -7
- package/Gizmos/scaleGizmo.js +11 -11
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Helpers/environmentHelper.js +17 -15
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/index.js +4 -4
- package/Helpers/photoDome.js +2 -2
- package/Helpers/sceneHelpers.js +18 -18
- package/Helpers/sceneHelpers.js.map +1 -1
- package/Helpers/textureDome.js +11 -11
- package/Helpers/textureDome.js.map +1 -1
- package/Helpers/videoDome.js +3 -3
- package/Inputs/scene.inputManager.js +8 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +1 -1
- package/Instrumentation/index.js +3 -3
- package/Instrumentation/sceneInstrumentation.js +2 -2
- package/Layers/effectLayer.js +17 -17
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.js +4 -4
- package/Layers/glowLayer.js +19 -16
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +20 -20
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/index.js +6 -6
- package/Layers/layer.js +12 -12
- package/Layers/layerSceneComponent.js +1 -1
- package/Legacy/legacy.js +3 -3
- package/LensFlares/index.js +3 -3
- package/LensFlares/lensFlare.js +2 -2
- package/LensFlares/lensFlareSystem.js +14 -14
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/LensFlares/lensFlareSystemSceneComponent.js +4 -4
- package/Lights/Shadows/cascadedShadowGenerator.js +12 -12
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/index.js +3 -3
- package/Lights/Shadows/shadowGenerator.js +19 -19
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGeneratorSceneComponent.js +4 -4
- package/Lights/directionalLight.js +5 -5
- package/Lights/hemisphericLight.js +5 -5
- package/Lights/index.js +7 -7
- package/Lights/light.js +8 -8
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.js +5 -5
- package/Lights/shadowLight.js +4 -4
- package/Lights/spotLight.js +6 -6
- package/Loading/Plugins/babylonFileLoader.js +30 -30
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/Plugins/index.js +1 -1
- package/Loading/index.js +4 -4
- package/Loading/loadingScreen.js +1 -1
- package/Loading/sceneLoader.js +11 -11
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +17 -17
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Background/index.js +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +9 -9
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/index.js +7 -7
- package/Materials/Node/Blocks/Dual/lightBlock.js +17 -17
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +14 -14
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +6 -6
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +9 -9
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/index.js +8 -8
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +10 -10
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/index.js +2 -2
- package/Materials/Node/Blocks/Input/inputBlock.js +12 -12
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +7 -7
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +10 -10
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/index.js +7 -7
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +21 -21
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +10 -10
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +13 -13
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +8 -8
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +9 -9
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/index.js +3 -3
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +5 -5
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +5 -5
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +10 -10
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/index.js +5 -5
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +7 -7
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +6 -6
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +10 -10
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +5 -5
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/addBlock.js +5 -5
- package/Materials/Node/Blocks/addBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +5 -5
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +6 -6
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +5 -5
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.js +5 -5
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/crossBlock.js +5 -5
- package/Materials/Node/Blocks/crossBlock.js.map +1 -1
- package/Materials/Node/Blocks/desaturateBlock.js +5 -5
- package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
- package/Materials/Node/Blocks/distanceBlock.js +5 -5
- package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
- package/Materials/Node/Blocks/divideBlock.js +5 -5
- package/Materials/Node/Blocks/divideBlock.js.map +1 -1
- package/Materials/Node/Blocks/dotBlock.js +5 -5
- package/Materials/Node/Blocks/dotBlock.js.map +1 -1
- package/Materials/Node/Blocks/fresnelBlock.js +8 -8
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +7 -7
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.js +52 -52
- package/Materials/Node/Blocks/lengthBlock.js +5 -5
- package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
- package/Materials/Node/Blocks/lerpBlock.js +5 -5
- package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +7 -7
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/maxBlock.js +5 -5
- package/Materials/Node/Blocks/maxBlock.js.map +1 -1
- package/Materials/Node/Blocks/minBlock.js +5 -5
- package/Materials/Node/Blocks/minBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +5 -5
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js +5 -5
- package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js +5 -5
- package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/negateBlock.js +5 -5
- package/Materials/Node/Blocks/negateBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
- package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js +5 -5
- package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js +6 -6
- package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js +5 -5
- package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.js +5 -5
- package/Materials/Node/Blocks/powBlock.js.map +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js +6 -6
- package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js +5 -5
- package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
- package/Materials/Node/Blocks/reflectBlock.js +5 -5
- package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
- package/Materials/Node/Blocks/refractBlock.js +5 -5
- package/Materials/Node/Blocks/refractBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +7 -7
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/replaceColorBlock.js +5 -5
- package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js +6 -6
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/scaleBlock.js +5 -5
- package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +5 -5
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js +5 -5
- package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
- package/Materials/Node/Blocks/stepBlock.js +5 -5
- package/Materials/Node/Blocks/stepBlock.js.map +1 -1
- package/Materials/Node/Blocks/subtractBlock.js +5 -5
- package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +5 -5
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.js +5 -5
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +5 -5
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js +7 -7
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.js +5 -5
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +6 -6
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/Enums/index.js +5 -5
- package/Materials/Node/Optimizers/index.js +1 -1
- package/Materials/Node/index.js +7 -7
- package/Materials/Node/nodeMaterial.js +40 -40
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +6 -6
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +3 -3
- package/Materials/Node/nodeMaterialBuildState.js +6 -6
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +1 -1
- package/Materials/Occlusion/index.js +1 -1
- package/Materials/Occlusion/occlusionMaterial.js +4 -4
- package/Materials/PBR/index.js +5 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js +11 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +28 -28
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js +3 -3
- package/Materials/PBR/pbrClearCoatConfiguration.js +10 -4
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +7 -7
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js +4 -4
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +10 -4
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +4 -4
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +19 -6
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +6 -6
- package/Materials/Textures/Loaders/basisTextureLoader.js +9 -9
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +5 -5
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +7 -7
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.js +4 -4
- package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/index.js +6 -6
- package/Materials/Textures/Loaders/ktxTextureLoader.js +6 -6
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/tgaTextureLoader.js +6 -6
- package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js +1 -1
- package/Materials/Textures/Packer/index.js +2 -2
- package/Materials/Textures/Packer/packer.js +9 -9
- package/Materials/Textures/Procedurals/customProceduralTexture.js +6 -6
- package/Materials/Textures/Procedurals/index.js +4 -4
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js +5 -5
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +15 -15
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +2 -2
- package/Materials/Textures/baseTexture.js +8 -8
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.polynomial.js +2 -2
- package/Materials/Textures/colorGradingTexture.js +5 -5
- package/Materials/Textures/colorGradingTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +12 -12
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.js +3 -3
- package/Materials/Textures/equiRectangularCubeTexture.js +10 -12
- package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
- package/Materials/Textures/externalTexture.js +1 -1
- package/Materials/Textures/hdrCubeTexture.js +16 -16
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.js +4 -4
- package/Materials/Textures/index.js +27 -27
- package/Materials/Textures/internalTexture.d.ts +15 -2
- package/Materials/Textures/internalTexture.js +29 -13
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +5 -5
- package/Materials/Textures/multiRenderTarget.js +3 -3
- package/Materials/Textures/prePassRenderTarget.js +2 -2
- package/Materials/Textures/rawCubeTexture.d.ts +0 -3
- package/Materials/Textures/rawCubeTexture.js +6 -17
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.js +2 -2
- package/Materials/Textures/rawTexture2DArray.js +2 -2
- package/Materials/Textures/rawTexture3D.js +2 -2
- package/Materials/Textures/refractionTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js +9 -9
- package/Materials/Textures/texture.js +30 -25
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/thinTexture.js +1 -1
- package/Materials/Textures/videoTexture.js +6 -6
- package/Materials/colorCurves.js +2 -2
- package/Materials/effect.js +8 -8
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.js +6 -6
- package/Materials/fresnelParameters.js +4 -4
- package/Materials/imageProcessingConfiguration.js +6 -6
- package/Materials/index.js +25 -25
- package/Materials/material.detailMapConfiguration.js +7 -4
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +11 -11
- package/Materials/materialFlags.js +1 -1
- package/Materials/materialHelper.js +7 -7
- package/Materials/materialStencilState.js +1 -1
- package/Materials/multiMaterial.js +4 -4
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/prePassConfiguration.d.ts +1 -0
- package/Materials/prePassConfiguration.js +8 -2
- package/Materials/prePassConfiguration.js.map +1 -1
- package/Materials/pushMaterial.js +2 -2
- package/Materials/shaderMaterial.d.ts +0 -2
- package/Materials/shaderMaterial.js +12 -30
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +6 -5
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +20 -20
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +3 -3
- package/Maths/index.js +4 -4
- package/Maths/math.axis.js +1 -1
- package/Maths/math.color.js +6 -6
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.frustum.js +1 -1
- package/Maths/math.functions.js +2 -2
- package/Maths/math.isovector.js +2 -2
- package/Maths/math.js +10 -10
- package/Maths/math.path.js +3 -3
- package/Maths/math.plane.js +1 -1
- package/Maths/math.vector.js +9 -9
- package/Maths/math.vector.js.map +1 -1
- package/Maths/math.vertexFormat.js +1 -1
- package/Maths/sphericalPolynomial.js +2 -2
- package/Meshes/Builders/boxBuilder.d.ts +63 -32
- package/Meshes/Builders/boxBuilder.js +53 -39
- package/Meshes/Builders/boxBuilder.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.d.ts +20 -10
- package/Meshes/Builders/capsuleBuilder.js +36 -37
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.d.ts +87 -48
- package/Meshes/Builders/cylinderBuilder.js +71 -53
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/decalBuilder.d.ts +26 -24
- package/Meshes/Builders/decalBuilder.js +211 -213
- package/Meshes/Builders/decalBuilder.js.map +1 -1
- package/Meshes/Builders/discBuilder.d.ts +27 -25
- package/Meshes/Builders/discBuilder.js +46 -36
- package/Meshes/Builders/discBuilder.js.map +1 -1
- package/Meshes/Builders/geodesicBuilder.d.ts +34 -39
- package/Meshes/Builders/geodesicBuilder.js +58 -67
- package/Meshes/Builders/geodesicBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +56 -29
- package/Meshes/Builders/goldbergBuilder.js +97 -84
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/groundBuilder.d.ts +151 -79
- package/Meshes/Builders/groundBuilder.js +174 -137
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Builders/hemisphereBuilder.d.ts +16 -14
- package/Meshes/Builders/hemisphereBuilder.js +33 -34
- package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
- package/Meshes/Builders/icoSphereBuilder.d.ts +57 -29
- package/Meshes/Builders/icoSphereBuilder.js +51 -38
- package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
- package/Meshes/Builders/index.js +23 -23
- package/Meshes/Builders/latheBuilder.d.ts +38 -36
- package/Meshes/Builders/latheBuilder.js +70 -72
- package/Meshes/Builders/latheBuilder.js.map +1 -1
- package/Meshes/Builders/linesBuilder.d.ts +113 -82
- package/Meshes/Builders/linesBuilder.js +202 -184
- package/Meshes/Builders/linesBuilder.js.map +1 -1
- package/Meshes/Builders/planeBuilder.d.ts +48 -26
- package/Meshes/Builders/planeBuilder.js +50 -40
- package/Meshes/Builders/planeBuilder.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.d.ts +68 -51
- package/Meshes/Builders/polygonBuilder.js +91 -79
- package/Meshes/Builders/polygonBuilder.js.map +1 -1
- package/Meshes/Builders/polyhedronBuilder.d.ts +73 -36
- package/Meshes/Builders/polyhedronBuilder.js +63 -43
- package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
- package/Meshes/Builders/ribbonBuilder.d.ts +69 -39
- package/Meshes/Builders/ribbonBuilder.js +166 -152
- package/Meshes/Builders/ribbonBuilder.js.map +1 -1
- package/Meshes/Builders/shapeBuilder.d.ts +83 -81
- package/Meshes/Builders/shapeBuilder.js +185 -186
- package/Meshes/Builders/shapeBuilder.js.map +1 -1
- package/Meshes/Builders/sphereBuilder.d.ts +62 -31
- package/Meshes/Builders/sphereBuilder.js +53 -39
- package/Meshes/Builders/sphereBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +56 -29
- package/Meshes/Builders/tiledBoxBuilder.js +45 -36
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +67 -38
- package/Meshes/Builders/tiledPlaneBuilder.js +51 -40
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Builders/torusBuilder.d.ts +47 -25
- package/Meshes/Builders/torusBuilder.js +46 -36
- package/Meshes/Builders/torusBuilder.js.map +1 -1
- package/Meshes/Builders/torusKnotBuilder.d.ts +57 -29
- package/Meshes/Builders/torusKnotBuilder.js +51 -37
- package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
- package/Meshes/Builders/tubeBuilder.d.ts +42 -40
- package/Meshes/Builders/tubeBuilder.js +140 -142
- package/Meshes/Builders/tubeBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompression.js +3 -3
- package/Meshes/Compression/index.js +2 -2
- package/Meshes/Compression/meshoptCompression.js +1 -1
- package/Meshes/WebGL/webGLDataBuffer.js +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js +1 -1
- package/Meshes/abstractMesh.js +20 -20
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg.js +5 -5
- package/Meshes/geodesicMesh.js +4 -4
- package/Meshes/geometry.js +13 -17
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/groundMesh.js +3 -3
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +25 -24
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.js +8 -8
- package/Meshes/linesMesh.js +9 -9
- package/Meshes/mesh.d.ts +2 -383
- package/Meshes/mesh.js +32 -439
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.lts.d.ts +417 -0
- package/Meshes/mesh.lts.js +25 -0
- package/Meshes/mesh.lts.js.map +1 -0
- package/Meshes/mesh.vertexData.d.ts +21 -64
- package/Meshes/mesh.vertexData.js +46 -71
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +52 -799
- package/Meshes/meshBuilder.js +52 -609
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshSimplification.js +6 -6
- package/Meshes/meshSimplificationSceneComponent.js +4 -4
- package/Meshes/polygonMesh.js +8 -8
- package/Meshes/subMesh.js +5 -5
- package/Meshes/subMesh.project.js +2 -2
- package/Meshes/thinInstanceMesh.js +3 -3
- package/Meshes/trailMesh.js +5 -5
- package/Meshes/transformNode.js +5 -5
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +5 -5
- package/Misc/HighDynamicRange/hdr.js +1 -1
- package/Misc/HighDynamicRange/index.js +3 -3
- package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
- package/Misc/PerformanceViewer/index.js +4 -4
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +2 -2
- package/Misc/PerformanceViewer/performanceViewerCollector.js +4 -4
- package/Misc/PerformanceViewer/performanceViewerSceneExtension.js +2 -2
- package/Misc/assetsManager.js +8 -8
- package/Misc/basis.d.ts +40 -12
- package/Misc/basis.js +172 -145
- package/Misc/basis.js.map +1 -1
- package/Misc/brdfTextureTools.d.ts +9 -8
- package/Misc/brdfTextureTools.js +49 -50
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/codeStringParsingTools.d.ts +40 -45
- package/Misc/codeStringParsingTools.js +154 -163
- package/Misc/codeStringParsingTools.js.map +1 -1
- package/Misc/computePressure.js +2 -2
- package/Misc/computePressure.js.map +1 -1
- package/Misc/copyTools.d.ts +30 -5
- package/Misc/copyTools.js +108 -87
- package/Misc/copyTools.js.map +1 -1
- package/Misc/dataReader.js +2 -2
- package/Misc/dataReader.js.map +1 -1
- package/Misc/dds.js +23 -23
- package/Misc/dds.js.map +1 -1
- package/Misc/decorators.js +8 -8
- package/Misc/decorators.js.map +1 -1
- package/Misc/deepCopier.js +3 -3
- package/Misc/deepCopier.js.map +1 -1
- package/Misc/depthReducer.js +2 -2
- package/Misc/devTools.d.ts +1 -3
- package/Misc/devTools.js +3 -9
- package/Misc/devTools.js.map +1 -1
- package/Misc/domManagement.d.ts +27 -6
- package/Misc/domManagement.js +43 -26
- package/Misc/domManagement.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +61 -28
- package/Misc/environmentTextureTools.js +550 -503
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.d.ts +91 -101
- package/Misc/fileTools.js +414 -396
- package/Misc/fileTools.js.map +1 -1
- package/Misc/fileTools.lts.d.ts +9 -0
- package/Misc/fileTools.lts.js +64 -0
- package/Misc/fileTools.lts.js.map +1 -0
- package/Misc/filesInput.d.ts +1 -1
- package/Misc/filesInput.js +4 -4
- package/Misc/filesInput.js.map +1 -1
- package/Misc/gradients.js +1 -1
- package/Misc/guid.d.ts +10 -3
- package/Misc/guid.js +15 -12
- package/Misc/guid.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +61 -60
- package/Misc/index.js.map +1 -1
- package/Misc/instantiationTools.js +3 -3
- package/Misc/instantiationTools.js.map +1 -1
- package/Misc/khronosTextureContainer.js +1 -1
- package/Misc/khronosTextureContainer2.js +2 -2
- package/Misc/meshExploder.js +1 -1
- package/Misc/minMaxReducer.js +4 -4
- package/Misc/observable.d.ts +7 -0
- package/Misc/observable.js +22 -0
- package/Misc/observable.js.map +1 -1
- package/Misc/observableCoroutine.js +1 -1
- package/Misc/perfCounter.js +1 -1
- package/Misc/performanceMonitor.js +1 -1
- package/Misc/pivotTools.js +1 -1
- package/Misc/precisionDate.js +1 -1
- package/Misc/reflector.js +4 -4
- package/Misc/reflector.js.map +1 -1
- package/Misc/rgbdTextureTools.js +5 -5
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneOptimizer.js +3 -3
- package/Misc/sceneRecorder.js +14 -14
- package/Misc/sceneSerializer.js +4 -4
- package/Misc/screenshotTools.d.ts +96 -12
- package/Misc/screenshotTools.js +302 -207
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/stringTools.d.ts +54 -47
- package/Misc/stringTools.js +108 -105
- package/Misc/stringTools.js.map +1 -1
- package/Misc/tags.js +1 -1
- package/Misc/textureTools.d.ts +38 -8
- package/Misc/textureTools.js +169 -138
- package/Misc/textureTools.js.map +1 -1
- package/Misc/tga.d.ts +34 -22
- package/Misc/tga.js +279 -260
- package/Misc/tga.js.map +1 -1
- package/Misc/timer.js +1 -1
- package/Misc/timingTools.js +2 -2
- package/Misc/timingTools.js.map +1 -1
- package/Misc/tools.d.ts +5 -5
- package/Misc/tools.js +42 -42
- package/Misc/tools.js.map +1 -1
- package/Misc/trajectoryClassifier.js +1 -1
- package/Misc/typeStore.d.ts +3 -8
- package/Misc/typeStore.js +9 -15
- package/Misc/typeStore.js.map +1 -1
- package/Misc/videoRecorder.js +1 -1
- package/Misc/virtualJoystick.js +2 -2
- package/Morph/index.js +2 -2
- package/Morph/morphTarget.js +6 -6
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +1 -1
- package/Morph/morphTargetManager.js +11 -10
- package/Morph/morphTargetManager.js.map +1 -1
- package/Navigation/Plugins/index.js +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +6 -6
- package/Navigation/index.js +2 -2
- package/Offline/database.js +6 -6
- package/Offline/database.js.map +1 -1
- package/Offline/index.js +2 -2
- package/Particles/EmitterTypes/boxParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/coneParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/customParticleEmitter.js +2 -2
- package/Particles/EmitterTypes/cylinderParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/index.js +9 -9
- package/Particles/EmitterTypes/meshParticleEmitter.js +4 -4
- package/Particles/EmitterTypes/pointParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/sphereParticleEmitter.js +3 -3
- package/Particles/baseParticleSystem.js +5 -5
- package/Particles/cloudPoint.js +1 -1
- package/Particles/computeShaderParticleSystem.js +7 -7
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +24 -24
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/index.js +17 -17
- package/Particles/particle.js +3 -3
- package/Particles/particleHelper.js +8 -8
- package/Particles/particleSystem.js +26 -26
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +7 -7
- package/Particles/particleSystemSet.js +7 -7
- package/Particles/particleSystemSet.js.map +1 -1
- package/Particles/pointsCloudSystem.js +12 -12
- package/Particles/solidParticle.js +5 -5
- package/Particles/solidParticleSystem.js +15 -15
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/subEmitter.d.ts +2 -1
- package/Particles/subEmitter.js +10 -8
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/webgl2ParticleSystem.js +7 -7
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.js +35 -27
- package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/Plugins/cannonJSPlugin.js +7 -7
- package/Physics/Plugins/index.js +3 -3
- package/Physics/Plugins/oimoJSPlugin.js +6 -6
- package/Physics/index.js +7 -7
- package/Physics/physicsEngine.js +3 -3
- package/Physics/physicsEngine.js.map +1 -1
- package/Physics/physicsEngineComponent.js +7 -7
- package/Physics/physicsHelper.js +8 -8
- package/Physics/physicsHelper.js.map +1 -1
- package/Physics/physicsImpostor.js +7 -7
- package/Physics/physicsRaycastResult.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +18 -18
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/index.js +5 -5
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +9 -9
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +17 -17
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +12 -12
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +16 -16
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/index.js +5 -5
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js +3 -3
- package/PostProcesses/anaglyphPostProcess.js +4 -4
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +5 -5
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.js +6 -6
- package/PostProcesses/bloomMergePostProcess.js +5 -5
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +7 -7
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +6 -6
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js +6 -6
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +6 -6
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +5 -5
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +5 -5
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +6 -6
- package/PostProcesses/depthOfFieldMergePostProcess.js +2 -2
- package/PostProcesses/displayPassPostProcess.js +5 -5
- package/PostProcesses/displayPassPostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +6 -6
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +5 -5
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.js +7 -7
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +5 -5
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.js +2 -2
- package/PostProcesses/imageProcessingPostProcess.js +6 -6
- package/PostProcesses/index.js +33 -33
- package/PostProcesses/motionBlurPostProcess.js +11 -11
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +7 -7
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +11 -11
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +1 -1
- package/PostProcesses/refractionPostProcess.js +6 -6
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +8 -8
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +7 -7
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +5 -5
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.js +3 -3
- package/PostProcesses/subSurfaceScatteringPostProcess.js +6 -6
- package/PostProcesses/tonemapPostProcess.js +2 -2
- package/PostProcesses/volumetricLightScatteringPostProcess.js +23 -23
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +4 -4
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +4 -4
- package/Probes/index.js +1 -1
- package/Probes/reflectionProbe.js +4 -4
- package/Rendering/boundingBoxRenderer.js +15 -15
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthRenderer.js +11 -11
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRendererSceneComponent.js +3 -3
- package/Rendering/edgesRenderer.js +11 -11
- package/Rendering/geometryBufferRenderer.js +13 -13
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/geometryBufferRendererSceneComponent.js +3 -3
- package/Rendering/index.js +13 -13
- package/Rendering/motionBlurConfiguration.js.map +1 -1
- package/Rendering/outlineRenderer.js +8 -8
- package/Rendering/prePassRenderer.js +6 -6
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRendererSceneComponent.js +4 -4
- package/Rendering/renderingGroup.js +2 -2
- package/Rendering/renderingManager.js +1 -1
- package/Rendering/screenSpaceReflectionsConfiguration.js.map +1 -1
- package/Rendering/ssao2Configuration.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +6 -6
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/subSurfaceSceneComponent.js +5 -5
- package/Rendering/utilityLayerRenderer.js +8 -8
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js +2 -2
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bonesVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpFragment.js +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js +2 -2
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/depthPrePass.js +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
- package/Shaders/ShadersInclude/fibonacci.js +1 -1
- package/Shaders/ShadersInclude/fogFragment.js +2 -2
- package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fogVertex.js +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.js +1 -1
- package/Shaders/ShadersInclude/geometryUboDeclaration.js +2 -2
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.js +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +1 -1
- package/Shaders/ShadersInclude/importanceSampling.js +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/instancesVertex.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVertex.js +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.js +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.js +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/packingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +2 -2
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -3
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.js +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.js +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.js +1 -1
- package/Shaders/anaglyph.fragment.js +1 -1
- package/Shaders/background.fragment.js +16 -16
- package/Shaders/background.vertex.js +15 -15
- package/Shaders/blackAndWhite.fragment.js +1 -1
- package/Shaders/bloomMerge.fragment.js +1 -1
- package/Shaders/blur.fragment.js +1 -1
- package/Shaders/chromaticAberration.fragment.js +1 -1
- package/Shaders/circleOfConfusion.fragment.js +1 -1
- package/Shaders/clearQuad.fragment.js +1 -1
- package/Shaders/clearQuad.vertex.js +1 -1
- package/Shaders/color.fragment.js +3 -3
- package/Shaders/color.vertex.js +7 -7
- package/Shaders/colorCorrection.fragment.js +1 -1
- package/Shaders/convolution.fragment.js +1 -1
- package/Shaders/default.fragment.js +26 -26
- package/Shaders/default.vertex.js +31 -31
- package/Shaders/depth.fragment.js +2 -2
- package/Shaders/depth.vertex.js +9 -9
- package/Shaders/depthBoxBlur.fragment.js +1 -1
- package/Shaders/depthOfField.fragment.js +1 -1
- package/Shaders/depthOfFieldMerge.fragment.js +1 -1
- package/Shaders/displayPass.fragment.js +1 -1
- package/Shaders/extractHighlights.fragment.js +2 -2
- package/Shaders/filter.fragment.js +1 -1
- package/Shaders/fxaa.fragment.js +1 -1
- package/Shaders/fxaa.vertex.js +1 -1
- package/Shaders/geometry.fragment.js +5 -5
- package/Shaders/geometry.vertex.js +12 -12
- package/Shaders/glowBlurPostProcess.fragment.js +1 -1
- package/Shaders/glowMapGeneration.fragment.js +2 -2
- package/Shaders/glowMapGeneration.vertex.js +9 -9
- package/Shaders/glowMapMerge.fragment.js +1 -1
- package/Shaders/glowMapMerge.vertex.js +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +6 -6
- package/Shaders/gpuRenderParticles.vertex.js +3 -3
- package/Shaders/gpuUpdateParticles.fragment.js +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js +1 -1
- package/Shaders/grain.fragment.js +2 -2
- package/Shaders/hdrFiltering.fragment.js +5 -5
- package/Shaders/hdrFiltering.vertex.js +1 -1
- package/Shaders/highlights.fragment.js +1 -1
- package/Shaders/imageProcessing.fragment.js +4 -4
- package/Shaders/kernelBlur.fragment.js +5 -5
- package/Shaders/kernelBlur.vertex.js +3 -3
- package/Shaders/layer.fragment.js +2 -2
- package/Shaders/layer.vertex.js +1 -1
- package/Shaders/lensFlare.fragment.js +1 -1
- package/Shaders/lensFlare.vertex.js +1 -1
- package/Shaders/lensHighlights.fragment.js +1 -1
- package/Shaders/line.fragment.js +3 -3
- package/Shaders/line.vertex.js +5 -5
- package/Shaders/minmaxRedux.fragment.js +1 -1
- package/Shaders/motionBlur.fragment.js +1 -1
- package/Shaders/noise.fragment.js +1 -1
- package/Shaders/outline.fragment.js +3 -3
- package/Shaders/outline.vertex.js +11 -11
- package/Shaders/particles.fragment.js +6 -6
- package/Shaders/particles.vertex.js +3 -3
- package/Shaders/pass.fragment.js +1 -1
- package/Shaders/passCube.fragment.js +1 -1
- package/Shaders/pbr.fragment.js +55 -55
- package/Shaders/pbr.vertex.js +31 -31
- package/Shaders/postprocess.vertex.js +1 -1
- package/Shaders/procedural.vertex.js +1 -1
- package/Shaders/refraction.fragment.js +1 -1
- package/Shaders/rgbdDecode.fragment.js +2 -2
- package/Shaders/rgbdEncode.fragment.js +2 -2
- package/Shaders/screenSpaceCurvature.fragment.js +1 -1
- package/Shaders/screenSpaceReflection.fragment.js +1 -1
- package/Shaders/shadowMap.fragment.js +5 -5
- package/Shaders/shadowMap.vertex.js +16 -16
- package/Shaders/sharpen.fragment.js +1 -1
- package/Shaders/spriteMap.fragment.js +1 -1
- package/Shaders/spriteMap.vertex.js +1 -1
- package/Shaders/sprites.fragment.js +4 -4
- package/Shaders/sprites.vertex.js +2 -2
- package/Shaders/ssao.fragment.js +1 -1
- package/Shaders/ssao2.fragment.js +1 -1
- package/Shaders/ssaoCombine.fragment.js +1 -1
- package/Shaders/standard.fragment.js +2 -2
- package/Shaders/stereoscopicInterlace.fragment.js +1 -1
- package/Shaders/subSurfaceScattering.fragment.js +5 -5
- package/Shaders/tonemap.fragment.js +1 -1
- package/Shaders/volumetricLightScattering.fragment.js +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.js +9 -9
- package/Shaders/vrDistortionCorrection.fragment.js +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/Sprites/index.js +6 -6
- package/Sprites/sprite.js +4 -4
- package/Sprites/spriteManager.js +11 -11
- package/Sprites/spriteMap.js +11 -11
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spritePackedManager.js +2 -2
- package/Sprites/spriteRenderer.js +6 -6
- package/Sprites/spriteSceneComponent.js +6 -6
- package/States/index.js +4 -4
- package/XR/features/WebXRAnchorSystem.js +5 -5
- package/XR/features/WebXRBackgroundRemover.js +3 -3
- package/XR/features/WebXRControllerMovement.js +5 -5
- package/XR/features/WebXRControllerPhysics.js +8 -8
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +19 -15
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.js +24 -24
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.js +3 -3
- package/XR/features/WebXREyeTracking.js +5 -5
- package/XR/features/WebXRFeaturePointSystem.js +4 -4
- package/XR/features/WebXRHandTracking.js +15 -15
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRHitTest.js +5 -5
- package/XR/features/WebXRHitTestLegacy.js +5 -5
- package/XR/features/WebXRImageTracking.js +5 -5
- package/XR/features/WebXRLightEstimation.js +12 -12
- package/XR/features/WebXRMeshDetector.js +4 -4
- package/XR/features/WebXRNearInteraction.js +14 -12
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.js +4 -4
- package/XR/features/WebXRWalkingLocomotion.js +5 -5
- package/XR/features/index.js +19 -19
- package/XR/index.js +12 -12
- package/XR/motionController/index.js +9 -9
- package/XR/motionController/webXRAbstractMotionController.js +6 -6
- package/XR/motionController/webXRControllerComponent.js +1 -1
- package/XR/motionController/webXRGenericHandController.js +2 -2
- package/XR/motionController/webXRGenericMotionController.js +3 -3
- package/XR/motionController/webXRHTCViveMotionController.js +4 -4
- package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
- package/XR/motionController/webXRMotionControllerManager.js +3 -3
- package/XR/motionController/webXROculusTouchMotionController.js +4 -4
- package/XR/motionController/webXRProfiledMotionController.js +10 -10
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.js +7 -7
- package/XR/webXRDefaultExperience.js +7 -7
- package/XR/webXREnterExitUI.js +3 -3
- package/XR/webXRExperienceHelper.js +8 -8
- package/XR/webXRFeaturesManager.js +1 -1
- package/XR/webXRInput.js +3 -3
- package/XR/webXRInputSource.js +5 -5
- package/XR/webXRManagedOutputCanvas.js +2 -2
- package/XR/webXRSessionManager.js +5 -5
- package/assetContainer.js +4 -4
- package/index.d.ts +1 -0
- package/index.js +44 -43
- package/index.js.map +1 -1
- package/license.md +12 -13
- package/node.js +6 -6
- package/node.js.map +1 -1
- package/package.json +10 -1
- package/readme.md +12 -13
- package/scene.d.ts +5 -147
- package/scene.js +46 -229
- package/scene.js.map +1 -1
- package/scene.lts.d.ts +165 -0
- package/scene.lts.js +68 -0
- package/scene.lts.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbrMetallicRoughnessBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint, NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { MaterialHelper } from '../../../materialHelper';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Light } from '../../../../Lights/light';\r\nimport { Nullable } from '../../../../types';\r\nimport { _TypeStore } from '../../../../Misc/typeStore';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { PBRBaseMaterial } from '../../../PBR/pbrBaseMaterial';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport { SheenBlock } from './sheenBlock';\r\nimport { BaseTexture } from '../../../Textures/baseTexture';\r\nimport { BRDFTextureTools } from '../../../../Misc/brdfTextureTools';\r\nimport { MaterialFlags } from '../../../materialFlags';\r\nimport { AnisotropyBlock } from './anisotropyBlock';\r\nimport { ReflectionBlock } from './reflectionBlock';\r\nimport { ClearCoatBlock } from './clearCoatBlock';\r\nimport { SubSurfaceBlock } from './subSurfaceBlock';\r\nimport { RefractionBlock } from './refractionBlock';\r\nimport { PerturbNormalBlock } from '../Fragment/perturbNormalBlock';\r\n\r\nimport { Color3, TmpColors } from '../../../../Maths/math.color';\r\n\r\nconst mapOutputToVariable: { [name: string]: [string, string] } = {\r\n \"ambientClr\": [\"finalAmbient\", \"\"],\r\n \"diffuseDir\": [\"finalDiffuse\", \"\"],\r\n \"specularDir\": [\"finalSpecularScaled\", \"!defined(UNLIT) && defined(SPECULARTERM)\"],\r\n \"clearcoatDir\": [\"finalClearCoatScaled\", \"!defined(UNLIT) && defined(CLEARCOAT)\"],\r\n \"sheenDir\": [\"finalSheenScaled\", \"!defined(UNLIT) && defined(SHEEN)\"],\r\n \"diffuseInd\": [\"finalIrradiance\", \"!defined(UNLIT) && defined(REFLECTION)\"],\r\n \"specularInd\": [\"finalRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION)\"],\r\n \"clearcoatInd\": [\"clearcoatOut.finalClearCoatRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION) && defined(CLEARCOAT)\"],\r\n \"sheenInd\": [\"sheenOut.finalSheenRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION) && defined(SHEEN) && defined(ENVIRONMENTBRDF)\"],\r\n \"refraction\": [\"subSurfaceOut.finalRefraction\", \"!defined(UNLIT) && defined(SS_REFRACTION)\"],\r\n \"lighting\": [\"finalColor.rgb\", \"\"],\r\n \"shadow\": [\"shadow\", \"\"],\r\n \"alpha\": [\"alpha\", \"\"],\r\n};\r\n\r\n/**\r\n * Block used to implement the PBR metallic/roughness model\r\n */\r\nexport class PBRMetallicRoughnessBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the light associated with this block\r\n */\r\n public light: Nullable<Light>;\r\n\r\n private _lightId: number;\r\n private _scene: Scene;\r\n private _environmentBRDFTexture: Nullable<BaseTexture> = null;\r\n private _environmentBrdfSamplerName: string;\r\n private _vNormalWName: string;\r\n private _invertNormalName: string;\r\n private _metallicReflectanceColor: Color3 = Color3.White();\r\n private _metallicF0Factor = 1;\r\n private _vMetallicReflectanceFactorsName: string;\r\n\r\n /**\r\n * Create a new ReflectionBlock\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(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, false);\r\n this.registerInput(\"cameraPosition\", NodeMaterialBlockConnectionPointTypes.Vector3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"perturbedNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"baseColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"metallic\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"ambientOcc\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"opacity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"ambientColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"reflection\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"reflection\", this, NodeMaterialConnectionPointDirection.Input, ReflectionBlock, \"ReflectionBlock\"));\r\n this.registerInput(\"clearcoat\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Input, ClearCoatBlock, \"ClearCoatBlock\"));\r\n this.registerInput(\"sheen\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sheen\", this, NodeMaterialConnectionPointDirection.Input, SheenBlock, \"SheenBlock\"));\r\n this.registerInput(\"subsurface\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"subsurface\", this, NodeMaterialConnectionPointDirection.Input, SubSurfaceBlock, \"SubSurfaceBlock\"));\r\n this.registerInput(\"anisotropy\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"anisotropy\", this, NodeMaterialConnectionPointDirection.Input, AnisotropyBlock, \"AnisotropyBlock\"));\r\n\r\n this.registerOutput(\"ambientClr\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"diffuseDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"clearcoatDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"sheenDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"diffuseInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"clearcoatInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"sheenInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"refraction\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"lighting\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"shadow\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"alpha\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n }\r\n\r\n /**\r\n * Intensity of the direct lights e.g. the four lights available in your scene.\r\n * This impacts both the direct diffuse and specular highlights.\r\n */\r\n @editableInPropertyPage(\"Direct lights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public directIntensity: number = 1.0;\r\n\r\n /**\r\n * Intensity of the environment e.g. how much the environment will light the object\r\n * either through harmonics for rough material or through the reflection for shiny ones.\r\n */\r\n @editableInPropertyPage(\"Environment lights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public environmentIntensity: number = 1.0;\r\n\r\n /**\r\n * This is a special control allowing the reduction of the specular highlights coming from the\r\n * four lights of the scene. Those highlights may not be needed in full environment lighting.\r\n */\r\n @editableInPropertyPage(\"Specular highlights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public specularIntensity: number = 1.0;\r\n\r\n /**\r\n * Defines the falloff type used in this material.\r\n * It by default is Physical.\r\n */\r\n @editableInPropertyPage(\"Light falloff\", PropertyTypeForEdition.List, \"LIGHTING & COLORS\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"Physical\", value: PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL },\r\n { label: \"GLTF\", value: PBRBaseMaterial.LIGHTFALLOFF_GLTF },\r\n { label: \"Standard\", value: PBRBaseMaterial.LIGHTFALLOFF_STANDARD },\r\n ]\r\n })\r\n public lightFalloff = 0;\r\n\r\n /**\r\n * Specifies that alpha test should be used\r\n */\r\n @editableInPropertyPage(\"Alpha Testing\", PropertyTypeForEdition.Boolean, \"OPACITY\")\r\n public useAlphaTest: boolean = false;\r\n\r\n /**\r\n * Defines the alpha limits in alpha test mode.\r\n */\r\n @editableInPropertyPage(\"Alpha CutOff\", PropertyTypeForEdition.Float, \"OPACITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public alphaTestCutoff: number = 0.5;\r\n\r\n /**\r\n * Specifies that alpha blending should be used\r\n */\r\n @editableInPropertyPage(\"Alpha blending\", PropertyTypeForEdition.Boolean, \"OPACITY\")\r\n public useAlphaBlending: boolean = false;\r\n\r\n /**\r\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good example of that. When the street lights reflects on it you can not see what is behind.\r\n */\r\n @editableInPropertyPage(\"Radiance over alpha\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public useRadianceOverAlpha: boolean = true;\r\n\r\n /**\r\n * Specifies that the material will keeps the specular highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good example of that. When sun reflects on it you can not see what is behind.\r\n */\r\n @editableInPropertyPage(\"Specular over alpha\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public useSpecularOverAlpha: boolean = true;\r\n\r\n /**\r\n * Enables specular anti aliasing in the PBR shader.\r\n * It will both interacts on the Geometry for analytical and IBL lighting.\r\n * It also prefilter the roughness map based on the bump values.\r\n */\r\n @editableInPropertyPage(\"Specular anti-aliasing\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public enableSpecularAntiAliasing: boolean = false;\r\n\r\n /**\r\n * Enables realtime filtering on the texture.\r\n */\r\n @editableInPropertyPage(\"Realtime filtering\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public realTimeFiltering: boolean = false;\r\n\r\n /**\r\n * Quality switch for realtime filtering\r\n */\r\n @editableInPropertyPage(\"Realtime filtering quality\", PropertyTypeForEdition.List, \"RENDERING\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"Low\", value: 8 },\r\n { label: \"Medium\", value: 16 },\r\n { label: \"High\", value: 64 },\r\n ]\r\n })\r\n public realTimeFilteringQuality = 8;\r\n\r\n /**\r\n * Defines if the material uses energy conservation.\r\n */\r\n @editableInPropertyPage(\"Energy Conservation\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useEnergyConservation: boolean = true;\r\n\r\n /**\r\n * This parameters will enable/disable radiance occlusion by preventing the radiance to lit\r\n * too much the area relying on ambient texture to define their ambient occlusion.\r\n */\r\n @editableInPropertyPage(\"Radiance occlusion\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useRadianceOcclusion: boolean = true;\r\n\r\n /**\r\n * This parameters will enable/disable Horizon occlusion to prevent normal maps to look shiny when the normal\r\n * makes the reflect vector face the model (under horizon).\r\n */\r\n @editableInPropertyPage(\"Horizon occlusion\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useHorizonOcclusion: boolean = true;\r\n\r\n /**\r\n * If set to true, no lighting calculations will be applied.\r\n */\r\n @editableInPropertyPage(\"Unlit\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public unlit: boolean = false;\r\n\r\n /**\r\n * Force normal to face away from face.\r\n */\r\n @editableInPropertyPage(\"Force normal forward\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public forceNormalForward: boolean = false;\r\n\r\n /**\r\n * Defines the material debug mode.\r\n * It helps seeing only some components of the material while troubleshooting.\r\n */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.List, \"DEBUG\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"None\", value: 0 },\r\n // Geometry\r\n { label: \"Normalized position\", value: 1 },\r\n { label: \"Normals\", value: 2 },\r\n { label: \"Tangents\", value: 3 },\r\n { label: \"Bitangents\", value: 4 },\r\n { label: \"Bump Normals\", value: 5 },\r\n //{ label: \"UV1\", value: 6 },\r\n //{ label: \"UV2\", value: 7 },\r\n { label: \"ClearCoat Normals\", value: 8 },\r\n { label: \"ClearCoat Tangents\", value: 9 },\r\n { label: \"ClearCoat Bitangents\", value: 10 },\r\n { label: \"Anisotropic Normals\", value: 11 },\r\n { label: \"Anisotropic Tangents\", value: 12 },\r\n { label: \"Anisotropic Bitangents\", value: 13 },\r\n // Maps\r\n //{ label: \"Emissive Map\", value: 23 },\r\n //{ label: \"Light Map\", value: 24 },\r\n // Env\r\n { label: \"Env Refraction\", value: 40 },\r\n { label: \"Env Reflection\", value: 41 },\r\n { label: \"Env Clear Coat\", value: 42 },\r\n // Lighting\r\n { label: \"Direct Diffuse\", value: 50 },\r\n { label: \"Direct Specular\", value: 51 },\r\n { label: \"Direct Clear Coat\", value: 52 },\r\n { label: \"Direct Sheen\", value: 53 },\r\n { label: \"Env Irradiance\", value: 54 },\r\n // Lighting Params\r\n { label: \"Surface Albedo\", value: 60 },\r\n { label: \"Reflectance 0\", value: 61 },\r\n { label: \"Metallic\", value: 62 },\r\n { label: \"Metallic F0\", value: 71 },\r\n { label: \"Roughness\", value: 63 },\r\n { label: \"AlphaG\", value: 64 },\r\n { label: \"NdotV\", value: 65 },\r\n { label: \"ClearCoat Color\", value: 66 },\r\n { label: \"ClearCoat Roughness\", value: 67 },\r\n { label: \"ClearCoat NdotV\", value: 68 },\r\n { label: \"Transmittance\", value: 69 },\r\n { label: \"Refraction Transmittance\", value: 70 },\r\n // Misc\r\n { label: \"SEO\", value: 80 },\r\n { label: \"EHO\", value: 81 },\r\n { label: \"Energy Factor\", value: 82 },\r\n { label: \"Specular Reflectance\", value: 83 },\r\n { label: \"Clear Coat Reflectance\", value: 84 },\r\n { label: \"Sheen Reflectance\", value: 85 },\r\n { label: \"Luminance Over Alpha\", value: 86 },\r\n { label: \"Alpha\", value: 87 },\r\n ]\r\n })\r\n public debugMode = 0;\r\n\r\n /**\r\n * Specify from where on screen the debug mode should start.\r\n * The value goes from -1 (full screen) to 1 (not visible)\r\n * It helps with side by side comparison against the final render\r\n * This defaults to 0\r\n */\r\n @editableInPropertyPage(\"Split position\", PropertyTypeForEdition.Float, \"DEBUG\", { min: -1, max: 1, \"notifiers\": { \"update\": true } })\r\n public debugLimit = 0;\r\n\r\n /**\r\n * As the default viewing range might not be enough (if the ambient is really small for instance)\r\n * You can use the factor to better multiply the final value.\r\n */\r\n @editableInPropertyPage(\"Output factor\", PropertyTypeForEdition.Float, \"DEBUG\", { min: 0, max: 5, \"notifiers\": { \"update\": true } })\r\n public debugFactor = 1;\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 initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"vLightingIntensity\");\r\n\r\n state._excludeVariableName(\"geometricNormalW\");\r\n state._excludeVariableName(\"normalW\");\r\n state._excludeVariableName(\"faceNormal\");\r\n\r\n state._excludeVariableName(\"albedoOpacityOut\");\r\n state._excludeVariableName(\"surfaceAlbedo\");\r\n state._excludeVariableName(\"alpha\");\r\n\r\n state._excludeVariableName(\"aoOut\");\r\n\r\n state._excludeVariableName(\"baseColor\");\r\n state._excludeVariableName(\"reflectivityOut\");\r\n state._excludeVariableName(\"microSurface\");\r\n state._excludeVariableName(\"roughness\");\r\n\r\n state._excludeVariableName(\"NdotVUnclamped\");\r\n state._excludeVariableName(\"NdotV\");\r\n state._excludeVariableName(\"alphaG\");\r\n state._excludeVariableName(\"AARoughnessFactors\");\r\n state._excludeVariableName(\"environmentBrdf\");\r\n state._excludeVariableName(\"ambientMonochrome\");\r\n state._excludeVariableName(\"seo\");\r\n state._excludeVariableName(\"eho\");\r\n\r\n state._excludeVariableName(\"environmentRadiance\");\r\n state._excludeVariableName(\"irradianceVector\");\r\n state._excludeVariableName(\"environmentIrradiance\");\r\n\r\n state._excludeVariableName(\"diffuseBase\");\r\n state._excludeVariableName(\"specularBase\");\r\n state._excludeVariableName(\"preInfo\");\r\n state._excludeVariableName(\"info\");\r\n state._excludeVariableName(\"shadow\");\r\n\r\n state._excludeVariableName(\"finalDiffuse\");\r\n state._excludeVariableName(\"finalAmbient\");\r\n state._excludeVariableName(\"ambientOcclusionForDirectDiffuse\");\r\n\r\n state._excludeVariableName(\"finalColor\");\r\n\r\n state._excludeVariableName(\"vClipSpacePosition\");\r\n state._excludeVariableName(\"vDebugMode\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"PBRMetallicRoughnessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public get worldPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the view matrix parameter\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the camera position input component\r\n */\r\n public get cameraPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the perturbed normal input component\r\n */\r\n public get perturbedNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the base color input component\r\n */\r\n public get baseColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the metallic input component\r\n */\r\n public get metallic(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion input component\r\n */\r\n public get ambientOcc(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the opacity input component\r\n */\r\n public get opacity(): NodeMaterialConnectionPoint {\r\n return this._inputs[9];\r\n }\r\n\r\n /**\r\n * Gets the index of refraction input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[10];\r\n }\r\n\r\n /**\r\n * Gets the ambient color input component\r\n */\r\n public get ambientColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[11];\r\n }\r\n\r\n /**\r\n * Gets the reflection object parameters\r\n */\r\n public get reflection(): NodeMaterialConnectionPoint {\r\n return this._inputs[12];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object parameters\r\n */\r\n public get clearcoat(): NodeMaterialConnectionPoint {\r\n return this._inputs[13];\r\n }\r\n\r\n /**\r\n * Gets the sheen object parameters\r\n */\r\n public get sheen(): NodeMaterialConnectionPoint {\r\n return this._inputs[14];\r\n }\r\n\r\n /**\r\n * Gets the sub surface object parameters\r\n */\r\n public get subsurface(): NodeMaterialConnectionPoint {\r\n return this._inputs[15];\r\n }\r\n\r\n /**\r\n * Gets the anisotropy object parameters\r\n */\r\n public get anisotropy(): NodeMaterialConnectionPoint {\r\n return this._inputs[16];\r\n }\r\n\r\n /**\r\n * Gets the ambient output component\r\n */\r\n public get ambientClr(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the diffuse output component\r\n */\r\n public get diffuseDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the specular output component\r\n */\r\n public get specularDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the clear coat output component\r\n */\r\n public get clearcoatDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sheen output component\r\n */\r\n public get sheenDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the indirect diffuse output component\r\n */\r\n public get diffuseInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the indirect specular output component\r\n */\r\n public get specularInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n /**\r\n * Gets the indirect clear coat output component\r\n */\r\n public get clearcoatInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[7];\r\n }\r\n\r\n /**\r\n * Gets the indirect sheen output component\r\n */\r\n public get sheenInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[8];\r\n }\r\n\r\n /**\r\n * Gets the refraction output component\r\n */\r\n public get refraction(): NodeMaterialConnectionPoint {\r\n return this._outputs[9];\r\n }\r\n\r\n /**\r\n * Gets the global lighting output component\r\n */\r\n public get lighting(): NodeMaterialConnectionPoint {\r\n return this._outputs[10];\r\n }\r\n\r\n /**\r\n * Gets the shadow output component\r\n */\r\n public get shadow(): NodeMaterialConnectionPoint {\r\n return this._outputs[11];\r\n }\r\n\r\n /**\r\n * Gets the alpha output component\r\n */\r\n public get alpha(): NodeMaterialConnectionPoint {\r\n return this._outputs[12];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.cameraPosition.isConnected) {\r\n let cameraPositionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.CameraPosition);\r\n\r\n if (!cameraPositionInput) {\r\n cameraPositionInput = new InputBlock(\"cameraPosition\");\r\n cameraPositionInput.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);\r\n }\r\n cameraPositionInput.output.connectTo(this.cameraPosition);\r\n }\r\n\r\n if (!this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View);\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 prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n // General\r\n defines.setValue(\"PBR\", true);\r\n defines.setValue(\"METALLICWORKFLOW\", true);\r\n defines.setValue(\"DEBUGMODE\", this.debugMode, true);\r\n defines.setValue(\"NORMALXYSCALE\", true);\r\n defines.setValue(\"BUMP\", this.perturbedNormal.isConnected, true);\r\n defines.setValue(\"LODBASEDMICROSFURACE\", this._scene.getEngine().getCaps().textureLOD);\r\n\r\n // Albedo & Opacity\r\n defines.setValue(\"ALBEDO\", false, true);\r\n defines.setValue(\"OPACITY\", this.opacity.isConnected, true);\r\n\r\n // Ambient occlusion\r\n defines.setValue(\"AMBIENT\", true, true);\r\n defines.setValue(\"AMBIENTINGRAYSCALE\", false, true);\r\n\r\n // Reflectivity\r\n defines.setValue(\"REFLECTIVITY\", false, true);\r\n defines.setValue(\"AOSTOREINMETALMAPRED\", false, true);\r\n defines.setValue(\"METALLNESSSTOREINMETALMAPBLUE\", false, true);\r\n defines.setValue(\"ROUGHNESSSTOREINMETALMAPALPHA\", false, true);\r\n defines.setValue(\"ROUGHNESSSTOREINMETALMAPGREEN\", false, true);\r\n\r\n // Lighting & colors\r\n if (this.lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_STANDARD) {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", false);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", false);\r\n } else if (this.lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_GLTF) {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", false);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", true);\r\n } else {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", true);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", false);\r\n }\r\n\r\n // Transparency\r\n const alphaTestCutOffString = this.alphaTestCutoff.toString();\r\n\r\n defines.setValue(\"ALPHABLEND\", this.useAlphaBlending, true);\r\n defines.setValue(\"ALPHAFROMALBEDO\", false, true);\r\n defines.setValue(\"ALPHATEST\", this.useAlphaTest, true);\r\n defines.setValue(\"ALPHATESTVALUE\", alphaTestCutOffString.indexOf('.') < 0 ? alphaTestCutOffString + \".\" : alphaTestCutOffString, true);\r\n defines.setValue(\"OPACITYRGB\", false, true);\r\n\r\n // Rendering\r\n defines.setValue(\"RADIANCEOVERALPHA\", this.useRadianceOverAlpha, true);\r\n defines.setValue(\"SPECULAROVERALPHA\", this.useSpecularOverAlpha, true);\r\n defines.setValue(\"SPECULARAA\", this._scene.getEngine().getCaps().standardDerivatives && this.enableSpecularAntiAliasing, true);\r\n defines.setValue(\"REALTIME_FILTERING\", this.realTimeFiltering, true);\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (scene.getEngine()._features.needTypeSuffixInShaderConstants) {\r\n defines.setValue(\"NUM_SAMPLES\", this.realTimeFilteringQuality + \"u\", true);\r\n } else {\r\n defines.setValue(\"NUM_SAMPLES\", \"\" + this.realTimeFilteringQuality, true);\r\n }\r\n\r\n // Advanced\r\n defines.setValue(\"BRDF_V_HEIGHT_CORRELATED\", true);\r\n defines.setValue(\"MS_BRDF_ENERGY_CONSERVATION\", this.useEnergyConservation, true);\r\n defines.setValue(\"RADIANCEOCCLUSION\", this.useRadianceOcclusion, true);\r\n defines.setValue(\"HORIZONOCCLUSION\", this.useHorizonOcclusion, true);\r\n defines.setValue(\"UNLIT\", this.unlit, true);\r\n defines.setValue(\"FORCENORMALFORWARD\", this.forceNormalForward, true);\r\n\r\n if (this._environmentBRDFTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n defines.setValue(\"ENVIRONMENTBRDF\", true);\r\n defines.setValue(\"ENVIRONMENTBRDF_RGBD\", this._environmentBRDFTexture.isRGBD, true);\r\n } else {\r\n defines.setValue(\"ENVIRONMENTBRDF\", false);\r\n defines.setValue(\"ENVIRONMENTBRDF_RGBD\", false);\r\n }\r\n\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n\r\n if (!defines._areLightsDirty) {\r\n return;\r\n }\r\n\r\n if (!this.light) {\r\n // Lights\r\n MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, true, nodeMaterial.maxSimultaneousLights);\r\n defines._needNormals = true;\r\n\r\n // Multiview\r\n MaterialHelper.PrepareDefinesForMultiview(scene, defines);\r\n } else {\r\n let state = {\r\n needNormals: false,\r\n needRebuild: false,\r\n lightmapMode: false,\r\n shadowEnabled: false,\r\n specularEnabled: false\r\n };\r\n\r\n MaterialHelper.PrepareDefinesForLight(scene, mesh, this.light, this._lightId, defines, true, state);\r\n\r\n if (state.needRebuild) {\r\n defines.rebuild();\r\n }\r\n }\r\n }\r\n\r\n public updateUniformsAndSamples(state: NodeMaterialBuildState, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines, uniformBuffers: string[]) {\r\n for (var lightIndex = 0; lightIndex < nodeMaterial.maxSimultaneousLights; lightIndex++) {\r\n if (!defines[\"LIGHT\" + lightIndex]) {\r\n break;\r\n }\r\n const onlyUpdateBuffersList = state.uniforms.indexOf(\"vLightData\" + lightIndex) >= 0;\r\n MaterialHelper.PrepareUniformsAndSamplersForLight(lightIndex, state.uniforms, state.samplers, defines[\"PROJECTEDLIGHTTEXTURE\" + lightIndex], uniformBuffers, onlyUpdateBuffersList);\r\n }\r\n }\r\n\r\n public isReady(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (this._environmentBRDFTexture && !this._environmentBRDFTexture.isReady()) {\r\n return false;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n if (!nodeMaterial.imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.BindLights(scene, mesh, effect, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n MaterialHelper.BindLight(this.light, this._lightId, scene, effect, true);\r\n }\r\n\r\n effect.setTexture(this._environmentBrdfSamplerName, this._environmentBRDFTexture);\r\n\r\n effect.setFloat2(\"vDebugMode\", this.debugLimit, this.debugFactor);\r\n\r\n const ambientScene = this._scene.ambientColor;\r\n\r\n if (ambientScene) {\r\n effect.setColor3(\"ambientFromScene\", ambientScene);\r\n }\r\n\r\n const invertNormal = (scene.useRightHandedSystem === (scene._mirroredCameraPosition != null));\r\n\r\n effect.setFloat(this._invertNormalName, invertNormal ? -1 : 1);\r\n\r\n effect.setFloat4(\"vLightingIntensity\", this.directIntensity, 1, this.environmentIntensity * this._scene.environmentIntensity, this.specularIntensity);\r\n\r\n // reflectivity bindings\r\n const outside_ior = 1; // consider air as clear coat and other layers would remap in the shader.\r\n const ior = this.indexOfRefraction.connectInputBlock?.value ?? 1.5;\r\n\r\n // We are here deriving our default reflectance from a common value for none metallic surface.\r\n // Based of the schlick fresnel approximation model\r\n // for dielectrics.\r\n const f0 = Math.pow((ior - outside_ior) / (ior + outside_ior), 2);\r\n\r\n // Tweak the default F0 and F90 based on our given setup\r\n this._metallicReflectanceColor.scaleToRef(f0 * this._metallicF0Factor, TmpColors.Color3[0]);\r\n const metallicF90 = this._metallicF0Factor;\r\n\r\n effect.setColor4(this._vMetallicReflectanceFactorsName, TmpColors.Color3[0], metallicF90);\r\n\r\n if (nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.bind(effect);\r\n }\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let worldPos = this.worldPosition;\r\n let comments = `//${this.name}`;\r\n\r\n // Declaration\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n this._lightId = 0;\r\n\r\n state.sharedData.dynamicUniformBlocks.push(this);\r\n } else {\r\n this._lightId = (state.counters[\"lightCounter\"] !== undefined ? state.counters[\"lightCounter\"] : -1) + 1;\r\n state.counters[\"lightCounter\"] = this._lightId;\r\n\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Inject code in vertex\r\n let worldPosVaryingName = \"v_\" + worldPos.associatedVariableName;\r\n if (state._emitVaryingFromString(worldPosVaryingName, \"vec4\")) {\r\n state.compilationString += `${worldPosVaryingName} = ${worldPos.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n const reflectionBlock = this.reflection.isConnected ? this.reflection.connectedPoint?.ownerBlock as ReflectionBlock : null;\r\n\r\n if (reflectionBlock) {\r\n reflectionBlock.viewConnectionPoint = this.view;\r\n }\r\n\r\n state.compilationString += reflectionBlock?.handleVertexSide(state) ?? \"\";\r\n\r\n state._emitUniformFromString(\"vDebugMode\", \"vec2\", \"defined(IGNORE) || DEBUGMODE > 0\");\r\n state._emitUniformFromString(\"ambientFromScene\", \"vec3\");\r\n\r\n if (state._emitVaryingFromString(\"vClipSpacePosition\", \"vec4\", \"defined(IGNORE) || DEBUGMODE > 0\")) {\r\n state._injectAtEnd += `#if DEBUGMODE > 0\\r\\n`;\r\n state._injectAtEnd += `vClipSpacePosition = gl_Position;\\r\\n`;\r\n state._injectAtEnd += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() },\r\n { search: /worldPos/g, replace: worldPos.associatedVariableName }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += `vec4 worldPos = ${worldPos.associatedVariableName};\\r\\n`;\r\n if (this.view.isConnected) {\r\n state.compilationString += `mat4 view = ${this.view.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n }\r\n\r\n private _getAlbedoOpacityCode(): string {\r\n let code = `albedoOpacityOutParams albedoOpacityOut;\\r\\n`;\r\n\r\n const albedoColor = this.baseColor.isConnected ? this.baseColor.associatedVariableName : \"vec3(1.)\";\r\n const opacity = this.opacity.isConnected ? this.opacity.associatedVariableName : \"1.\";\r\n\r\n code += `albedoOpacityBlock(\r\n vec4(${albedoColor}, 1.),\r\n #ifdef ALBEDO\r\n vec4(1.),\r\n vec2(1., 1.),\r\n #endif\r\n #ifdef OPACITY\r\n vec4(${opacity}),\r\n vec2(1., 1.),\r\n #endif\r\n albedoOpacityOut\r\n );\r\n\r\n vec3 surfaceAlbedo = albedoOpacityOut.surfaceAlbedo;\r\n float alpha = albedoOpacityOut.alpha;\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n private _getAmbientOcclusionCode(): string {\r\n let code = `ambientOcclusionOutParams aoOut;\\r\\n`;\r\n\r\n const ao = this.ambientOcc.isConnected ? this.ambientOcc.associatedVariableName : \"1.\";\r\n\r\n code += `ambientOcclusionBlock(\r\n #ifdef AMBIENT\r\n vec3(${ao}),\r\n vec4(0., 1.0, 1.0, 0.),\r\n #endif\r\n aoOut\r\n );\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n private _getReflectivityCode(state: NodeMaterialBuildState): string {\r\n let code = `reflectivityOutParams reflectivityOut;\\r\\n`;\r\n\r\n const aoIntensity = \"1.\";\r\n\r\n this._vMetallicReflectanceFactorsName = state._getFreeVariableName(\"vMetallicReflectanceFactors\");\r\n state._emitUniformFromString(this._vMetallicReflectanceFactorsName, \"vec4\");\r\n\r\n code += `vec3 baseColor = surfaceAlbedo;\r\n\r\n reflectivityBlock(\r\n vec4(${this.metallic.associatedVariableName}, ${this.roughness.associatedVariableName}, 0., 0.),\r\n #ifdef METALLICWORKFLOW\r\n surfaceAlbedo,\r\n ${this._vMetallicReflectanceFactorsName},\r\n #endif\r\n #ifdef REFLECTIVITY\r\n vec3(0., 0., ${aoIntensity}),\r\n vec4(1.),\r\n #endif\r\n #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\r\n aoOut.ambientOcclusionColor,\r\n #endif\r\n #ifdef MICROSURFACEMAP\r\n microSurfaceTexel, <== not handled!\r\n #endif\r\n reflectivityOut\r\n );\r\n\r\n float microSurface = reflectivityOut.microSurface;\r\n float roughness = reflectivityOut.roughness;\r\n\r\n #ifdef METALLICWORKFLOW\r\n surfaceAlbedo = reflectivityOut.surfaceAlbedo;\r\n #endif\r\n #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\r\n aoOut.ambientOcclusionColor = reflectivityOut.ambientOcclusionColor;\r\n #endif\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._scene = state.sharedData.scene;\r\n\r\n if (!this._environmentBRDFTexture) {\r\n this._environmentBRDFTexture = BRDFTextureTools.GetEnvironmentBRDFTexture(this._scene);\r\n }\r\n\r\n const reflectionBlock = this.reflection.isConnected ? this.reflection.connectedPoint?.ownerBlock as ReflectionBlock : null;\r\n\r\n if (reflectionBlock) {\r\n // Need those variables to be setup when calling _injectVertexCode\r\n reflectionBlock.worldPositionConnectionPoint = this.worldPosition;\r\n reflectionBlock.cameraPositionConnectionPoint = this.cameraPosition;\r\n reflectionBlock.worldNormalConnectionPoint = this.worldNormal;\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n this._injectVertexCode(state);\r\n\r\n return this;\r\n }\r\n\r\n // Fragment\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.blockingBlocks.push(this);\r\n\r\n let comments = `//${this.name}`;\r\n let worldPosVarName = \"v_\" + this.worldPosition.associatedVariableName;\r\n let normalShading = this.perturbedNormal;\r\n\r\n this._environmentBrdfSamplerName = state._getFreeVariableName(\"environmentBrdfSampler\");\r\n\r\n state._emit2DSampler(this._environmentBrdfSamplerName);\r\n\r\n state.sharedData.hints.needAlphaBlending = state.sharedData.hints.needAlphaBlending || this.useAlphaBlending;\r\n state.sharedData.hints.needAlphaTesting = state.sharedData.hints.needAlphaTesting || this.useAlphaTest;\r\n\r\n state._emitExtension(\"lod\", \"#extension GL_EXT_shader_texture_lod : enable\", \"defined(LODBASEDMICROSFURACE)\");\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n // Image processing uniforms\r\n state.uniforms.push(\"exposureLinear\");\r\n state.uniforms.push(\"contrast\");\r\n state.uniforms.push(\"vInverseScreenSize\");\r\n state.uniforms.push(\"vignetteSettings1\");\r\n state.uniforms.push(\"vignetteSettings2\");\r\n state.uniforms.push(\"vCameraColorCurveNegative\");\r\n state.uniforms.push(\"vCameraColorCurveNeutral\");\r\n state.uniforms.push(\"vCameraColorCurvePositive\");\r\n state.uniforms.push(\"txColorTransform\");\r\n state.uniforms.push(\"colorTransformSettings\");\r\n\r\n //\r\n // Includes\r\n //\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n } else {\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"importanceSampling\", comments);\r\n state._emitFunctionFromInclude(\"pbrHelperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"shadowsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingSetupFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingFalloffFunctions\", comments);\r\n state._emitFunctionFromInclude(\"pbrBRDFFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" }\r\n ]\r\n });\r\n state._emitFunctionFromInclude(\"hdrFilteringFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrIBLFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockAlbedoOpacity\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockReflectivity\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAmbientOcclusion\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAlphaFresnel\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAnisotropic\", comments);\r\n\r\n //\r\n // code\r\n //\r\n\r\n state._emitUniformFromString(\"vLightingIntensity\", \"vec4\");\r\n\r\n // _____________________________ Geometry Information ____________________________\r\n this._vNormalWName = state._getFreeVariableName(\"vNormalW\");\r\n\r\n state.compilationString += `vec4 ${this._vNormalWName} = normalize(${this.worldNormal.associatedVariableName});\\r\\n`;\r\n\r\n if (state._registerTempVariable(\"viewDirectionW\")) {\r\n state.compilationString += `vec3 viewDirectionW = normalize(${this.cameraPosition.associatedVariableName} - ${worldPosVarName}.xyz);\\r\\n`;\r\n }\r\n\r\n state.compilationString += `vec3 geometricNormalW = ${this._vNormalWName}.xyz;\\r\\n`;\r\n\r\n state.compilationString += `vec3 normalW = ${normalShading.isConnected ? \"normalize(\" + normalShading.associatedVariableName + \".xyz)\" : \"geometricNormalW\"};\\r\\n`;\r\n\r\n this._invertNormalName = state._getFreeVariableName(\"invertNormal\");\r\n\r\n state._emitUniformFromString(this._invertNormalName, \"float\");\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockNormalFinal\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" },\r\n { search: /vEyePosition.w/g, replace: this._invertNormalName },\r\n ]\r\n });\r\n\r\n // _____________________________ Albedo & Opacity ______________________________\r\n state.compilationString += this._getAlbedoOpacityCode();\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"depthPrePass\", comments);\r\n\r\n // _____________________________ AO _______________________________\r\n state.compilationString += this._getAmbientOcclusionCode();\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockLightmapInit\", comments);\r\n\r\n // _____________________________ UNLIT _______________________________\r\n state.compilationString += `#ifdef UNLIT\r\n vec3 diffuseBase = vec3(1., 1., 1.);\r\n #else\\r\\n`;\r\n\r\n // _____________________________ Reflectivity _______________________________\r\n state.compilationString += this._getReflectivityCode(state);\r\n\r\n // _____________________________ Geometry info _________________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockGeometryInfo\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Anisotropy _______________________________________\r\n const anisotropyBlock = this.anisotropy.isConnected ? this.anisotropy.connectedPoint?.ownerBlock as AnisotropyBlock : null;\r\n\r\n if (anisotropyBlock) {\r\n anisotropyBlock.worldPositionConnectionPoint = this.worldPosition;\r\n anisotropyBlock.worldNormalConnectionPoint = this.worldNormal;\r\n\r\n state.compilationString += anisotropyBlock.getCode(state, !this.perturbedNormal.isConnected);\r\n }\r\n\r\n // _____________________________ Reflection _______________________________________\r\n if (reflectionBlock && reflectionBlock.hasTexture) {\r\n state.compilationString += reflectionBlock.getCode(state, anisotropyBlock ? \"anisotropicOut.anisotropicNormal\" : \"normalW\");\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockReflection\", comments, {\r\n replaceStrings: [\r\n { search: /computeReflectionCoords/g, replace: \"computeReflectionCoordsPBR\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n { search: /vReflectionFilteringInfo/g, replace: reflectionBlock?._vReflectionFilteringInfoName ?? \"vReflectionFilteringInfo\" },\r\n ]\r\n });\r\n\r\n // ___________________ Compute Reflectance aka R0 F0 info _________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockReflectance0\", comments, {\r\n replaceStrings: [\r\n { search: /metallicReflectanceFactors/g, replace: this._vMetallicReflectanceFactorsName },\r\n ]\r\n });\r\n // ________________________________ Sheen ______________________________\r\n const sheenBlock = this.sheen.isConnected ? this.sheen.connectedPoint?.ownerBlock as SheenBlock : null;\r\n\r\n if (sheenBlock) {\r\n state.compilationString += sheenBlock.getCode(reflectionBlock);\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockSheen\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Clear Coat ____________________________\r\n const clearcoatBlock = this.clearcoat.isConnected ? this.clearcoat.connectedPoint?.ownerBlock as ClearCoatBlock : null;\r\n const generateTBNSpace = !this.perturbedNormal.isConnected && !this.anisotropy.isConnected;\r\n const isTangentConnectedToPerturbNormal = this.perturbedNormal.isConnected && (this.perturbedNormal.connectedPoint?.ownerBlock as PerturbNormalBlock).worldTangent?.isConnected;\r\n const isTangentConnectedToAnisotropy = this.anisotropy.isConnected && (this.anisotropy.connectedPoint?.ownerBlock as AnisotropyBlock).worldTangent.isConnected;\r\n let vTBNAvailable = isTangentConnectedToPerturbNormal || (!this.perturbedNormal.isConnected && isTangentConnectedToAnisotropy);\r\n\r\n state.compilationString += ClearCoatBlock.GetCode(state, clearcoatBlock, reflectionBlock, worldPosVarName, generateTBNSpace, vTBNAvailable, this.worldNormal.associatedVariableName);\r\n\r\n if (generateTBNSpace) {\r\n vTBNAvailable = clearcoatBlock?.worldTangent.isConnected ?? false;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockClearcoat\", comments, {\r\n replaceStrings: [\r\n { search: /computeReflectionCoords/g, replace: \"computeReflectionCoordsPBR\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n { search: /defined\\(TANGENT\\)/g, replace: vTBNAvailable ? \"defined(TANGENT)\" : \"defined(IGNORE)\" },\r\n ]\r\n });\r\n\r\n // _________________________ Specular Environment Reflectance __________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockReflectance\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n ]\r\n });\r\n\r\n // ___________________________________ SubSurface ______________________________________\r\n const subsurfaceBlock = this.subsurface.isConnected ? this.subsurface.connectedPoint?.ownerBlock as SubSurfaceBlock : null;\r\n const refractionBlock = this.subsurface.isConnected ? (this.subsurface.connectedPoint?.ownerBlock as SubSurfaceBlock).refraction.connectedPoint?.ownerBlock as RefractionBlock : null;\r\n\r\n if (refractionBlock) {\r\n refractionBlock.viewConnectionPoint = this.view;\r\n refractionBlock.indexOfRefractionConnectionPoint = this.indexOfRefraction;\r\n }\r\n\r\n state.compilationString += SubSurfaceBlock.GetCode(state, subsurfaceBlock, reflectionBlock, worldPosVarName);\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockSubSurface\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /SS_REFRACTIONMAP_3D/g, replace: refractionBlock?._define3DName ?? \"SS_REFRACTIONMAP_3D\" },\r\n { search: /SS_LODINREFRACTIONALPHA/g, replace: refractionBlock?._defineLODRefractionAlpha ?? \"SS_LODINREFRACTIONALPHA\" },\r\n { search: /SS_LINEARSPECULARREFRACTION/g, replace: refractionBlock?._defineLinearSpecularRefraction ?? \"SS_LINEARSPECULARREFRACTION\" },\r\n { search: /SS_REFRACTIONMAP_OPPOSITEZ/g, replace: refractionBlock?._defineOppositeZ ?? \"SS_REFRACTIONMAP_OPPOSITEZ\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Direct Lighting Info __________________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockDirectLighting\", comments);\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n\r\n // _____________________________ Compute Final Lit Components ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalLitComponents\", comments);\r\n\r\n // _____________________________ UNLIT (2) ________________________\r\n state.compilationString += `#endif\\r\\n`; // UNLIT\r\n\r\n // _____________________________ Compute Final Unlit Components ________________________\r\n const aoColor = this.ambientColor.isConnected ? this.ambientColor.associatedVariableName : \"vec3(0., 0., 0.)\";\r\n\r\n let aoDirectLightIntensity = PBRBaseMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS.toString();\r\n\r\n if (aoDirectLightIntensity.indexOf('.') === -1) {\r\n aoDirectLightIntensity += \".\";\r\n }\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalUnlitComponents\", comments, {\r\n replaceStrings: [\r\n { search: /vec3 finalEmissive[\\s\\S]*?finalEmissive\\*=vLightingIntensity\\.y;/g, replace: \"\" },\r\n { search: /vAmbientColor/g, replace: aoColor + \" * ambientFromScene\" },\r\n { search: /vAmbientInfos\\.w/g, replace: aoDirectLightIntensity },\r\n ]\r\n });\r\n\r\n // _____________________________ Output Final Color Composition ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalColorComposition\", comments, {\r\n replaceStrings: [\r\n { search: /finalEmissive/g, replace: \"vec3(0.)\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Apply image processing ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockImageProcessing\", comments, {\r\n replaceStrings: [\r\n { search: /visibility/g, replace: \"1.\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Generate debug code ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrDebug\", comments, {\r\n replaceStrings: [\r\n { search: /vNormalW/g, replace: this._vNormalWName },\r\n { search: /vPositionW/g, replace: worldPosVarName },\r\n { search: /albedoTexture\\.rgb;/g, replace: \"vec3(1.);\\r\\ngl_FragColor.rgb = toGammaSpace(gl_FragColor.rgb);\\r\\n\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Generate end points ________________________\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n const remap = mapOutputToVariable[output.name];\r\n if (remap) {\r\n const [varName, conditions] = remap;\r\n if (conditions) {\r\n state.compilationString += `#if ${conditions}\\r\\n`;\r\n }\r\n state.compilationString += `${this._declareOutput(output, state)} = ${varName};\\r\\n`;\r\n if (conditions) {\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(output, state)} = vec3(0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n } else {\r\n console.error(`There's no remapping for the ${output.name} end point! No code generated`);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.lightFalloff = ${this.lightFalloff};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useAlphaTest = ${this.useAlphaTest};\\r\\n`;\r\n codeString += `${this._codeVariableName}.alphaTestCutoff = ${this.alphaTestCutoff};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useAlphaBlending = ${this.useAlphaBlending};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useRadianceOverAlpha = ${this.useRadianceOverAlpha};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useSpecularOverAlpha = ${this.useSpecularOverAlpha};\\r\\n`;\r\n codeString += `${this._codeVariableName}.enableSpecularAntiAliasing = ${this.enableSpecularAntiAliasing};\\r\\n`;\r\n codeString += `${this._codeVariableName}.realTimeFiltering = ${this.realTimeFiltering};\\r\\n`;\r\n codeString += `${this._codeVariableName}.realTimeFilteringQuality = ${this.realTimeFilteringQuality};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useEnergyConservation = ${this.useEnergyConservation};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useRadianceOcclusion = ${this.useRadianceOcclusion};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useHorizonOcclusion = ${this.useHorizonOcclusion};\\r\\n`;\r\n codeString += `${this._codeVariableName}.unlit = ${this.unlit};\\r\\n`;\r\n codeString += `${this._codeVariableName}.forceNormalForward = ${this.forceNormalForward};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugMode = ${this.debugMode};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugLimit = ${this.debugLimit};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugFactor = ${this.debugFactor};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n if (this.light) {\r\n serializationObject.lightId = this.light.id;\r\n }\r\n\r\n serializationObject.lightFalloff = this.lightFalloff;\r\n serializationObject.useAlphaTest = this.useAlphaTest;\r\n serializationObject.alphaTestCutoff = this.alphaTestCutoff;\r\n serializationObject.useAlphaBlending = this.useAlphaBlending;\r\n serializationObject.useRadianceOverAlpha = this.useRadianceOverAlpha;\r\n serializationObject.useSpecularOverAlpha = this.useSpecularOverAlpha;\r\n serializationObject.enableSpecularAntiAliasing = this.enableSpecularAntiAliasing;\r\n serializationObject.realTimeFiltering = this.realTimeFiltering;\r\n serializationObject.realTimeFilteringQuality = this.realTimeFilteringQuality;\r\n serializationObject.useEnergyConservation = this.useEnergyConservation;\r\n serializationObject.useRadianceOcclusion = this.useRadianceOcclusion;\r\n serializationObject.useHorizonOcclusion = this.useHorizonOcclusion;\r\n serializationObject.unlit = this.unlit;\r\n serializationObject.forceNormalForward = this.forceNormalForward;\r\n serializationObject.debugMode = this.debugMode;\r\n serializationObject.debugLimit = this.debugLimit;\r\n serializationObject.debugFactor = this.debugFactor;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n if (serializationObject.lightId) {\r\n this.light = scene.getLightById(serializationObject.lightId);\r\n }\r\n\r\n this.lightFalloff = serializationObject.lightFalloff ?? 0;\r\n this.useAlphaTest = serializationObject.useAlphaTest;\r\n this.alphaTestCutoff = serializationObject.alphaTestCutoff;\r\n this.useAlphaBlending = serializationObject.useAlphaBlending;\r\n this.useRadianceOverAlpha = serializationObject.useRadianceOverAlpha;\r\n this.useSpecularOverAlpha = serializationObject.useSpecularOverAlpha;\r\n this.enableSpecularAntiAliasing = serializationObject.enableSpecularAntiAliasing;\r\n this.realTimeFiltering = !!serializationObject.realTimeFiltering;\r\n this.realTimeFilteringQuality = serializationObject.realTimeFilteringQuality ?? 8;\r\n this.useEnergyConservation = serializationObject.useEnergyConservation;\r\n this.useRadianceOcclusion = serializationObject.useRadianceOcclusion;\r\n this.useHorizonOcclusion = serializationObject.useHorizonOcclusion;\r\n this.unlit = serializationObject.unlit;\r\n this.forceNormalForward = !!serializationObject.forceNormalForward;\r\n this.debugMode = serializationObject.debugMode;\r\n this.debugLimit = serializationObject.debugLimit;\r\n this.debugFactor = serializationObject.debugFactor;\r\n }\r\n}\r\n\r\n_TypeStore.RegisteredTypes[\"BABYLON.PBRMetallicRoughnessBlock\"] = PBRMetallicRoughnessBlock;\r\n"]}
|
|
1
|
+
{"version":3,"file":"pbrMetallicRoughnessBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint, NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { MaterialHelper } from '../../../materialHelper';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Light } from '../../../../Lights/light';\r\nimport { Nullable } from '../../../../types';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { PBRBaseMaterial } from '../../../PBR/pbrBaseMaterial';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport { SheenBlock } from './sheenBlock';\r\nimport { BaseTexture } from '../../../Textures/baseTexture';\r\nimport { GetEnvironmentBRDFTexture } from '../../../../Misc/brdfTextureTools';\r\nimport { MaterialFlags } from '../../../materialFlags';\r\nimport { AnisotropyBlock } from './anisotropyBlock';\r\nimport { ReflectionBlock } from './reflectionBlock';\r\nimport { ClearCoatBlock } from './clearCoatBlock';\r\nimport { SubSurfaceBlock } from './subSurfaceBlock';\r\nimport { RefractionBlock } from './refractionBlock';\r\nimport { PerturbNormalBlock } from '../Fragment/perturbNormalBlock';\r\n\r\nimport { Color3, TmpColors } from '../../../../Maths/math.color';\r\n\r\nconst mapOutputToVariable: { [name: string]: [string, string] } = {\r\n \"ambientClr\": [\"finalAmbient\", \"\"],\r\n \"diffuseDir\": [\"finalDiffuse\", \"\"],\r\n \"specularDir\": [\"finalSpecularScaled\", \"!defined(UNLIT) && defined(SPECULARTERM)\"],\r\n \"clearcoatDir\": [\"finalClearCoatScaled\", \"!defined(UNLIT) && defined(CLEARCOAT)\"],\r\n \"sheenDir\": [\"finalSheenScaled\", \"!defined(UNLIT) && defined(SHEEN)\"],\r\n \"diffuseInd\": [\"finalIrradiance\", \"!defined(UNLIT) && defined(REFLECTION)\"],\r\n \"specularInd\": [\"finalRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION)\"],\r\n \"clearcoatInd\": [\"clearcoatOut.finalClearCoatRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION) && defined(CLEARCOAT)\"],\r\n \"sheenInd\": [\"sheenOut.finalSheenRadianceScaled\", \"!defined(UNLIT) && defined(REFLECTION) && defined(SHEEN) && defined(ENVIRONMENTBRDF)\"],\r\n \"refraction\": [\"subSurfaceOut.finalRefraction\", \"!defined(UNLIT) && defined(SS_REFRACTION)\"],\r\n \"lighting\": [\"finalColor.rgb\", \"\"],\r\n \"shadow\": [\"shadow\", \"\"],\r\n \"alpha\": [\"alpha\", \"\"],\r\n};\r\n\r\n/**\r\n * Block used to implement the PBR metallic/roughness model\r\n */\r\nexport class PBRMetallicRoughnessBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the light associated with this block\r\n */\r\n public light: Nullable<Light>;\r\n\r\n private _lightId: number;\r\n private _scene: Scene;\r\n private _environmentBRDFTexture: Nullable<BaseTexture> = null;\r\n private _environmentBrdfSamplerName: string;\r\n private _vNormalWName: string;\r\n private _invertNormalName: string;\r\n private _metallicReflectanceColor: Color3 = Color3.White();\r\n private _metallicF0Factor = 1;\r\n private _vMetallicReflectanceFactorsName: string;\r\n\r\n /**\r\n * Create a new ReflectionBlock\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(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, false);\r\n this.registerInput(\"cameraPosition\", NodeMaterialBlockConnectionPointTypes.Vector3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"perturbedNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"baseColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"metallic\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"ambientOcc\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"opacity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"ambientColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"reflection\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"reflection\", this, NodeMaterialConnectionPointDirection.Input, ReflectionBlock, \"ReflectionBlock\"));\r\n this.registerInput(\"clearcoat\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Input, ClearCoatBlock, \"ClearCoatBlock\"));\r\n this.registerInput(\"sheen\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sheen\", this, NodeMaterialConnectionPointDirection.Input, SheenBlock, \"SheenBlock\"));\r\n this.registerInput(\"subsurface\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"subsurface\", this, NodeMaterialConnectionPointDirection.Input, SubSurfaceBlock, \"SubSurfaceBlock\"));\r\n this.registerInput(\"anisotropy\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"anisotropy\", this, NodeMaterialConnectionPointDirection.Input, AnisotropyBlock, \"AnisotropyBlock\"));\r\n\r\n this.registerOutput(\"ambientClr\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"diffuseDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"clearcoatDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"sheenDir\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"diffuseInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"clearcoatInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"sheenInd\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"refraction\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"lighting\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"shadow\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"alpha\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n }\r\n\r\n /**\r\n * Intensity of the direct lights e.g. the four lights available in your scene.\r\n * This impacts both the direct diffuse and specular highlights.\r\n */\r\n @editableInPropertyPage(\"Direct lights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public directIntensity: number = 1.0;\r\n\r\n /**\r\n * Intensity of the environment e.g. how much the environment will light the object\r\n * either through harmonics for rough material or through the reflection for shiny ones.\r\n */\r\n @editableInPropertyPage(\"Environment lights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public environmentIntensity: number = 1.0;\r\n\r\n /**\r\n * This is a special control allowing the reduction of the specular highlights coming from the\r\n * four lights of the scene. Those highlights may not be needed in full environment lighting.\r\n */\r\n @editableInPropertyPage(\"Specular highlights\", PropertyTypeForEdition.Float, \"INTENSITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public specularIntensity: number = 1.0;\r\n\r\n /**\r\n * Defines the falloff type used in this material.\r\n * It by default is Physical.\r\n */\r\n @editableInPropertyPage(\"Light falloff\", PropertyTypeForEdition.List, \"LIGHTING & COLORS\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"Physical\", value: PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL },\r\n { label: \"GLTF\", value: PBRBaseMaterial.LIGHTFALLOFF_GLTF },\r\n { label: \"Standard\", value: PBRBaseMaterial.LIGHTFALLOFF_STANDARD },\r\n ]\r\n })\r\n public lightFalloff = 0;\r\n\r\n /**\r\n * Specifies that alpha test should be used\r\n */\r\n @editableInPropertyPage(\"Alpha Testing\", PropertyTypeForEdition.Boolean, \"OPACITY\")\r\n public useAlphaTest: boolean = false;\r\n\r\n /**\r\n * Defines the alpha limits in alpha test mode.\r\n */\r\n @editableInPropertyPage(\"Alpha CutOff\", PropertyTypeForEdition.Float, \"OPACITY\", { min: 0, max: 1, \"notifiers\": { \"update\": true } })\r\n public alphaTestCutoff: number = 0.5;\r\n\r\n /**\r\n * Specifies that alpha blending should be used\r\n */\r\n @editableInPropertyPage(\"Alpha blending\", PropertyTypeForEdition.Boolean, \"OPACITY\")\r\n public useAlphaBlending: boolean = false;\r\n\r\n /**\r\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good example of that. When the street lights reflects on it you can not see what is behind.\r\n */\r\n @editableInPropertyPage(\"Radiance over alpha\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public useRadianceOverAlpha: boolean = true;\r\n\r\n /**\r\n * Specifies that the material will keeps the specular highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good example of that. When sun reflects on it you can not see what is behind.\r\n */\r\n @editableInPropertyPage(\"Specular over alpha\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public useSpecularOverAlpha: boolean = true;\r\n\r\n /**\r\n * Enables specular anti aliasing in the PBR shader.\r\n * It will both interacts on the Geometry for analytical and IBL lighting.\r\n * It also prefilter the roughness map based on the bump values.\r\n */\r\n @editableInPropertyPage(\"Specular anti-aliasing\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public enableSpecularAntiAliasing: boolean = false;\r\n\r\n /**\r\n * Enables realtime filtering on the texture.\r\n */\r\n @editableInPropertyPage(\"Realtime filtering\", PropertyTypeForEdition.Boolean, \"RENDERING\", { \"notifiers\": { \"update\": true } })\r\n public realTimeFiltering: boolean = false;\r\n\r\n /**\r\n * Quality switch for realtime filtering\r\n */\r\n @editableInPropertyPage(\"Realtime filtering quality\", PropertyTypeForEdition.List, \"RENDERING\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"Low\", value: 8 },\r\n { label: \"Medium\", value: 16 },\r\n { label: \"High\", value: 64 },\r\n ]\r\n })\r\n public realTimeFilteringQuality = 8;\r\n\r\n /**\r\n * Defines if the material uses energy conservation.\r\n */\r\n @editableInPropertyPage(\"Energy Conservation\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useEnergyConservation: boolean = true;\r\n\r\n /**\r\n * This parameters will enable/disable radiance occlusion by preventing the radiance to lit\r\n * too much the area relying on ambient texture to define their ambient occlusion.\r\n */\r\n @editableInPropertyPage(\"Radiance occlusion\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useRadianceOcclusion: boolean = true;\r\n\r\n /**\r\n * This parameters will enable/disable Horizon occlusion to prevent normal maps to look shiny when the normal\r\n * makes the reflect vector face the model (under horizon).\r\n */\r\n @editableInPropertyPage(\"Horizon occlusion\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public useHorizonOcclusion: boolean = true;\r\n\r\n /**\r\n * If set to true, no lighting calculations will be applied.\r\n */\r\n @editableInPropertyPage(\"Unlit\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public unlit: boolean = false;\r\n\r\n /**\r\n * Force normal to face away from face.\r\n */\r\n @editableInPropertyPage(\"Force normal forward\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { \"notifiers\": { \"update\": true } })\r\n public forceNormalForward: boolean = false;\r\n\r\n /**\r\n * Defines the material debug mode.\r\n * It helps seeing only some components of the material while troubleshooting.\r\n */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.List, \"DEBUG\", {\r\n \"notifiers\": { \"update\": true }, \"options\": [\r\n { label: \"None\", value: 0 },\r\n // Geometry\r\n { label: \"Normalized position\", value: 1 },\r\n { label: \"Normals\", value: 2 },\r\n { label: \"Tangents\", value: 3 },\r\n { label: \"Bitangents\", value: 4 },\r\n { label: \"Bump Normals\", value: 5 },\r\n //{ label: \"UV1\", value: 6 },\r\n //{ label: \"UV2\", value: 7 },\r\n { label: \"ClearCoat Normals\", value: 8 },\r\n { label: \"ClearCoat Tangents\", value: 9 },\r\n { label: \"ClearCoat Bitangents\", value: 10 },\r\n { label: \"Anisotropic Normals\", value: 11 },\r\n { label: \"Anisotropic Tangents\", value: 12 },\r\n { label: \"Anisotropic Bitangents\", value: 13 },\r\n // Maps\r\n //{ label: \"Emissive Map\", value: 23 },\r\n //{ label: \"Light Map\", value: 24 },\r\n // Env\r\n { label: \"Env Refraction\", value: 40 },\r\n { label: \"Env Reflection\", value: 41 },\r\n { label: \"Env Clear Coat\", value: 42 },\r\n // Lighting\r\n { label: \"Direct Diffuse\", value: 50 },\r\n { label: \"Direct Specular\", value: 51 },\r\n { label: \"Direct Clear Coat\", value: 52 },\r\n { label: \"Direct Sheen\", value: 53 },\r\n { label: \"Env Irradiance\", value: 54 },\r\n // Lighting Params\r\n { label: \"Surface Albedo\", value: 60 },\r\n { label: \"Reflectance 0\", value: 61 },\r\n { label: \"Metallic\", value: 62 },\r\n { label: \"Metallic F0\", value: 71 },\r\n { label: \"Roughness\", value: 63 },\r\n { label: \"AlphaG\", value: 64 },\r\n { label: \"NdotV\", value: 65 },\r\n { label: \"ClearCoat Color\", value: 66 },\r\n { label: \"ClearCoat Roughness\", value: 67 },\r\n { label: \"ClearCoat NdotV\", value: 68 },\r\n { label: \"Transmittance\", value: 69 },\r\n { label: \"Refraction Transmittance\", value: 70 },\r\n // Misc\r\n { label: \"SEO\", value: 80 },\r\n { label: \"EHO\", value: 81 },\r\n { label: \"Energy Factor\", value: 82 },\r\n { label: \"Specular Reflectance\", value: 83 },\r\n { label: \"Clear Coat Reflectance\", value: 84 },\r\n { label: \"Sheen Reflectance\", value: 85 },\r\n { label: \"Luminance Over Alpha\", value: 86 },\r\n { label: \"Alpha\", value: 87 },\r\n ]\r\n })\r\n public debugMode = 0;\r\n\r\n /**\r\n * Specify from where on screen the debug mode should start.\r\n * The value goes from -1 (full screen) to 1 (not visible)\r\n * It helps with side by side comparison against the final render\r\n * This defaults to 0\r\n */\r\n @editableInPropertyPage(\"Split position\", PropertyTypeForEdition.Float, \"DEBUG\", { min: -1, max: 1, \"notifiers\": { \"update\": true } })\r\n public debugLimit = 0;\r\n\r\n /**\r\n * As the default viewing range might not be enough (if the ambient is really small for instance)\r\n * You can use the factor to better multiply the final value.\r\n */\r\n @editableInPropertyPage(\"Output factor\", PropertyTypeForEdition.Float, \"DEBUG\", { min: 0, max: 5, \"notifiers\": { \"update\": true } })\r\n public debugFactor = 1;\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 initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"vLightingIntensity\");\r\n\r\n state._excludeVariableName(\"geometricNormalW\");\r\n state._excludeVariableName(\"normalW\");\r\n state._excludeVariableName(\"faceNormal\");\r\n\r\n state._excludeVariableName(\"albedoOpacityOut\");\r\n state._excludeVariableName(\"surfaceAlbedo\");\r\n state._excludeVariableName(\"alpha\");\r\n\r\n state._excludeVariableName(\"aoOut\");\r\n\r\n state._excludeVariableName(\"baseColor\");\r\n state._excludeVariableName(\"reflectivityOut\");\r\n state._excludeVariableName(\"microSurface\");\r\n state._excludeVariableName(\"roughness\");\r\n\r\n state._excludeVariableName(\"NdotVUnclamped\");\r\n state._excludeVariableName(\"NdotV\");\r\n state._excludeVariableName(\"alphaG\");\r\n state._excludeVariableName(\"AARoughnessFactors\");\r\n state._excludeVariableName(\"environmentBrdf\");\r\n state._excludeVariableName(\"ambientMonochrome\");\r\n state._excludeVariableName(\"seo\");\r\n state._excludeVariableName(\"eho\");\r\n\r\n state._excludeVariableName(\"environmentRadiance\");\r\n state._excludeVariableName(\"irradianceVector\");\r\n state._excludeVariableName(\"environmentIrradiance\");\r\n\r\n state._excludeVariableName(\"diffuseBase\");\r\n state._excludeVariableName(\"specularBase\");\r\n state._excludeVariableName(\"preInfo\");\r\n state._excludeVariableName(\"info\");\r\n state._excludeVariableName(\"shadow\");\r\n\r\n state._excludeVariableName(\"finalDiffuse\");\r\n state._excludeVariableName(\"finalAmbient\");\r\n state._excludeVariableName(\"ambientOcclusionForDirectDiffuse\");\r\n\r\n state._excludeVariableName(\"finalColor\");\r\n\r\n state._excludeVariableName(\"vClipSpacePosition\");\r\n state._excludeVariableName(\"vDebugMode\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"PBRMetallicRoughnessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public get worldPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the view matrix parameter\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the camera position input component\r\n */\r\n public get cameraPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the perturbed normal input component\r\n */\r\n public get perturbedNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the base color input component\r\n */\r\n public get baseColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the metallic input component\r\n */\r\n public get metallic(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the ambient occlusion input component\r\n */\r\n public get ambientOcc(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the opacity input component\r\n */\r\n public get opacity(): NodeMaterialConnectionPoint {\r\n return this._inputs[9];\r\n }\r\n\r\n /**\r\n * Gets the index of refraction input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[10];\r\n }\r\n\r\n /**\r\n * Gets the ambient color input component\r\n */\r\n public get ambientColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[11];\r\n }\r\n\r\n /**\r\n * Gets the reflection object parameters\r\n */\r\n public get reflection(): NodeMaterialConnectionPoint {\r\n return this._inputs[12];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object parameters\r\n */\r\n public get clearcoat(): NodeMaterialConnectionPoint {\r\n return this._inputs[13];\r\n }\r\n\r\n /**\r\n * Gets the sheen object parameters\r\n */\r\n public get sheen(): NodeMaterialConnectionPoint {\r\n return this._inputs[14];\r\n }\r\n\r\n /**\r\n * Gets the sub surface object parameters\r\n */\r\n public get subsurface(): NodeMaterialConnectionPoint {\r\n return this._inputs[15];\r\n }\r\n\r\n /**\r\n * Gets the anisotropy object parameters\r\n */\r\n public get anisotropy(): NodeMaterialConnectionPoint {\r\n return this._inputs[16];\r\n }\r\n\r\n /**\r\n * Gets the ambient output component\r\n */\r\n public get ambientClr(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the diffuse output component\r\n */\r\n public get diffuseDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the specular output component\r\n */\r\n public get specularDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the clear coat output component\r\n */\r\n public get clearcoatDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sheen output component\r\n */\r\n public get sheenDir(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the indirect diffuse output component\r\n */\r\n public get diffuseInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the indirect specular output component\r\n */\r\n public get specularInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n /**\r\n * Gets the indirect clear coat output component\r\n */\r\n public get clearcoatInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[7];\r\n }\r\n\r\n /**\r\n * Gets the indirect sheen output component\r\n */\r\n public get sheenInd(): NodeMaterialConnectionPoint {\r\n return this._outputs[8];\r\n }\r\n\r\n /**\r\n * Gets the refraction output component\r\n */\r\n public get refraction(): NodeMaterialConnectionPoint {\r\n return this._outputs[9];\r\n }\r\n\r\n /**\r\n * Gets the global lighting output component\r\n */\r\n public get lighting(): NodeMaterialConnectionPoint {\r\n return this._outputs[10];\r\n }\r\n\r\n /**\r\n * Gets the shadow output component\r\n */\r\n public get shadow(): NodeMaterialConnectionPoint {\r\n return this._outputs[11];\r\n }\r\n\r\n /**\r\n * Gets the alpha output component\r\n */\r\n public get alpha(): NodeMaterialConnectionPoint {\r\n return this._outputs[12];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.cameraPosition.isConnected) {\r\n let cameraPositionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.CameraPosition);\r\n\r\n if (!cameraPositionInput) {\r\n cameraPositionInput = new InputBlock(\"cameraPosition\");\r\n cameraPositionInput.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);\r\n }\r\n cameraPositionInput.output.connectTo(this.cameraPosition);\r\n }\r\n\r\n if (!this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View);\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 prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n // General\r\n defines.setValue(\"PBR\", true);\r\n defines.setValue(\"METALLICWORKFLOW\", true);\r\n defines.setValue(\"DEBUGMODE\", this.debugMode, true);\r\n defines.setValue(\"NORMALXYSCALE\", true);\r\n defines.setValue(\"BUMP\", this.perturbedNormal.isConnected, true);\r\n defines.setValue(\"LODBASEDMICROSFURACE\", this._scene.getEngine().getCaps().textureLOD);\r\n\r\n // Albedo & Opacity\r\n defines.setValue(\"ALBEDO\", false, true);\r\n defines.setValue(\"OPACITY\", this.opacity.isConnected, true);\r\n\r\n // Ambient occlusion\r\n defines.setValue(\"AMBIENT\", true, true);\r\n defines.setValue(\"AMBIENTINGRAYSCALE\", false, true);\r\n\r\n // Reflectivity\r\n defines.setValue(\"REFLECTIVITY\", false, true);\r\n defines.setValue(\"AOSTOREINMETALMAPRED\", false, true);\r\n defines.setValue(\"METALLNESSSTOREINMETALMAPBLUE\", false, true);\r\n defines.setValue(\"ROUGHNESSSTOREINMETALMAPALPHA\", false, true);\r\n defines.setValue(\"ROUGHNESSSTOREINMETALMAPGREEN\", false, true);\r\n\r\n // Lighting & colors\r\n if (this.lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_STANDARD) {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", false);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", false);\r\n } else if (this.lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_GLTF) {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", false);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", true);\r\n } else {\r\n defines.setValue(\"USEPHYSICALLIGHTFALLOFF\", true);\r\n defines.setValue(\"USEGLTFLIGHTFALLOFF\", false);\r\n }\r\n\r\n // Transparency\r\n const alphaTestCutOffString = this.alphaTestCutoff.toString();\r\n\r\n defines.setValue(\"ALPHABLEND\", this.useAlphaBlending, true);\r\n defines.setValue(\"ALPHAFROMALBEDO\", false, true);\r\n defines.setValue(\"ALPHATEST\", this.useAlphaTest, true);\r\n defines.setValue(\"ALPHATESTVALUE\", alphaTestCutOffString.indexOf('.') < 0 ? alphaTestCutOffString + \".\" : alphaTestCutOffString, true);\r\n defines.setValue(\"OPACITYRGB\", false, true);\r\n\r\n // Rendering\r\n defines.setValue(\"RADIANCEOVERALPHA\", this.useRadianceOverAlpha, true);\r\n defines.setValue(\"SPECULAROVERALPHA\", this.useSpecularOverAlpha, true);\r\n defines.setValue(\"SPECULARAA\", this._scene.getEngine().getCaps().standardDerivatives && this.enableSpecularAntiAliasing, true);\r\n defines.setValue(\"REALTIME_FILTERING\", this.realTimeFiltering, true);\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (scene.getEngine()._features.needTypeSuffixInShaderConstants) {\r\n defines.setValue(\"NUM_SAMPLES\", this.realTimeFilteringQuality + \"u\", true);\r\n } else {\r\n defines.setValue(\"NUM_SAMPLES\", \"\" + this.realTimeFilteringQuality, true);\r\n }\r\n\r\n // Advanced\r\n defines.setValue(\"BRDF_V_HEIGHT_CORRELATED\", true);\r\n defines.setValue(\"MS_BRDF_ENERGY_CONSERVATION\", this.useEnergyConservation, true);\r\n defines.setValue(\"RADIANCEOCCLUSION\", this.useRadianceOcclusion, true);\r\n defines.setValue(\"HORIZONOCCLUSION\", this.useHorizonOcclusion, true);\r\n defines.setValue(\"UNLIT\", this.unlit, true);\r\n defines.setValue(\"FORCENORMALFORWARD\", this.forceNormalForward, true);\r\n\r\n if (this._environmentBRDFTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n defines.setValue(\"ENVIRONMENTBRDF\", true);\r\n defines.setValue(\"ENVIRONMENTBRDF_RGBD\", this._environmentBRDFTexture.isRGBD, true);\r\n } else {\r\n defines.setValue(\"ENVIRONMENTBRDF\", false);\r\n defines.setValue(\"ENVIRONMENTBRDF_RGBD\", false);\r\n }\r\n\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n\r\n if (!defines._areLightsDirty) {\r\n return;\r\n }\r\n\r\n if (!this.light) {\r\n // Lights\r\n MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, true, nodeMaterial.maxSimultaneousLights);\r\n defines._needNormals = true;\r\n\r\n // Multiview\r\n MaterialHelper.PrepareDefinesForMultiview(scene, defines);\r\n } else {\r\n let state = {\r\n needNormals: false,\r\n needRebuild: false,\r\n lightmapMode: false,\r\n shadowEnabled: false,\r\n specularEnabled: false\r\n };\r\n\r\n MaterialHelper.PrepareDefinesForLight(scene, mesh, this.light, this._lightId, defines, true, state);\r\n\r\n if (state.needRebuild) {\r\n defines.rebuild();\r\n }\r\n }\r\n }\r\n\r\n public updateUniformsAndSamples(state: NodeMaterialBuildState, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines, uniformBuffers: string[]) {\r\n for (var lightIndex = 0; lightIndex < nodeMaterial.maxSimultaneousLights; lightIndex++) {\r\n if (!defines[\"LIGHT\" + lightIndex]) {\r\n break;\r\n }\r\n const onlyUpdateBuffersList = state.uniforms.indexOf(\"vLightData\" + lightIndex) >= 0;\r\n MaterialHelper.PrepareUniformsAndSamplersForLight(lightIndex, state.uniforms, state.samplers, defines[\"PROJECTEDLIGHTTEXTURE\" + lightIndex], uniformBuffers, onlyUpdateBuffersList);\r\n }\r\n }\r\n\r\n public isReady(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (this._environmentBRDFTexture && !this._environmentBRDFTexture.isReady()) {\r\n return false;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n if (!nodeMaterial.imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.BindLights(scene, mesh, effect, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n MaterialHelper.BindLight(this.light, this._lightId, scene, effect, true);\r\n }\r\n\r\n effect.setTexture(this._environmentBrdfSamplerName, this._environmentBRDFTexture);\r\n\r\n effect.setFloat2(\"vDebugMode\", this.debugLimit, this.debugFactor);\r\n\r\n const ambientScene = this._scene.ambientColor;\r\n\r\n if (ambientScene) {\r\n effect.setColor3(\"ambientFromScene\", ambientScene);\r\n }\r\n\r\n const invertNormal = (scene.useRightHandedSystem === (scene._mirroredCameraPosition != null));\r\n\r\n effect.setFloat(this._invertNormalName, invertNormal ? -1 : 1);\r\n\r\n effect.setFloat4(\"vLightingIntensity\", this.directIntensity, 1, this.environmentIntensity * this._scene.environmentIntensity, this.specularIntensity);\r\n\r\n // reflectivity bindings\r\n const outside_ior = 1; // consider air as clear coat and other layers would remap in the shader.\r\n const ior = this.indexOfRefraction.connectInputBlock?.value ?? 1.5;\r\n\r\n // We are here deriving our default reflectance from a common value for none metallic surface.\r\n // Based of the schlick fresnel approximation model\r\n // for dielectrics.\r\n const f0 = Math.pow((ior - outside_ior) / (ior + outside_ior), 2);\r\n\r\n // Tweak the default F0 and F90 based on our given setup\r\n this._metallicReflectanceColor.scaleToRef(f0 * this._metallicF0Factor, TmpColors.Color3[0]);\r\n const metallicF90 = this._metallicF0Factor;\r\n\r\n effect.setColor4(this._vMetallicReflectanceFactorsName, TmpColors.Color3[0], metallicF90);\r\n\r\n if (nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.bind(effect);\r\n }\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let worldPos = this.worldPosition;\r\n let comments = `//${this.name}`;\r\n\r\n // Declaration\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n this._lightId = 0;\r\n\r\n state.sharedData.dynamicUniformBlocks.push(this);\r\n } else {\r\n this._lightId = (state.counters[\"lightCounter\"] !== undefined ? state.counters[\"lightCounter\"] : -1) + 1;\r\n state.counters[\"lightCounter\"] = this._lightId;\r\n\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Inject code in vertex\r\n let worldPosVaryingName = \"v_\" + worldPos.associatedVariableName;\r\n if (state._emitVaryingFromString(worldPosVaryingName, \"vec4\")) {\r\n state.compilationString += `${worldPosVaryingName} = ${worldPos.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n const reflectionBlock = this.reflection.isConnected ? this.reflection.connectedPoint?.ownerBlock as ReflectionBlock : null;\r\n\r\n if (reflectionBlock) {\r\n reflectionBlock.viewConnectionPoint = this.view;\r\n }\r\n\r\n state.compilationString += reflectionBlock?.handleVertexSide(state) ?? \"\";\r\n\r\n state._emitUniformFromString(\"vDebugMode\", \"vec2\", \"defined(IGNORE) || DEBUGMODE > 0\");\r\n state._emitUniformFromString(\"ambientFromScene\", \"vec3\");\r\n\r\n if (state._emitVaryingFromString(\"vClipSpacePosition\", \"vec4\", \"defined(IGNORE) || DEBUGMODE > 0\")) {\r\n state._injectAtEnd += `#if DEBUGMODE > 0\\r\\n`;\r\n state._injectAtEnd += `vClipSpacePosition = gl_Position;\\r\\n`;\r\n state._injectAtEnd += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() },\r\n { search: /worldPos/g, replace: worldPos.associatedVariableName }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += `vec4 worldPos = ${worldPos.associatedVariableName};\\r\\n`;\r\n if (this.view.isConnected) {\r\n state.compilationString += `mat4 view = ${this.view.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n }\r\n\r\n private _getAlbedoOpacityCode(): string {\r\n let code = `albedoOpacityOutParams albedoOpacityOut;\\r\\n`;\r\n\r\n const albedoColor = this.baseColor.isConnected ? this.baseColor.associatedVariableName : \"vec3(1.)\";\r\n const opacity = this.opacity.isConnected ? this.opacity.associatedVariableName : \"1.\";\r\n\r\n code += `albedoOpacityBlock(\r\n vec4(${albedoColor}, 1.),\r\n #ifdef ALBEDO\r\n vec4(1.),\r\n vec2(1., 1.),\r\n #endif\r\n #ifdef OPACITY\r\n vec4(${opacity}),\r\n vec2(1., 1.),\r\n #endif\r\n albedoOpacityOut\r\n );\r\n\r\n vec3 surfaceAlbedo = albedoOpacityOut.surfaceAlbedo;\r\n float alpha = albedoOpacityOut.alpha;\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n private _getAmbientOcclusionCode(): string {\r\n let code = `ambientOcclusionOutParams aoOut;\\r\\n`;\r\n\r\n const ao = this.ambientOcc.isConnected ? this.ambientOcc.associatedVariableName : \"1.\";\r\n\r\n code += `ambientOcclusionBlock(\r\n #ifdef AMBIENT\r\n vec3(${ao}),\r\n vec4(0., 1.0, 1.0, 0.),\r\n #endif\r\n aoOut\r\n );\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n private _getReflectivityCode(state: NodeMaterialBuildState): string {\r\n let code = `reflectivityOutParams reflectivityOut;\\r\\n`;\r\n\r\n const aoIntensity = \"1.\";\r\n\r\n this._vMetallicReflectanceFactorsName = state._getFreeVariableName(\"vMetallicReflectanceFactors\");\r\n state._emitUniformFromString(this._vMetallicReflectanceFactorsName, \"vec4\");\r\n\r\n code += `vec3 baseColor = surfaceAlbedo;\r\n\r\n reflectivityBlock(\r\n vec4(${this.metallic.associatedVariableName}, ${this.roughness.associatedVariableName}, 0., 0.),\r\n #ifdef METALLICWORKFLOW\r\n surfaceAlbedo,\r\n ${this._vMetallicReflectanceFactorsName},\r\n #endif\r\n #ifdef REFLECTIVITY\r\n vec3(0., 0., ${aoIntensity}),\r\n vec4(1.),\r\n #endif\r\n #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\r\n aoOut.ambientOcclusionColor,\r\n #endif\r\n #ifdef MICROSURFACEMAP\r\n microSurfaceTexel, <== not handled!\r\n #endif\r\n reflectivityOut\r\n );\r\n\r\n float microSurface = reflectivityOut.microSurface;\r\n float roughness = reflectivityOut.roughness;\r\n\r\n #ifdef METALLICWORKFLOW\r\n surfaceAlbedo = reflectivityOut.surfaceAlbedo;\r\n #endif\r\n #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\r\n aoOut.ambientOcclusionColor = reflectivityOut.ambientOcclusionColor;\r\n #endif\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._scene = state.sharedData.scene;\r\n\r\n if (!this._environmentBRDFTexture) {\r\n this._environmentBRDFTexture = GetEnvironmentBRDFTexture(this._scene);\r\n }\r\n\r\n const reflectionBlock = this.reflection.isConnected ? this.reflection.connectedPoint?.ownerBlock as ReflectionBlock : null;\r\n\r\n if (reflectionBlock) {\r\n // Need those variables to be setup when calling _injectVertexCode\r\n reflectionBlock.worldPositionConnectionPoint = this.worldPosition;\r\n reflectionBlock.cameraPositionConnectionPoint = this.cameraPosition;\r\n reflectionBlock.worldNormalConnectionPoint = this.worldNormal;\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n this._injectVertexCode(state);\r\n\r\n return this;\r\n }\r\n\r\n // Fragment\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.blockingBlocks.push(this);\r\n\r\n let comments = `//${this.name}`;\r\n let worldPosVarName = \"v_\" + this.worldPosition.associatedVariableName;\r\n let normalShading = this.perturbedNormal;\r\n\r\n this._environmentBrdfSamplerName = state._getFreeVariableName(\"environmentBrdfSampler\");\r\n\r\n state._emit2DSampler(this._environmentBrdfSamplerName);\r\n\r\n state.sharedData.hints.needAlphaBlending = state.sharedData.hints.needAlphaBlending || this.useAlphaBlending;\r\n state.sharedData.hints.needAlphaTesting = state.sharedData.hints.needAlphaTesting || this.useAlphaTest;\r\n\r\n state._emitExtension(\"lod\", \"#extension GL_EXT_shader_texture_lod : enable\", \"defined(LODBASEDMICROSFURACE)\");\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n // Image processing uniforms\r\n state.uniforms.push(\"exposureLinear\");\r\n state.uniforms.push(\"contrast\");\r\n state.uniforms.push(\"vInverseScreenSize\");\r\n state.uniforms.push(\"vignetteSettings1\");\r\n state.uniforms.push(\"vignetteSettings2\");\r\n state.uniforms.push(\"vCameraColorCurveNegative\");\r\n state.uniforms.push(\"vCameraColorCurveNeutral\");\r\n state.uniforms.push(\"vCameraColorCurvePositive\");\r\n state.uniforms.push(\"txColorTransform\");\r\n state.uniforms.push(\"colorTransformSettings\");\r\n\r\n //\r\n // Includes\r\n //\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n } else {\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"importanceSampling\", comments);\r\n state._emitFunctionFromInclude(\"pbrHelperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"shadowsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingSetupFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingFalloffFunctions\", comments);\r\n state._emitFunctionFromInclude(\"pbrBRDFFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" }\r\n ]\r\n });\r\n state._emitFunctionFromInclude(\"hdrFilteringFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"pbrDirectLightingFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"pbrIBLFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockAlbedoOpacity\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockReflectivity\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAmbientOcclusion\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAlphaFresnel\", comments);\r\n state._emitFunctionFromInclude(\"pbrBlockAnisotropic\", comments);\r\n\r\n //\r\n // code\r\n //\r\n\r\n state._emitUniformFromString(\"vLightingIntensity\", \"vec4\");\r\n\r\n // _____________________________ Geometry Information ____________________________\r\n this._vNormalWName = state._getFreeVariableName(\"vNormalW\");\r\n\r\n state.compilationString += `vec4 ${this._vNormalWName} = normalize(${this.worldNormal.associatedVariableName});\\r\\n`;\r\n\r\n if (state._registerTempVariable(\"viewDirectionW\")) {\r\n state.compilationString += `vec3 viewDirectionW = normalize(${this.cameraPosition.associatedVariableName} - ${worldPosVarName}.xyz);\\r\\n`;\r\n }\r\n\r\n state.compilationString += `vec3 geometricNormalW = ${this._vNormalWName}.xyz;\\r\\n`;\r\n\r\n state.compilationString += `vec3 normalW = ${normalShading.isConnected ? \"normalize(\" + normalShading.associatedVariableName + \".xyz)\" : \"geometricNormalW\"};\\r\\n`;\r\n\r\n this._invertNormalName = state._getFreeVariableName(\"invertNormal\");\r\n\r\n state._emitUniformFromString(this._invertNormalName, \"float\");\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockNormalFinal\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: worldPosVarName + \".xyz\" },\r\n { search: /vEyePosition.w/g, replace: this._invertNormalName },\r\n ]\r\n });\r\n\r\n // _____________________________ Albedo & Opacity ______________________________\r\n state.compilationString += this._getAlbedoOpacityCode();\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"depthPrePass\", comments);\r\n\r\n // _____________________________ AO _______________________________\r\n state.compilationString += this._getAmbientOcclusionCode();\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockLightmapInit\", comments);\r\n\r\n // _____________________________ UNLIT _______________________________\r\n state.compilationString += `#ifdef UNLIT\r\n vec3 diffuseBase = vec3(1., 1., 1.);\r\n #else\\r\\n`;\r\n\r\n // _____________________________ Reflectivity _______________________________\r\n state.compilationString += this._getReflectivityCode(state);\r\n\r\n // _____________________________ Geometry info _________________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockGeometryInfo\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Anisotropy _______________________________________\r\n const anisotropyBlock = this.anisotropy.isConnected ? this.anisotropy.connectedPoint?.ownerBlock as AnisotropyBlock : null;\r\n\r\n if (anisotropyBlock) {\r\n anisotropyBlock.worldPositionConnectionPoint = this.worldPosition;\r\n anisotropyBlock.worldNormalConnectionPoint = this.worldNormal;\r\n\r\n state.compilationString += anisotropyBlock.getCode(state, !this.perturbedNormal.isConnected);\r\n }\r\n\r\n // _____________________________ Reflection _______________________________________\r\n if (reflectionBlock && reflectionBlock.hasTexture) {\r\n state.compilationString += reflectionBlock.getCode(state, anisotropyBlock ? \"anisotropicOut.anisotropicNormal\" : \"normalW\");\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockReflection\", comments, {\r\n replaceStrings: [\r\n { search: /computeReflectionCoords/g, replace: \"computeReflectionCoordsPBR\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n { search: /vReflectionFilteringInfo/g, replace: reflectionBlock?._vReflectionFilteringInfoName ?? \"vReflectionFilteringInfo\" },\r\n ]\r\n });\r\n\r\n // ___________________ Compute Reflectance aka R0 F0 info _________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockReflectance0\", comments, {\r\n replaceStrings: [\r\n { search: /metallicReflectanceFactors/g, replace: this._vMetallicReflectanceFactorsName },\r\n ]\r\n });\r\n // ________________________________ Sheen ______________________________\r\n const sheenBlock = this.sheen.isConnected ? this.sheen.connectedPoint?.ownerBlock as SheenBlock : null;\r\n\r\n if (sheenBlock) {\r\n state.compilationString += sheenBlock.getCode(reflectionBlock);\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockSheen\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Clear Coat ____________________________\r\n const clearcoatBlock = this.clearcoat.isConnected ? this.clearcoat.connectedPoint?.ownerBlock as ClearCoatBlock : null;\r\n const generateTBNSpace = !this.perturbedNormal.isConnected && !this.anisotropy.isConnected;\r\n const isTangentConnectedToPerturbNormal = this.perturbedNormal.isConnected && (this.perturbedNormal.connectedPoint?.ownerBlock as PerturbNormalBlock).worldTangent?.isConnected;\r\n const isTangentConnectedToAnisotropy = this.anisotropy.isConnected && (this.anisotropy.connectedPoint?.ownerBlock as AnisotropyBlock).worldTangent.isConnected;\r\n let vTBNAvailable = isTangentConnectedToPerturbNormal || (!this.perturbedNormal.isConnected && isTangentConnectedToAnisotropy);\r\n\r\n state.compilationString += ClearCoatBlock.GetCode(state, clearcoatBlock, reflectionBlock, worldPosVarName, generateTBNSpace, vTBNAvailable, this.worldNormal.associatedVariableName);\r\n\r\n if (generateTBNSpace) {\r\n vTBNAvailable = clearcoatBlock?.worldTangent.isConnected ?? false;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockClearcoat\", comments, {\r\n replaceStrings: [\r\n { search: /computeReflectionCoords/g, replace: \"computeReflectionCoordsPBR\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /LODINREFLECTIONALPHA/g, replace: reflectionBlock?._defineLODReflectionAlpha ?? \"LODINREFLECTIONALPHA\" },\r\n { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? \"LINEARSPECULARREFLECTION\" },\r\n { search: /defined\\(TANGENT\\)/g, replace: vTBNAvailable ? \"defined(TANGENT)\" : \"defined(IGNORE)\" },\r\n ]\r\n });\r\n\r\n // _________________________ Specular Environment Reflectance __________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockReflectance\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_SKYBOX/g, replace: reflectionBlock?._defineSkyboxName ?? \"REFLECTIONMAP_SKYBOX\" },\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n ]\r\n });\r\n\r\n // ___________________________________ SubSurface ______________________________________\r\n const subsurfaceBlock = this.subsurface.isConnected ? this.subsurface.connectedPoint?.ownerBlock as SubSurfaceBlock : null;\r\n const refractionBlock = this.subsurface.isConnected ? (this.subsurface.connectedPoint?.ownerBlock as SubSurfaceBlock).refraction.connectedPoint?.ownerBlock as RefractionBlock : null;\r\n\r\n if (refractionBlock) {\r\n refractionBlock.viewConnectionPoint = this.view;\r\n refractionBlock.indexOfRefractionConnectionPoint = this.indexOfRefraction;\r\n }\r\n\r\n state.compilationString += SubSurfaceBlock.GetCode(state, subsurfaceBlock, reflectionBlock, worldPosVarName);\r\n\r\n state._emitFunctionFromInclude(\"pbrBlockSubSurface\", comments, {\r\n replaceStrings: [\r\n { search: /REFLECTIONMAP_3D/g, replace: reflectionBlock?._define3DName ?? \"REFLECTIONMAP_3D\" },\r\n { search: /REFLECTIONMAP_OPPOSITEZ/g, replace: reflectionBlock?._defineOppositeZ ?? \"REFLECTIONMAP_OPPOSITEZ\" },\r\n { search: /REFLECTIONMAP_PROJECTION/g, replace: reflectionBlock?._defineProjectionName ?? \"REFLECTIONMAP_PROJECTION\" },\r\n { search: /SS_REFRACTIONMAP_3D/g, replace: refractionBlock?._define3DName ?? \"SS_REFRACTIONMAP_3D\" },\r\n { search: /SS_LODINREFRACTIONALPHA/g, replace: refractionBlock?._defineLODRefractionAlpha ?? \"SS_LODINREFRACTIONALPHA\" },\r\n { search: /SS_LINEARSPECULARREFRACTION/g, replace: refractionBlock?._defineLinearSpecularRefraction ?? \"SS_LINEARSPECULARREFRACTION\" },\r\n { search: /SS_REFRACTIONMAP_OPPOSITEZ/g, replace: refractionBlock?._defineOppositeZ ?? \"SS_REFRACTIONMAP_OPPOSITEZ\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Direct Lighting Info __________________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockDirectLighting\", comments);\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n\r\n // _____________________________ Compute Final Lit Components ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalLitComponents\", comments);\r\n\r\n // _____________________________ UNLIT (2) ________________________\r\n state.compilationString += `#endif\\r\\n`; // UNLIT\r\n\r\n // _____________________________ Compute Final Unlit Components ________________________\r\n const aoColor = this.ambientColor.isConnected ? this.ambientColor.associatedVariableName : \"vec3(0., 0., 0.)\";\r\n\r\n let aoDirectLightIntensity = PBRBaseMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS.toString();\r\n\r\n if (aoDirectLightIntensity.indexOf('.') === -1) {\r\n aoDirectLightIntensity += \".\";\r\n }\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalUnlitComponents\", comments, {\r\n replaceStrings: [\r\n { search: /vec3 finalEmissive[\\s\\S]*?finalEmissive\\*=vLightingIntensity\\.y;/g, replace: \"\" },\r\n { search: /vAmbientColor/g, replace: aoColor + \" * ambientFromScene\" },\r\n { search: /vAmbientInfos\\.w/g, replace: aoDirectLightIntensity },\r\n ]\r\n });\r\n\r\n // _____________________________ Output Final Color Composition ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockFinalColorComposition\", comments, {\r\n replaceStrings: [\r\n { search: /finalEmissive/g, replace: \"vec3(0.)\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Apply image processing ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrBlockImageProcessing\", comments, {\r\n replaceStrings: [\r\n { search: /visibility/g, replace: \"1.\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Generate debug code ________________________\r\n state.compilationString += state._emitCodeFromInclude(\"pbrDebug\", comments, {\r\n replaceStrings: [\r\n { search: /vNormalW/g, replace: this._vNormalWName },\r\n { search: /vPositionW/g, replace: worldPosVarName },\r\n { search: /albedoTexture\\.rgb;/g, replace: \"vec3(1.);\\r\\ngl_FragColor.rgb = toGammaSpace(gl_FragColor.rgb);\\r\\n\" },\r\n ]\r\n });\r\n\r\n // _____________________________ Generate end points ________________________\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n const remap = mapOutputToVariable[output.name];\r\n if (remap) {\r\n const [varName, conditions] = remap;\r\n if (conditions) {\r\n state.compilationString += `#if ${conditions}\\r\\n`;\r\n }\r\n state.compilationString += `${this._declareOutput(output, state)} = ${varName};\\r\\n`;\r\n if (conditions) {\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(output, state)} = vec3(0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n } else {\r\n console.error(`There's no remapping for the ${output.name} end point! No code generated`);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.lightFalloff = ${this.lightFalloff};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useAlphaTest = ${this.useAlphaTest};\\r\\n`;\r\n codeString += `${this._codeVariableName}.alphaTestCutoff = ${this.alphaTestCutoff};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useAlphaBlending = ${this.useAlphaBlending};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useRadianceOverAlpha = ${this.useRadianceOverAlpha};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useSpecularOverAlpha = ${this.useSpecularOverAlpha};\\r\\n`;\r\n codeString += `${this._codeVariableName}.enableSpecularAntiAliasing = ${this.enableSpecularAntiAliasing};\\r\\n`;\r\n codeString += `${this._codeVariableName}.realTimeFiltering = ${this.realTimeFiltering};\\r\\n`;\r\n codeString += `${this._codeVariableName}.realTimeFilteringQuality = ${this.realTimeFilteringQuality};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useEnergyConservation = ${this.useEnergyConservation};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useRadianceOcclusion = ${this.useRadianceOcclusion};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useHorizonOcclusion = ${this.useHorizonOcclusion};\\r\\n`;\r\n codeString += `${this._codeVariableName}.unlit = ${this.unlit};\\r\\n`;\r\n codeString += `${this._codeVariableName}.forceNormalForward = ${this.forceNormalForward};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugMode = ${this.debugMode};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugLimit = ${this.debugLimit};\\r\\n`;\r\n codeString += `${this._codeVariableName}.debugFactor = ${this.debugFactor};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n if (this.light) {\r\n serializationObject.lightId = this.light.id;\r\n }\r\n\r\n serializationObject.lightFalloff = this.lightFalloff;\r\n serializationObject.useAlphaTest = this.useAlphaTest;\r\n serializationObject.alphaTestCutoff = this.alphaTestCutoff;\r\n serializationObject.useAlphaBlending = this.useAlphaBlending;\r\n serializationObject.useRadianceOverAlpha = this.useRadianceOverAlpha;\r\n serializationObject.useSpecularOverAlpha = this.useSpecularOverAlpha;\r\n serializationObject.enableSpecularAntiAliasing = this.enableSpecularAntiAliasing;\r\n serializationObject.realTimeFiltering = this.realTimeFiltering;\r\n serializationObject.realTimeFilteringQuality = this.realTimeFilteringQuality;\r\n serializationObject.useEnergyConservation = this.useEnergyConservation;\r\n serializationObject.useRadianceOcclusion = this.useRadianceOcclusion;\r\n serializationObject.useHorizonOcclusion = this.useHorizonOcclusion;\r\n serializationObject.unlit = this.unlit;\r\n serializationObject.forceNormalForward = this.forceNormalForward;\r\n serializationObject.debugMode = this.debugMode;\r\n serializationObject.debugLimit = this.debugLimit;\r\n serializationObject.debugFactor = this.debugFactor;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n if (serializationObject.lightId) {\r\n this.light = scene.getLightById(serializationObject.lightId);\r\n }\r\n\r\n this.lightFalloff = serializationObject.lightFalloff ?? 0;\r\n this.useAlphaTest = serializationObject.useAlphaTest;\r\n this.alphaTestCutoff = serializationObject.alphaTestCutoff;\r\n this.useAlphaBlending = serializationObject.useAlphaBlending;\r\n this.useRadianceOverAlpha = serializationObject.useRadianceOverAlpha;\r\n this.useSpecularOverAlpha = serializationObject.useSpecularOverAlpha;\r\n this.enableSpecularAntiAliasing = serializationObject.enableSpecularAntiAliasing;\r\n this.realTimeFiltering = !!serializationObject.realTimeFiltering;\r\n this.realTimeFilteringQuality = serializationObject.realTimeFilteringQuality ?? 8;\r\n this.useEnergyConservation = serializationObject.useEnergyConservation;\r\n this.useRadianceOcclusion = serializationObject.useRadianceOcclusion;\r\n this.useHorizonOcclusion = serializationObject.useHorizonOcclusion;\r\n this.unlit = serializationObject.unlit;\r\n this.forceNormalForward = !!serializationObject.forceNormalForward;\r\n this.debugMode = serializationObject.debugMode;\r\n this.debugLimit = serializationObject.debugLimit;\r\n this.debugFactor = serializationObject.debugFactor;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PBRMetallicRoughnessBlock\", PBRMetallicRoughnessBlock);\r\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';
|
|
3
|
-
import { NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';
|
|
4
|
-
import { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';
|
|
5
|
-
import {
|
|
6
|
-
import { NodeMaterialConnectionPointCustomObject } from "../../nodeMaterialConnectionPointCustomObject";
|
|
7
|
-
import { ReflectionTextureBaseBlock } from '../Dual/reflectionTextureBaseBlock';
|
|
8
|
-
import { Texture } from '../../../Textures/texture';
|
|
9
|
-
import { editableInPropertyPage, PropertyTypeForEdition } from "../../nodeMaterialDecorator";
|
|
10
|
-
import { Scalar } from '../../../../Maths/math.scalar';
|
|
2
|
+
import { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes.js';
|
|
3
|
+
import { NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint.js';
|
|
4
|
+
import { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets.js';
|
|
5
|
+
import { RegisterClass } from '../../../../Misc/typeStore.js';
|
|
6
|
+
import { NodeMaterialConnectionPointCustomObject } from "../../nodeMaterialConnectionPointCustomObject.js";
|
|
7
|
+
import { ReflectionTextureBaseBlock } from '../Dual/reflectionTextureBaseBlock.js';
|
|
8
|
+
import { Texture } from '../../../Textures/texture.js';
|
|
9
|
+
import { editableInPropertyPage, PropertyTypeForEdition } from "../../nodeMaterialDecorator.js";
|
|
10
|
+
import { Scalar } from '../../../../Maths/math.scalar.js';
|
|
11
11
|
/**
|
|
12
12
|
* Block used to implement the reflection module of the PBR material
|
|
13
13
|
*/
|
|
@@ -325,5 +325,5 @@ var ReflectionBlock = /** @class */ (function (_super) {
|
|
|
325
325
|
return ReflectionBlock;
|
|
326
326
|
}(ReflectionTextureBaseBlock));
|
|
327
327
|
export { ReflectionBlock };
|
|
328
|
-
|
|
328
|
+
RegisterClass("BABYLON.ReflectionBlock", ReflectionBlock);
|
|
329
329
|
//# sourceMappingURL=reflectionBlock.js.map
|