@onerjs/core 8.55.8 → 8.56.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animation.pure.js +2 -2
- package/Animations/animation.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +4 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +7 -0
- package/AudioV2/webAudio/webAudioEngine.js +6 -5
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +1 -0
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -0
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +2 -2
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.d.ts +15 -0
- package/Cameras/Inputs/followCameraPointersInput.js +18 -3
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1 -1
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +1 -0
- package/Collisions/gpuPicker.js +5 -4
- package/Collisions/gpuPicker.js.map +1 -1
- package/Culling/Helper/boundingInfoHelper.js +9 -5
- package/Culling/Helper/boundingInfoHelper.js.map +1 -1
- package/Culling/boundingSphere.js +7 -4
- package/Culling/boundingSphere.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.d.ts +5 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.js +7 -3
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.d.ts +6 -0
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js +16 -0
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js.map +1 -0
- package/Engines/AbstractEngine/pure.d.ts +1 -0
- package/Engines/AbstractEngine/pure.js +1 -0
- package/Engines/AbstractEngine/pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/IDrawContext.d.ts +2 -0
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +48 -6
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -1
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
- package/Engines/WebGPU/webgpuDrawContext.js +15 -0
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/abstractEngine.pure.js +2 -2
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +21 -4
- package/Engines/thinNativeEngine.pure.d.ts +6 -1
- package/Engines/thinNativeEngine.pure.js +29 -2
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +10 -0
- package/Engines/webgpuEngine.pure.js +15 -1
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +3 -63
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +5 -71
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.d.ts +71 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js +86 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Data/pure.d.ts +1 -0
- package/FlowGraph/Blocks/Data/pure.js +1 -0
- package/FlowGraph/Blocks/Data/pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +3 -37
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +5 -39
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.d.ts +45 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js +54 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +3 -17
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +5 -22
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.d.ts +25 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js +37 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Event/pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/pure.js +2 -0
- package/FlowGraph/Blocks/Event/pure.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +198 -172
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +2 -5
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/FrameGraph/frameGraph.js +10 -1
- package/FrameGraph/frameGraph.js.map +1 -1
- package/Gamepads/gamepadManager.d.ts +1 -0
- package/Gamepads/gamepadManager.js +5 -2
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/scaleGizmo.js +1 -0
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Lights/IES/iesLoader.js +6 -8
- package/Lights/IES/iesLoader.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +4 -6
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +2 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/light.js +3 -5
- package/Lights/light.js.map +1 -1
- package/Lights/spotLight.pure.js +1 -1
- package/Lights/spotLight.pure.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.pure.js +3 -12
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +2 -0
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.pure.js +2 -1
- package/Materials/Node/Blocks/powBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +14 -12
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +1 -0
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -1
- package/Materials/PBR/openpbrMaterial.pure.js +3 -12
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +3 -12
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -0
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.pure.js +1 -1
- package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
- package/Materials/drawWrapper.js +3 -0
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/imageProcessingConfiguration.defines.d.ts +3 -0
- package/Materials/imageProcessingConfiguration.defines.js +2 -0
- package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
- package/Materials/imageProcessingConfiguration.functions.js +3 -0
- package/Materials/imageProcessingConfiguration.functions.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.d.ts +58 -0
- package/Materials/imageProcessingConfiguration.pure.js +123 -2
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.pure.js +2 -2
- package/Materials/material.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -1
- package/Materials/standardMaterial.pure.js +4 -13
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +29 -0
- package/Materials/uniformBuffer.js +146 -0
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/colorTemperature.functions.d.ts +29 -0
- package/Maths/colorTemperature.functions.js +196 -0
- package/Maths/colorTemperature.functions.js.map +1 -0
- package/Maths/index.d.ts +1 -0
- package/Maths/index.js +1 -0
- package/Maths/index.js.map +1 -1
- package/Maths/math.path.js +1 -1
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.polar.js +1 -1
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.vector.pure.js +4 -3
- package/Maths/math.vector.pure.js.map +1 -1
- package/Maths/pure.d.ts +1 -0
- package/Maths/pure.js +1 -0
- package/Maths/pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +72 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +164 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +36 -18
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +5 -4
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +25 -8
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +2 -2
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +2 -2
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/csg.js +5 -5
- package/Meshes/csg.js.map +1 -1
- package/Meshes/groundMesh.pure.js +1 -1
- package/Meshes/groundMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +2 -2
- package/Meshes/mesh.pure.js.map +1 -1
- package/Misc/deepMerger.js +1 -1
- package/Misc/deepMerger.js.map +1 -1
- package/Misc/dumpTools.pure.js +1 -1
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +1 -0
- package/Misc/index.js.map +1 -1
- package/Misc/observable.pure.js +1 -3
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/pure.d.ts +1 -0
- package/Misc/pure.js +1 -0
- package/Misc/pure.js.map +1 -1
- package/Misc/shaderImportLoader.d.ts +25 -0
- package/Misc/shaderImportLoader.js +54 -0
- package/Misc/shaderImportLoader.js.map +1 -0
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleClampBlock.pure.d.ts +0 -1
- package/Particles/Node/Blocks/particleClampBlock.pure.js +1 -6
- package/Particles/Node/Blocks/particleClampBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNLerpBlock.pure.js +8 -3
- package/Particles/Node/Blocks/particleNLerpBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js +3 -2
- package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleStepBlock.pure.js +3 -2
- package/Particles/Node/Blocks/particleStepBlock.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +1 -1
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.d.ts +41 -1
- package/PostProcesses/imageProcessingPostProcess.js +41 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.d.ts +50 -0
- package/PostProcesses/thinImageProcessingPostProcess.js +65 -0
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.d.ts +12 -0
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js +22 -0
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +39 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.d.ts +12 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +17 -5
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +14 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +122 -6
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +7 -0
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +17 -0
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
- package/Rendering/IBLShadows/pure.d.ts +1 -0
- package/Rendering/IBLShadows/pure.js +1 -0
- package/Rendering/IBLShadows/pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +3 -3
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +11 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +36 -14
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +5 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +16 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +5 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +12 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/iblCdfGenerator.js +10 -1
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +1 -0
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +1 -1
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.d.ts +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.js +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +1 -1
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +2 -2
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +3 -0
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +3 -0
- package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDirectLighting.js +34 -4
- package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrIblFunctions.js +8 -2
- package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingVoxel.fragment.js +4 -10
- package/Shaders/gaussianSplattingVoxel.fragment.js.map +1 -1
- package/Shaders/iblCombineVoxelGrids.fragment.js +1 -1
- package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
- package/Shaders/iblShadowVoxelTracing.fragment.js +24 -7
- package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js +13 -0
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +3 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +35 -5
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +8 -2
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +16 -4
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js +15 -3
- package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -3
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingVoxel.fragment.js +15 -9
- package/ShadersWGSL/gaussianSplattingVoxel.fragment.js.map +1 -1
- package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +1 -1
- package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.d.ts +5 -0
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js +14 -0
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js.map +1 -0
- package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +24 -7
- package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
- package/ShadersWGSL/iblVoxelGrid.fragment.js +26 -6
- package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
- package/SmartAssets/smartAssetManager.pure.js +1 -1
- package/SmartAssets/smartAssetManager.pure.js.map +1 -1
- package/Sprites/thinSprite.js +1 -1
- package/Sprites/thinSprite.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +182 -12
- package/XR/features/Layers/WebXRCompositionLayer.js +272 -3
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRFallbackLayer.d.ts +84 -0
- package/XR/features/Layers/WebXRFallbackLayer.js +137 -0
- package/XR/features/Layers/WebXRFallbackLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +4 -4
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.pure.d.ts +45 -0
- package/XR/features/WebXRAnchorSystem.pure.js +153 -13
- package/XR/features/WebXRAnchorSystem.pure.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.pure.js +2 -1
- package/XR/features/WebXRControllerPointerSelection.pure.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.pure.js +2 -1
- package/XR/features/WebXRControllerTeleportation.pure.js.map +1 -1
- package/XR/features/WebXRDepthSensing.pure.d.ts +21 -0
- package/XR/features/WebXRDepthSensing.pure.js +42 -0
- package/XR/features/WebXRDepthSensing.pure.js.map +1 -1
- package/XR/features/WebXRHandTracking.pure.js +2 -0
- package/XR/features/WebXRHandTracking.pure.js.map +1 -1
- package/XR/features/WebXRLayers.pure.d.ts +183 -8
- package/XR/features/WebXRLayers.pure.js +531 -99
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/features/WebXRLayersFallback.d.ts +5 -0
- package/XR/features/WebXRLayersFallback.js +8 -0
- package/XR/features/WebXRLayersFallback.js.map +1 -0
- package/XR/features/WebXRLayersFallback.pure.d.ts +6 -0
- package/XR/features/WebXRLayersFallback.pure.js +44 -0
- package/XR/features/WebXRLayersFallback.pure.js.map +1 -0
- package/XR/features/WebXRLightEstimation.pure.d.ts +3 -4
- package/XR/features/WebXRLightEstimation.pure.js +22 -21
- package/XR/features/WebXRLightEstimation.pure.js.map +1 -1
- package/XR/features/WebXRMeshDetector.pure.d.ts +5 -0
- package/XR/features/WebXRMeshDetector.pure.js +1 -0
- package/XR/features/WebXRMeshDetector.pure.js.map +1 -1
- package/XR/features/WebXRNearInteraction.pure.js +3 -3
- package/XR/features/WebXRNearInteraction.pure.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.pure.d.ts +9 -5
- package/XR/features/WebXRPlaneDetector.pure.js +12 -8
- package/XR/features/WebXRPlaneDetector.pure.js.map +1 -1
- package/XR/features/WebXRTrackedSources.d.ts +5 -0
- package/XR/features/WebXRTrackedSources.js +8 -0
- package/XR/features/WebXRTrackedSources.js.map +1 -0
- package/XR/features/WebXRTrackedSources.pure.d.ts +70 -0
- package/XR/features/WebXRTrackedSources.pure.js +153 -0
- package/XR/features/WebXRTrackedSources.pure.js.map +1 -0
- package/XR/features/index.d.ts +1 -0
- package/XR/features/index.js +1 -0
- package/XR/features/index.js.map +1 -1
- package/XR/features/pure.d.ts +2 -0
- package/XR/features/pure.js +2 -0
- package/XR/features/pure.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +53 -1
- package/XR/motionController/webXRAbstractMotionController.js +61 -0
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/webXRCamera.d.ts +2 -0
- package/XR/webXRCamera.js +8 -2
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.js +8 -4
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXRExperienceHelper.js +86 -44
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +9 -0
- package/XR/webXRFeaturesManager.js +4 -0
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +29 -0
- package/XR/webXRGraphicsBinding.js +40 -0
- package/XR/webXRGraphicsBinding.js.map +1 -1
- package/XR/webXRInputSource.js +1 -1
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRLayerWrapper.d.ts +26 -10
- package/XR/webXRLayerWrapper.js +19 -7
- package/XR/webXRLayerWrapper.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +4 -4
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +45 -0
- package/XR/webXRSessionManager.js +174 -29
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +2 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +3 -3
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +5 -0
- package/scene.pure.js +25 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageProcessingConfiguration.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/imageProcessingConfiguration.functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAGxE;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,QAAkB,EAAE,OAA6C;IAC/G,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,YAAsB,EAAE,OAA6C;IACnH,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC","sourcesContent":["import { PrepareUniformsForColorCurves } from \"./colorCurves.functions\";\r\nimport { type IImageProcessingConfigurationDefines } from \"./imageProcessingConfiguration.defines\";\r\n\r\n/**\r\n * Prepare the list of uniforms associated with the Image Processing effects.\r\n * @param uniforms The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\nexport function PrepareUniformsForImageProcessing(uniforms: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.EXPOSURE) {\r\n uniforms.push(\"exposureLinear\");\r\n }\r\n if (defines.CONTRAST) {\r\n uniforms.push(\"contrast\");\r\n }\r\n if (defines.COLORGRADING) {\r\n uniforms.push(\"colorTransformSettings\");\r\n }\r\n if (defines.VIGNETTE || defines.DITHER) {\r\n uniforms.push(\"vInverseScreenSize\");\r\n }\r\n if (defines.VIGNETTE) {\r\n uniforms.push(\"vignetteSettings1\");\r\n uniforms.push(\"vignetteSettings2\");\r\n }\r\n if (defines.COLORCURVES) {\r\n PrepareUniformsForColorCurves(uniforms);\r\n }\r\n if (defines.DITHER) {\r\n uniforms.push(\"ditherIntensity\");\r\n }\r\n}\r\n\r\n/**\r\n * Prepare the list of samplers associated with the Image Processing effects.\r\n * @param samplersList The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\nexport function PrepareSamplersForImageProcessing(samplersList: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.COLORGRADING) {\r\n samplersList.push(\"txColorTransform\");\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"imageProcessingConfiguration.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/imageProcessingConfiguration.functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAGxE;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,QAAkB,EAAE,OAA6C;IAC/G,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,YAAsB,EAAE,OAA6C;IACnH,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC","sourcesContent":["import { PrepareUniformsForColorCurves } from \"./colorCurves.functions\";\r\nimport { type IImageProcessingConfigurationDefines } from \"./imageProcessingConfiguration.defines\";\r\n\r\n/**\r\n * Prepare the list of uniforms associated with the Image Processing effects.\r\n * @param uniforms The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\nexport function PrepareUniformsForImageProcessing(uniforms: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.WHITEBALANCE) {\r\n uniforms.push(\"whiteBalanceMatrix\");\r\n }\r\n if (defines.EXPOSURE) {\r\n uniforms.push(\"exposureLinear\");\r\n }\r\n if (defines.CONTRAST) {\r\n uniforms.push(\"contrast\");\r\n }\r\n if (defines.COLORGRADING) {\r\n uniforms.push(\"colorTransformSettings\");\r\n }\r\n if (defines.VIGNETTE || defines.DITHER) {\r\n uniforms.push(\"vInverseScreenSize\");\r\n }\r\n if (defines.VIGNETTE) {\r\n uniforms.push(\"vignetteSettings1\");\r\n uniforms.push(\"vignetteSettings2\");\r\n }\r\n if (defines.COLORCURVES) {\r\n PrepareUniformsForColorCurves(uniforms);\r\n }\r\n if (defines.DITHER) {\r\n uniforms.push(\"ditherIntensity\");\r\n }\r\n}\r\n\r\n/**\r\n * Prepare the list of samplers associated with the Image Processing effects.\r\n * @param samplersList The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\nexport function PrepareSamplersForImageProcessing(samplersList: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.COLORGRADING) {\r\n samplersList.push(\"txColorTransform\");\r\n }\r\n}\r\n"]}
|
|
@@ -112,6 +112,64 @@ export declare class ImageProcessingConfiguration {
|
|
|
112
112
|
* Sets the contrast used in the effect.
|
|
113
113
|
*/
|
|
114
114
|
set contrast(value: number);
|
|
115
|
+
private _whiteBalanceEnabled;
|
|
116
|
+
/**
|
|
117
|
+
* Gets whether the white balance effect is enabled.
|
|
118
|
+
*/
|
|
119
|
+
get whiteBalanceEnabled(): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Sets whether the white balance effect is enabled.
|
|
122
|
+
*/
|
|
123
|
+
set whiteBalanceEnabled(value: boolean);
|
|
124
|
+
private _temperature;
|
|
125
|
+
/**
|
|
126
|
+
* Gets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled
|
|
127
|
+
* is set to true - i.e. the light the scene is assumed to have been lit with, not a "warm"/"cool" creative
|
|
128
|
+
* adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle
|
|
129
|
+
* light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.
|
|
130
|
+
* Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.
|
|
131
|
+
*/
|
|
132
|
+
get temperature(): number;
|
|
133
|
+
/**
|
|
134
|
+
* Sets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled
|
|
135
|
+
* is set to true - i.e. the light the scene is assumed to have been lit with, not a "warm"/"cool" creative
|
|
136
|
+
* adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle
|
|
137
|
+
* light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.
|
|
138
|
+
* Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.
|
|
139
|
+
*/
|
|
140
|
+
set temperature(value: number);
|
|
141
|
+
private _tint;
|
|
142
|
+
/**
|
|
143
|
+
* Gets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the
|
|
144
|
+
* green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some
|
|
145
|
+
* fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the
|
|
146
|
+
* corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward
|
|
147
|
+
* green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).
|
|
148
|
+
*/
|
|
149
|
+
get tint(): number;
|
|
150
|
+
/**
|
|
151
|
+
* Sets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the
|
|
152
|
+
* green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some
|
|
153
|
+
* fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the
|
|
154
|
+
* corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward
|
|
155
|
+
* green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).
|
|
156
|
+
*/
|
|
157
|
+
set tint(value: number);
|
|
158
|
+
private _whiteBalanceMatrix;
|
|
159
|
+
private _whiteBalanceMatrixTemperature;
|
|
160
|
+
private _whiteBalanceMatrixTint;
|
|
161
|
+
/**
|
|
162
|
+
* Returns the white balance matrix for the current temperature/tint, computing it on first use and
|
|
163
|
+
* recomputing it if either value has changed since it was last computed. Deliberately lazy: white balance is
|
|
164
|
+
* disabled by default, and every `ImageProcessingConfiguration` instance (created per scene, per material,
|
|
165
|
+
* per post process) would otherwise pay this matrix's construction cost even when never enabled. Checking
|
|
166
|
+
* here (rather than eagerly refreshing from the temperature/tint setters) also means paths that set the
|
|
167
|
+
* private backing fields directly - such as SerializationHelper.Clone/Parse, which assign serialized
|
|
168
|
+
* properties without going through their setters - still end up with a matrix that matches the current
|
|
169
|
+
* temperature/tint.
|
|
170
|
+
* @returns the column-major white balance matrix for the current temperature/tint
|
|
171
|
+
*/
|
|
172
|
+
private _getWhiteBalanceMatrix;
|
|
115
173
|
/**
|
|
116
174
|
* Vignette stretch size.
|
|
117
175
|
*/
|
|
@@ -3,6 +3,8 @@ import { __esDecorate, __runInitializers } from "../tslib.es6.js";
|
|
|
3
3
|
import { serialize, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from "../Misc/decorators.js";
|
|
4
4
|
import { Observable } from "../Misc/observable.pure.js";
|
|
5
5
|
import { Color4 } from "../Maths/math.color.pure.js";
|
|
6
|
+
import { GetWhiteBalanceMatrix, MaxTintMagnitude, MinTemperatureKelvin } from "../Maths/colorTemperature.functions.js";
|
|
7
|
+
import { Clamp } from "../Maths/math.scalar.functions.js";
|
|
6
8
|
import { ColorCurves, ColorCurvesBind } from "../Materials/colorCurves.pure.js";
|
|
7
9
|
import { Mix } from "../Misc/tools.functions.js";
|
|
8
10
|
import { SerializationHelper } from "../Misc/decorators.serialization.js";
|
|
@@ -45,6 +47,15 @@ let ImageProcessingConfiguration = (() => {
|
|
|
45
47
|
let __contrast_decorators;
|
|
46
48
|
let __contrast_initializers = [];
|
|
47
49
|
let __contrast_extraInitializers = [];
|
|
50
|
+
let __whiteBalanceEnabled_decorators;
|
|
51
|
+
let __whiteBalanceEnabled_initializers = [];
|
|
52
|
+
let __whiteBalanceEnabled_extraInitializers = [];
|
|
53
|
+
let __temperature_decorators;
|
|
54
|
+
let __temperature_initializers = [];
|
|
55
|
+
let __temperature_extraInitializers = [];
|
|
56
|
+
let __tint_decorators;
|
|
57
|
+
let __tint_initializers = [];
|
|
58
|
+
let __tint_extraInitializers = [];
|
|
48
59
|
let _vignetteStretch_decorators;
|
|
49
60
|
let _vignetteStretch_initializers = [];
|
|
50
61
|
let _vignetteStretch_extraInitializers = [];
|
|
@@ -106,10 +117,16 @@ let ImageProcessingConfiguration = (() => {
|
|
|
106
117
|
this._toneMappingEnabled = (__runInitializers(this, __exposure_extraInitializers), __runInitializers(this, __toneMappingEnabled_initializers, false));
|
|
107
118
|
this._toneMappingType = (__runInitializers(this, __toneMappingEnabled_extraInitializers), __runInitializers(this, __toneMappingType_initializers, _a.TONEMAPPING_STANDARD));
|
|
108
119
|
this._contrast = (__runInitializers(this, __toneMappingType_extraInitializers), __runInitializers(this, __contrast_initializers, 1.0));
|
|
120
|
+
this._whiteBalanceEnabled = (__runInitializers(this, __contrast_extraInitializers), __runInitializers(this, __whiteBalanceEnabled_initializers, false));
|
|
121
|
+
this._temperature = (__runInitializers(this, __whiteBalanceEnabled_extraInitializers), __runInitializers(this, __temperature_initializers, 6500));
|
|
122
|
+
this._tint = (__runInitializers(this, __temperature_extraInitializers), __runInitializers(this, __tint_initializers, 0));
|
|
123
|
+
this._whiteBalanceMatrix = (__runInitializers(this, __tint_extraInitializers), null);
|
|
124
|
+
this._whiteBalanceMatrixTemperature = null;
|
|
125
|
+
this._whiteBalanceMatrixTint = null;
|
|
109
126
|
/**
|
|
110
127
|
* Vignette stretch size.
|
|
111
128
|
*/
|
|
112
|
-
this.vignetteStretch =
|
|
129
|
+
this.vignetteStretch = __runInitializers(this, _vignetteStretch_initializers, 0);
|
|
113
130
|
/**
|
|
114
131
|
* Vignette center X Offset.
|
|
115
132
|
*/
|
|
@@ -297,6 +314,91 @@ let ImageProcessingConfiguration = (() => {
|
|
|
297
314
|
this._contrast = value;
|
|
298
315
|
this._updateParameters();
|
|
299
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Gets whether the white balance effect is enabled.
|
|
319
|
+
*/
|
|
320
|
+
get whiteBalanceEnabled() {
|
|
321
|
+
return this._whiteBalanceEnabled;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Sets whether the white balance effect is enabled.
|
|
325
|
+
*/
|
|
326
|
+
set whiteBalanceEnabled(value) {
|
|
327
|
+
if (this._whiteBalanceEnabled === value) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
this._whiteBalanceEnabled = value;
|
|
331
|
+
this._updateParameters();
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Gets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled
|
|
335
|
+
* is set to true - i.e. the light the scene is assumed to have been lit with, not a "warm"/"cool" creative
|
|
336
|
+
* adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle
|
|
337
|
+
* light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.
|
|
338
|
+
* Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.
|
|
339
|
+
*/
|
|
340
|
+
get temperature() {
|
|
341
|
+
return this._temperature;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Sets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled
|
|
345
|
+
* is set to true - i.e. the light the scene is assumed to have been lit with, not a "warm"/"cool" creative
|
|
346
|
+
* adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle
|
|
347
|
+
* light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.
|
|
348
|
+
* Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.
|
|
349
|
+
*/
|
|
350
|
+
set temperature(value) {
|
|
351
|
+
value = Number.isNaN(value) ? MinTemperatureKelvin : Math.max(value, MinTemperatureKelvin);
|
|
352
|
+
if (this._temperature === value) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
this._temperature = value;
|
|
356
|
+
this._updateParameters();
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Gets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the
|
|
360
|
+
* green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some
|
|
361
|
+
* fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the
|
|
362
|
+
* corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward
|
|
363
|
+
* green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).
|
|
364
|
+
*/
|
|
365
|
+
get tint() {
|
|
366
|
+
return this._tint;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Sets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the
|
|
370
|
+
* green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some
|
|
371
|
+
* fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the
|
|
372
|
+
* corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward
|
|
373
|
+
* green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).
|
|
374
|
+
*/
|
|
375
|
+
set tint(value) {
|
|
376
|
+
value = Clamp(value, -MaxTintMagnitude, MaxTintMagnitude);
|
|
377
|
+
if (this._tint === value) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
this._tint = value;
|
|
381
|
+
this._updateParameters();
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Returns the white balance matrix for the current temperature/tint, computing it on first use and
|
|
385
|
+
* recomputing it if either value has changed since it was last computed. Deliberately lazy: white balance is
|
|
386
|
+
* disabled by default, and every `ImageProcessingConfiguration` instance (created per scene, per material,
|
|
387
|
+
* per post process) would otherwise pay this matrix's construction cost even when never enabled. Checking
|
|
388
|
+
* here (rather than eagerly refreshing from the temperature/tint setters) also means paths that set the
|
|
389
|
+
* private backing fields directly - such as SerializationHelper.Clone/Parse, which assign serialized
|
|
390
|
+
* properties without going through their setters - still end up with a matrix that matches the current
|
|
391
|
+
* temperature/tint.
|
|
392
|
+
* @returns the column-major white balance matrix for the current temperature/tint
|
|
393
|
+
*/
|
|
394
|
+
_getWhiteBalanceMatrix() {
|
|
395
|
+
if (this._whiteBalanceMatrix === null || this._whiteBalanceMatrixTemperature !== this._temperature || this._whiteBalanceMatrixTint !== this._tint) {
|
|
396
|
+
this._whiteBalanceMatrixTemperature = this._temperature;
|
|
397
|
+
this._whiteBalanceMatrixTint = this._tint;
|
|
398
|
+
this._whiteBalanceMatrix = GetWhiteBalanceMatrix(this._temperature, this._tint);
|
|
399
|
+
}
|
|
400
|
+
return this._whiteBalanceMatrix;
|
|
401
|
+
}
|
|
300
402
|
/**
|
|
301
403
|
* Back Compat: Vignette center Y Offset.
|
|
302
404
|
* @deprecated use vignetteCenterY instead
|
|
@@ -453,6 +555,7 @@ let ImageProcessingConfiguration = (() => {
|
|
|
453
555
|
*/
|
|
454
556
|
prepareDefines(defines, forPostProcess = false) {
|
|
455
557
|
if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {
|
|
558
|
+
defines.WHITEBALANCE = false;
|
|
456
559
|
defines.VIGNETTE = false;
|
|
457
560
|
defines.TONEMAPPING = 0;
|
|
458
561
|
defines.CONTRAST = false;
|
|
@@ -466,6 +569,7 @@ let ImageProcessingConfiguration = (() => {
|
|
|
466
569
|
defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;
|
|
467
570
|
return;
|
|
468
571
|
}
|
|
572
|
+
defines.WHITEBALANCE = this._whiteBalanceEnabled;
|
|
469
573
|
defines.VIGNETTE = this.vignetteEnabled;
|
|
470
574
|
defines.VIGNETTEBLENDMODEMULTIPLY = this.vignetteBlendMode === _a._VIGNETTEMODE_MULTIPLY;
|
|
471
575
|
defines.VIGNETTEBLENDMODEOPAQUE = !defines.VIGNETTEBLENDMODEMULTIPLY;
|
|
@@ -501,7 +605,14 @@ let ImageProcessingConfiguration = (() => {
|
|
|
501
605
|
defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;
|
|
502
606
|
defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;
|
|
503
607
|
defines.IMAGEPROCESSING =
|
|
504
|
-
defines.
|
|
608
|
+
defines.WHITEBALANCE ||
|
|
609
|
+
defines.VIGNETTE ||
|
|
610
|
+
!!defines.TONEMAPPING ||
|
|
611
|
+
defines.CONTRAST ||
|
|
612
|
+
defines.EXPOSURE ||
|
|
613
|
+
defines.COLORCURVES ||
|
|
614
|
+
defines.COLORGRADING ||
|
|
615
|
+
defines.DITHER;
|
|
505
616
|
}
|
|
506
617
|
/**
|
|
507
618
|
* Returns true if all the image processing information are ready.
|
|
@@ -517,6 +628,10 @@ let ImageProcessingConfiguration = (() => {
|
|
|
517
628
|
* @param overrideAspectRatio Override the aspect ratio of the effect
|
|
518
629
|
*/
|
|
519
630
|
bind(effect, overrideAspectRatio) {
|
|
631
|
+
// White Balance
|
|
632
|
+
if (this._whiteBalanceEnabled) {
|
|
633
|
+
effect.setMatrix3x3("whiteBalanceMatrix", this._getWhiteBalanceMatrix());
|
|
634
|
+
}
|
|
520
635
|
// Color Curves
|
|
521
636
|
if (this._colorCurvesEnabled && this.colorCurves) {
|
|
522
637
|
ColorCurvesBind(this.colorCurves, effect);
|
|
@@ -595,6 +710,9 @@ let ImageProcessingConfiguration = (() => {
|
|
|
595
710
|
__toneMappingEnabled_decorators = [serialize()];
|
|
596
711
|
__toneMappingType_decorators = [serialize()];
|
|
597
712
|
__contrast_decorators = [serialize()];
|
|
713
|
+
__whiteBalanceEnabled_decorators = [serialize()];
|
|
714
|
+
__temperature_decorators = [serialize()];
|
|
715
|
+
__tint_decorators = [serialize()];
|
|
598
716
|
_vignetteStretch_decorators = [serialize()];
|
|
599
717
|
_vignetteCenterX_decorators = [serialize()];
|
|
600
718
|
_vignetteCenterY_decorators = [serialize()];
|
|
@@ -620,6 +738,9 @@ let ImageProcessingConfiguration = (() => {
|
|
|
620
738
|
__esDecorate(null, null, __toneMappingEnabled_decorators, { kind: "field", name: "_toneMappingEnabled", static: false, private: false, access: { has: obj => "_toneMappingEnabled" in obj, get: obj => obj._toneMappingEnabled, set: (obj, value) => { obj._toneMappingEnabled = value; } }, metadata: _metadata }, __toneMappingEnabled_initializers, __toneMappingEnabled_extraInitializers);
|
|
621
739
|
__esDecorate(null, null, __toneMappingType_decorators, { kind: "field", name: "_toneMappingType", static: false, private: false, access: { has: obj => "_toneMappingType" in obj, get: obj => obj._toneMappingType, set: (obj, value) => { obj._toneMappingType = value; } }, metadata: _metadata }, __toneMappingType_initializers, __toneMappingType_extraInitializers);
|
|
622
740
|
__esDecorate(null, null, __contrast_decorators, { kind: "field", name: "_contrast", static: false, private: false, access: { has: obj => "_contrast" in obj, get: obj => obj._contrast, set: (obj, value) => { obj._contrast = value; } }, metadata: _metadata }, __contrast_initializers, __contrast_extraInitializers);
|
|
741
|
+
__esDecorate(null, null, __whiteBalanceEnabled_decorators, { kind: "field", name: "_whiteBalanceEnabled", static: false, private: false, access: { has: obj => "_whiteBalanceEnabled" in obj, get: obj => obj._whiteBalanceEnabled, set: (obj, value) => { obj._whiteBalanceEnabled = value; } }, metadata: _metadata }, __whiteBalanceEnabled_initializers, __whiteBalanceEnabled_extraInitializers);
|
|
742
|
+
__esDecorate(null, null, __temperature_decorators, { kind: "field", name: "_temperature", static: false, private: false, access: { has: obj => "_temperature" in obj, get: obj => obj._temperature, set: (obj, value) => { obj._temperature = value; } }, metadata: _metadata }, __temperature_initializers, __temperature_extraInitializers);
|
|
743
|
+
__esDecorate(null, null, __tint_decorators, { kind: "field", name: "_tint", static: false, private: false, access: { has: obj => "_tint" in obj, get: obj => obj._tint, set: (obj, value) => { obj._tint = value; } }, metadata: _metadata }, __tint_initializers, __tint_extraInitializers);
|
|
623
744
|
__esDecorate(null, null, _vignetteStretch_decorators, { kind: "field", name: "vignetteStretch", static: false, private: false, access: { has: obj => "vignetteStretch" in obj, get: obj => obj.vignetteStretch, set: (obj, value) => { obj.vignetteStretch = value; } }, metadata: _metadata }, _vignetteStretch_initializers, _vignetteStretch_extraInitializers);
|
|
624
745
|
__esDecorate(null, null, _vignetteCenterX_decorators, { kind: "field", name: "vignetteCenterX", static: false, private: false, access: { has: obj => "vignetteCenterX" in obj, get: obj => obj.vignetteCenterX, set: (obj, value) => { obj.vignetteCenterX = value; } }, metadata: _metadata }, _vignetteCenterX_initializers, _vignetteCenterX_extraInitializers);
|
|
625
746
|
__esDecorate(null, null, _vignetteCenterY_decorators, { kind: "field", name: "vignetteCenterY", static: false, private: false, access: { has: obj => "vignetteCenterY" in obj, get: obj => obj.vignetteCenterY, set: (obj, value) => { obj.vignetteCenterY = value; } }, metadata: _metadata }, _vignetteCenterY_initializers, _vignetteCenterY_extraInitializers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageProcessingConfiguration.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/imageProcessingConfiguration.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators\";\r\nimport { Observable } from \"../Misc/observable.pure\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Color4 } from \"../Maths/math.color.pure\";\r\nimport { ColorCurves, ColorCurvesBind } from \"../Materials/colorCurves.pure\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\r\nimport { type Effect } from \"../Materials/effect.pure\";\r\nimport { Mix } from \"../Misc/tools.functions\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { type IImageProcessingConfigurationDefines } from \"./imageProcessingConfiguration.defines\";\r\nimport { PrepareSamplersForImageProcessing, PrepareUniformsForImageProcessing } from \"./imageProcessingConfiguration.functions\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * This groups together the common properties used for image processing either in direct forward pass\r\n * or through post processing effect depending on the use of the image processing pipeline in your scene\r\n * or not.\r\n */\r\nexport class ImageProcessingConfiguration {\r\n /**\r\n * Default tone mapping applied in BabylonJS.\r\n */\r\n public static readonly TONEMAPPING_STANDARD = 0;\r\n\r\n /**\r\n * ACES Tone mapping (used by default in unreal and unity). This can help getting closer\r\n * to other engines rendering to increase portability.\r\n */\r\n public static readonly TONEMAPPING_ACES = 1;\r\n\r\n /**\r\n * Neutral Tone mapping developped by the Khronos group in order to constrain\r\n * values between 0 and 1 without shifting Hue.\r\n */\r\n public static readonly TONEMAPPING_KHR_PBR_NEUTRAL = 2;\r\n\r\n /**\r\n * Color curves setup used in the effect if colorCurvesEnabled is set to true\r\n */\r\n @serializeAsColorCurves()\r\n public colorCurves: Nullable<ColorCurves> = new ColorCurves();\r\n\r\n @serialize()\r\n private _colorCurvesEnabled = false;\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this._colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n if (this._colorCurvesEnabled === value) {\r\n return;\r\n }\r\n\r\n this._colorCurvesEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serializeAsTexture(\"colorGradingTexture\")\r\n private _colorGradingTexture: Nullable<BaseTexture>;\r\n /**\r\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this._colorGradingTexture;\r\n }\r\n /**\r\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n if (this._colorGradingTexture === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingTexture = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingEnabled = false;\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this._colorGradingEnabled;\r\n }\r\n /**\r\n * Sets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n if (this._colorGradingEnabled === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingWithGreenDepth = true;\r\n /**\r\n * Gets whether the color grading effect is using a green depth for the 3d Texture.\r\n */\r\n public get colorGradingWithGreenDepth(): boolean {\r\n return this._colorGradingWithGreenDepth;\r\n }\r\n /**\r\n * Sets whether the color grading effect is using a green depth for the 3d Texture.\r\n */\r\n public set colorGradingWithGreenDepth(value: boolean) {\r\n if (this._colorGradingWithGreenDepth === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingWithGreenDepth = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingBGR = true;\r\n /**\r\n * Gets whether the color grading texture contains BGR values.\r\n */\r\n public get colorGradingBGR(): boolean {\r\n return this._colorGradingBGR;\r\n }\r\n /**\r\n * Sets whether the color grading texture contains BGR values.\r\n */\r\n public set colorGradingBGR(value: boolean) {\r\n if (this._colorGradingBGR === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingBGR = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _exposure = 1.0;\r\n /**\r\n * Gets the Exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this._exposure;\r\n }\r\n /**\r\n * Sets the Exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n if (this._exposure === value) {\r\n return;\r\n }\r\n\r\n this._exposure = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _toneMappingEnabled = false;\r\n /**\r\n * Gets whether the tone mapping effect is enabled.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether the tone mapping effect is enabled.\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n if (this._toneMappingEnabled === value) {\r\n return;\r\n }\r\n\r\n this._toneMappingEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _toneMappingType = ImageProcessingConfiguration.TONEMAPPING_STANDARD;\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect used in BabylonJS.\r\n */\r\n public set toneMappingType(value: number) {\r\n if (this._toneMappingType === value) {\r\n return;\r\n }\r\n\r\n this._toneMappingType = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n protected _contrast = 1.0;\r\n /**\r\n * Gets the contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this._contrast;\r\n }\r\n /**\r\n * Sets the contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n if (this._contrast === value) {\r\n return;\r\n }\r\n\r\n this._contrast = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * Vignette stretch size.\r\n */\r\n @serialize()\r\n public vignetteStretch = 0;\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n @serialize()\r\n public vignetteCenterX = 0;\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n @serialize()\r\n public vignetteCenterY = 0;\r\n\r\n /**\r\n * Back Compat: Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.vignetteCenterY;\r\n }\r\n public set vignetteCentreY(value: number) {\r\n this.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Back Compat: Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.vignetteCenterX;\r\n }\r\n public set vignetteCentreX(value: number) {\r\n this.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Vignette weight or intensity of the vignette effect.\r\n */\r\n @serialize()\r\n public vignetteWeight = 1.5;\r\n\r\n /**\r\n * Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n @serializeAsColor4()\r\n public vignetteColor: Color4 = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Camera field of view used by the Vignette effect.\r\n */\r\n @serialize()\r\n public vignetteCameraFov = 0.5;\r\n\r\n @serialize()\r\n private _vignetteBlendMode = ImageProcessingConfiguration.VIGNETTEMODE_MULTIPLY;\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this._vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n if (this._vignetteBlendMode === value) {\r\n return;\r\n }\r\n\r\n this._vignetteBlendMode = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _vignetteEnabled = false;\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this._vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n if (this._vignetteEnabled === value) {\r\n return;\r\n }\r\n\r\n this._vignetteEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _ditheringEnabled = false;\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n * The dithering effect can be used to reduce banding.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this._ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n * The dithering effect can be used to reduce banding.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n if (this._ditheringEnabled === value) {\r\n return;\r\n }\r\n\r\n this._ditheringEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _ditheringIntensity = 1.0 / 255.0;\r\n /**\r\n * Gets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this._ditheringIntensity;\r\n }\r\n /**\r\n * Sets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n if (this._ditheringIntensity === value) {\r\n return;\r\n }\r\n\r\n this._ditheringIntensity = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _skipFinalColorClamp = false;\r\n /**\r\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\r\n * Applies to PBR materials.\r\n */\r\n public get skipFinalColorClamp(): boolean {\r\n return this._skipFinalColorClamp;\r\n }\r\n /**\r\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\r\n * Applies to PBR materials.\r\n */\r\n public set skipFinalColorClamp(value: boolean) {\r\n if (this._skipFinalColorClamp === value) {\r\n return;\r\n }\r\n\r\n this._skipFinalColorClamp = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _applyByPostProcess = false;\r\n /**\r\n * Gets whether the image processing is applied through a post process or not.\r\n */\r\n public get applyByPostProcess(): boolean {\r\n return this._applyByPostProcess;\r\n }\r\n /**\r\n * Sets whether the image processing is applied through a post process or not.\r\n */\r\n public set applyByPostProcess(value: boolean) {\r\n if (this._applyByPostProcess === value) {\r\n return;\r\n }\r\n\r\n this._applyByPostProcess = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _isEnabled = true;\r\n /**\r\n * Gets whether the image processing is enabled or not.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the image processing is enabled or not.\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n\r\n this._isEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * Width of the output texture used in the post process. If not provided, uses the width of the screen.\r\n */\r\n @serialize()\r\n public outputTextureWidth = 0;\r\n\r\n /**\r\n * Height of the output texture used in the post process. If not provided, uses the height of the screen.\r\n */\r\n @serialize()\r\n public outputTextureHeight = 0;\r\n\r\n /**\r\n * An event triggered when the configuration changes and requires Shader to Update some parameters.\r\n */\r\n public onUpdateParameters = new Observable<ImageProcessingConfiguration>();\r\n\r\n /**\r\n * Method called each time the image processing information changes requires to recompile the effect.\r\n */\r\n protected _updateParameters(): void {\r\n this.onUpdateParameters.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets the current class name.\r\n * @returns \"ImageProcessingConfiguration\"\r\n */\r\n public getClassName(): string {\r\n return \"ImageProcessingConfiguration\";\r\n }\r\n\r\n /**\r\n * Prepare the list of uniforms associated with the Image Processing effects.\r\n * @param uniforms The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\n public static PrepareUniforms: (uniforms: string[], defines: IImageProcessingConfigurationDefines) => void = PrepareUniformsForImageProcessing;\r\n\r\n /**\r\n * Prepare the list of samplers associated with the Image Processing effects.\r\n * @param samplersList The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\n public static PrepareSamplers: (samplersList: string[], defines: IImageProcessingConfigurationDefines) => void = PrepareSamplersForImageProcessing;\r\n\r\n /**\r\n * Prepare the list of defines associated to the shader.\r\n * @param defines the list of defines to complete\r\n * @param forPostProcess Define if we are currently in post process mode or not\r\n */\r\n public prepareDefines(defines: IImageProcessingConfigurationDefines, forPostProcess = false): void {\r\n if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {\r\n defines.VIGNETTE = false;\r\n defines.TONEMAPPING = 0;\r\n defines.CONTRAST = false;\r\n defines.EXPOSURE = false;\r\n defines.COLORCURVES = false;\r\n defines.COLORGRADING = false;\r\n defines.COLORGRADING3D = false;\r\n defines.DITHER = false;\r\n defines.IMAGEPROCESSING = false;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;\r\n return;\r\n }\r\n\r\n defines.VIGNETTE = this.vignetteEnabled;\r\n defines.VIGNETTEBLENDMODEMULTIPLY = this.vignetteBlendMode === ImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY;\r\n defines.VIGNETTEBLENDMODEOPAQUE = !defines.VIGNETTEBLENDMODEMULTIPLY;\r\n\r\n if (!this._toneMappingEnabled) {\r\n defines.TONEMAPPING = 0;\r\n } else {\r\n switch (this._toneMappingType) {\r\n case ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL:\r\n defines.TONEMAPPING = 3;\r\n break;\r\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\r\n defines.TONEMAPPING = 2;\r\n break;\r\n default:\r\n defines.TONEMAPPING = 1;\r\n break;\r\n }\r\n }\r\n\r\n defines.CONTRAST = this.contrast !== 1.0;\r\n defines.EXPOSURE = this.exposure !== 1.0;\r\n defines.COLORCURVES = this.colorCurvesEnabled && !!this.colorCurves;\r\n defines.COLORGRADING = this.colorGradingEnabled && !!this.colorGradingTexture;\r\n if (defines.COLORGRADING) {\r\n defines.COLORGRADING3D = this.colorGradingTexture!.is3D;\r\n } else {\r\n defines.COLORGRADING3D = false;\r\n }\r\n defines.SAMPLER3DGREENDEPTH = this.colorGradingWithGreenDepth;\r\n defines.SAMPLER3DBGRMAP = this.colorGradingBGR;\r\n defines.DITHER = this._ditheringEnabled;\r\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSING =\r\n defines.VIGNETTE || !!defines.TONEMAPPING || defines.CONTRAST || defines.EXPOSURE || defines.COLORCURVES || defines.COLORGRADING || defines.DITHER;\r\n }\r\n\r\n /**\r\n * Returns true if all the image processing information are ready.\r\n * @returns True if ready, otherwise, false\r\n */\r\n public isReady() {\r\n // Color Grading texture can not be none blocking.\r\n return !this.colorGradingEnabled || !this.colorGradingTexture || this.colorGradingTexture.isReady();\r\n }\r\n\r\n /**\r\n * Binds the image processing to the shader.\r\n * @param effect The effect to bind to\r\n * @param overrideAspectRatio Override the aspect ratio of the effect\r\n */\r\n public bind(effect: Effect, overrideAspectRatio?: number): void {\r\n // Color Curves\r\n if (this._colorCurvesEnabled && this.colorCurves) {\r\n ColorCurvesBind(this.colorCurves, effect);\r\n }\r\n\r\n // Vignette and dither handled together due to common uniform.\r\n if (this._vignetteEnabled || this._ditheringEnabled) {\r\n const inverseWidth = 1 / (this.outputTextureWidth || effect.getEngine().getRenderWidth());\r\n const inverseHeight = 1 / (this.outputTextureHeight || effect.getEngine().getRenderHeight());\r\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\r\n\r\n if (this._ditheringEnabled) {\r\n effect.setFloat(\"ditherIntensity\", 0.5 * this._ditheringIntensity);\r\n }\r\n\r\n if (this._vignetteEnabled) {\r\n const aspectRatio = overrideAspectRatio != null ? overrideAspectRatio : inverseHeight / inverseWidth;\r\n\r\n let vignetteScaleY = Math.tan(this.vignetteCameraFov * 0.5);\r\n let vignetteScaleX = vignetteScaleY * aspectRatio;\r\n\r\n const vignetteScaleGeometricMean = Math.sqrt(vignetteScaleX * vignetteScaleY);\r\n vignetteScaleX = Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\r\n vignetteScaleY = Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\r\n\r\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCenterX, -vignetteScaleY * this.vignetteCenterY);\r\n\r\n const vignettePower = -2.0 * this.vignetteWeight;\r\n effect.setFloat4(\"vignetteSettings2\", this.vignetteColor.r, this.vignetteColor.g, this.vignetteColor.b, vignettePower);\r\n }\r\n }\r\n\r\n // Exposure\r\n effect.setFloat(\"exposureLinear\", this.exposure);\r\n\r\n // Contrast\r\n effect.setFloat(\"contrast\", this.contrast);\r\n\r\n // Color transform settings\r\n if (this.colorGradingTexture) {\r\n effect.setTexture(\"txColorTransform\", this.colorGradingTexture);\r\n const textureSize = this.colorGradingTexture.getSize().height;\r\n\r\n effect.setFloat4(\r\n \"colorTransformSettings\",\r\n (textureSize - 1) / textureSize, // textureScale\r\n 0.5 / textureSize, // textureOffset\r\n textureSize, // textureSize\r\n this.colorGradingTexture.level // weight\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Clones the current image processing instance.\r\n * @returns The cloned image processing\r\n */\r\n public clone(): ImageProcessingConfiguration {\r\n return SerializationHelper.Clone(() => new ImageProcessingConfiguration(), this);\r\n }\r\n\r\n /**\r\n * Serializes the current image processing instance to a json representation.\r\n * @returns a JSON representation\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\r\n\r\n // Static constants associated to the image processing.\r\n private static _VIGNETTEMODE_MULTIPLY = 0;\r\n private static _VIGNETTEMODE_OPAQUE = 1;\r\n\r\n /**\r\n * Used to apply the vignette as a mix with the pixel color.\r\n */\r\n public static get VIGNETTEMODE_MULTIPLY(): number {\r\n return this._VIGNETTEMODE_MULTIPLY;\r\n }\r\n\r\n /**\r\n * Used to apply the vignette as a replacement of the pixel color.\r\n */\r\n public static get VIGNETTEMODE_OPAQUE(): number {\r\n return this._VIGNETTEMODE_OPAQUE;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n\r\n/**\r\n * Parses the image processing from a json representation.\r\n * @param source the JSON source to parse\r\n * @returns The parsed image processing\r\n */\r\nexport function ImageProcessingConfigurationParse(source: any): ImageProcessingConfiguration {\r\n const parsed = SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\r\n // Backward compatibility\r\n if (source.vignetteCentreX !== undefined) {\r\n parsed.vignetteCenterX = source.vignetteCentreX;\r\n }\r\n if (source.vignetteCentreY !== undefined) {\r\n parsed.vignetteCenterY = source.vignetteCentreY;\r\n }\r\n\r\n return parsed;\r\n}\r\n\r\n/**\r\n * Register side effects for imageProcessingConfiguration.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterImageProcessingConfiguration(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // References the dependencies.\r\n ImageProcessingConfiguration.Parse = ImageProcessingConfigurationParse;\r\n\r\n SerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfigurationParse;\r\n\r\n // Register Class Name\r\n RegisterClass(\"BABYLON.ImageProcessingConfiguration\", ImageProcessingConfiguration);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"imageProcessingConfiguration.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/imageProcessingConfiguration.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators\";\r\nimport { Observable } from \"../Misc/observable.pure\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Color4 } from \"../Maths/math.color.pure\";\r\nimport { GetWhiteBalanceMatrix, MaxTintMagnitude, MinTemperatureKelvin } from \"../Maths/colorTemperature.functions\";\r\nimport { Clamp } from \"../Maths/math.scalar.functions\";\r\nimport { ColorCurves, ColorCurvesBind } from \"../Materials/colorCurves.pure\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\r\nimport { type Effect } from \"../Materials/effect.pure\";\r\nimport { Mix } from \"../Misc/tools.functions\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { type IImageProcessingConfigurationDefines } from \"./imageProcessingConfiguration.defines\";\r\nimport { PrepareSamplersForImageProcessing, PrepareUniformsForImageProcessing } from \"./imageProcessingConfiguration.functions\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * This groups together the common properties used for image processing either in direct forward pass\r\n * or through post processing effect depending on the use of the image processing pipeline in your scene\r\n * or not.\r\n */\r\nexport class ImageProcessingConfiguration {\r\n /**\r\n * Default tone mapping applied in BabylonJS.\r\n */\r\n public static readonly TONEMAPPING_STANDARD = 0;\r\n\r\n /**\r\n * ACES Tone mapping (used by default in unreal and unity). This can help getting closer\r\n * to other engines rendering to increase portability.\r\n */\r\n public static readonly TONEMAPPING_ACES = 1;\r\n\r\n /**\r\n * Neutral Tone mapping developped by the Khronos group in order to constrain\r\n * values between 0 and 1 without shifting Hue.\r\n */\r\n public static readonly TONEMAPPING_KHR_PBR_NEUTRAL = 2;\r\n\r\n /**\r\n * Color curves setup used in the effect if colorCurvesEnabled is set to true\r\n */\r\n @serializeAsColorCurves()\r\n public colorCurves: Nullable<ColorCurves> = new ColorCurves();\r\n\r\n @serialize()\r\n private _colorCurvesEnabled = false;\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this._colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n if (this._colorCurvesEnabled === value) {\r\n return;\r\n }\r\n\r\n this._colorCurvesEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serializeAsTexture(\"colorGradingTexture\")\r\n private _colorGradingTexture: Nullable<BaseTexture>;\r\n /**\r\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this._colorGradingTexture;\r\n }\r\n /**\r\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n if (this._colorGradingTexture === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingTexture = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingEnabled = false;\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this._colorGradingEnabled;\r\n }\r\n /**\r\n * Sets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n if (this._colorGradingEnabled === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingWithGreenDepth = true;\r\n /**\r\n * Gets whether the color grading effect is using a green depth for the 3d Texture.\r\n */\r\n public get colorGradingWithGreenDepth(): boolean {\r\n return this._colorGradingWithGreenDepth;\r\n }\r\n /**\r\n * Sets whether the color grading effect is using a green depth for the 3d Texture.\r\n */\r\n public set colorGradingWithGreenDepth(value: boolean) {\r\n if (this._colorGradingWithGreenDepth === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingWithGreenDepth = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _colorGradingBGR = true;\r\n /**\r\n * Gets whether the color grading texture contains BGR values.\r\n */\r\n public get colorGradingBGR(): boolean {\r\n return this._colorGradingBGR;\r\n }\r\n /**\r\n * Sets whether the color grading texture contains BGR values.\r\n */\r\n public set colorGradingBGR(value: boolean) {\r\n if (this._colorGradingBGR === value) {\r\n return;\r\n }\r\n\r\n this._colorGradingBGR = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _exposure = 1.0;\r\n /**\r\n * Gets the Exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this._exposure;\r\n }\r\n /**\r\n * Sets the Exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n if (this._exposure === value) {\r\n return;\r\n }\r\n\r\n this._exposure = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _toneMappingEnabled = false;\r\n /**\r\n * Gets whether the tone mapping effect is enabled.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether the tone mapping effect is enabled.\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n if (this._toneMappingEnabled === value) {\r\n return;\r\n }\r\n\r\n this._toneMappingEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _toneMappingType = ImageProcessingConfiguration.TONEMAPPING_STANDARD;\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect used in BabylonJS.\r\n */\r\n public set toneMappingType(value: number) {\r\n if (this._toneMappingType === value) {\r\n return;\r\n }\r\n\r\n this._toneMappingType = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n protected _contrast = 1.0;\r\n /**\r\n * Gets the contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this._contrast;\r\n }\r\n /**\r\n * Sets the contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n if (this._contrast === value) {\r\n return;\r\n }\r\n\r\n this._contrast = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _whiteBalanceEnabled = false;\r\n /**\r\n * Gets whether the white balance effect is enabled.\r\n */\r\n public get whiteBalanceEnabled(): boolean {\r\n return this._whiteBalanceEnabled;\r\n }\r\n /**\r\n * Sets whether the white balance effect is enabled.\r\n */\r\n public set whiteBalanceEnabled(value: boolean) {\r\n if (this._whiteBalanceEnabled === value) {\r\n return;\r\n }\r\n\r\n this._whiteBalanceEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _temperature = 6500;\r\n /**\r\n * Gets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled\r\n * is set to true - i.e. the light the scene is assumed to have been lit with, not a \"warm\"/\"cool\" creative\r\n * adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle\r\n * light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.\r\n * Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.\r\n */\r\n public get temperature(): number {\r\n return this._temperature;\r\n }\r\n /**\r\n * Sets the correlated color temperature, in Kelvin, of the illuminant to neutralize when whiteBalanceEnabled\r\n * is set to true - i.e. the light the scene is assumed to have been lit with, not a \"warm\"/\"cool\" creative\r\n * adjustment. Lower values (e.g. ~2000-3500 K) correspond to warm/orange sources such as tungsten or candle\r\n * light; higher values (e.g. ~7000-10000 K) correspond to cool/blue sources such as shade or overcast sky.\r\n * Clamped to the tabulated range (roughly 1667 K and above) - the getter reflects the clamped value. Default is 6500.\r\n */\r\n public set temperature(value: number) {\r\n value = Number.isNaN(value) ? MinTemperatureKelvin : Math.max(value, MinTemperatureKelvin);\r\n\r\n if (this._temperature === value) {\r\n return;\r\n }\r\n\r\n this._temperature = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _tint = 0;\r\n /**\r\n * Gets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the\r\n * green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some\r\n * fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the\r\n * corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward\r\n * green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).\r\n */\r\n public get tint(): number {\r\n return this._tint;\r\n }\r\n /**\r\n * Sets the white balance tint offset used in the effect if whiteBalanceEnabled is set to true, on the\r\n * green/magenta axis perpendicular to temperature - e.g. to correct for illuminants (such as some\r\n * fluorescent lights) that a color temperature alone can't fully neutralize. Positive values shift the\r\n * corrected image toward magenta (compensating a green-tinted illuminant); negative values shift it toward\r\n * green (compensating a magenta-tinted illuminant). Clamped to [-150, 150] - the getter reflects the clamped value. Default is 0 (no tint offset).\r\n */\r\n public set tint(value: number) {\r\n value = Clamp(value, -MaxTintMagnitude, MaxTintMagnitude);\r\n\r\n if (this._tint === value) {\r\n return;\r\n }\r\n\r\n this._tint = value;\r\n this._updateParameters();\r\n }\r\n\r\n private _whiteBalanceMatrix: Nullable<Float32Array | Array<number>> = null;\r\n private _whiteBalanceMatrixTemperature: Nullable<number> = null;\r\n private _whiteBalanceMatrixTint: Nullable<number> = null;\r\n\r\n /**\r\n * Returns the white balance matrix for the current temperature/tint, computing it on first use and\r\n * recomputing it if either value has changed since it was last computed. Deliberately lazy: white balance is\r\n * disabled by default, and every `ImageProcessingConfiguration` instance (created per scene, per material,\r\n * per post process) would otherwise pay this matrix's construction cost even when never enabled. Checking\r\n * here (rather than eagerly refreshing from the temperature/tint setters) also means paths that set the\r\n * private backing fields directly - such as SerializationHelper.Clone/Parse, which assign serialized\r\n * properties without going through their setters - still end up with a matrix that matches the current\r\n * temperature/tint.\r\n * @returns the column-major white balance matrix for the current temperature/tint\r\n */\r\n private _getWhiteBalanceMatrix(): Float32Array | Array<number> {\r\n if (this._whiteBalanceMatrix === null || this._whiteBalanceMatrixTemperature !== this._temperature || this._whiteBalanceMatrixTint !== this._tint) {\r\n this._whiteBalanceMatrixTemperature = this._temperature;\r\n this._whiteBalanceMatrixTint = this._tint;\r\n this._whiteBalanceMatrix = GetWhiteBalanceMatrix(this._temperature, this._tint);\r\n }\r\n return this._whiteBalanceMatrix;\r\n }\r\n\r\n /**\r\n * Vignette stretch size.\r\n */\r\n @serialize()\r\n public vignetteStretch = 0;\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n @serialize()\r\n public vignetteCenterX = 0;\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n @serialize()\r\n public vignetteCenterY = 0;\r\n\r\n /**\r\n * Back Compat: Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.vignetteCenterY;\r\n }\r\n public set vignetteCentreY(value: number) {\r\n this.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Back Compat: Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.vignetteCenterX;\r\n }\r\n public set vignetteCentreX(value: number) {\r\n this.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Vignette weight or intensity of the vignette effect.\r\n */\r\n @serialize()\r\n public vignetteWeight = 1.5;\r\n\r\n /**\r\n * Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n @serializeAsColor4()\r\n public vignetteColor: Color4 = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Camera field of view used by the Vignette effect.\r\n */\r\n @serialize()\r\n public vignetteCameraFov = 0.5;\r\n\r\n @serialize()\r\n private _vignetteBlendMode = ImageProcessingConfiguration.VIGNETTEMODE_MULTIPLY;\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this._vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n if (this._vignetteBlendMode === value) {\r\n return;\r\n }\r\n\r\n this._vignetteBlendMode = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _vignetteEnabled = false;\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this._vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n if (this._vignetteEnabled === value) {\r\n return;\r\n }\r\n\r\n this._vignetteEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _ditheringEnabled = false;\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n * The dithering effect can be used to reduce banding.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this._ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n * The dithering effect can be used to reduce banding.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n if (this._ditheringEnabled === value) {\r\n return;\r\n }\r\n\r\n this._ditheringEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _ditheringIntensity = 1.0 / 255.0;\r\n /**\r\n * Gets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this._ditheringIntensity;\r\n }\r\n /**\r\n * Sets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n if (this._ditheringIntensity === value) {\r\n return;\r\n }\r\n\r\n this._ditheringIntensity = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _skipFinalColorClamp = false;\r\n /**\r\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\r\n * Applies to PBR materials.\r\n */\r\n public get skipFinalColorClamp(): boolean {\r\n return this._skipFinalColorClamp;\r\n }\r\n /**\r\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\r\n * Applies to PBR materials.\r\n */\r\n public set skipFinalColorClamp(value: boolean) {\r\n if (this._skipFinalColorClamp === value) {\r\n return;\r\n }\r\n\r\n this._skipFinalColorClamp = value;\r\n this._updateParameters();\r\n }\r\n\r\n /** @internal */\r\n @serialize()\r\n public _applyByPostProcess = false;\r\n /**\r\n * Gets whether the image processing is applied through a post process or not.\r\n */\r\n public get applyByPostProcess(): boolean {\r\n return this._applyByPostProcess;\r\n }\r\n /**\r\n * Sets whether the image processing is applied through a post process or not.\r\n */\r\n public set applyByPostProcess(value: boolean) {\r\n if (this._applyByPostProcess === value) {\r\n return;\r\n }\r\n\r\n this._applyByPostProcess = value;\r\n this._updateParameters();\r\n }\r\n\r\n @serialize()\r\n private _isEnabled = true;\r\n /**\r\n * Gets whether the image processing is enabled or not.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the image processing is enabled or not.\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n\r\n this._isEnabled = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * Width of the output texture used in the post process. If not provided, uses the width of the screen.\r\n */\r\n @serialize()\r\n public outputTextureWidth = 0;\r\n\r\n /**\r\n * Height of the output texture used in the post process. If not provided, uses the height of the screen.\r\n */\r\n @serialize()\r\n public outputTextureHeight = 0;\r\n\r\n /**\r\n * An event triggered when the configuration changes and requires Shader to Update some parameters.\r\n */\r\n public onUpdateParameters = new Observable<ImageProcessingConfiguration>();\r\n\r\n /**\r\n * Method called each time the image processing information changes requires to recompile the effect.\r\n */\r\n protected _updateParameters(): void {\r\n this.onUpdateParameters.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets the current class name.\r\n * @returns \"ImageProcessingConfiguration\"\r\n */\r\n public getClassName(): string {\r\n return \"ImageProcessingConfiguration\";\r\n }\r\n\r\n /**\r\n * Prepare the list of uniforms associated with the Image Processing effects.\r\n * @param uniforms The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\n public static PrepareUniforms: (uniforms: string[], defines: IImageProcessingConfigurationDefines) => void = PrepareUniformsForImageProcessing;\r\n\r\n /**\r\n * Prepare the list of samplers associated with the Image Processing effects.\r\n * @param samplersList The list of uniforms used in the effect\r\n * @param defines the list of defines currently in use\r\n */\r\n public static PrepareSamplers: (samplersList: string[], defines: IImageProcessingConfigurationDefines) => void = PrepareSamplersForImageProcessing;\r\n\r\n /**\r\n * Prepare the list of defines associated to the shader.\r\n * @param defines the list of defines to complete\r\n * @param forPostProcess Define if we are currently in post process mode or not\r\n */\r\n public prepareDefines(defines: IImageProcessingConfigurationDefines, forPostProcess = false): void {\r\n if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {\r\n defines.WHITEBALANCE = false;\r\n defines.VIGNETTE = false;\r\n defines.TONEMAPPING = 0;\r\n defines.CONTRAST = false;\r\n defines.EXPOSURE = false;\r\n defines.COLORCURVES = false;\r\n defines.COLORGRADING = false;\r\n defines.COLORGRADING3D = false;\r\n defines.DITHER = false;\r\n defines.IMAGEPROCESSING = false;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;\r\n return;\r\n }\r\n\r\n defines.WHITEBALANCE = this._whiteBalanceEnabled;\r\n defines.VIGNETTE = this.vignetteEnabled;\r\n defines.VIGNETTEBLENDMODEMULTIPLY = this.vignetteBlendMode === ImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY;\r\n defines.VIGNETTEBLENDMODEOPAQUE = !defines.VIGNETTEBLENDMODEMULTIPLY;\r\n\r\n if (!this._toneMappingEnabled) {\r\n defines.TONEMAPPING = 0;\r\n } else {\r\n switch (this._toneMappingType) {\r\n case ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL:\r\n defines.TONEMAPPING = 3;\r\n break;\r\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\r\n defines.TONEMAPPING = 2;\r\n break;\r\n default:\r\n defines.TONEMAPPING = 1;\r\n break;\r\n }\r\n }\r\n\r\n defines.CONTRAST = this.contrast !== 1.0;\r\n defines.EXPOSURE = this.exposure !== 1.0;\r\n defines.COLORCURVES = this.colorCurvesEnabled && !!this.colorCurves;\r\n defines.COLORGRADING = this.colorGradingEnabled && !!this.colorGradingTexture;\r\n if (defines.COLORGRADING) {\r\n defines.COLORGRADING3D = this.colorGradingTexture!.is3D;\r\n } else {\r\n defines.COLORGRADING3D = false;\r\n }\r\n defines.SAMPLER3DGREENDEPTH = this.colorGradingWithGreenDepth;\r\n defines.SAMPLER3DBGRMAP = this.colorGradingBGR;\r\n defines.DITHER = this._ditheringEnabled;\r\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSING =\r\n defines.WHITEBALANCE ||\r\n defines.VIGNETTE ||\r\n !!defines.TONEMAPPING ||\r\n defines.CONTRAST ||\r\n defines.EXPOSURE ||\r\n defines.COLORCURVES ||\r\n defines.COLORGRADING ||\r\n defines.DITHER;\r\n }\r\n\r\n /**\r\n * Returns true if all the image processing information are ready.\r\n * @returns True if ready, otherwise, false\r\n */\r\n public isReady() {\r\n // Color Grading texture can not be none blocking.\r\n return !this.colorGradingEnabled || !this.colorGradingTexture || this.colorGradingTexture.isReady();\r\n }\r\n\r\n /**\r\n * Binds the image processing to the shader.\r\n * @param effect The effect to bind to\r\n * @param overrideAspectRatio Override the aspect ratio of the effect\r\n */\r\n public bind(effect: Effect, overrideAspectRatio?: number): void {\r\n // White Balance\r\n if (this._whiteBalanceEnabled) {\r\n effect.setMatrix3x3(\"whiteBalanceMatrix\", this._getWhiteBalanceMatrix());\r\n }\r\n\r\n // Color Curves\r\n if (this._colorCurvesEnabled && this.colorCurves) {\r\n ColorCurvesBind(this.colorCurves, effect);\r\n }\r\n\r\n // Vignette and dither handled together due to common uniform.\r\n if (this._vignetteEnabled || this._ditheringEnabled) {\r\n const inverseWidth = 1 / (this.outputTextureWidth || effect.getEngine().getRenderWidth());\r\n const inverseHeight = 1 / (this.outputTextureHeight || effect.getEngine().getRenderHeight());\r\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\r\n\r\n if (this._ditheringEnabled) {\r\n effect.setFloat(\"ditherIntensity\", 0.5 * this._ditheringIntensity);\r\n }\r\n\r\n if (this._vignetteEnabled) {\r\n const aspectRatio = overrideAspectRatio != null ? overrideAspectRatio : inverseHeight / inverseWidth;\r\n\r\n let vignetteScaleY = Math.tan(this.vignetteCameraFov * 0.5);\r\n let vignetteScaleX = vignetteScaleY * aspectRatio;\r\n\r\n const vignetteScaleGeometricMean = Math.sqrt(vignetteScaleX * vignetteScaleY);\r\n vignetteScaleX = Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\r\n vignetteScaleY = Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\r\n\r\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCenterX, -vignetteScaleY * this.vignetteCenterY);\r\n\r\n const vignettePower = -2.0 * this.vignetteWeight;\r\n effect.setFloat4(\"vignetteSettings2\", this.vignetteColor.r, this.vignetteColor.g, this.vignetteColor.b, vignettePower);\r\n }\r\n }\r\n\r\n // Exposure\r\n effect.setFloat(\"exposureLinear\", this.exposure);\r\n\r\n // Contrast\r\n effect.setFloat(\"contrast\", this.contrast);\r\n\r\n // Color transform settings\r\n if (this.colorGradingTexture) {\r\n effect.setTexture(\"txColorTransform\", this.colorGradingTexture);\r\n const textureSize = this.colorGradingTexture.getSize().height;\r\n\r\n effect.setFloat4(\r\n \"colorTransformSettings\",\r\n (textureSize - 1) / textureSize, // textureScale\r\n 0.5 / textureSize, // textureOffset\r\n textureSize, // textureSize\r\n this.colorGradingTexture.level // weight\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Clones the current image processing instance.\r\n * @returns The cloned image processing\r\n */\r\n public clone(): ImageProcessingConfiguration {\r\n return SerializationHelper.Clone(() => new ImageProcessingConfiguration(), this);\r\n }\r\n\r\n /**\r\n * Serializes the current image processing instance to a json representation.\r\n * @returns a JSON representation\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\r\n\r\n // Static constants associated to the image processing.\r\n private static _VIGNETTEMODE_MULTIPLY = 0;\r\n private static _VIGNETTEMODE_OPAQUE = 1;\r\n\r\n /**\r\n * Used to apply the vignette as a mix with the pixel color.\r\n */\r\n public static get VIGNETTEMODE_MULTIPLY(): number {\r\n return this._VIGNETTEMODE_MULTIPLY;\r\n }\r\n\r\n /**\r\n * Used to apply the vignette as a replacement of the pixel color.\r\n */\r\n public static get VIGNETTEMODE_OPAQUE(): number {\r\n return this._VIGNETTEMODE_OPAQUE;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n\r\n/**\r\n * Parses the image processing from a json representation.\r\n * @param source the JSON source to parse\r\n * @returns The parsed image processing\r\n */\r\nexport function ImageProcessingConfigurationParse(source: any): ImageProcessingConfiguration {\r\n const parsed = SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\r\n // Backward compatibility\r\n if (source.vignetteCentreX !== undefined) {\r\n parsed.vignetteCenterX = source.vignetteCentreX;\r\n }\r\n if (source.vignetteCentreY !== undefined) {\r\n parsed.vignetteCenterY = source.vignetteCentreY;\r\n }\r\n\r\n return parsed;\r\n}\r\n\r\n/**\r\n * Register side effects for imageProcessingConfiguration.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterImageProcessingConfiguration(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // References the dependencies.\r\n ImageProcessingConfiguration.Parse = ImageProcessingConfigurationParse;\r\n\r\n SerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfigurationParse;\r\n\r\n // Register Class Name\r\n RegisterClass(\"BABYLON.ImageProcessingConfiguration\", ImageProcessingConfiguration);\r\n}\r\n"]}
|
|
@@ -1620,10 +1620,10 @@ let Material = (() => {
|
|
|
1620
1620
|
*/
|
|
1621
1621
|
static ParseAlphaMode(parsedMaterial, material) {
|
|
1622
1622
|
if (parsedMaterial._alphaMode !== undefined) {
|
|
1623
|
-
material._alphaMode = Array.isArray(parsedMaterial._alphaMode) ? parsedMaterial._alphaMode : [parsedMaterial._alphaMode];
|
|
1623
|
+
material._alphaMode = Array.isArray(parsedMaterial._alphaMode) ? [...parsedMaterial._alphaMode] : [parsedMaterial._alphaMode];
|
|
1624
1624
|
}
|
|
1625
1625
|
else if (parsedMaterial.alphaMode !== undefined) {
|
|
1626
|
-
material._alphaMode = Array.isArray(parsedMaterial.alphaMode) ? parsedMaterial.alphaMode : [parsedMaterial.alphaMode];
|
|
1626
|
+
material._alphaMode = Array.isArray(parsedMaterial.alphaMode) ? [...parsedMaterial.alphaMode] : [parsedMaterial.alphaMode];
|
|
1627
1627
|
}
|
|
1628
1628
|
else {
|
|
1629
1629
|
material._alphaMode = [2];
|