@babylonjs/core 5.15.0 → 5.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.js +1 -1
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.d.ts +8 -1
- package/Animations/animation.js +8 -1
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +5 -4
- package/Animations/animationGroup.js.map +1 -1
- package/Audio/sound.js +2 -2
- package/Audio/sound.js.map +1 -1
- package/Bones/skeleton.js +1 -1
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.d.ts +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +8 -2
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +2 -2
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.d.ts +0 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +7 -2
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +3 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +2 -2
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.d.ts +0 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +7 -2
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +3 -3
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +1 -1
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.js +1 -1
- package/Cameras/VR/webVRCamera.js.map +1 -1
- package/Cameras/arcRotateCamera.js +3 -2
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +18 -3
- package/Cameras/camera.js.map +1 -1
- package/DeviceInput/InputDevices/webDeviceInputSystem.js +1 -1
- package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +3 -3
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +3 -3
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -0
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Processors/shaderCodeCursor.js +2 -1
- package/Engines/Processors/shaderCodeCursor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +6 -6
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +4 -4
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/engine.d.ts +0 -10
- package/Engines/engine.js +0 -14
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +7 -2
- package/Engines/nativeEngine.js +30 -10
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +22 -2
- package/Engines/thinEngine.js +49 -9
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +1 -1
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.d.ts +4 -0
- package/Gizmos/boundingBoxGizmo.js +6 -0
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Inputs/scene.inputManager.js +5 -4
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Loading/sceneLoader.js +12 -12
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +12 -0
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +50 -0
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +1 -1
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +10 -1
- package/Materials/Node/nodeMaterial.js +43 -26
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +4 -4
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +1 -1
- package/Materials/Textures/baseTexture.js +2 -2
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.js +1 -1
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +11 -3
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +4 -1
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/imageProcessingConfiguration.js.map +1 -1
- package/Materials/materialDefines.js +3 -1
- package/Materials/materialDefines.js.map +1 -1
- package/Materials/materialHelper.d.ts +1 -1
- package/Materials/materialHelper.js +6 -6
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/shaderMaterial.d.ts +10 -1
- package/Materials/shaderMaterial.js +10 -1
- package/Materials/shaderMaterial.js.map +1 -1
- package/Maths/math.color.d.ts +9 -1
- package/Maths/math.color.js +13 -1
- package/Maths/math.color.js.map +1 -1
- package/Meshes/Builders/icoSphereBuilder.js +2 -2
- package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
- package/Meshes/abstractMesh.js +1 -1
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.js +3 -4
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.d.ts +1 -1
- package/Meshes/mesh.js +8 -7
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +5 -0
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/transformNode.d.ts +2 -2
- package/Meshes/transformNode.js +1 -1
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/smartArray.js +0 -1
- package/Misc/smartArray.js.map +1 -1
- package/Particles/computeShaderParticleSystem.js +2 -2
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/particleHelper.d.ts +12 -1
- package/Particles/particleHelper.js +16 -5
- package/Particles/particleHelper.js.map +1 -1
- package/Particles/particleSystem.js +2 -2
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemSet.js +1 -1
- package/Particles/particleSystemSet.js.map +1 -1
- package/Particles/solidParticleSystem.d.ts +3 -0
- package/Particles/solidParticleSystem.js +3 -0
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/webgl2ParticleSystem.js +2 -2
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/Physics/Plugins/cannonJSPlugin.js +1 -1
- package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +3 -3
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +3 -2
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +1 -1
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/geometry.fragment.js +1 -1
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Sprites/spriteManager.d.ts +10 -1
- package/Sprites/spriteManager.js +10 -1
- package/Sprites/spriteManager.js.map +1 -1
- package/XR/features/WebXRLayers.js +1 -1
- package/XR/features/WebXRLayers.js.map +1 -1
- package/assetContainer.d.ts +1 -1
- package/assetContainer.js +23 -23
- package/assetContainer.js.map +1 -1
- package/node.js +1 -1
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +8 -6
- package/scene.js +23 -14
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageProcessingConfiguration.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Materials/imageProcessingConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serialize, SerializationHelper, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Tools } from \"../Misc/tools\";\r\nimport type { Nullable } from \"../types\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { MaterialDefines } from \"../Materials/materialDefines\";\r\nimport { ColorCurves } from \"../Materials/colorCurves\";\r\n\r\ndeclare type BaseTexture = import(\"../Materials/Textures/baseTexture\").BaseTexture;\r\ndeclare type Effect = import(\"../Materials/effect\").Effect;\r\n\r\n/**\r\n * Interface to follow in your material defines to integrate easily the\r\n * Image processing functions.\r\n * @hidden\r\n */\r\nexport interface IImageProcessingConfigurationDefines {\r\n IMAGEPROCESSING: boolean;\r\n VIGNETTE: boolean;\r\n VIGNETTEBLENDMODEMULTIPLY: boolean;\r\n VIGNETTEBLENDMODEOPAQUE: boolean;\r\n TONEMAPPING: boolean;\r\n TONEMAPPING_ACES: boolean;\r\n CONTRAST: boolean;\r\n EXPOSURE: boolean;\r\n COLORCURVES: boolean;\r\n COLORGRADING: boolean;\r\n COLORGRADING3D: boolean;\r\n SAMPLER3DGREENDEPTH: boolean;\r\n SAMPLER3DBGRMAP: boolean;\r\n IMAGEPROCESSINGPOSTPROCESS: boolean;\r\n SKIPFINALCOLORCLAMP: boolean;\r\n}\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class ImageProcessingConfigurationDefines extends MaterialDefines implements IImageProcessingConfigurationDefines {\r\n public IMAGEPROCESSING = false;\r\n public VIGNETTE = false;\r\n public VIGNETTEBLENDMODEMULTIPLY = false;\r\n public VIGNETTEBLENDMODEOPAQUE = false;\r\n public TONEMAPPING = false;\r\n public TONEMAPPING_ACES = false;\r\n public CONTRAST = false;\r\n public COLORCURVES = false;\r\n public COLORGRADING = false;\r\n public COLORGRADING3D = false;\r\n public SAMPLER3DGREENDEPTH = false;\r\n public SAMPLER3DBGRMAP = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public EXPOSURE = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\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 * 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 /** @hidden */\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 centre X Offset.\r\n */\r\n @serialize()\r\n public vignetteCentreX = 0;\r\n\r\n /**\r\n * Vignette centre Y Offset.\r\n */\r\n @serialize()\r\n public vignetteCentreY = 0;\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 /** @hidden */\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 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 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 /** @hidden */\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 * 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 * @return \"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 {\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) {\r\n uniforms.push(\"vInverseScreenSize\");\r\n uniforms.push(\"vignetteSettings1\");\r\n uniforms.push(\"vignetteSettings2\");\r\n }\r\n if (defines.COLORCURVES) {\r\n ColorCurves.PrepareUniforms(uniforms);\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\n public static PrepareSamplers(samplersList: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.COLORGRADING) {\r\n samplersList.push(\"txColorTransform\");\r\n }\r\n }\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: boolean = false): void {\r\n if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {\r\n defines.VIGNETTE = false;\r\n defines.TONEMAPPING = false;\r\n defines.TONEMAPPING_ACES = false;\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.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 defines.TONEMAPPING = this.toneMappingEnabled;\r\n switch (this._toneMappingType) {\r\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\r\n defines.TONEMAPPING_ACES = true;\r\n break;\r\n default:\r\n defines.TONEMAPPING_ACES = false;\r\n break;\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.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSING = defines.VIGNETTE || defines.TONEMAPPING || defines.CONTRAST || defines.EXPOSURE || defines.COLORCURVES || defines.COLORGRADING;\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 ColorCurves.Bind(this.colorCurves, effect);\r\n }\r\n\r\n // Vignette\r\n if (this._vignetteEnabled) {\r\n const inverseWidth = 1 / effect.getEngine().getRenderWidth();\r\n const inverseHeight = 1 / effect.getEngine().getRenderHeight();\r\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\r\n\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 = Tools.Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\r\n vignetteScaleY = Tools.Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\r\n\r\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCentreX, -vignetteScaleY * this.vignetteCentreY);\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 // 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 * @return 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 * @return a JSON representation\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\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 * @return The parsed image processing\r\n */\r\n public static Parse(source: any): ImageProcessingConfiguration {\r\n return SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\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\n// References the dependencies.\r\nSerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfiguration.Parse;\r\n"]}
|
|
1
|
+
{"version":3,"file":"imageProcessingConfiguration.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Materials/imageProcessingConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serialize, SerializationHelper, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Tools } from \"../Misc/tools\";\r\nimport type { Nullable } from \"../types\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { MaterialDefines } from \"../Materials/materialDefines\";\r\nimport { ColorCurves } from \"../Materials/colorCurves\";\r\n\r\ndeclare type BaseTexture = import(\"../Materials/Textures/baseTexture\").BaseTexture;\r\ndeclare type Effect = import(\"../Materials/effect\").Effect;\r\n\r\n/**\r\n * Interface to follow in your material defines to integrate easily the\r\n * Image processing functions.\r\n * @hidden\r\n */\r\nexport interface IImageProcessingConfigurationDefines {\r\n IMAGEPROCESSING: boolean;\r\n VIGNETTE: boolean;\r\n VIGNETTEBLENDMODEMULTIPLY: boolean;\r\n VIGNETTEBLENDMODEOPAQUE: boolean;\r\n TONEMAPPING: boolean;\r\n TONEMAPPING_ACES: boolean;\r\n CONTRAST: boolean;\r\n EXPOSURE: boolean;\r\n COLORCURVES: boolean;\r\n COLORGRADING: boolean;\r\n COLORGRADING3D: boolean;\r\n SAMPLER3DGREENDEPTH: boolean;\r\n SAMPLER3DBGRMAP: boolean;\r\n IMAGEPROCESSINGPOSTPROCESS: boolean;\r\n SKIPFINALCOLORCLAMP: boolean;\r\n}\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class ImageProcessingConfigurationDefines extends MaterialDefines implements IImageProcessingConfigurationDefines {\r\n public IMAGEPROCESSING = false;\r\n public VIGNETTE = false;\r\n public VIGNETTEBLENDMODEMULTIPLY = false;\r\n public VIGNETTEBLENDMODEOPAQUE = false;\r\n public TONEMAPPING = false;\r\n public TONEMAPPING_ACES = false;\r\n public CONTRAST = false;\r\n public COLORCURVES = false;\r\n public COLORGRADING = false;\r\n public COLORGRADING3D = false;\r\n public SAMPLER3DGREENDEPTH = false;\r\n public SAMPLER3DBGRMAP = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public EXPOSURE = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\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 * 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 /** @hidden */\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 centre X Offset.\r\n */\r\n @serialize()\r\n public vignetteCentreX = 0;\r\n\r\n /**\r\n * Vignette centre Y Offset.\r\n */\r\n @serialize()\r\n public vignetteCentreY = 0;\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 /** @hidden */\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 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 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 /** @hidden */\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 * 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 * @return \"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 {\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) {\r\n uniforms.push(\"vInverseScreenSize\");\r\n uniforms.push(\"vignetteSettings1\");\r\n uniforms.push(\"vignetteSettings2\");\r\n }\r\n if (defines.COLORCURVES) {\r\n ColorCurves.PrepareUniforms(uniforms);\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\n public static PrepareSamplers(samplersList: string[], defines: IImageProcessingConfigurationDefines): void {\r\n if (defines.COLORGRADING) {\r\n samplersList.push(\"txColorTransform\");\r\n }\r\n }\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 = false;\r\n defines.TONEMAPPING_ACES = false;\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.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 defines.TONEMAPPING = this.toneMappingEnabled;\r\n switch (this._toneMappingType) {\r\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\r\n defines.TONEMAPPING_ACES = true;\r\n break;\r\n default:\r\n defines.TONEMAPPING_ACES = false;\r\n break;\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.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\r\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\r\n defines.IMAGEPROCESSING = defines.VIGNETTE || defines.TONEMAPPING || defines.CONTRAST || defines.EXPOSURE || defines.COLORCURVES || defines.COLORGRADING;\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 ColorCurves.Bind(this.colorCurves, effect);\r\n }\r\n\r\n // Vignette\r\n if (this._vignetteEnabled) {\r\n const inverseWidth = 1 / effect.getEngine().getRenderWidth();\r\n const inverseHeight = 1 / effect.getEngine().getRenderHeight();\r\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\r\n\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 = Tools.Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\r\n vignetteScaleY = Tools.Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\r\n\r\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCentreX, -vignetteScaleY * this.vignetteCentreY);\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 // 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 * @return 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 * @return a JSON representation\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\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 * @return The parsed image processing\r\n */\r\n public static Parse(source: any): ImageProcessingConfiguration {\r\n return SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\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\n// References the dependencies.\r\nSerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfiguration.Parse;\r\n"]}
|
|
@@ -7,6 +7,8 @@ var MaterialDefines = /** @class */ (function () {
|
|
|
7
7
|
* @param externalProperties list of external properties to inject into the object
|
|
8
8
|
*/
|
|
9
9
|
function MaterialDefines(externalProperties) {
|
|
10
|
+
/** @hidden */
|
|
11
|
+
this._keys = [];
|
|
10
12
|
this._isDirty = true;
|
|
11
13
|
/** @hidden */
|
|
12
14
|
this._areLightsDirty = true;
|
|
@@ -140,7 +142,7 @@ var MaterialDefines = /** @class */ (function () {
|
|
|
140
142
|
* Rebuilds the material defines
|
|
141
143
|
*/
|
|
142
144
|
MaterialDefines.prototype.rebuild = function () {
|
|
143
|
-
this._keys =
|
|
145
|
+
this._keys.length = 0;
|
|
144
146
|
for (var _i = 0, _a = Object.keys(this); _i < _a.length; _i++) {
|
|
145
147
|
var key = _a[_i];
|
|
146
148
|
if (key[0] === "_") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialDefines.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Materials/materialDefines.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Manages the defines for the Material\r\n */\r\nexport class MaterialDefines {\r\n /** @hidden */\r\n protected _keys: string[];\r\n private _isDirty = true;\r\n /** @hidden */\r\n public _renderId: number;\r\n\r\n /** @hidden */\r\n public _areLightsDirty = true;\r\n /** @hidden */\r\n public _areLightsDisposed = false;\r\n /** @hidden */\r\n public _areAttributesDirty = true;\r\n /** @hidden */\r\n public _areTexturesDirty = true;\r\n /** @hidden */\r\n public _areFresnelDirty = true;\r\n /** @hidden */\r\n public _areMiscDirty = true;\r\n /** @hidden */\r\n public _arePrePassDirty = true;\r\n /** @hidden */\r\n public _areImageProcessingDirty = true;\r\n\r\n /** @hidden */\r\n public _normals = false;\r\n /** @hidden */\r\n public _uvs = false;\r\n\r\n /** @hidden */\r\n public _needNormals = false;\r\n /** @hidden */\r\n public _needUVs = false;\r\n\r\n protected _externalProperties?: { [name: string]: { type: string; default: any } };\r\n\r\n [id: string]: any;\r\n\r\n /**\r\n * Creates a new instance\r\n * @param externalProperties list of external properties to inject into the object\r\n */\r\n constructor(externalProperties?: { [name: string]: { type: string; default: any } }) {\r\n this._externalProperties = externalProperties;\r\n\r\n // Initialize External Properties\r\n if (externalProperties) {\r\n for (const prop in externalProperties) {\r\n if (Object.prototype.hasOwnProperty.call(externalProperties, prop)) {\r\n this._setDefaultValue(prop);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if the material needs to be re-calculated\r\n */\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that it has been re-calculated\r\n */\r\n public markAsProcessed() {\r\n this._isDirty = false;\r\n this._areAttributesDirty = false;\r\n this._areTexturesDirty = false;\r\n this._areFresnelDirty = false;\r\n this._areLightsDirty = false;\r\n this._areLightsDisposed = false;\r\n this._areMiscDirty = false;\r\n this._arePrePassDirty = false;\r\n this._areImageProcessingDirty = false;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that it needs to be re-calculated\r\n */\r\n public markAsUnprocessed() {\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate all of its defines need to be re-calculated\r\n */\r\n public markAllAsDirty() {\r\n this._areTexturesDirty = true;\r\n this._areAttributesDirty = true;\r\n this._areLightsDirty = true;\r\n this._areFresnelDirty = true;\r\n this._areMiscDirty = true;\r\n this._areImageProcessingDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that image processing needs to be re-calculated\r\n */\r\n public markAsImageProcessingDirty() {\r\n this._areImageProcessingDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate the lights need to be re-calculated\r\n * @param disposed Defines whether the light is dirty due to dispose or not\r\n */\r\n public markAsLightDirty(disposed = false) {\r\n this._areLightsDirty = true;\r\n this._areLightsDisposed = this._areLightsDisposed || disposed;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the attribute state as changed\r\n */\r\n public markAsAttributesDirty() {\r\n this._areAttributesDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the texture state as changed\r\n */\r\n public markAsTexturesDirty() {\r\n this._areTexturesDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the fresnel state as changed\r\n */\r\n public markAsFresnelDirty() {\r\n this._areFresnelDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the misc state as changed\r\n */\r\n public markAsMiscDirty() {\r\n this._areMiscDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the prepass state as changed\r\n */\r\n public markAsPrePassDirty() {\r\n this._arePrePassDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Rebuilds the material defines\r\n */\r\n public rebuild() {\r\n this._keys = [];\r\n\r\n for (const key of Object.keys(this)) {\r\n if (key[0] === \"_\") {\r\n continue;\r\n }\r\n\r\n this._keys.push(key);\r\n }\r\n\r\n if (this._externalProperties) {\r\n for (const name in this._externalProperties) {\r\n if (this._keys.indexOf(name) === -1) {\r\n this._keys.push(name);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if two material defines are equal\r\n * @param other - A material define instance to compare to\r\n * @returns - Boolean indicating if the material defines are equal (true) or not (false)\r\n */\r\n public isEqual(other: MaterialDefines): boolean {\r\n if (this._keys.length !== other._keys.length) {\r\n return false;\r\n }\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n\r\n if ((<any>this)[prop] !== (<any>other)[prop]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Clones this instance's defines to another instance\r\n * @param other - material defines to clone values to\r\n */\r\n public cloneTo(other: MaterialDefines): void {\r\n if (this._keys.length !== other._keys.length) {\r\n other._keys = this._keys.slice(0);\r\n }\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n\r\n (<any>other)[prop] = (<any>this)[prop];\r\n }\r\n }\r\n\r\n /**\r\n * Resets the material define values\r\n */\r\n public reset(): void {\r\n this._keys.forEach((prop) => this._setDefaultValue(prop));\r\n }\r\n\r\n private _setDefaultValue(prop: string): void {\r\n const type = this._externalProperties?.[prop]?.type ?? typeof (<any>this)[prop];\r\n const defValue = this._externalProperties?.[prop]?.default;\r\n\r\n switch (type) {\r\n case \"number\":\r\n (<any>this)[prop] = defValue ?? 0;\r\n break;\r\n case \"string\":\r\n (<any>this)[prop] = defValue ?? \"\";\r\n break;\r\n default:\r\n (<any>this)[prop] = defValue ?? false;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Converts the material define values to a string\r\n * @returns - String of material define information\r\n */\r\n public toString(): string {\r\n let result = \"\";\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n const value = (<any>this)[prop];\r\n const type = typeof value;\r\n\r\n switch (type) {\r\n case \"number\":\r\n case \"string\":\r\n result += \"#define \" + prop + \" \" + value + \"\\n\";\r\n break;\r\n default:\r\n if (value) {\r\n result += \"#define \" + prop + \"\\n\";\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"materialDefines.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Materials/materialDefines.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Manages the defines for the Material\r\n */\r\nexport class MaterialDefines {\r\n /** @hidden */\r\n protected _keys: string[] = [];\r\n private _isDirty = true;\r\n /** @hidden */\r\n public _renderId: number;\r\n\r\n /** @hidden */\r\n public _areLightsDirty = true;\r\n /** @hidden */\r\n public _areLightsDisposed = false;\r\n /** @hidden */\r\n public _areAttributesDirty = true;\r\n /** @hidden */\r\n public _areTexturesDirty = true;\r\n /** @hidden */\r\n public _areFresnelDirty = true;\r\n /** @hidden */\r\n public _areMiscDirty = true;\r\n /** @hidden */\r\n public _arePrePassDirty = true;\r\n /** @hidden */\r\n public _areImageProcessingDirty = true;\r\n\r\n /** @hidden */\r\n public _normals = false;\r\n /** @hidden */\r\n public _uvs = false;\r\n\r\n /** @hidden */\r\n public _needNormals = false;\r\n /** @hidden */\r\n public _needUVs = false;\r\n\r\n protected _externalProperties?: { [name: string]: { type: string; default: any } };\r\n\r\n [id: string]: any;\r\n\r\n /**\r\n * Creates a new instance\r\n * @param externalProperties list of external properties to inject into the object\r\n */\r\n constructor(externalProperties?: { [name: string]: { type: string; default: any } }) {\r\n this._externalProperties = externalProperties;\r\n\r\n // Initialize External Properties\r\n if (externalProperties) {\r\n for (const prop in externalProperties) {\r\n if (Object.prototype.hasOwnProperty.call(externalProperties, prop)) {\r\n this._setDefaultValue(prop);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if the material needs to be re-calculated\r\n */\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that it has been re-calculated\r\n */\r\n public markAsProcessed() {\r\n this._isDirty = false;\r\n this._areAttributesDirty = false;\r\n this._areTexturesDirty = false;\r\n this._areFresnelDirty = false;\r\n this._areLightsDirty = false;\r\n this._areLightsDisposed = false;\r\n this._areMiscDirty = false;\r\n this._arePrePassDirty = false;\r\n this._areImageProcessingDirty = false;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that it needs to be re-calculated\r\n */\r\n public markAsUnprocessed() {\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate all of its defines need to be re-calculated\r\n */\r\n public markAllAsDirty() {\r\n this._areTexturesDirty = true;\r\n this._areAttributesDirty = true;\r\n this._areLightsDirty = true;\r\n this._areFresnelDirty = true;\r\n this._areMiscDirty = true;\r\n this._areImageProcessingDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate that image processing needs to be re-calculated\r\n */\r\n public markAsImageProcessingDirty() {\r\n this._areImageProcessingDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the material to indicate the lights need to be re-calculated\r\n * @param disposed Defines whether the light is dirty due to dispose or not\r\n */\r\n public markAsLightDirty(disposed = false) {\r\n this._areLightsDirty = true;\r\n this._areLightsDisposed = this._areLightsDisposed || disposed;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the attribute state as changed\r\n */\r\n public markAsAttributesDirty() {\r\n this._areAttributesDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the texture state as changed\r\n */\r\n public markAsTexturesDirty() {\r\n this._areTexturesDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the fresnel state as changed\r\n */\r\n public markAsFresnelDirty() {\r\n this._areFresnelDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the misc state as changed\r\n */\r\n public markAsMiscDirty() {\r\n this._areMiscDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Marks the prepass state as changed\r\n */\r\n public markAsPrePassDirty() {\r\n this._arePrePassDirty = true;\r\n this._isDirty = true;\r\n }\r\n\r\n /**\r\n * Rebuilds the material defines\r\n */\r\n public rebuild() {\r\n this._keys.length = 0;\r\n\r\n for (const key of Object.keys(this)) {\r\n if (key[0] === \"_\") {\r\n continue;\r\n }\r\n\r\n this._keys.push(key);\r\n }\r\n\r\n if (this._externalProperties) {\r\n for (const name in this._externalProperties) {\r\n if (this._keys.indexOf(name) === -1) {\r\n this._keys.push(name);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if two material defines are equal\r\n * @param other - A material define instance to compare to\r\n * @returns - Boolean indicating if the material defines are equal (true) or not (false)\r\n */\r\n public isEqual(other: MaterialDefines): boolean {\r\n if (this._keys.length !== other._keys.length) {\r\n return false;\r\n }\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n\r\n if ((<any>this)[prop] !== (<any>other)[prop]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Clones this instance's defines to another instance\r\n * @param other - material defines to clone values to\r\n */\r\n public cloneTo(other: MaterialDefines): void {\r\n if (this._keys.length !== other._keys.length) {\r\n other._keys = this._keys.slice(0);\r\n }\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n\r\n (<any>other)[prop] = (<any>this)[prop];\r\n }\r\n }\r\n\r\n /**\r\n * Resets the material define values\r\n */\r\n public reset(): void {\r\n this._keys.forEach((prop) => this._setDefaultValue(prop));\r\n }\r\n\r\n private _setDefaultValue(prop: string): void {\r\n const type = this._externalProperties?.[prop]?.type ?? typeof (<any>this)[prop];\r\n const defValue = this._externalProperties?.[prop]?.default;\r\n\r\n switch (type) {\r\n case \"number\":\r\n (<any>this)[prop] = defValue ?? 0;\r\n break;\r\n case \"string\":\r\n (<any>this)[prop] = defValue ?? \"\";\r\n break;\r\n default:\r\n (<any>this)[prop] = defValue ?? false;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Converts the material define values to a string\r\n * @returns - String of material define information\r\n */\r\n public toString(): string {\r\n let result = \"\";\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const prop = this._keys[index];\r\n const value = (<any>this)[prop];\r\n const type = typeof value;\r\n\r\n switch (type) {\r\n case \"number\":\r\n case \"string\":\r\n result += \"#define \" + prop + \" \" + value + \"\\n\";\r\n break;\r\n default:\r\n if (value) {\r\n result += \"#define \" + prop + \"\\n\";\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
|
|
@@ -2,7 +2,7 @@ import type { Nullable } from "../types";
|
|
|
2
2
|
import { Scene } from "../scene";
|
|
3
3
|
import type { Engine } from "../Engines/engine";
|
|
4
4
|
import type { AbstractMesh } from "../Meshes/abstractMesh";
|
|
5
|
-
import { Light } from "../Lights/light";
|
|
5
|
+
import type { Light } from "../Lights/light";
|
|
6
6
|
import type { PrePassConfiguration } from "../Materials/prePassConfiguration";
|
|
7
7
|
import type { UniformBuffer } from "./uniformBuffer";
|
|
8
8
|
import type { Effect, IEffectCreationOptions } from "./effect";
|
|
@@ -3,7 +3,7 @@ import { Camera } from "../Cameras/camera.js";
|
|
|
3
3
|
import { Scene } from "../scene.js";
|
|
4
4
|
import { EngineStore } from "../Engines/engineStore.js";
|
|
5
5
|
import { VertexBuffer } from "../Buffers/buffer.js";
|
|
6
|
-
import {
|
|
6
|
+
import { LightConstants } from "../Lights/lightConstants.js";
|
|
7
7
|
|
|
8
8
|
import { Color3 } from "../Maths/math.color.js";
|
|
9
9
|
import { ThinMaterialHelper } from "./thinMaterialHelper.js";
|
|
@@ -389,13 +389,13 @@ var MaterialHelper = /** @class */ (function () {
|
|
|
389
389
|
defines["LIGHT_FALLOFF_GLTF" + lightIndex] = false;
|
|
390
390
|
defines["LIGHT_FALLOFF_STANDARD" + lightIndex] = false;
|
|
391
391
|
switch (light.falloffType) {
|
|
392
|
-
case
|
|
392
|
+
case LightConstants.FALLOFF_GLTF:
|
|
393
393
|
defines["LIGHT_FALLOFF_GLTF" + lightIndex] = true;
|
|
394
394
|
break;
|
|
395
|
-
case
|
|
395
|
+
case LightConstants.FALLOFF_PHYSICAL:
|
|
396
396
|
defines["LIGHT_FALLOFF_PHYSICAL" + lightIndex] = true;
|
|
397
397
|
break;
|
|
398
|
-
case
|
|
398
|
+
case LightConstants.FALLOFF_STANDARD:
|
|
399
399
|
defines["LIGHT_FALLOFF_STANDARD" + lightIndex] = true;
|
|
400
400
|
break;
|
|
401
401
|
}
|
|
@@ -431,10 +431,10 @@ var MaterialHelper = /** @class */ (function () {
|
|
|
431
431
|
}
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
|
-
if (light.lightmapMode !=
|
|
434
|
+
if (light.lightmapMode != LightConstants.LIGHTMAP_DEFAULT) {
|
|
435
435
|
state.lightmapMode = true;
|
|
436
436
|
defines["LIGHTMAPEXCLUDED" + lightIndex] = true;
|
|
437
|
-
defines["LIGHTMAPNOSPECULAR" + lightIndex] = light.lightmapMode ==
|
|
437
|
+
defines["LIGHTMAPNOSPECULAR" + lightIndex] = light.lightmapMode == LightConstants.LIGHTMAP_SHADOWSONLY;
|
|
438
438
|
}
|
|
439
439
|
else {
|
|
440
440
|
defines["LIGHTMAPEXCLUDED" + lightIndex] = false;
|