@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":"postProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/postProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { Observable, Observer } from \"../Misc/observable\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\n\r\nimport { RenderTargetCreationOptions } from \"../Materials/Textures/renderTargetCreationOptions\";\r\nimport \"../Shaders/postprocess.vertex\";\r\nimport { IInspectable } from '../Misc/iInspectable';\r\nimport { Engine } from '../Engines/engine';\r\nimport { Color4 } from '../Maths/math.color';\r\n\r\nimport \"../Engines/Extensions/engine.renderTarget\";\r\nimport { NodeMaterial } from '../Materials/Node/nodeMaterial';\r\nimport { serialize, serializeAsColor4, SerializationHelper } from '../Misc/decorators';\r\nimport { _TypeStore } from '../Misc/typeStore';\r\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\r\nimport { AbstractScene } from \"../abstractScene\";\r\nimport { RenderTargetWrapper } from \"../Engines/renderTargetWrapper\";\r\n\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type InternalTexture = import(\"../Materials/Textures/internalTexture\").InternalTexture;\r\ndeclare type WebVRFreeCamera = import(\"../Cameras/VR/webVRCamera\").WebVRFreeCamera;\r\ndeclare type Animation = import(\"../Animations/animation\").Animation;\r\ndeclare type PrePassRenderer = import(\"../Rendering/prePassRenderer\").PrePassRenderer;\r\ndeclare type PrePassEffectConfiguration = import(\"../Rendering/prePassEffectConfiguration\").PrePassEffectConfiguration;\r\n\r\n/**\r\n * Size options for a post process\r\n */\r\nexport type PostProcessOptions = { width: number, height: number };\r\n\r\ntype TextureCache = { texture: RenderTargetWrapper, postProcessChannel: number, lastUsedRenderId: number };\r\n\r\n/**\r\n * PostProcess can be used to apply a shader to a texture after it has been rendered\r\n * See https://doc.babylonjs.com/how_to/how_to_use_postprocesses\r\n */\r\nexport class PostProcess {\r\n /** @hidden */\r\n public _parentContainer: Nullable<AbstractScene> = null;\r\n\r\n /**\r\n * Gets or sets the unique id of the post process\r\n */\r\n @serialize()\r\n public uniqueId: number;\r\n\r\n /** Name of the PostProcess. */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * Width of the texture to apply the post process on\r\n */\r\n @serialize()\r\n public width = -1;\r\n\r\n /**\r\n * Height of the texture to apply the post process on\r\n */\r\n @serialize()\r\n public height = -1;\r\n\r\n /**\r\n * Gets the node material used to create this postprocess (null if the postprocess was manually created)\r\n */\r\n public nodeMaterialSource: Nullable<NodeMaterial> = null;\r\n\r\n /**\r\n * Internal, reference to the location where this postprocess was output to. (Typically the texture on the next postprocess in the chain)\r\n * @hidden\r\n */\r\n public _outputTexture: Nullable<RenderTargetWrapper> = null;\r\n /**\r\n * Sampling mode used by the shader\r\n * See https://doc.babylonjs.com/classes/3.1/texture\r\n */\r\n @serialize()\r\n public renderTargetSamplingMode: number;\r\n /**\r\n * Clear color to use when screen clearing\r\n */\r\n @serializeAsColor4()\r\n public clearColor: Color4;\r\n /**\r\n * If the buffer needs to be cleared before applying the post process. (default: true)\r\n * Should be set to false if shader will overwrite all previous pixels.\r\n */\r\n @serialize()\r\n public autoClear = true;\r\n /**\r\n * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)\r\n */\r\n @serialize()\r\n public alphaMode = 0;\r\n /**\r\n * Sets the setAlphaBlendConstants of the babylon engine\r\n */\r\n @serialize()\r\n public alphaConstants: Color4;\r\n /**\r\n * Animations to be used for the post processing\r\n */\r\n public animations = new Array<Animation>();\r\n\r\n /**\r\n * Enable Pixel Perfect mode where texture is not scaled to be power of 2.\r\n * Can only be used on a single postprocess or on the last one of a chain. (default: false)\r\n */\r\n @serialize()\r\n public enablePixelPerfectMode = false;\r\n\r\n /**\r\n * Force the postprocess to be applied without taking in account viewport\r\n */\r\n @serialize()\r\n public forceFullscreenViewport = true;\r\n\r\n /**\r\n * List of inspectable custom properties (used by the Inspector)\r\n * @see https://doc.babylonjs.com/how_to/debug_layer#extensibility\r\n */\r\n public inspectableCustomProperties: IInspectable[];\r\n\r\n /**\r\n * Scale mode for the post process (default: Engine.SCALEMODE_FLOOR)\r\n *\r\n * | Value | Type | Description |\r\n * | ----- | ----------------------------------- | ----------- |\r\n * | 1 | SCALEMODE_FLOOR | [engine.scalemode_floor](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_floor) |\r\n * | 2 | SCALEMODE_NEAREST | [engine.scalemode_nearest](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_nearest) |\r\n * | 3 | SCALEMODE_CEILING | [engine.scalemode_ceiling](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_ceiling) |\r\n *\r\n */\r\n @serialize()\r\n public scaleMode = 1;\r\n /**\r\n * Force textures to be a power of two (default: false)\r\n */\r\n @serialize()\r\n public alwaysForcePOT = false;\r\n\r\n @serialize(\"samples\")\r\n private _samples = 1;\r\n\r\n /**\r\n * Number of sample textures (default: 1)\r\n */\r\n public get samples() {\r\n return this._samples;\r\n }\r\n\r\n public set samples(n: number) {\r\n this._samples = Math.min(n, this._engine.getCaps().maxMSAASamples);\r\n\r\n this._textures.forEach((texture) => {\r\n if (texture.samples !== this._samples) {\r\n this._engine.updateRenderTargetTextureSampleCount(texture, this._samples);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Modify the scale of the post process to be the same as the viewport (default: false)\r\n */\r\n @serialize()\r\n public adaptScaleToCurrentViewport = false;\r\n\r\n private _camera: Camera;\r\n protected _scene: Scene;\r\n private _engine: Engine;\r\n\r\n private _options: number | PostProcessOptions;\r\n private _reusable = false;\r\n private _renderId = 0;\r\n private _textureType: number;\r\n private _textureFormat: number;\r\n /**\r\n * Smart array of input and output textures for the post process.\r\n * @hidden\r\n */\r\n public _textures = new SmartArray<RenderTargetWrapper>(2);\r\n /**\r\n * Smart array of input and output textures for the post process.\r\n * @hidden\r\n */\r\n private _textureCache: TextureCache[] = [];\r\n /**\r\n * The index in _textures that corresponds to the output texture.\r\n * @hidden\r\n */\r\n public _currentRenderTextureInd = 0;\r\n private _drawWrapper: DrawWrapper;\r\n private _samplers: string[];\r\n private _fragmentUrl: string;\r\n private _vertexUrl: string;\r\n private _parameters: string[];\r\n protected _postProcessDefines: Nullable<string>;\r\n private _scaleRatio = new Vector2(1, 1);\r\n protected _indexParameters: any;\r\n private _shareOutputWithPostProcess: Nullable<PostProcess>;\r\n private _texelSize = Vector2.Zero();\r\n /** @hidden */\r\n public _forcedOutputTexture: Nullable<RenderTargetWrapper>;\r\n\r\n /**\r\n * Prepass configuration in case this post process needs a texture from prepass\r\n * @hidden\r\n */\r\n public _prePassEffectConfiguration: PrePassEffectConfiguration;\r\n\r\n /**\r\n * Returns the fragment url or shader name used in the post process.\r\n * @returns the fragment url or name in the shader store.\r\n */\r\n public getEffectName(): string {\r\n return this._fragmentUrl;\r\n }\r\n\r\n // Events\r\n\r\n /**\r\n * An event triggered when the postprocess is activated.\r\n */\r\n public onActivateObservable = new Observable<Camera>();\r\n\r\n private _onActivateObserver: Nullable<Observer<Camera>>;\r\n /**\r\n * A function that is added to the onActivateObservable\r\n */\r\n public set onActivate(callback: Nullable<(camera: Camera) => void>) {\r\n if (this._onActivateObserver) {\r\n this.onActivateObservable.remove(this._onActivateObserver);\r\n }\r\n if (callback) {\r\n this._onActivateObserver = this.onActivateObservable.add(callback);\r\n }\r\n }\r\n\r\n /**\r\n * An event triggered when the postprocess changes its size.\r\n */\r\n public onSizeChangedObservable = new Observable<PostProcess>();\r\n\r\n private _onSizeChangedObserver: Nullable<Observer<PostProcess>>;\r\n /**\r\n * A function that is added to the onSizeChangedObservable\r\n */\r\n public set onSizeChanged(callback: (postProcess: PostProcess) => void) {\r\n if (this._onSizeChangedObserver) {\r\n this.onSizeChangedObservable.remove(this._onSizeChangedObserver);\r\n }\r\n this._onSizeChangedObserver = this.onSizeChangedObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered when the postprocess applies its effect.\r\n */\r\n public onApplyObservable = new Observable<Effect>();\r\n\r\n private _onApplyObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onApplyObservable\r\n */\r\n public set onApply(callback: (effect: Effect) => void) {\r\n if (this._onApplyObserver) {\r\n this.onApplyObservable.remove(this._onApplyObserver);\r\n }\r\n this._onApplyObserver = this.onApplyObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered before rendering the postprocess\r\n */\r\n public onBeforeRenderObservable = new Observable<Effect>();\r\n\r\n private _onBeforeRenderObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onBeforeRenderObservable\r\n */\r\n public set onBeforeRender(callback: (effect: Effect) => void) {\r\n if (this._onBeforeRenderObserver) {\r\n this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);\r\n }\r\n this._onBeforeRenderObserver = this.onBeforeRenderObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered after rendering the postprocess\r\n */\r\n public onAfterRenderObservable = new Observable<Effect>();\r\n\r\n private _onAfterRenderObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onAfterRenderObservable\r\n */\r\n public set onAfterRender(callback: (efect: Effect) => void) {\r\n if (this._onAfterRenderObserver) {\r\n this.onAfterRenderObservable.remove(this._onAfterRenderObserver);\r\n }\r\n this._onAfterRenderObserver = this.onAfterRenderObservable.add(callback);\r\n }\r\n\r\n /**\r\n * The input texture for this post process and the output texture of the previous post process. When added to a pipeline the previous post process will\r\n * render it's output into this texture and this texture will be used as textureSampler in the fragment shader of this post process.\r\n */\r\n public get inputTexture(): RenderTargetWrapper {\r\n return this._textures.data[this._currentRenderTextureInd];\r\n }\r\n\r\n public set inputTexture(value: RenderTargetWrapper) {\r\n this._forcedOutputTexture = value;\r\n }\r\n\r\n /**\r\n * Since inputTexture should always be defined, if we previously manually set `inputTexture`,\r\n * the only way to unset it is to use this function to restore its internal state\r\n */\r\n public restoreDefaultInputTexture() {\r\n if (this._forcedOutputTexture) {\r\n this._forcedOutputTexture = null;\r\n this.markTextureDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the camera which post process is applied to.\r\n * @returns The camera the post process is applied to.\r\n */\r\n public getCamera(): Camera {\r\n return this._camera;\r\n }\r\n\r\n /**\r\n * Gets the texel size of the postprocess.\r\n * See https://en.wikipedia.org/wiki/Texel_(graphics)\r\n */\r\n public get texelSize(): Vector2 {\r\n if (this._shareOutputWithPostProcess) {\r\n return this._shareOutputWithPostProcess.texelSize;\r\n }\r\n\r\n if (this._forcedOutputTexture) {\r\n this._texelSize.copyFromFloats(1.0 / this._forcedOutputTexture.width, 1.0 / this._forcedOutputTexture.height);\r\n }\r\n\r\n return this._texelSize;\r\n }\r\n\r\n /**\r\n * Creates a new instance PostProcess\r\n * @param name The name of the PostProcess.\r\n * @param fragmentUrl The url of the fragment shader to be used.\r\n * @param parameters Array of the names of uniform non-sampler2D variables that will be passed to the shader.\r\n * @param samplers Array of the names of uniform sampler2D variables that will be passed to the shader.\r\n * @param options The required width/height ratio to downsize to before computing the render pass. (Use 1.0 for full size)\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param defines String of defines that will be set when running the fragment shader. (default: null)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param vertexUrl The url of the vertex shader to be used. (default: \"postprocess\")\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param blockCompilation If the shader should not be compiled immediatly. (default: false)\r\n * @param textureFormat Format of textures used when performing the post process. (default: TEXTUREFORMAT_RGBA)\r\n */\r\n constructor(\r\n name: string,\r\n fragmentUrl: string, parameters: Nullable<string[]>, samplers: Nullable<string[]>, options: number | PostProcessOptions, camera: Nullable<Camera>,\r\n samplingMode: number = 1, engine?: Engine, reusable?: boolean, defines: Nullable<string> = null, textureType: number = 0, vertexUrl: string = \"postprocess\",\r\n indexParameters?: any, blockCompilation = false, textureFormat = 5) {\r\n\r\n this.name = name;\r\n if (camera != null) {\r\n this._camera = camera;\r\n this._scene = camera.getScene();\r\n camera.attachPostProcess(this);\r\n this._engine = this._scene.getEngine();\r\n\r\n this._scene.postProcesses.push(this);\r\n this.uniqueId = this._scene.getUniqueId();\r\n }\r\n else if (engine) {\r\n this._engine = engine;\r\n this._engine.postProcesses.push(this);\r\n }\r\n this._options = options;\r\n this.renderTargetSamplingMode = samplingMode ? samplingMode : 1;\r\n this._reusable = reusable || false;\r\n this._textureType = textureType;\r\n this._textureFormat = textureFormat;\r\n\r\n this._samplers = samplers || [];\r\n this._samplers.push(\"textureSampler\");\r\n\r\n this._fragmentUrl = fragmentUrl;\r\n this._vertexUrl = vertexUrl;\r\n this._parameters = parameters || [];\r\n\r\n this._parameters.push(\"scale\");\r\n\r\n this._indexParameters = indexParameters;\r\n this._drawWrapper = new DrawWrapper(this._engine);\r\n\r\n if (!blockCompilation) {\r\n this.updateEffect(defines);\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"PostProcess\";\r\n }\r\n\r\n /**\r\n * Gets the engine which this post process belongs to.\r\n * @returns The engine the post process was enabled with.\r\n */\r\n public getEngine(): Engine {\r\n return this._engine;\r\n }\r\n\r\n /**\r\n * The effect that is created when initializing the post process.\r\n * @returns The created effect corresponding the the postprocess.\r\n */\r\n public getEffect(): Effect {\r\n return this._drawWrapper.effect!;\r\n }\r\n\r\n /**\r\n * To avoid multiple redundant textures for multiple post process, the output the output texture for this post process can be shared with another.\r\n * @param postProcess The post process to share the output with.\r\n * @returns This post process.\r\n */\r\n public shareOutputWith(postProcess: PostProcess): PostProcess {\r\n this._disposeTextures();\r\n\r\n this._shareOutputWithPostProcess = postProcess;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Reverses the effect of calling shareOutputWith and returns the post process back to its original state.\r\n * This should be called if the post process that shares output with this post process is disabled/disposed.\r\n */\r\n public useOwnOutput() {\r\n if (this._textures.length == 0) {\r\n this._textures = new SmartArray<RenderTargetWrapper>(2);\r\n }\r\n\r\n this._shareOutputWithPostProcess = null;\r\n }\r\n\r\n /**\r\n * Updates the effect with the current post process compile time values and recompiles the shader.\r\n * @param defines Define statements that should be added at the beginning of the shader. (default: null)\r\n * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)\r\n * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param onCompiled Called when the shader has been compiled.\r\n * @param onError Called if there is an error when compiling a shader.\r\n * @param vertexUrl The url of the vertex shader to be used (default: the one given at construction time)\r\n * @param fragmentUrl The url of the fragment shader to be used (default: the one given at construction time)\r\n */\r\n public updateEffect(defines: Nullable<string> = null, uniforms: Nullable<string[]> = null, samplers: Nullable<string[]> = null, indexParameters?: any,\r\n onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void, vertexUrl?: string, fragmentUrl?: string) {\r\n this._postProcessDefines = defines;\r\n this._drawWrapper.effect = this._engine.createEffect({ vertex: vertexUrl ?? this._vertexUrl, fragment: fragmentUrl ?? this._fragmentUrl },\r\n [\"position\"],\r\n uniforms || this._parameters,\r\n samplers || this._samplers,\r\n defines !== null ? defines : \"\",\r\n undefined,\r\n onCompiled,\r\n onError,\r\n indexParameters || this._indexParameters\r\n );\r\n }\r\n\r\n /**\r\n * The post process is reusable if it can be used multiple times within one frame.\r\n * @returns If the post process is reusable\r\n */\r\n public isReusable(): boolean {\r\n return this._reusable;\r\n }\r\n\r\n /** invalidate frameBuffer to hint the postprocess to create a depth buffer */\r\n public markTextureDirty(): void {\r\n this.width = -1;\r\n }\r\n\r\n private _createRenderTargetTexture(textureSize: { width: number, height: number }, textureOptions: RenderTargetCreationOptions, channel = 0) {\r\n for (let i = 0; i < this._textureCache.length; i++) {\r\n if (this._textureCache[i].texture.width === textureSize.width &&\r\n this._textureCache[i].texture.height === textureSize.height &&\r\n this._textureCache[i].postProcessChannel === channel &&\r\n this._textureCache[i].texture._generateDepthBuffer === textureOptions.generateDepthBuffer) {\r\n return this._textureCache[i].texture;\r\n }\r\n }\r\n\r\n const tex = this._engine.createRenderTargetTexture(textureSize, textureOptions);\r\n this._textureCache.push({ texture: tex, postProcessChannel: channel, lastUsedRenderId: -1 });\r\n\r\n return tex;\r\n }\r\n\r\n private _flushTextureCache() {\r\n const currentRenderId = this._renderId;\r\n\r\n for (let i = this._textureCache.length - 1; i >= 0; i--) {\r\n if (currentRenderId - this._textureCache[i].lastUsedRenderId > 100) {\r\n let currentlyUsed = false;\r\n for (var j = 0; j < this._textures.length; j++) {\r\n if (this._textures.data[j] === this._textureCache[i].texture) {\r\n currentlyUsed = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!currentlyUsed) {\r\n this._textureCache[i].texture.dispose();\r\n this._textureCache.splice(i, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _resize(width: number, height: number, camera: Camera, needMipMaps: boolean, forceDepthStencil?: boolean) {\r\n if (this._textures.length > 0) {\r\n this._textures.reset();\r\n }\r\n\r\n this.width = width;\r\n this.height = height;\r\n\r\n let firstPP = null;\r\n for (let i = 0; i < camera._postProcesses.length; i++) {\r\n if (camera._postProcesses[i] !== null) {\r\n firstPP = camera._postProcesses[i];\r\n break;\r\n }\r\n }\r\n\r\n let textureSize = { width: this.width, height: this.height };\r\n let textureOptions = {\r\n generateMipMaps: needMipMaps,\r\n generateDepthBuffer: forceDepthStencil || firstPP === this,\r\n generateStencilBuffer: (forceDepthStencil || firstPP === this) && this._engine.isStencilEnable,\r\n samplingMode: this.renderTargetSamplingMode,\r\n type: this._textureType,\r\n format: this._textureFormat\r\n };\r\n\r\n this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 0));\r\n\r\n if (this._reusable) {\r\n this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 1));\r\n }\r\n\r\n this._texelSize.copyFromFloats(1.0 / this.width, 1.0 / this.height);\r\n\r\n this.onSizeChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Activates the post process by intializing the textures to be used when executed. Notifies onActivateObservable.\r\n * When this post process is used in a pipeline, this is call will bind the input texture of this post process to the output of the previous.\r\n * @param camera The camera that will be used in the post process. This camera will be used when calling onActivateObservable.\r\n * @param sourceTexture The source texture to be inspected to get the width and height if not specified in the post process constructor. (default: null)\r\n * @param forceDepthStencil If true, a depth and stencil buffer will be generated. (default: false)\r\n * @returns The render target wrapper that was bound to be written to.\r\n */\r\n public activate(camera: Nullable<Camera>, sourceTexture: Nullable<InternalTexture> = null, forceDepthStencil?: boolean): RenderTargetWrapper {\r\n camera = camera || this._camera;\r\n\r\n var scene = camera.getScene();\r\n var engine = scene.getEngine();\r\n var maxSize = engine.getCaps().maxTextureSize;\r\n\r\n var requiredWidth = ((sourceTexture ? sourceTexture.width : this._engine.getRenderWidth(true)) * <number>this._options) | 0;\r\n var requiredHeight = ((sourceTexture ? sourceTexture.height : this._engine.getRenderHeight(true)) * <number>this._options) | 0;\r\n\r\n // If rendering to a webvr camera's left or right eye only half the width should be used to avoid resize when rendered to screen\r\n var webVRCamera = (<WebVRFreeCamera>camera.parent);\r\n if (webVRCamera && (webVRCamera.leftCamera == camera || webVRCamera.rightCamera == camera)) {\r\n requiredWidth /= 2;\r\n }\r\n\r\n var desiredWidth = ((<PostProcessOptions>this._options).width || requiredWidth);\r\n var desiredHeight = (<PostProcessOptions>this._options).height || requiredHeight;\r\n\r\n const needMipMaps =\r\n this.renderTargetSamplingMode !== 7 &&\r\n this.renderTargetSamplingMode !== 1 &&\r\n this.renderTargetSamplingMode !== 2;\r\n\r\n if (!this._shareOutputWithPostProcess && !this._forcedOutputTexture) {\r\n\r\n if (this.adaptScaleToCurrentViewport) {\r\n let currentViewport = engine.currentViewport;\r\n\r\n if (currentViewport) {\r\n desiredWidth *= currentViewport.width;\r\n desiredHeight *= currentViewport.height;\r\n }\r\n }\r\n\r\n if (needMipMaps || this.alwaysForcePOT) {\r\n if (!(<PostProcessOptions>this._options).width) {\r\n desiredWidth = engine.needPOTTextures ? Engine.GetExponentOfTwo(desiredWidth, maxSize, this.scaleMode) : desiredWidth;\r\n }\r\n\r\n if (!(<PostProcessOptions>this._options).height) {\r\n desiredHeight = engine.needPOTTextures ? Engine.GetExponentOfTwo(desiredHeight, maxSize, this.scaleMode) : desiredHeight;\r\n }\r\n }\r\n\r\n if (this.width !== desiredWidth || this.height !== desiredHeight) {\r\n this._resize(desiredWidth, desiredHeight, camera, needMipMaps, forceDepthStencil);\r\n }\r\n\r\n this._textures.forEach((texture) => {\r\n if (texture.samples !== this.samples) {\r\n this._engine.updateRenderTargetTextureSampleCount(texture, this.samples);\r\n }\r\n });\r\n\r\n this._flushTextureCache();\r\n this._renderId++;\r\n }\r\n\r\n var target: RenderTargetWrapper;\r\n\r\n if (this._shareOutputWithPostProcess) {\r\n target = this._shareOutputWithPostProcess.inputTexture;\r\n } else if (this._forcedOutputTexture) {\r\n target = this._forcedOutputTexture;\r\n\r\n this.width = this._forcedOutputTexture.width;\r\n this.height = this._forcedOutputTexture.height;\r\n } else {\r\n target = this.inputTexture;\r\n\r\n let cache;\r\n for (let i = 0; i < this._textureCache.length; i++) {\r\n if (this._textureCache[i].texture === target) {\r\n cache = this._textureCache[i];\r\n break;\r\n }\r\n }\r\n\r\n if (cache) {\r\n cache.lastUsedRenderId = this._renderId;\r\n }\r\n }\r\n\r\n // Bind the input of this post process to be used as the output of the previous post process.\r\n if (this.enablePixelPerfectMode) {\r\n this._scaleRatio.copyFromFloats(requiredWidth / desiredWidth, requiredHeight / desiredHeight);\r\n this._engine.bindFramebuffer(target, 0, requiredWidth, requiredHeight, this.forceFullscreenViewport);\r\n }\r\n else {\r\n this._scaleRatio.copyFromFloats(1, 1);\r\n this._engine.bindFramebuffer(target, 0, undefined, undefined, this.forceFullscreenViewport);\r\n }\r\n\r\n this._engine._debugInsertMarker?.(`post process ${this.name} input`);\r\n\r\n this.onActivateObservable.notifyObservers(camera);\r\n\r\n // Clear\r\n if (this.autoClear && this.alphaMode === 0) {\r\n this._engine.clear(this.clearColor ? this.clearColor : scene.clearColor, scene._allowPostProcessClearColor, true, true);\r\n }\r\n\r\n if (this._reusable) {\r\n this._currentRenderTextureInd = (this._currentRenderTextureInd + 1) % 2;\r\n }\r\n return target;\r\n }\r\n\r\n /**\r\n * If the post process is supported.\r\n */\r\n public get isSupported(): boolean {\r\n return this._drawWrapper.effect!.isSupported;\r\n }\r\n\r\n /**\r\n * The aspect ratio of the output texture.\r\n */\r\n public get aspectRatio(): number {\r\n if (this._shareOutputWithPostProcess) {\r\n return this._shareOutputWithPostProcess.aspectRatio;\r\n }\r\n\r\n if (this._forcedOutputTexture) {\r\n return this._forcedOutputTexture.width / this._forcedOutputTexture.height;\r\n }\r\n return this.width / this.height;\r\n }\r\n\r\n /**\r\n * Get a value indicating if the post-process is ready to be used\r\n * @returns true if the post-process is ready (shader is compiled)\r\n */\r\n public isReady(): boolean {\r\n return this._drawWrapper.effect?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Binds all textures and uniforms to the shader, this will be run on every pass.\r\n * @returns the effect corresponding to this post process. Null if not compiled or not ready.\r\n */\r\n public apply(): Nullable<Effect> {\r\n // Check\r\n if (!this._drawWrapper.effect?.isReady()) {\r\n return null;\r\n }\r\n\r\n // States\r\n this._engine.enableEffect(this._drawWrapper);\r\n this._engine.setState(false);\r\n this._engine.setDepthBuffer(false);\r\n this._engine.setDepthWrite(false);\r\n\r\n // Alpha\r\n this._engine.setAlphaMode(this.alphaMode);\r\n if (this.alphaConstants) {\r\n this.getEngine().setAlphaConstants(this.alphaConstants.r, this.alphaConstants.g, this.alphaConstants.b, this.alphaConstants.a);\r\n }\r\n\r\n // Bind the output texture of the preivous post process as the input to this post process.\r\n var source: RenderTargetWrapper;\r\n if (this._shareOutputWithPostProcess) {\r\n source = this._shareOutputWithPostProcess.inputTexture;\r\n } else if (this._forcedOutputTexture) {\r\n source = this._forcedOutputTexture;\r\n } else {\r\n source = this.inputTexture;\r\n }\r\n\r\n this._drawWrapper.effect._bindTexture(\"textureSampler\", source?.texture);\r\n\r\n // Parameters\r\n this._drawWrapper.effect.setVector2(\"scale\", this._scaleRatio);\r\n this.onApplyObservable.notifyObservers(this._drawWrapper.effect);\r\n\r\n return this._drawWrapper.effect;\r\n }\r\n\r\n private _disposeTextures() {\r\n if (this._shareOutputWithPostProcess || this._forcedOutputTexture) {\r\n this._disposeTextureCache();\r\n return;\r\n }\r\n\r\n this._disposeTextureCache();\r\n this._textures.dispose();\r\n }\r\n\r\n private _disposeTextureCache() {\r\n for (let i = this._textureCache.length - 1; i >= 0; i--) {\r\n this._textureCache[i].texture.dispose();\r\n }\r\n\r\n this._textureCache.length = 0;\r\n }\r\n\r\n /**\r\n * Sets the required values to the prepass renderer.\r\n * @param prePassRenderer defines the prepass renderer to setup.\r\n * @returns true if the pre pass is needed.\r\n */\r\n public setPrePassRenderer(prePassRenderer: PrePassRenderer): boolean {\r\n if (this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration = prePassRenderer.addEffectConfiguration(this._prePassEffectConfiguration);\r\n this._prePassEffectConfiguration.enabled = true;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes the post process.\r\n * @param camera The camera to dispose the post process on.\r\n */\r\n public dispose(camera?: Camera): void {\r\n camera = camera || this._camera;\r\n\r\n this._disposeTextures();\r\n\r\n let index;\r\n if (this._scene) {\r\n index = this._scene.postProcesses.indexOf(this);\r\n if (index !== -1) {\r\n this._scene.postProcesses.splice(index, 1);\r\n }\r\n }\r\n\r\n if (this._parentContainer) {\r\n const index = this._parentContainer.postProcesses.indexOf(this);\r\n if (index > -1) {\r\n this._parentContainer.postProcesses.splice(index, 1);\r\n }\r\n this._parentContainer = null;\r\n }\r\n\r\n index = this._engine.postProcesses.indexOf(this);\r\n if (index !== -1) {\r\n this._engine.postProcesses.splice(index, 1);\r\n }\r\n\r\n if (!camera) {\r\n return;\r\n }\r\n camera.detachPostProcess(this);\r\n\r\n index = camera._postProcesses.indexOf(this);\r\n if (index === 0 && camera._postProcesses.length > 0) {\r\n var firstPostProcess = this._camera._getFirstPostProcess();\r\n if (firstPostProcess) {\r\n firstPostProcess.markTextureDirty();\r\n }\r\n }\r\n\r\n this.onActivateObservable.clear();\r\n this.onAfterRenderObservable.clear();\r\n this.onApplyObservable.clear();\r\n this.onBeforeRenderObservable.clear();\r\n this.onSizeChangedObservable.clear();\r\n }\r\n\r\n /**\r\n * Serializes the post process to a JSON object\r\n * @returns the JSON object\r\n */\r\n public serialize(): any {\r\n var serializationObject = SerializationHelper.Serialize(this);\r\n var camera = this.getCamera() || this._scene && this._scene.activeCamera;\r\n serializationObject.customType = \"BABYLON.\" + this.getClassName();\r\n serializationObject.cameraId = camera ? camera.id : null;\r\n serializationObject.reusable = this._reusable;\r\n serializationObject.textureType = this._textureType;\r\n serializationObject.fragmentUrl = this._fragmentUrl;\r\n serializationObject.parameters = this._parameters;\r\n serializationObject.samplers = this._samplers;\r\n serializationObject.options = this._options;\r\n serializationObject.defines = this._postProcessDefines;\r\n serializationObject.textureFormat = this._textureFormat;\r\n serializationObject.vertexUrl = this._vertexUrl;\r\n serializationObject.indexParameters = this._indexParameters;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Clones this post process\r\n * @returns a new post process similar to this one\r\n */\r\n public clone(): Nullable<PostProcess> {\r\n const serializationObject = this.serialize();\r\n serializationObject._engine = this._engine;\r\n serializationObject.cameraId = null;\r\n\r\n const result = PostProcess.Parse(serializationObject, this._scene, \"\");\r\n\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n result.onActivateObservable = this.onActivateObservable.clone();\r\n result.onSizeChangedObservable = this.onSizeChangedObservable.clone();\r\n result.onApplyObservable = this.onApplyObservable.clone();\r\n result.onBeforeRenderObservable = this.onBeforeRenderObservable.clone();\r\n result.onAfterRenderObservable = this.onAfterRenderObservable.clone();\r\n\r\n result._prePassEffectConfiguration = this._prePassEffectConfiguration;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a material from parsed material data\r\n * @param parsedPostProcess defines parsed post process data\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures\r\n * @returns a new post process\r\n */\r\n public static Parse(parsedPostProcess: any, scene: Scene, rootUrl: string): Nullable<PostProcess> {\r\n var postProcessType = _TypeStore.GetClass(parsedPostProcess.customType);\r\n\r\n if (!postProcessType || !postProcessType._Parse) {\r\n return null;\r\n }\r\n\r\n var camera = scene ? scene.getCameraById(parsedPostProcess.cameraId) : null;\r\n return postProcessType._Parse(parsedPostProcess, camera, scene, rootUrl);\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<PostProcess> {\r\n return SerializationHelper.Parse(() => {\r\n return new PostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.fragmentUrl,\r\n parsedPostProcess.parameters,\r\n parsedPostProcess.samplers,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable,\r\n parsedPostProcess.defines,\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.vertexUrl,\r\n parsedPostProcess.indexParameters,\r\n false,\r\n parsedPostProcess.textureFormat\r\n );\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\n_TypeStore.RegisteredTypes[\"BABYLON.PostProcess\"] = PostProcess;\r\n"]}
|
|
1
|
+
{"version":3,"file":"postProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/postProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { Observable, Observer } from \"../Misc/observable\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\n\r\nimport { RenderTargetCreationOptions } from \"../Materials/Textures/renderTargetCreationOptions\";\r\nimport \"../Shaders/postprocess.vertex\";\r\nimport { IInspectable } from '../Misc/iInspectable';\r\nimport { Engine } from '../Engines/engine';\r\nimport { Color4 } from '../Maths/math.color';\r\n\r\nimport \"../Engines/Extensions/engine.renderTarget\";\r\nimport { NodeMaterial } from '../Materials/Node/nodeMaterial';\r\nimport { serialize, serializeAsColor4, SerializationHelper } from '../Misc/decorators';\r\nimport { GetClass, RegisterClass } from '../Misc/typeStore';\r\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\r\nimport { AbstractScene } from \"../abstractScene\";\r\nimport { RenderTargetWrapper } from \"../Engines/renderTargetWrapper\";\r\n\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type InternalTexture = import(\"../Materials/Textures/internalTexture\").InternalTexture;\r\ndeclare type WebVRFreeCamera = import(\"../Cameras/VR/webVRCamera\").WebVRFreeCamera;\r\ndeclare type Animation = import(\"../Animations/animation\").Animation;\r\ndeclare type PrePassRenderer = import(\"../Rendering/prePassRenderer\").PrePassRenderer;\r\ndeclare type PrePassEffectConfiguration = import(\"../Rendering/prePassEffectConfiguration\").PrePassEffectConfiguration;\r\n\r\n/**\r\n * Size options for a post process\r\n */\r\nexport type PostProcessOptions = { width: number, height: number };\r\n\r\ntype TextureCache = { texture: RenderTargetWrapper, postProcessChannel: number, lastUsedRenderId: number };\r\n\r\n/**\r\n * PostProcess can be used to apply a shader to a texture after it has been rendered\r\n * See https://doc.babylonjs.com/how_to/how_to_use_postprocesses\r\n */\r\nexport class PostProcess {\r\n /** @hidden */\r\n public _parentContainer: Nullable<AbstractScene> = null;\r\n\r\n /**\r\n * Gets or sets the unique id of the post process\r\n */\r\n @serialize()\r\n public uniqueId: number;\r\n\r\n /** Name of the PostProcess. */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * Width of the texture to apply the post process on\r\n */\r\n @serialize()\r\n public width = -1;\r\n\r\n /**\r\n * Height of the texture to apply the post process on\r\n */\r\n @serialize()\r\n public height = -1;\r\n\r\n /**\r\n * Gets the node material used to create this postprocess (null if the postprocess was manually created)\r\n */\r\n public nodeMaterialSource: Nullable<NodeMaterial> = null;\r\n\r\n /**\r\n * Internal, reference to the location where this postprocess was output to. (Typically the texture on the next postprocess in the chain)\r\n * @hidden\r\n */\r\n public _outputTexture: Nullable<RenderTargetWrapper> = null;\r\n /**\r\n * Sampling mode used by the shader\r\n * See https://doc.babylonjs.com/classes/3.1/texture\r\n */\r\n @serialize()\r\n public renderTargetSamplingMode: number;\r\n /**\r\n * Clear color to use when screen clearing\r\n */\r\n @serializeAsColor4()\r\n public clearColor: Color4;\r\n /**\r\n * If the buffer needs to be cleared before applying the post process. (default: true)\r\n * Should be set to false if shader will overwrite all previous pixels.\r\n */\r\n @serialize()\r\n public autoClear = true;\r\n /**\r\n * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)\r\n */\r\n @serialize()\r\n public alphaMode = 0;\r\n /**\r\n * Sets the setAlphaBlendConstants of the babylon engine\r\n */\r\n @serialize()\r\n public alphaConstants: Color4;\r\n /**\r\n * Animations to be used for the post processing\r\n */\r\n public animations = new Array<Animation>();\r\n\r\n /**\r\n * Enable Pixel Perfect mode where texture is not scaled to be power of 2.\r\n * Can only be used on a single postprocess or on the last one of a chain. (default: false)\r\n */\r\n @serialize()\r\n public enablePixelPerfectMode = false;\r\n\r\n /**\r\n * Force the postprocess to be applied without taking in account viewport\r\n */\r\n @serialize()\r\n public forceFullscreenViewport = true;\r\n\r\n /**\r\n * List of inspectable custom properties (used by the Inspector)\r\n * @see https://doc.babylonjs.com/how_to/debug_layer#extensibility\r\n */\r\n public inspectableCustomProperties: IInspectable[];\r\n\r\n /**\r\n * Scale mode for the post process (default: Engine.SCALEMODE_FLOOR)\r\n *\r\n * | Value | Type | Description |\r\n * | ----- | ----------------------------------- | ----------- |\r\n * | 1 | SCALEMODE_FLOOR | [engine.scalemode_floor](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_floor) |\r\n * | 2 | SCALEMODE_NEAREST | [engine.scalemode_nearest](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_nearest) |\r\n * | 3 | SCALEMODE_CEILING | [engine.scalemode_ceiling](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_ceiling) |\r\n *\r\n */\r\n @serialize()\r\n public scaleMode = 1;\r\n /**\r\n * Force textures to be a power of two (default: false)\r\n */\r\n @serialize()\r\n public alwaysForcePOT = false;\r\n\r\n @serialize(\"samples\")\r\n private _samples = 1;\r\n\r\n /**\r\n * Number of sample textures (default: 1)\r\n */\r\n public get samples() {\r\n return this._samples;\r\n }\r\n\r\n public set samples(n: number) {\r\n this._samples = Math.min(n, this._engine.getCaps().maxMSAASamples);\r\n\r\n this._textures.forEach((texture) => {\r\n if (texture.samples !== this._samples) {\r\n this._engine.updateRenderTargetTextureSampleCount(texture, this._samples);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Modify the scale of the post process to be the same as the viewport (default: false)\r\n */\r\n @serialize()\r\n public adaptScaleToCurrentViewport = false;\r\n\r\n private _camera: Camera;\r\n protected _scene: Scene;\r\n private _engine: Engine;\r\n\r\n private _options: number | PostProcessOptions;\r\n private _reusable = false;\r\n private _renderId = 0;\r\n private _textureType: number;\r\n private _textureFormat: number;\r\n /**\r\n * Smart array of input and output textures for the post process.\r\n * @hidden\r\n */\r\n public _textures = new SmartArray<RenderTargetWrapper>(2);\r\n /**\r\n * Smart array of input and output textures for the post process.\r\n * @hidden\r\n */\r\n private _textureCache: TextureCache[] = [];\r\n /**\r\n * The index in _textures that corresponds to the output texture.\r\n * @hidden\r\n */\r\n public _currentRenderTextureInd = 0;\r\n private _drawWrapper: DrawWrapper;\r\n private _samplers: string[];\r\n private _fragmentUrl: string;\r\n private _vertexUrl: string;\r\n private _parameters: string[];\r\n protected _postProcessDefines: Nullable<string>;\r\n private _scaleRatio = new Vector2(1, 1);\r\n protected _indexParameters: any;\r\n private _shareOutputWithPostProcess: Nullable<PostProcess>;\r\n private _texelSize = Vector2.Zero();\r\n /** @hidden */\r\n public _forcedOutputTexture: Nullable<RenderTargetWrapper>;\r\n\r\n /**\r\n * Prepass configuration in case this post process needs a texture from prepass\r\n * @hidden\r\n */\r\n public _prePassEffectConfiguration: PrePassEffectConfiguration;\r\n\r\n /**\r\n * Returns the fragment url or shader name used in the post process.\r\n * @returns the fragment url or name in the shader store.\r\n */\r\n public getEffectName(): string {\r\n return this._fragmentUrl;\r\n }\r\n\r\n // Events\r\n\r\n /**\r\n * An event triggered when the postprocess is activated.\r\n */\r\n public onActivateObservable = new Observable<Camera>();\r\n\r\n private _onActivateObserver: Nullable<Observer<Camera>>;\r\n /**\r\n * A function that is added to the onActivateObservable\r\n */\r\n public set onActivate(callback: Nullable<(camera: Camera) => void>) {\r\n if (this._onActivateObserver) {\r\n this.onActivateObservable.remove(this._onActivateObserver);\r\n }\r\n if (callback) {\r\n this._onActivateObserver = this.onActivateObservable.add(callback);\r\n }\r\n }\r\n\r\n /**\r\n * An event triggered when the postprocess changes its size.\r\n */\r\n public onSizeChangedObservable = new Observable<PostProcess>();\r\n\r\n private _onSizeChangedObserver: Nullable<Observer<PostProcess>>;\r\n /**\r\n * A function that is added to the onSizeChangedObservable\r\n */\r\n public set onSizeChanged(callback: (postProcess: PostProcess) => void) {\r\n if (this._onSizeChangedObserver) {\r\n this.onSizeChangedObservable.remove(this._onSizeChangedObserver);\r\n }\r\n this._onSizeChangedObserver = this.onSizeChangedObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered when the postprocess applies its effect.\r\n */\r\n public onApplyObservable = new Observable<Effect>();\r\n\r\n private _onApplyObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onApplyObservable\r\n */\r\n public set onApply(callback: (effect: Effect) => void) {\r\n if (this._onApplyObserver) {\r\n this.onApplyObservable.remove(this._onApplyObserver);\r\n }\r\n this._onApplyObserver = this.onApplyObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered before rendering the postprocess\r\n */\r\n public onBeforeRenderObservable = new Observable<Effect>();\r\n\r\n private _onBeforeRenderObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onBeforeRenderObservable\r\n */\r\n public set onBeforeRender(callback: (effect: Effect) => void) {\r\n if (this._onBeforeRenderObserver) {\r\n this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);\r\n }\r\n this._onBeforeRenderObserver = this.onBeforeRenderObservable.add(callback);\r\n }\r\n\r\n /**\r\n * An event triggered after rendering the postprocess\r\n */\r\n public onAfterRenderObservable = new Observable<Effect>();\r\n\r\n private _onAfterRenderObserver: Nullable<Observer<Effect>>;\r\n /**\r\n * A function that is added to the onAfterRenderObservable\r\n */\r\n public set onAfterRender(callback: (efect: Effect) => void) {\r\n if (this._onAfterRenderObserver) {\r\n this.onAfterRenderObservable.remove(this._onAfterRenderObserver);\r\n }\r\n this._onAfterRenderObserver = this.onAfterRenderObservable.add(callback);\r\n }\r\n\r\n /**\r\n * The input texture for this post process and the output texture of the previous post process. When added to a pipeline the previous post process will\r\n * render it's output into this texture and this texture will be used as textureSampler in the fragment shader of this post process.\r\n */\r\n public get inputTexture(): RenderTargetWrapper {\r\n return this._textures.data[this._currentRenderTextureInd];\r\n }\r\n\r\n public set inputTexture(value: RenderTargetWrapper) {\r\n this._forcedOutputTexture = value;\r\n }\r\n\r\n /**\r\n * Since inputTexture should always be defined, if we previously manually set `inputTexture`,\r\n * the only way to unset it is to use this function to restore its internal state\r\n */\r\n public restoreDefaultInputTexture() {\r\n if (this._forcedOutputTexture) {\r\n this._forcedOutputTexture = null;\r\n this.markTextureDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the camera which post process is applied to.\r\n * @returns The camera the post process is applied to.\r\n */\r\n public getCamera(): Camera {\r\n return this._camera;\r\n }\r\n\r\n /**\r\n * Gets the texel size of the postprocess.\r\n * See https://en.wikipedia.org/wiki/Texel_(graphics)\r\n */\r\n public get texelSize(): Vector2 {\r\n if (this._shareOutputWithPostProcess) {\r\n return this._shareOutputWithPostProcess.texelSize;\r\n }\r\n\r\n if (this._forcedOutputTexture) {\r\n this._texelSize.copyFromFloats(1.0 / this._forcedOutputTexture.width, 1.0 / this._forcedOutputTexture.height);\r\n }\r\n\r\n return this._texelSize;\r\n }\r\n\r\n /**\r\n * Creates a new instance PostProcess\r\n * @param name The name of the PostProcess.\r\n * @param fragmentUrl The url of the fragment shader to be used.\r\n * @param parameters Array of the names of uniform non-sampler2D variables that will be passed to the shader.\r\n * @param samplers Array of the names of uniform sampler2D variables that will be passed to the shader.\r\n * @param options The required width/height ratio to downsize to before computing the render pass. (Use 1.0 for full size)\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param defines String of defines that will be set when running the fragment shader. (default: null)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param vertexUrl The url of the vertex shader to be used. (default: \"postprocess\")\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param blockCompilation If the shader should not be compiled immediatly. (default: false)\r\n * @param textureFormat Format of textures used when performing the post process. (default: TEXTUREFORMAT_RGBA)\r\n */\r\n constructor(\r\n name: string,\r\n fragmentUrl: string, parameters: Nullable<string[]>, samplers: Nullable<string[]>, options: number | PostProcessOptions, camera: Nullable<Camera>,\r\n samplingMode: number = 1, engine?: Engine, reusable?: boolean, defines: Nullable<string> = null, textureType: number = 0, vertexUrl: string = \"postprocess\",\r\n indexParameters?: any, blockCompilation = false, textureFormat = 5) {\r\n\r\n this.name = name;\r\n if (camera != null) {\r\n this._camera = camera;\r\n this._scene = camera.getScene();\r\n camera.attachPostProcess(this);\r\n this._engine = this._scene.getEngine();\r\n\r\n this._scene.postProcesses.push(this);\r\n this.uniqueId = this._scene.getUniqueId();\r\n }\r\n else if (engine) {\r\n this._engine = engine;\r\n this._engine.postProcesses.push(this);\r\n }\r\n this._options = options;\r\n this.renderTargetSamplingMode = samplingMode ? samplingMode : 1;\r\n this._reusable = reusable || false;\r\n this._textureType = textureType;\r\n this._textureFormat = textureFormat;\r\n\r\n this._samplers = samplers || [];\r\n this._samplers.push(\"textureSampler\");\r\n\r\n this._fragmentUrl = fragmentUrl;\r\n this._vertexUrl = vertexUrl;\r\n this._parameters = parameters || [];\r\n\r\n this._parameters.push(\"scale\");\r\n\r\n this._indexParameters = indexParameters;\r\n this._drawWrapper = new DrawWrapper(this._engine);\r\n\r\n if (!blockCompilation) {\r\n this.updateEffect(defines);\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"PostProcess\";\r\n }\r\n\r\n /**\r\n * Gets the engine which this post process belongs to.\r\n * @returns The engine the post process was enabled with.\r\n */\r\n public getEngine(): Engine {\r\n return this._engine;\r\n }\r\n\r\n /**\r\n * The effect that is created when initializing the post process.\r\n * @returns The created effect corresponding the the postprocess.\r\n */\r\n public getEffect(): Effect {\r\n return this._drawWrapper.effect!;\r\n }\r\n\r\n /**\r\n * To avoid multiple redundant textures for multiple post process, the output the output texture for this post process can be shared with another.\r\n * @param postProcess The post process to share the output with.\r\n * @returns This post process.\r\n */\r\n public shareOutputWith(postProcess: PostProcess): PostProcess {\r\n this._disposeTextures();\r\n\r\n this._shareOutputWithPostProcess = postProcess;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Reverses the effect of calling shareOutputWith and returns the post process back to its original state.\r\n * This should be called if the post process that shares output with this post process is disabled/disposed.\r\n */\r\n public useOwnOutput() {\r\n if (this._textures.length == 0) {\r\n this._textures = new SmartArray<RenderTargetWrapper>(2);\r\n }\r\n\r\n this._shareOutputWithPostProcess = null;\r\n }\r\n\r\n /**\r\n * Updates the effect with the current post process compile time values and recompiles the shader.\r\n * @param defines Define statements that should be added at the beginning of the shader. (default: null)\r\n * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)\r\n * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param onCompiled Called when the shader has been compiled.\r\n * @param onError Called if there is an error when compiling a shader.\r\n * @param vertexUrl The url of the vertex shader to be used (default: the one given at construction time)\r\n * @param fragmentUrl The url of the fragment shader to be used (default: the one given at construction time)\r\n */\r\n public updateEffect(defines: Nullable<string> = null, uniforms: Nullable<string[]> = null, samplers: Nullable<string[]> = null, indexParameters?: any,\r\n onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void, vertexUrl?: string, fragmentUrl?: string) {\r\n this._postProcessDefines = defines;\r\n this._drawWrapper.effect = this._engine.createEffect({ vertex: vertexUrl ?? this._vertexUrl, fragment: fragmentUrl ?? this._fragmentUrl },\r\n [\"position\"],\r\n uniforms || this._parameters,\r\n samplers || this._samplers,\r\n defines !== null ? defines : \"\",\r\n undefined,\r\n onCompiled,\r\n onError,\r\n indexParameters || this._indexParameters\r\n );\r\n }\r\n\r\n /**\r\n * The post process is reusable if it can be used multiple times within one frame.\r\n * @returns If the post process is reusable\r\n */\r\n public isReusable(): boolean {\r\n return this._reusable;\r\n }\r\n\r\n /** invalidate frameBuffer to hint the postprocess to create a depth buffer */\r\n public markTextureDirty(): void {\r\n this.width = -1;\r\n }\r\n\r\n private _createRenderTargetTexture(textureSize: { width: number, height: number }, textureOptions: RenderTargetCreationOptions, channel = 0) {\r\n for (let i = 0; i < this._textureCache.length; i++) {\r\n if (this._textureCache[i].texture.width === textureSize.width &&\r\n this._textureCache[i].texture.height === textureSize.height &&\r\n this._textureCache[i].postProcessChannel === channel &&\r\n this._textureCache[i].texture._generateDepthBuffer === textureOptions.generateDepthBuffer) {\r\n return this._textureCache[i].texture;\r\n }\r\n }\r\n\r\n const tex = this._engine.createRenderTargetTexture(textureSize, textureOptions);\r\n this._textureCache.push({ texture: tex, postProcessChannel: channel, lastUsedRenderId: -1 });\r\n\r\n return tex;\r\n }\r\n\r\n private _flushTextureCache() {\r\n const currentRenderId = this._renderId;\r\n\r\n for (let i = this._textureCache.length - 1; i >= 0; i--) {\r\n if (currentRenderId - this._textureCache[i].lastUsedRenderId > 100) {\r\n let currentlyUsed = false;\r\n for (var j = 0; j < this._textures.length; j++) {\r\n if (this._textures.data[j] === this._textureCache[i].texture) {\r\n currentlyUsed = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!currentlyUsed) {\r\n this._textureCache[i].texture.dispose();\r\n this._textureCache.splice(i, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _resize(width: number, height: number, camera: Camera, needMipMaps: boolean, forceDepthStencil?: boolean) {\r\n if (this._textures.length > 0) {\r\n this._textures.reset();\r\n }\r\n\r\n this.width = width;\r\n this.height = height;\r\n\r\n let firstPP = null;\r\n for (let i = 0; i < camera._postProcesses.length; i++) {\r\n if (camera._postProcesses[i] !== null) {\r\n firstPP = camera._postProcesses[i];\r\n break;\r\n }\r\n }\r\n\r\n let textureSize = { width: this.width, height: this.height };\r\n let textureOptions = {\r\n generateMipMaps: needMipMaps,\r\n generateDepthBuffer: forceDepthStencil || firstPP === this,\r\n generateStencilBuffer: (forceDepthStencil || firstPP === this) && this._engine.isStencilEnable,\r\n samplingMode: this.renderTargetSamplingMode,\r\n type: this._textureType,\r\n format: this._textureFormat\r\n };\r\n\r\n this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 0));\r\n\r\n if (this._reusable) {\r\n this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 1));\r\n }\r\n\r\n this._texelSize.copyFromFloats(1.0 / this.width, 1.0 / this.height);\r\n\r\n this.onSizeChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Activates the post process by intializing the textures to be used when executed. Notifies onActivateObservable.\r\n * When this post process is used in a pipeline, this is call will bind the input texture of this post process to the output of the previous.\r\n * @param camera The camera that will be used in the post process. This camera will be used when calling onActivateObservable.\r\n * @param sourceTexture The source texture to be inspected to get the width and height if not specified in the post process constructor. (default: null)\r\n * @param forceDepthStencil If true, a depth and stencil buffer will be generated. (default: false)\r\n * @returns The render target wrapper that was bound to be written to.\r\n */\r\n public activate(camera: Nullable<Camera>, sourceTexture: Nullable<InternalTexture> = null, forceDepthStencil?: boolean): RenderTargetWrapper {\r\n camera = camera || this._camera;\r\n\r\n var scene = camera.getScene();\r\n var engine = scene.getEngine();\r\n var maxSize = engine.getCaps().maxTextureSize;\r\n\r\n var requiredWidth = ((sourceTexture ? sourceTexture.width : this._engine.getRenderWidth(true)) * <number>this._options) | 0;\r\n var requiredHeight = ((sourceTexture ? sourceTexture.height : this._engine.getRenderHeight(true)) * <number>this._options) | 0;\r\n\r\n // If rendering to a webvr camera's left or right eye only half the width should be used to avoid resize when rendered to screen\r\n var webVRCamera = (<WebVRFreeCamera>camera.parent);\r\n if (webVRCamera && (webVRCamera.leftCamera == camera || webVRCamera.rightCamera == camera)) {\r\n requiredWidth /= 2;\r\n }\r\n\r\n var desiredWidth = ((<PostProcessOptions>this._options).width || requiredWidth);\r\n var desiredHeight = (<PostProcessOptions>this._options).height || requiredHeight;\r\n\r\n const needMipMaps =\r\n this.renderTargetSamplingMode !== 7 &&\r\n this.renderTargetSamplingMode !== 1 &&\r\n this.renderTargetSamplingMode !== 2;\r\n\r\n if (!this._shareOutputWithPostProcess && !this._forcedOutputTexture) {\r\n\r\n if (this.adaptScaleToCurrentViewport) {\r\n let currentViewport = engine.currentViewport;\r\n\r\n if (currentViewport) {\r\n desiredWidth *= currentViewport.width;\r\n desiredHeight *= currentViewport.height;\r\n }\r\n }\r\n\r\n if (needMipMaps || this.alwaysForcePOT) {\r\n if (!(<PostProcessOptions>this._options).width) {\r\n desiredWidth = engine.needPOTTextures ? Engine.GetExponentOfTwo(desiredWidth, maxSize, this.scaleMode) : desiredWidth;\r\n }\r\n\r\n if (!(<PostProcessOptions>this._options).height) {\r\n desiredHeight = engine.needPOTTextures ? Engine.GetExponentOfTwo(desiredHeight, maxSize, this.scaleMode) : desiredHeight;\r\n }\r\n }\r\n\r\n if (this.width !== desiredWidth || this.height !== desiredHeight) {\r\n this._resize(desiredWidth, desiredHeight, camera, needMipMaps, forceDepthStencil);\r\n }\r\n\r\n this._textures.forEach((texture) => {\r\n if (texture.samples !== this.samples) {\r\n this._engine.updateRenderTargetTextureSampleCount(texture, this.samples);\r\n }\r\n });\r\n\r\n this._flushTextureCache();\r\n this._renderId++;\r\n }\r\n\r\n var target: RenderTargetWrapper;\r\n\r\n if (this._shareOutputWithPostProcess) {\r\n target = this._shareOutputWithPostProcess.inputTexture;\r\n } else if (this._forcedOutputTexture) {\r\n target = this._forcedOutputTexture;\r\n\r\n this.width = this._forcedOutputTexture.width;\r\n this.height = this._forcedOutputTexture.height;\r\n } else {\r\n target = this.inputTexture;\r\n\r\n let cache;\r\n for (let i = 0; i < this._textureCache.length; i++) {\r\n if (this._textureCache[i].texture === target) {\r\n cache = this._textureCache[i];\r\n break;\r\n }\r\n }\r\n\r\n if (cache) {\r\n cache.lastUsedRenderId = this._renderId;\r\n }\r\n }\r\n\r\n // Bind the input of this post process to be used as the output of the previous post process.\r\n if (this.enablePixelPerfectMode) {\r\n this._scaleRatio.copyFromFloats(requiredWidth / desiredWidth, requiredHeight / desiredHeight);\r\n this._engine.bindFramebuffer(target, 0, requiredWidth, requiredHeight, this.forceFullscreenViewport);\r\n }\r\n else {\r\n this._scaleRatio.copyFromFloats(1, 1);\r\n this._engine.bindFramebuffer(target, 0, undefined, undefined, this.forceFullscreenViewport);\r\n }\r\n\r\n this._engine._debugInsertMarker?.(`post process ${this.name} input`);\r\n\r\n this.onActivateObservable.notifyObservers(camera);\r\n\r\n // Clear\r\n if (this.autoClear && this.alphaMode === 0) {\r\n this._engine.clear(this.clearColor ? this.clearColor : scene.clearColor, scene._allowPostProcessClearColor, true, true);\r\n }\r\n\r\n if (this._reusable) {\r\n this._currentRenderTextureInd = (this._currentRenderTextureInd + 1) % 2;\r\n }\r\n return target;\r\n }\r\n\r\n /**\r\n * If the post process is supported.\r\n */\r\n public get isSupported(): boolean {\r\n return this._drawWrapper.effect!.isSupported;\r\n }\r\n\r\n /**\r\n * The aspect ratio of the output texture.\r\n */\r\n public get aspectRatio(): number {\r\n if (this._shareOutputWithPostProcess) {\r\n return this._shareOutputWithPostProcess.aspectRatio;\r\n }\r\n\r\n if (this._forcedOutputTexture) {\r\n return this._forcedOutputTexture.width / this._forcedOutputTexture.height;\r\n }\r\n return this.width / this.height;\r\n }\r\n\r\n /**\r\n * Get a value indicating if the post-process is ready to be used\r\n * @returns true if the post-process is ready (shader is compiled)\r\n */\r\n public isReady(): boolean {\r\n return this._drawWrapper.effect?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Binds all textures and uniforms to the shader, this will be run on every pass.\r\n * @returns the effect corresponding to this post process. Null if not compiled or not ready.\r\n */\r\n public apply(): Nullable<Effect> {\r\n // Check\r\n if (!this._drawWrapper.effect?.isReady()) {\r\n return null;\r\n }\r\n\r\n // States\r\n this._engine.enableEffect(this._drawWrapper);\r\n this._engine.setState(false);\r\n this._engine.setDepthBuffer(false);\r\n this._engine.setDepthWrite(false);\r\n\r\n // Alpha\r\n this._engine.setAlphaMode(this.alphaMode);\r\n if (this.alphaConstants) {\r\n this.getEngine().setAlphaConstants(this.alphaConstants.r, this.alphaConstants.g, this.alphaConstants.b, this.alphaConstants.a);\r\n }\r\n\r\n // Bind the output texture of the preivous post process as the input to this post process.\r\n var source: RenderTargetWrapper;\r\n if (this._shareOutputWithPostProcess) {\r\n source = this._shareOutputWithPostProcess.inputTexture;\r\n } else if (this._forcedOutputTexture) {\r\n source = this._forcedOutputTexture;\r\n } else {\r\n source = this.inputTexture;\r\n }\r\n\r\n this._drawWrapper.effect._bindTexture(\"textureSampler\", source?.texture);\r\n\r\n // Parameters\r\n this._drawWrapper.effect.setVector2(\"scale\", this._scaleRatio);\r\n this.onApplyObservable.notifyObservers(this._drawWrapper.effect);\r\n\r\n return this._drawWrapper.effect;\r\n }\r\n\r\n private _disposeTextures() {\r\n if (this._shareOutputWithPostProcess || this._forcedOutputTexture) {\r\n this._disposeTextureCache();\r\n return;\r\n }\r\n\r\n this._disposeTextureCache();\r\n this._textures.dispose();\r\n }\r\n\r\n private _disposeTextureCache() {\r\n for (let i = this._textureCache.length - 1; i >= 0; i--) {\r\n this._textureCache[i].texture.dispose();\r\n }\r\n\r\n this._textureCache.length = 0;\r\n }\r\n\r\n /**\r\n * Sets the required values to the prepass renderer.\r\n * @param prePassRenderer defines the prepass renderer to setup.\r\n * @returns true if the pre pass is needed.\r\n */\r\n public setPrePassRenderer(prePassRenderer: PrePassRenderer): boolean {\r\n if (this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration = prePassRenderer.addEffectConfiguration(this._prePassEffectConfiguration);\r\n this._prePassEffectConfiguration.enabled = true;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes the post process.\r\n * @param camera The camera to dispose the post process on.\r\n */\r\n public dispose(camera?: Camera): void {\r\n camera = camera || this._camera;\r\n\r\n this._disposeTextures();\r\n\r\n let index;\r\n if (this._scene) {\r\n index = this._scene.postProcesses.indexOf(this);\r\n if (index !== -1) {\r\n this._scene.postProcesses.splice(index, 1);\r\n }\r\n }\r\n\r\n if (this._parentContainer) {\r\n const index = this._parentContainer.postProcesses.indexOf(this);\r\n if (index > -1) {\r\n this._parentContainer.postProcesses.splice(index, 1);\r\n }\r\n this._parentContainer = null;\r\n }\r\n\r\n index = this._engine.postProcesses.indexOf(this);\r\n if (index !== -1) {\r\n this._engine.postProcesses.splice(index, 1);\r\n }\r\n\r\n if (!camera) {\r\n return;\r\n }\r\n camera.detachPostProcess(this);\r\n\r\n index = camera._postProcesses.indexOf(this);\r\n if (index === 0 && camera._postProcesses.length > 0) {\r\n var firstPostProcess = this._camera._getFirstPostProcess();\r\n if (firstPostProcess) {\r\n firstPostProcess.markTextureDirty();\r\n }\r\n }\r\n\r\n this.onActivateObservable.clear();\r\n this.onAfterRenderObservable.clear();\r\n this.onApplyObservable.clear();\r\n this.onBeforeRenderObservable.clear();\r\n this.onSizeChangedObservable.clear();\r\n }\r\n\r\n /**\r\n * Serializes the post process to a JSON object\r\n * @returns the JSON object\r\n */\r\n public serialize(): any {\r\n var serializationObject = SerializationHelper.Serialize(this);\r\n var camera = this.getCamera() || this._scene && this._scene.activeCamera;\r\n serializationObject.customType = \"BABYLON.\" + this.getClassName();\r\n serializationObject.cameraId = camera ? camera.id : null;\r\n serializationObject.reusable = this._reusable;\r\n serializationObject.textureType = this._textureType;\r\n serializationObject.fragmentUrl = this._fragmentUrl;\r\n serializationObject.parameters = this._parameters;\r\n serializationObject.samplers = this._samplers;\r\n serializationObject.options = this._options;\r\n serializationObject.defines = this._postProcessDefines;\r\n serializationObject.textureFormat = this._textureFormat;\r\n serializationObject.vertexUrl = this._vertexUrl;\r\n serializationObject.indexParameters = this._indexParameters;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Clones this post process\r\n * @returns a new post process similar to this one\r\n */\r\n public clone(): Nullable<PostProcess> {\r\n const serializationObject = this.serialize();\r\n serializationObject._engine = this._engine;\r\n serializationObject.cameraId = null;\r\n\r\n const result = PostProcess.Parse(serializationObject, this._scene, \"\");\r\n\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n result.onActivateObservable = this.onActivateObservable.clone();\r\n result.onSizeChangedObservable = this.onSizeChangedObservable.clone();\r\n result.onApplyObservable = this.onApplyObservable.clone();\r\n result.onBeforeRenderObservable = this.onBeforeRenderObservable.clone();\r\n result.onAfterRenderObservable = this.onAfterRenderObservable.clone();\r\n\r\n result._prePassEffectConfiguration = this._prePassEffectConfiguration;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a material from parsed material data\r\n * @param parsedPostProcess defines parsed post process data\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures\r\n * @returns a new post process\r\n */\r\n public static Parse(parsedPostProcess: any, scene: Scene, rootUrl: string): Nullable<PostProcess> {\r\n var postProcessType = GetClass(parsedPostProcess.customType);\r\n\r\n if (!postProcessType || !postProcessType._Parse) {\r\n return null;\r\n }\r\n\r\n var camera = scene ? scene.getCameraById(parsedPostProcess.cameraId) : null;\r\n return postProcessType._Parse(parsedPostProcess, camera, scene, rootUrl);\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<PostProcess> {\r\n return SerializationHelper.Parse(() => {\r\n return new PostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.fragmentUrl,\r\n parsedPostProcess.parameters,\r\n parsedPostProcess.samplers,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable,\r\n parsedPostProcess.defines,\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.vertexUrl,\r\n parsedPostProcess.indexParameters,\r\n false,\r\n parsedPostProcess.textureFormat\r\n );\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PostProcess\", PostProcess);\r\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { Texture } from "../Materials/Textures/texture";
|
|
3
|
-
import { PostProcess } from "./postProcess";
|
|
4
|
-
import "../Shaders/refraction.fragment";
|
|
5
|
-
import {
|
|
6
|
-
import { SerializationHelper, serialize } from '../Misc/decorators';
|
|
2
|
+
import { Texture } from "../Materials/Textures/texture.js";
|
|
3
|
+
import { PostProcess } from "./postProcess.js";
|
|
4
|
+
import "../Shaders/refraction.fragment.js";
|
|
5
|
+
import { RegisterClass } from '../Misc/typeStore.js';
|
|
6
|
+
import { SerializationHelper, serialize } from '../Misc/decorators.js';
|
|
7
7
|
/**
|
|
8
8
|
* Post process which applies a refraction texture
|
|
9
9
|
* @see https://doc.babylonjs.com/how_to/how_to_use_postprocesses#refraction
|
|
@@ -100,5 +100,5 @@ var RefractionPostProcess = /** @class */ (function (_super) {
|
|
|
100
100
|
return RefractionPostProcess;
|
|
101
101
|
}(PostProcess));
|
|
102
102
|
export { RefractionPostProcess };
|
|
103
|
-
|
|
103
|
+
RegisterClass("BABYLON.RefractionPostProcess", RefractionPostProcess);
|
|
104
104
|
//# sourceMappingURL=refractionPostProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refractionPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/refractionPostProcess.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAGhE,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"refractionPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/refractionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color3 } from \"../Maths/math.color\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { PostProcess, PostProcessOptions } from \"./postProcess\";\r\nimport { Engine } from \"../Engines/engine\";\r\n\r\nimport \"../Shaders/refraction.fragment\";\r\nimport { RegisterClass } from '../Misc/typeStore';\r\nimport { SerializationHelper, serialize } from '../Misc/decorators';\r\n\r\ndeclare type Scene = import(\"../scene\").Scene;\r\n\r\n/**\r\n * Post process which applies a refraction texture\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_postprocesses#refraction\r\n */\r\nexport class RefractionPostProcess extends PostProcess {\r\n private _refTexture: Texture;\r\n private _ownRefractionTexture = true;\r\n\r\n /** the base color of the refraction (used to taint the rendering) */\r\n @serialize()\r\n public color: Color3;\r\n\r\n /** simulated refraction depth */\r\n @serialize()\r\n public depth: number;\r\n\r\n /** the coefficient of the base color (0 to remove base color tainting) */\r\n @serialize()\r\n public colorLevel: number;\r\n\r\n /** Gets the url used to load the refraction texture */\r\n @serialize()\r\n public refractionTextureUrl: string;\r\n\r\n /**\r\n * Gets or sets the refraction texture\r\n * Please note that you are responsible for disposing the texture if you set it manually\r\n */\r\n public get refractionTexture(): Texture {\r\n return this._refTexture;\r\n }\r\n\r\n public set refractionTexture(value: Texture) {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n }\r\n\r\n this._refTexture = value;\r\n this._ownRefractionTexture = false;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"RefractionPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"RefractionPostProcess\";\r\n }\r\n\r\n /**\r\n * Initializes the RefractionPostProcess\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_postprocesses#refraction\r\n * @param name The name of the effect.\r\n * @param refractionTextureUrl Url of the refraction texture to use\r\n * @param color the base color of the refraction (used to taint the rendering)\r\n * @param depth simulated refraction depth\r\n * @param colorLevel the coefficient of the base color (0 to remove base color tainting)\r\n * @param camera The camera to apply the render pass to.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n refractionTextureUrl: string,\r\n color: Color3,\r\n depth: number,\r\n colorLevel: number,\r\n options: number | PostProcessOptions,\r\n camera: Camera,\r\n samplingMode?: number,\r\n engine?: Engine,\r\n reusable?: boolean\r\n ) {\r\n super(name, \"refraction\", [\"baseColor\", \"depth\", \"colorLevel\"], [\"refractionSampler\"], options, camera, samplingMode, engine, reusable);\r\n\r\n this.color = color;\r\n this.depth = depth;\r\n this.colorLevel = colorLevel;\r\n this.refractionTextureUrl = refractionTextureUrl;\r\n\r\n this.onActivateObservable.add((cam: Camera) => {\r\n this._refTexture = this._refTexture || new Texture(refractionTextureUrl, cam.getScene());\r\n });\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setColor3(\"baseColor\", this.color);\r\n effect.setFloat(\"depth\", this.depth);\r\n effect.setFloat(\"colorLevel\", this.colorLevel);\r\n\r\n effect.setTexture(\"refractionSampler\", this._refTexture);\r\n });\r\n }\r\n\r\n // Methods\r\n /**\r\n * Disposes of the post process\r\n * @param camera Camera to dispose post process on\r\n */\r\n public dispose(camera: Camera): void {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n (<any>this._refTexture) = null;\r\n }\r\n\r\n super.dispose(camera);\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(() => {\r\n return new RefractionPostProcess(\r\n parsedPostProcess.name, parsedPostProcess.refractionTextureUrl,\r\n parsedPostProcess.color, parsedPostProcess.depth,\r\n parsedPostProcess.colorLevel,\r\n parsedPostProcess.options, targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(), parsedPostProcess.reusable);\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.RefractionPostProcess\", RefractionPostProcess);\r\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { Logger } from "../Misc/logger";
|
|
3
|
-
import { PostProcess } from "./postProcess";
|
|
4
|
-
import '../Rendering/geometryBufferRendererSceneComponent';
|
|
5
|
-
import "../Shaders/screenSpaceCurvature.fragment";
|
|
6
|
-
import { EngineStore } from '../Engines/engineStore';
|
|
7
|
-
import {
|
|
8
|
-
import { serialize, SerializationHelper } from '../Misc/decorators';
|
|
2
|
+
import { Logger } from "../Misc/logger.js";
|
|
3
|
+
import { PostProcess } from "./postProcess.js";
|
|
4
|
+
import '../Rendering/geometryBufferRendererSceneComponent.js';
|
|
5
|
+
import "../Shaders/screenSpaceCurvature.fragment.js";
|
|
6
|
+
import { EngineStore } from '../Engines/engineStore.js';
|
|
7
|
+
import { RegisterClass } from '../Misc/typeStore.js';
|
|
8
|
+
import { serialize, SerializationHelper } from '../Misc/decorators.js';
|
|
9
9
|
/**
|
|
10
10
|
* The Screen Space curvature effect can help highlighting ridge and valley of a model.
|
|
11
11
|
*/
|
|
@@ -87,5 +87,5 @@ var ScreenSpaceCurvaturePostProcess = /** @class */ (function (_super) {
|
|
|
87
87
|
return ScreenSpaceCurvaturePostProcess;
|
|
88
88
|
}(PostProcess));
|
|
89
89
|
export { ScreenSpaceCurvaturePostProcess };
|
|
90
|
-
|
|
90
|
+
RegisterClass("BABYLON.ScreenSpaceCurvaturePostProcess", ScreenSpaceCurvaturePostProcess);
|
|
91
91
|
//# sourceMappingURL=screenSpaceCurvaturePostProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAIhE,OAAO,mDAAmD,CAAC;AAC3D,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport { PostProcess, PostProcessOptions } from \"./postProcess\";\r\n\r\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\n\r\nimport '../Rendering/geometryBufferRendererSceneComponent';\r\nimport \"../Shaders/screenSpaceCurvature.fragment\";\r\nimport { EngineStore } from '../Engines/engineStore';\r\nimport { RegisterClass } from '../Misc/typeStore';\r\nimport { serialize, SerializationHelper } from '../Misc/decorators';\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\n\r\n/**\r\n * The Screen Space curvature effect can help highlighting ridge and valley of a model.\r\n */\r\nexport class ScreenSpaceCurvaturePostProcess extends PostProcess {\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n @serialize()\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n @serialize()\r\n public valley: number = 1;\r\n\r\n private _geometryBufferRenderer: Nullable<GeometryBufferRenderer>;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceCurvaturePostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"ScreenSpaceCurvaturePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ScreenSpaceCurvaturePostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(name: string, scene: Scene, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType: number = 0, blockCompilation = false) {\r\n super(name, \"screenSpaceCurvature\", [\"curvature_ridge\", \"curvature_valley\"], [\"textureSampler\", \"normalSampler\"], options, camera, samplingMode, engine, reusable, undefined, textureType, undefined, null, blockCompilation);\r\n\r\n this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n\r\n if (!this._geometryBufferRenderer) {\r\n // Geometry buffer renderer is not supported. So, work as a passthrough.\r\n Logger.Error(\"Multiple Render Target support needed for screen space curvature post process. Please use IsSupported test first.\");\r\n } else {\r\n // Geometry buffer renderer is supported.\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n\r\n const normalTexture = this._geometryBufferRenderer!.getGBuffer().textures[1];\r\n effect.setTexture(\"normalSampler\", normalTexture);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n var engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n\r\n return engine.getCaps().drawBuffersExtension;\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(() => {\r\n return new ScreenSpaceCurvaturePostProcess(\r\n parsedPostProcess.name, scene,\r\n parsedPostProcess.options, targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceCurvaturePostProcess\", ScreenSpaceCurvaturePostProcess);\r\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { PostProcess } from "./postProcess";
|
|
3
|
-
import { GeometryBufferRenderer } from '../Rendering/geometryBufferRenderer';
|
|
4
|
-
import { serialize, SerializationHelper } from '../Misc/decorators';
|
|
5
|
-
import { ScreenSpaceReflectionsConfiguration } from "../Rendering/screenSpaceReflectionsConfiguration";
|
|
6
|
-
import "../Shaders/screenSpaceReflection.fragment";
|
|
7
|
-
import {
|
|
2
|
+
import { PostProcess } from "./postProcess.js";
|
|
3
|
+
import { GeometryBufferRenderer } from '../Rendering/geometryBufferRenderer.js';
|
|
4
|
+
import { serialize, SerializationHelper } from '../Misc/decorators.js';
|
|
5
|
+
import { ScreenSpaceReflectionsConfiguration } from "../Rendering/screenSpaceReflectionsConfiguration.js";
|
|
6
|
+
import "../Shaders/screenSpaceReflection.fragment.js";
|
|
7
|
+
import { RegisterClass } from '../Misc/typeStore.js';
|
|
8
8
|
/**
|
|
9
9
|
* The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).
|
|
10
10
|
* Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.
|
|
@@ -255,5 +255,5 @@ var ScreenSpaceReflectionPostProcess = /** @class */ (function (_super) {
|
|
|
255
255
|
return ScreenSpaceReflectionPostProcess;
|
|
256
256
|
}(PostProcess));
|
|
257
257
|
export { ScreenSpaceReflectionPostProcess };
|
|
258
|
-
|
|
258
|
+
RegisterClass("BABYLON.ScreenSpaceReflectionPostProcess", ScreenSpaceReflectionPostProcess);
|
|
259
259
|
//# sourceMappingURL=screenSpaceReflectionPostProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceReflectionPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/screenSpaceReflectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport { PostProcess, PostProcessOptions } from \"./postProcess\";\r\n\r\nimport { GeometryBufferRenderer } from '../Rendering/geometryBufferRenderer';\r\nimport { serialize, SerializationHelper } from '../Misc/decorators';\r\nimport { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration\";\r\n\r\nimport \"../Shaders/screenSpaceReflection.fragment\";\r\nimport { _TypeStore } from '../Misc/typeStore';\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\n\r\n/**\r\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\r\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\r\n */\r\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\r\n /**\r\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\r\n */\r\n @serialize()\r\n public threshold: number = 1.2;\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\r\n */\r\n @serialize()\r\n public strength: number = 1;\r\n /**\r\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\r\n */\r\n @serialize()\r\n public reflectionSpecularFalloffExponent: number = 3;\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\r\n */\r\n @serialize()\r\n public step: number = 1.0;\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n */\r\n @serialize()\r\n public roughnessFactor: number = 0.2;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _enableSmoothReflections: boolean = false;\r\n private _reflectionSamples: number = 64;\r\n private _smoothSteps: number = 5;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceReflectionPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"ScreenSpaceReflectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to calculate reflections.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(name: string, scene: Scene, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType: number = 0, blockCompilation = false, forceGeometryBuffer = false) {\r\n super(name, \"screenSpaceReflection\", [\r\n \"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"step\", \"roughnessFactor\"\r\n ], [\r\n \"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"\r\n ], options, camera, samplingMode, engine, reusable,\r\n \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\",\r\n textureType, undefined, null, blockCompilation);\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (this._forceGeometryBuffer) {\r\n // Get geometry buffer renderer and update effect\r\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n if (geometryBufferRenderer) {\r\n if (geometryBufferRenderer.isSupported) {\r\n geometryBufferRenderer.enablePosition = true;\r\n geometryBufferRenderer.enableReflectivity = true;\r\n }\r\n }\r\n } else {\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n prePassRenderer?.markAsDirty();\r\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\r\n }\r\n\r\n this._updateEffectDefines();\r\n\r\n // On apply, send uniforms\r\n this.onApply = (effect: Effect) => {\r\n const geometryBufferRenderer = this._geometryBufferRenderer;\r\n const prePassRenderer = this._prePassRenderer;\r\n\r\n if (!prePassRenderer && !geometryBufferRenderer) {\r\n return;\r\n }\r\n\r\n if (geometryBufferRenderer) {\r\n // Samplers\r\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\r\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\r\n } else if (prePassRenderer) {\r\n // Samplers\r\n const positionIndex = prePassRenderer.getIndex(1);\r\n const roughnessIndex = prePassRenderer.getIndex(3);\r\n const normalIndex = prePassRenderer.getIndex(6);\r\n\r\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\r\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\r\n }\r\n\r\n // Uniforms\r\n const camera = scene.activeCamera;\r\n if (!camera) {\r\n return;\r\n }\r\n\r\n const viewMatrix = camera.getViewMatrix(true);\r\n const projectionMatrix = camera.getProjectionMatrix(true);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"view\", viewMatrix);\r\n effect.setFloat(\"threshold\", this.threshold);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"strength\", this.strength);\r\n effect.setFloat(\"step\", this.step);\r\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\r\n };\r\n }\r\n\r\n /**\r\n * Gets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n @serialize()\r\n public get enableSmoothReflections(): boolean {\r\n return this._enableSmoothReflections;\r\n }\r\n\r\n /**\r\n * Sets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n public set enableSmoothReflections(enabled: boolean) {\r\n if (enabled === this._enableSmoothReflections) {\r\n return;\r\n }\r\n\r\n this._enableSmoothReflections = enabled;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n @serialize()\r\n public get reflectionSamples(): number {\r\n return this._reflectionSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n public set reflectionSamples(samples: number) {\r\n if (samples === this._reflectionSamples) {\r\n return;\r\n }\r\n\r\n this._reflectionSamples = samples;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n @serialize()\r\n public get smoothSteps(): number {\r\n return this._smoothSteps;\r\n }\r\n\r\n /*\r\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n public set smoothSteps(steps: number) {\r\n if (steps === this._smoothSteps) {\r\n return;\r\n }\r\n\r\n this._smoothSteps = steps;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _updateEffectDefines(): void {\r\n const defines: string[] = [];\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n defines.push(\"#define SSR_SUPPORTED\");\r\n }\r\n if (this._enableSmoothReflections) {\r\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\r\n }\r\n\r\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\r\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(() => {\r\n return new ScreenSpaceReflectionPostProcess(\r\n parsedPostProcess.name, scene,\r\n parsedPostProcess.options, targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\n_TypeStore.RegisteredTypes[\"BABYLON.ScreenSpaceReflectionPostProcess\"] = ScreenSpaceReflectionPostProcess;"]}
|
|
1
|
+
{"version":3,"file":"screenSpaceReflectionPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/screenSpaceReflectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport { PostProcess, PostProcessOptions } from \"./postProcess\";\r\n\r\nimport { GeometryBufferRenderer } from '../Rendering/geometryBufferRenderer';\r\nimport { serialize, SerializationHelper } from '../Misc/decorators';\r\nimport { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration\";\r\n\r\nimport \"../Shaders/screenSpaceReflection.fragment\";\r\nimport { RegisterClass } from '../Misc/typeStore';\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\n\r\n/**\r\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\r\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\r\n */\r\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\r\n /**\r\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\r\n */\r\n @serialize()\r\n public threshold: number = 1.2;\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\r\n */\r\n @serialize()\r\n public strength: number = 1;\r\n /**\r\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\r\n */\r\n @serialize()\r\n public reflectionSpecularFalloffExponent: number = 3;\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\r\n */\r\n @serialize()\r\n public step: number = 1.0;\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n */\r\n @serialize()\r\n public roughnessFactor: number = 0.2;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _enableSmoothReflections: boolean = false;\r\n private _reflectionSamples: number = 64;\r\n private _smoothSteps: number = 5;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceReflectionPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"ScreenSpaceReflectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to calculate reflections.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(name: string, scene: Scene, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType: number = 0, blockCompilation = false, forceGeometryBuffer = false) {\r\n super(name, \"screenSpaceReflection\", [\r\n \"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"step\", \"roughnessFactor\"\r\n ], [\r\n \"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"\r\n ], options, camera, samplingMode, engine, reusable,\r\n \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\",\r\n textureType, undefined, null, blockCompilation);\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (this._forceGeometryBuffer) {\r\n // Get geometry buffer renderer and update effect\r\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n if (geometryBufferRenderer) {\r\n if (geometryBufferRenderer.isSupported) {\r\n geometryBufferRenderer.enablePosition = true;\r\n geometryBufferRenderer.enableReflectivity = true;\r\n }\r\n }\r\n } else {\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n prePassRenderer?.markAsDirty();\r\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\r\n }\r\n\r\n this._updateEffectDefines();\r\n\r\n // On apply, send uniforms\r\n this.onApply = (effect: Effect) => {\r\n const geometryBufferRenderer = this._geometryBufferRenderer;\r\n const prePassRenderer = this._prePassRenderer;\r\n\r\n if (!prePassRenderer && !geometryBufferRenderer) {\r\n return;\r\n }\r\n\r\n if (geometryBufferRenderer) {\r\n // Samplers\r\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\r\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\r\n } else if (prePassRenderer) {\r\n // Samplers\r\n const positionIndex = prePassRenderer.getIndex(1);\r\n const roughnessIndex = prePassRenderer.getIndex(3);\r\n const normalIndex = prePassRenderer.getIndex(6);\r\n\r\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\r\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\r\n }\r\n\r\n // Uniforms\r\n const camera = scene.activeCamera;\r\n if (!camera) {\r\n return;\r\n }\r\n\r\n const viewMatrix = camera.getViewMatrix(true);\r\n const projectionMatrix = camera.getProjectionMatrix(true);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"view\", viewMatrix);\r\n effect.setFloat(\"threshold\", this.threshold);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"strength\", this.strength);\r\n effect.setFloat(\"step\", this.step);\r\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\r\n };\r\n }\r\n\r\n /**\r\n * Gets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n @serialize()\r\n public get enableSmoothReflections(): boolean {\r\n return this._enableSmoothReflections;\r\n }\r\n\r\n /**\r\n * Sets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n public set enableSmoothReflections(enabled: boolean) {\r\n if (enabled === this._enableSmoothReflections) {\r\n return;\r\n }\r\n\r\n this._enableSmoothReflections = enabled;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n @serialize()\r\n public get reflectionSamples(): number {\r\n return this._reflectionSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n public set reflectionSamples(samples: number) {\r\n if (samples === this._reflectionSamples) {\r\n return;\r\n }\r\n\r\n this._reflectionSamples = samples;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n @serialize()\r\n public get smoothSteps(): number {\r\n return this._smoothSteps;\r\n }\r\n\r\n /*\r\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n public set smoothSteps(steps: number) {\r\n if (steps === this._smoothSteps) {\r\n return;\r\n }\r\n\r\n this._smoothSteps = steps;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _updateEffectDefines(): void {\r\n const defines: string[] = [];\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n defines.push(\"#define SSR_SUPPORTED\");\r\n }\r\n if (this._enableSmoothReflections) {\r\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\r\n }\r\n\r\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\r\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(() => {\r\n return new ScreenSpaceReflectionPostProcess(\r\n parsedPostProcess.name, scene,\r\n parsedPostProcess.options, targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceReflectionPostProcess\", ScreenSpaceReflectionPostProcess);"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { PostProcess } from "./postProcess";
|
|
3
|
-
import "../Shaders/sharpen.fragment";
|
|
4
|
-
import {
|
|
5
|
-
import { serialize, SerializationHelper } from '../Misc/decorators';
|
|
2
|
+
import { PostProcess } from "./postProcess.js";
|
|
3
|
+
import "../Shaders/sharpen.fragment.js";
|
|
4
|
+
import { RegisterClass } from '../Misc/typeStore.js';
|
|
5
|
+
import { serialize, SerializationHelper } from '../Misc/decorators.js';
|
|
6
6
|
/**
|
|
7
7
|
* The SharpenPostProcess applies a sharpen kernel to every pixel
|
|
8
8
|
* See http://en.wikipedia.org/wiki/Kernel_(image_processing)
|
|
@@ -60,5 +60,5 @@ var SharpenPostProcess = /** @class */ (function (_super) {
|
|
|
60
60
|
return SharpenPostProcess;
|
|
61
61
|
}(PostProcess));
|
|
62
62
|
export { SharpenPostProcess };
|
|
63
|
-
|
|
63
|
+
RegisterClass("BABYLON.SharpenPostProcess", SharpenPostProcess);
|
|
64
64
|
//# sourceMappingURL=sharpenPostProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharpenPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/sharpenPostProcess.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAGhE,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sharpenPostProcess.js","sourceRoot":"","sources":["../../../sourceES6/core/PostProcesses/sharpenPostProcess.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAGhE,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAKpE;;;GAGG;AACH;IAAwC,sCAAW;IAoB/C;;;;;;;;;;OAUG;IACH,4BAAY,IAAY,EAAE,OAAoC,EAAE,MAAwB,EAAE,YAAqB,EAAE,MAAe,EAAE,QAAkB,EAAE,WAAuB,EAAE,gBAAwB;QAAjD,4BAAA,EAAA,eAAuB;QAAE,iCAAA,EAAA,wBAAwB;QAAvM,YACI,kBAAM,IAAI,EAAE,SAAS,EAAE,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,SAM1K;QArCD;;WAEG;QAEI,iBAAW,GAAW,GAAG,CAAC;QACjC;;WAEG;QAEI,gBAAU,GAAW,GAAG,CAAC;QAwB5B,KAAI,CAAC,OAAO,GAAG,UAAC,MAAc;YAC1B,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,KAAI,CAAC,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC,CAAC;;IACN,CAAC;IA1BD;;;OAGG;IACI,yCAAY,GAAnB;QACI,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAsBD,cAAc;IACA,yBAAM,GAApB,UAAqB,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QAC5F,OAAO,mBAAmB,CAAC,KAAK,CAAC;YAC7B,OAAO,IAAI,kBAAkB,CACzB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EACvC,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACtF,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IA5CD;QADC,SAAS,EAAE;2DACqB;IAKjC;QADC,SAAS,EAAE;0DACoB;IAwCpC,yBAAC;CAAA,AAlDD,CAAwC,WAAW,GAkDlD;SAlDY,kBAAkB;AAoD/B,aAAa,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport { PostProcess, PostProcessOptions } from \"./postProcess\";\r\n\r\n\r\nimport \"../Shaders/sharpen.fragment\";\r\nimport { RegisterClass } from '../Misc/typeStore';\r\nimport { serialize, SerializationHelper } from '../Misc/decorators';\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\n\r\n/**\r\n * The SharpenPostProcess applies a sharpen kernel to every pixel\r\n * See http://en.wikipedia.org/wiki/Kernel_(image_processing)\r\n */\r\nexport class SharpenPostProcess extends PostProcess {\r\n /**\r\n * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)\r\n */\r\n @serialize()\r\n public colorAmount: number = 1.0;\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n @serialize()\r\n public edgeAmount: number = 0.3;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"SharpenPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"SharpenPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ConvolutionPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType: number = 0, blockCompilation = false) {\r\n super(name, \"sharpen\", [\"sharpnessAmounts\", \"screenSize\"], null, options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);\r\n\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat2(\"screenSize\", this.width, this.height);\r\n effect.setFloat2(\"sharpnessAmounts\", this.edgeAmount, this.colorAmount);\r\n };\r\n }\r\n\r\n /** @hidden */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(() => {\r\n return new SharpenPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options, targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\r\n }, parsedPostProcess, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SharpenPostProcess\", SharpenPostProcess);"]}
|