@babylonjs/core 8.13.1 → 8.14.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/AudioV2/abstractAudio/index.js +1 -1
- package/AudioV2/abstractAudio/index.js.map +1 -1
- package/AudioV2/audioUtils.js +12 -3
- package/AudioV2/audioUtils.js.map +1 -1
- package/AudioV2/index.js +1 -1
- package/AudioV2/index.js.map +1 -1
- package/Behaviors/index.js +1 -1
- package/Behaviors/index.js.map +1 -1
- package/Cameras/index.js +1 -1
- package/Cameras/index.js.map +1 -1
- package/Culling/index.js +1 -1
- package/Culling/index.js.map +1 -1
- package/Debug/skeletonViewer.d.ts +1 -1
- package/Debug/skeletonViewer.js.map +1 -1
- package/Engines/Processors/Expressions/index.js +1 -1
- package/Engines/Processors/Expressions/index.js.map +1 -1
- package/Engines/Processors/index.js +1 -1
- package/Engines/Processors/index.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.d.ts +1 -1
- package/Engines/index.js +1 -1
- package/Engines/index.js.map +1 -1
- package/FlowGraph/Blocks/Data/index.js +3 -3
- package/FlowGraph/Blocks/Data/index.js.map +1 -1
- package/FlowGraph/Blocks/Execution/index.js +2 -2
- package/FlowGraph/Blocks/Execution/index.js.map +1 -1
- package/FlowGraph/Blocks/index.js +1 -1
- package/FlowGraph/Blocks/index.js.map +1 -1
- package/FlowGraph/index.js +2 -2
- package/FlowGraph/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/cullObjectsBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/elbowBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/resourceContainerBlock.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBuildState.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphConnectionPointCustomObject.js.map +1 -1
- package/FrameGraph/Passes/cullPass.js.map +1 -1
- package/FrameGraph/Passes/pass.js.map +1 -1
- package/FrameGraph/Passes/renderPass.js.map +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Layers/highlightLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/anaglyphTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/chromaticAberrationTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/fxaaTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/motionBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -1
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderTarget.js.map +1 -1
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/frameGraphTypes.js.map +1 -1
- package/FrameGraph/index.js +1 -1
- package/FrameGraph/index.js.map +1 -1
- package/Layers/thinHighlightLayer.js.map +1 -1
- package/Legacy/legacy.js +1 -1
- package/Legacy/legacy.js.map +1 -1
- package/Lights/index.js +1 -1
- package/Lights/index.js.map +1 -1
- package/Loading/index.js +1 -1
- package/Loading/index.js.map +1 -1
- package/Materials/Node/Blocks/index.js +1 -1
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/index.js +1 -1
- package/Materials/Node/index.js.map +1 -1
- package/Materials/Textures/Loaders/index.js +1 -1
- package/Materials/Textures/Loaders/index.js.map +1 -1
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/index.js +1 -1
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Maths/index.js +1 -1
- package/Maths/index.js.map +1 -1
- package/Meshes/abstractMesh.hotSpot.js.map +1 -1
- package/Meshes/index.js +1 -1
- package/Meshes/index.js.map +1 -1
- package/Meshes/linesMesh.d.ts +7 -0
- package/Meshes/linesMesh.js +13 -0
- package/Meshes/linesMesh.js.map +1 -1
- package/Misc/index.js +1 -1
- package/Misc/index.js.map +1 -1
- package/Misc/pressureObserverWrapper.js +4 -1
- package/Misc/pressureObserverWrapper.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/thinMinMaxReducer.js.map +1 -1
- package/Navigation/index.js +1 -1
- package/Navigation/index.js.map +1 -1
- package/Particles/IParticleSystem.js.map +1 -1
- package/Particles/Node/Blocks/index.d.ts +0 -1
- package/Particles/Node/Blocks/index.js +1 -2
- package/Particles/Node/Blocks/index.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientBlock.d.ts +3 -0
- package/Particles/Node/Blocks/particleGradientBlock.js +20 -4
- package/Particles/Node/Blocks/particleGradientBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.js +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -1
- package/Particles/Node/index.js +1 -1
- package/Particles/Node/index.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
- package/Particles/Node/nodeParticleSystemSet.js +2 -2
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +5 -0
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/index.js +1 -1
- package/Particles/index.js.map +1 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Physics/index.js +1 -1
- package/Physics/index.js.map +1 -1
- package/Physics/v1/index.js +1 -1
- package/Physics/v1/index.js.map +1 -1
- package/Physics/v2/index.js +2 -2
- package/Physics/v2/index.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/index.js +1 -1
- package/PostProcesses/RenderPipeline/index.js.map +1 -1
- package/PostProcesses/index.js +1 -1
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/thinBloomEffect.js.map +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
- package/PostProcesses/thinBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
- package/PostProcesses/thinGrainPostProcess.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinPassPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRPostProcess.js.map +1 -1
- package/PostProcesses/thinTAAPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +1 -4
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
- package/Rendering/index.js +1 -1
- package/Rendering/index.js.map +1 -1
- package/Rendering/objectRenderer.js.map +1 -1
- package/XR/index.js +1 -1
- package/XR/index.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/Particles/Node/Blocks/randomRangeBlock.d.ts +0 -45
- package/Particles/Node/Blocks/randomRangeBlock.js +0 -151
- package/Particles/Node/Blocks/randomRangeBlock.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinHighlightLayer.js","sourceRoot":"","sources":["../../../../dev/core/src/Layers/thinHighlightLayer.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Observer,\r\n Nullable,\r\n Scene,\r\n SubMesh,\r\n AbstractMesh,\r\n Mesh,\r\n Effect,\r\n IThinEffectLayerOptions,\r\n Color3,\r\n EffectWrapper,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { ThinPassPostProcess } from \"../PostProcesses/thinPassPostProcess\";\r\nimport { ThinEffectLayer, ThinGlowBlurPostProcess } from \"./thinEffectLayer\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { ThinBlurPostProcess } from \"core/PostProcesses/thinBlurPostProcess\";\r\n\r\ninterface IBlurPostProcess extends EffectWrapper {\r\n kernel: number;\r\n}\r\n\r\n/**\r\n * Highlight layer options. This helps customizing the behaviour\r\n * of the highlight layer.\r\n */\r\nexport interface IThinHighlightLayerOptions extends IThinEffectLayerOptions {\r\n /**\r\n * Multiplication factor apply to the main texture size in the first step of the blur to reduce the size\r\n * of the picture to blur (the smaller the faster). Default: 0.5\r\n */\r\n blurTextureSizeRatio?: number;\r\n\r\n /**\r\n * How big in texel of the blur texture is the vertical blur. Default: 1\r\n */\r\n blurVerticalSize?: number;\r\n\r\n /**\r\n * How big in texel of the blur texture is the horizontal blur. Default: 1\r\n */\r\n blurHorizontalSize?: number;\r\n\r\n /**\r\n * Should we display highlight as a solid stroke? Default: false\r\n */\r\n isStroke?: boolean;\r\n\r\n /**\r\n * Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n forceGLSL?: boolean;\r\n}\r\n\r\n/**\r\n * Storage interface grouping all the information required for glowing a mesh.\r\n */\r\ninterface IHighlightLayerMesh {\r\n /**\r\n * The glowy mesh\r\n */\r\n mesh: Mesh;\r\n /**\r\n * The color of the glow\r\n */\r\n color: Color3;\r\n /**\r\n * The mesh render callback use to insert stencil information\r\n */\r\n observerHighlight: Nullable<Observer<Mesh>>;\r\n /**\r\n * The mesh render callback use to come to the default behavior\r\n */\r\n observerDefault: Nullable<Observer<Mesh>>;\r\n /**\r\n * If it exists, the emissive color of the material will be used to generate the glow.\r\n * Else it falls back to the current color.\r\n */\r\n glowEmissiveOnly: boolean;\r\n}\r\n\r\n/**\r\n * Storage interface grouping all the information required for an excluded mesh.\r\n */\r\ninterface IHighlightLayerExcludedMesh {\r\n /**\r\n * The glowy mesh\r\n */\r\n mesh: Mesh;\r\n /**\r\n * The mesh render callback use to prevent stencil use\r\n */\r\n beforeBind: Nullable<Observer<Mesh>>;\r\n /**\r\n * The mesh render callback use to restore previous stencil use\r\n */\r\n afterRender: Nullable<Observer<Mesh>>;\r\n /**\r\n * Current stencil state of the engine\r\n */\r\n stencilState: boolean;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinHighlightLayer extends ThinEffectLayer {\r\n /**\r\n * Effect Name of the highlight layer.\r\n */\r\n public static readonly EffectName = \"HighlightLayer\";\r\n\r\n /**\r\n * The neutral color used during the preparation of the glow effect.\r\n * This is black by default as the blend operation is a blend operation.\r\n */\r\n public static NeutralColor: Color4 = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Stencil value used for glowing meshes.\r\n */\r\n public static GlowingMeshStencilReference = 0x02;\r\n\r\n /**\r\n * Stencil value used for the other meshes in the scene.\r\n */\r\n public static NormalMeshStencilReference = 0x01;\r\n\r\n /**\r\n * Specifies whether or not the inner glow is ACTIVE in the layer.\r\n */\r\n public innerGlow: boolean = true;\r\n\r\n /**\r\n * Specifies whether or not the outer glow is ACTIVE in the layer.\r\n */\r\n public outerGlow: boolean = true;\r\n\r\n /**\r\n * Specifies the horizontal size of the blur.\r\n */\r\n public set blurHorizontalSize(value: number) {\r\n this._horizontalBlurPostprocess.kernel = value;\r\n this._options.blurHorizontalSize = value;\r\n }\r\n\r\n /**\r\n * Specifies the vertical size of the blur.\r\n */\r\n public set blurVerticalSize(value: number) {\r\n this._verticalBlurPostprocess.kernel = value;\r\n this._options.blurVerticalSize = value;\r\n }\r\n\r\n /**\r\n * Gets the horizontal size of the blur.\r\n */\r\n public get blurHorizontalSize(): number {\r\n return this._horizontalBlurPostprocess.kernel;\r\n }\r\n\r\n /**\r\n * Gets the vertical size of the blur.\r\n */\r\n public get blurVerticalSize(): number {\r\n return this._verticalBlurPostprocess.kernel;\r\n }\r\n\r\n private _instanceGlowingMeshStencilReference = ThinHighlightLayer.GlowingMeshStencilReference++;\r\n\r\n /** @internal */\r\n public override _options: Required<IThinHighlightLayerOptions>;\r\n\r\n private _downSamplePostprocess: ThinPassPostProcess;\r\n private _horizontalBlurPostprocess: IBlurPostProcess;\r\n private _verticalBlurPostprocess: IBlurPostProcess;\r\n\r\n /** @internal */\r\n public _meshes: Nullable<{ [id: string]: Nullable<IHighlightLayerMesh> }> = {};\r\n /** @internal */\r\n public _excludedMeshes: Nullable<{ [id: string]: Nullable<IHighlightLayerExcludedMesh> }> = {};\r\n\r\n /** @internal */\r\n public _mainObjectRendererRenderPassId = -1;\r\n\r\n /**\r\n * Instantiates a new highlight Layer and references it to the scene..\r\n * @param name The name of the layer\r\n * @param scene The scene to use the layer in\r\n * @param options Sets of none mandatory options to use with the layer (see IHighlightLayerOptions for more information)\r\n * @param dontCheckIfReady Specifies if the layer should disable checking whether all the post processes are ready (default: false). To save performance, this should be set to true and you should call `isReady` manually before rendering to the layer.\r\n */\r\n constructor(name: string, scene?: Scene, options?: Partial<IThinHighlightLayerOptions>, dontCheckIfReady = false) {\r\n super(name, scene, options !== undefined ? !!options.forceGLSL : false);\r\n\r\n this.neutralColor = ThinHighlightLayer.NeutralColor;\r\n\r\n // Adapt options\r\n this._options = {\r\n mainTextureRatio: 0.5,\r\n blurTextureSizeRatio: 0.5,\r\n mainTextureFixedSize: 0,\r\n blurHorizontalSize: 1.0,\r\n blurVerticalSize: 1.0,\r\n alphaBlendingMode: Constants.ALPHA_COMBINE,\r\n camera: null,\r\n renderingGroupId: -1,\r\n forceGLSL: false,\r\n mainTextureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n isStroke: false,\r\n ...options,\r\n };\r\n\r\n // Initialize the layer\r\n this._init(this._options);\r\n\r\n // Do not render as long as no meshes have been added\r\n this._shouldRender = false;\r\n\r\n if (dontCheckIfReady) {\r\n // When dontCheckIfReady is true, we are in the new ThinXXX layer mode, so we must call _createTextureAndPostProcesses ourselves (it is called by EffectLayer otherwise)\r\n this._createTextureAndPostProcesses();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the class name of the effect layer\r\n * @returns the string with the class name of the effect layer\r\n */\r\n public getClassName(): string {\r\n return \"HighlightLayer\";\r\n }\r\n\r\n protected override async _importShadersAsync() {\r\n if (this._shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../ShadersWGSL/glowMapMerge.fragment\"),\r\n import(\"../ShadersWGSL/glowMapMerge.vertex\"),\r\n import(\"../ShadersWGSL/glowBlurPostProcess.fragment\"),\r\n ]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/glowMapMerge.fragment\"), import(\"../Shaders/glowMapMerge.vertex\"), import(\"../Shaders/glowBlurPostProcess.fragment\")]);\r\n }\r\n\r\n await super._importShadersAsync();\r\n }\r\n\r\n public override getEffectName(): string {\r\n return ThinHighlightLayer.EffectName;\r\n }\r\n\r\n public override _numInternalDraws(): number {\r\n return 2; // we need two rendering, one for the inner glow and the other for the outer glow\r\n }\r\n\r\n public override _createMergeEffect(): Effect {\r\n return this._engine.createEffect(\r\n \"glowMapMerge\",\r\n [VertexBuffer.PositionKind],\r\n [\"offset\"],\r\n [\"textureSampler\"],\r\n this._options.isStroke ? \"#define STROKE \\n\" : undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._shaderLanguage,\r\n this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n await this._importShadersAsync();\r\n this._shadersLoaded = true;\r\n }\r\n );\r\n }\r\n\r\n public override _createTextureAndPostProcesses(): void {\r\n if (this._options.alphaBlendingMode === Constants.ALPHA_COMBINE) {\r\n this._downSamplePostprocess = new ThinPassPostProcess(\"HighlightLayerPPP\", this._scene.getEngine());\r\n this._horizontalBlurPostprocess = new ThinGlowBlurPostProcess(\"HighlightLayerHBP\", this._scene.getEngine(), new Vector2(1.0, 0), this._options.blurHorizontalSize);\r\n this._verticalBlurPostprocess = new ThinGlowBlurPostProcess(\"HighlightLayerVBP\", this._scene.getEngine(), new Vector2(0, 1.0), this._options.blurVerticalSize);\r\n this._postProcesses = [this._downSamplePostprocess, this._horizontalBlurPostprocess, this._verticalBlurPostprocess];\r\n } else {\r\n this._horizontalBlurPostprocess = new ThinBlurPostProcess(\"HighlightLayerHBP\", this._scene.getEngine(), new Vector2(1.0, 0), this._options.blurHorizontalSize / 2);\r\n this._verticalBlurPostprocess = new ThinBlurPostProcess(\"HighlightLayerVBP\", this._scene.getEngine(), new Vector2(0, 1.0), this._options.blurVerticalSize / 2);\r\n this._postProcesses = [this._horizontalBlurPostprocess, this._verticalBlurPostprocess];\r\n }\r\n }\r\n\r\n public override needStencil(): boolean {\r\n return true;\r\n }\r\n\r\n public override isReady(subMesh: SubMesh, useInstances: boolean): boolean {\r\n const material = subMesh.getMaterial();\r\n const mesh = subMesh.getRenderingMesh();\r\n\r\n if (!material || !mesh || !this._meshes) {\r\n return false;\r\n }\r\n\r\n let emissiveTexture: Nullable<any> = null;\r\n const highlightLayerMesh = this._meshes[mesh.uniqueId];\r\n\r\n if (highlightLayerMesh && highlightLayerMesh.glowEmissiveOnly && material) {\r\n emissiveTexture = (<any>material).emissiveTexture;\r\n }\r\n return super._isSubMeshReady(subMesh, useInstances, emissiveTexture);\r\n }\r\n\r\n public override _canRenderMesh(_mesh: AbstractMesh, _material: Material): boolean {\r\n // all meshes can be rendered in the highlight layer, even transparent ones\r\n return true;\r\n }\r\n\r\n public override _internalCompose(effect: Effect, renderIndex: number): void {\r\n // Texture\r\n this.bindTexturesForCompose(effect);\r\n\r\n // Cache\r\n const engine = this._engine;\r\n engine.cacheStencilState();\r\n\r\n // Stencil operations\r\n engine.setStencilOperationPass(Constants.REPLACE);\r\n engine.setStencilOperationFail(Constants.KEEP);\r\n engine.setStencilOperationDepthFail(Constants.KEEP);\r\n\r\n // Draw order\r\n engine.setStencilMask(0x00);\r\n engine.setStencilBuffer(true);\r\n engine.setStencilFunctionReference(this._instanceGlowingMeshStencilReference);\r\n\r\n // 2 passes inner outer\r\n if (this.outerGlow && renderIndex === 0) {\r\n // the outer glow is rendered the first time _internalRender is called, so when renderIndex == 0 (and only if outerGlow is enabled)\r\n effect.setFloat(\"offset\", 0);\r\n engine.setStencilFunction(Constants.NOTEQUAL);\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n }\r\n if (this.innerGlow && renderIndex === 1) {\r\n // the inner glow is rendered the second time _internalRender is called, so when renderIndex == 1 (and only if innerGlow is enabled)\r\n effect.setFloat(\"offset\", 1);\r\n engine.setStencilFunction(Constants.EQUAL);\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n }\r\n\r\n // Restore Cache\r\n engine.restoreStencilState();\r\n }\r\n\r\n public override _setEmissiveTextureAndColor(mesh: Mesh, _subMesh: SubMesh, material: Material): void {\r\n const highlightLayerMesh = this._meshes![mesh.uniqueId];\r\n if (highlightLayerMesh) {\r\n this._emissiveTextureAndColor.color.set(highlightLayerMesh.color.r, highlightLayerMesh.color.g, highlightLayerMesh.color.b, 1.0);\r\n } else {\r\n this._emissiveTextureAndColor.color.set(this.neutralColor.r, this.neutralColor.g, this.neutralColor.b, this.neutralColor.a);\r\n }\r\n\r\n if (highlightLayerMesh && highlightLayerMesh.glowEmissiveOnly && material) {\r\n this._emissiveTextureAndColor.texture = (<any>material).emissiveTexture;\r\n this._emissiveTextureAndColor.color.set(1.0, 1.0, 1.0, 1.0);\r\n } else {\r\n this._emissiveTextureAndColor.texture = null;\r\n }\r\n }\r\n\r\n public override shouldRender(): boolean {\r\n return this._meshes && super.shouldRender() ? true : false;\r\n }\r\n\r\n public override _shouldRenderMesh(mesh: Mesh): boolean {\r\n if (this._excludedMeshes && this._excludedMeshes[mesh.uniqueId]) {\r\n return false;\r\n }\r\n\r\n return super.hasMesh(mesh);\r\n }\r\n\r\n public override _addCustomEffectDefines(defines: string[]): void {\r\n defines.push(\"#define HIGHLIGHT\");\r\n }\r\n\r\n /**\r\n * Add a mesh in the exclusion list to prevent it to impact or being impacted by the highlight layer.\r\n * @param mesh The mesh to exclude from the highlight layer\r\n */\r\n public addExcludedMesh(mesh: Mesh) {\r\n if (!this._excludedMeshes) {\r\n return;\r\n }\r\n\r\n const meshExcluded = this._excludedMeshes[mesh.uniqueId];\r\n if (!meshExcluded) {\r\n const obj: IHighlightLayerExcludedMesh = {\r\n mesh: mesh,\r\n beforeBind: null,\r\n afterRender: null,\r\n stencilState: false,\r\n };\r\n\r\n obj.beforeBind = mesh.onBeforeBindObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n obj.stencilState = mesh.getEngine().getStencilBuffer();\r\n mesh.getEngine().setStencilBuffer(false);\r\n });\r\n\r\n obj.afterRender = mesh.onAfterRenderObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n mesh.getEngine().setStencilBuffer(obj.stencilState);\r\n });\r\n\r\n this._excludedMeshes[mesh.uniqueId] = obj;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the exclusion list to let it impact or being impacted by the highlight layer.\r\n * @param mesh The mesh to highlight\r\n */\r\n public removeExcludedMesh(mesh: Mesh) {\r\n if (!this._excludedMeshes) {\r\n return;\r\n }\r\n\r\n const meshExcluded = this._excludedMeshes[mesh.uniqueId];\r\n if (meshExcluded) {\r\n if (meshExcluded.beforeBind) {\r\n mesh.onBeforeBindObservable.remove(meshExcluded.beforeBind);\r\n }\r\n\r\n if (meshExcluded.afterRender) {\r\n mesh.onAfterRenderObservable.remove(meshExcluded.afterRender);\r\n }\r\n }\r\n\r\n this._excludedMeshes[mesh.uniqueId] = null;\r\n }\r\n\r\n public override hasMesh(mesh: AbstractMesh): boolean {\r\n if (!this._meshes || !super.hasMesh(mesh)) {\r\n return false;\r\n }\r\n\r\n return !!this._meshes[mesh.uniqueId];\r\n }\r\n\r\n /**\r\n * Add a mesh in the highlight layer in order to make it glow with the chosen color.\r\n * @param mesh The mesh to highlight\r\n * @param color The color of the highlight\r\n * @param glowEmissiveOnly Extract the glow from the emissive texture\r\n */\r\n public addMesh(mesh: Mesh, color: Color3, glowEmissiveOnly = false) {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n const meshHighlight = this._meshes[mesh.uniqueId];\r\n if (meshHighlight) {\r\n meshHighlight.color = color;\r\n } else {\r\n this._meshes[mesh.uniqueId] = {\r\n mesh: mesh,\r\n color: color,\r\n // Lambda required for capture due to Observable this context\r\n observerHighlight: mesh.onBeforeBindObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n if (this.isEnabled) {\r\n if (this._excludedMeshes && this._excludedMeshes[mesh.uniqueId]) {\r\n this._defaultStencilReference(mesh);\r\n } else {\r\n mesh.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference);\r\n }\r\n }\r\n }),\r\n observerDefault: mesh.onAfterRenderObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n if (this.isEnabled) {\r\n this._defaultStencilReference(mesh);\r\n }\r\n }),\r\n glowEmissiveOnly: glowEmissiveOnly,\r\n };\r\n\r\n mesh.onDisposeObservable.add(() => {\r\n this._disposeMesh(mesh);\r\n });\r\n }\r\n\r\n this._shouldRender = true;\r\n }\r\n\r\n /**\r\n * Remove a mesh from the highlight layer in order to make it stop glowing.\r\n * @param mesh The mesh to highlight\r\n */\r\n public removeMesh(mesh: Mesh) {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n const meshHighlight = this._meshes[mesh.uniqueId];\r\n if (meshHighlight) {\r\n if (meshHighlight.observerHighlight) {\r\n mesh.onBeforeBindObservable.remove(meshHighlight.observerHighlight);\r\n }\r\n\r\n if (meshHighlight.observerDefault) {\r\n mesh.onAfterRenderObservable.remove(meshHighlight.observerDefault);\r\n }\r\n delete this._meshes[mesh.uniqueId];\r\n }\r\n\r\n this._shouldRender = false;\r\n for (const meshHighlightToCheck in this._meshes) {\r\n if (this._meshes[meshHighlightToCheck]) {\r\n this._shouldRender = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the meshes currently referenced in the highlight layer\r\n */\r\n public removeAllMeshes(): void {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n for (const uniqueId in this._meshes) {\r\n if (Object.prototype.hasOwnProperty.call(this._meshes, uniqueId)) {\r\n const mesh = this._meshes[uniqueId];\r\n if (mesh) {\r\n this.removeMesh(mesh.mesh);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _defaultStencilReference(mesh: Mesh) {\r\n mesh.getScene().getEngine().setStencilFunctionReference(ThinHighlightLayer.NormalMeshStencilReference);\r\n }\r\n\r\n public _disposeMesh(mesh: Mesh): void {\r\n this.removeMesh(mesh);\r\n this.removeExcludedMesh(mesh);\r\n }\r\n\r\n public override dispose(): void {\r\n if (this._meshes) {\r\n // Clean mesh references\r\n for (const id in this._meshes) {\r\n const meshHighlight = this._meshes[id];\r\n if (meshHighlight && meshHighlight.mesh) {\r\n if (meshHighlight.observerHighlight) {\r\n meshHighlight.mesh.onBeforeBindObservable.remove(meshHighlight.observerHighlight);\r\n }\r\n\r\n if (meshHighlight.observerDefault) {\r\n meshHighlight.mesh.onAfterRenderObservable.remove(meshHighlight.observerDefault);\r\n }\r\n }\r\n }\r\n this._meshes = null;\r\n }\r\n\r\n if (this._excludedMeshes) {\r\n for (const id in this._excludedMeshes) {\r\n const meshHighlight = this._excludedMeshes[id];\r\n if (meshHighlight) {\r\n if (meshHighlight.beforeBind) {\r\n meshHighlight.mesh.onBeforeBindObservable.remove(meshHighlight.beforeBind);\r\n }\r\n\r\n if (meshHighlight.afterRender) {\r\n meshHighlight.mesh.onAfterRenderObservable.remove(meshHighlight.afterRender);\r\n }\r\n }\r\n }\r\n this._excludedMeshes = null;\r\n }\r\n\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"thinHighlightLayer.js","sourceRoot":"","sources":["../../../../dev/core/src/Layers/thinHighlightLayer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Observer, Nullable, Scene, SubMesh, AbstractMesh, Mesh, Effect, IThinEffectLayerOptions, Color3, EffectWrapper } from \"core/index\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { ThinPassPostProcess } from \"../PostProcesses/thinPassPostProcess\";\r\nimport { ThinEffectLayer, ThinGlowBlurPostProcess } from \"./thinEffectLayer\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { ThinBlurPostProcess } from \"core/PostProcesses/thinBlurPostProcess\";\r\n\r\ninterface IBlurPostProcess extends EffectWrapper {\r\n kernel: number;\r\n}\r\n\r\n/**\r\n * Highlight layer options. This helps customizing the behaviour\r\n * of the highlight layer.\r\n */\r\nexport interface IThinHighlightLayerOptions extends IThinEffectLayerOptions {\r\n /**\r\n * Multiplication factor apply to the main texture size in the first step of the blur to reduce the size\r\n * of the picture to blur (the smaller the faster). Default: 0.5\r\n */\r\n blurTextureSizeRatio?: number;\r\n\r\n /**\r\n * How big in texel of the blur texture is the vertical blur. Default: 1\r\n */\r\n blurVerticalSize?: number;\r\n\r\n /**\r\n * How big in texel of the blur texture is the horizontal blur. Default: 1\r\n */\r\n blurHorizontalSize?: number;\r\n\r\n /**\r\n * Should we display highlight as a solid stroke? Default: false\r\n */\r\n isStroke?: boolean;\r\n\r\n /**\r\n * Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n forceGLSL?: boolean;\r\n}\r\n\r\n/**\r\n * Storage interface grouping all the information required for glowing a mesh.\r\n */\r\ninterface IHighlightLayerMesh {\r\n /**\r\n * The glowy mesh\r\n */\r\n mesh: Mesh;\r\n /**\r\n * The color of the glow\r\n */\r\n color: Color3;\r\n /**\r\n * The mesh render callback use to insert stencil information\r\n */\r\n observerHighlight: Nullable<Observer<Mesh>>;\r\n /**\r\n * The mesh render callback use to come to the default behavior\r\n */\r\n observerDefault: Nullable<Observer<Mesh>>;\r\n /**\r\n * If it exists, the emissive color of the material will be used to generate the glow.\r\n * Else it falls back to the current color.\r\n */\r\n glowEmissiveOnly: boolean;\r\n}\r\n\r\n/**\r\n * Storage interface grouping all the information required for an excluded mesh.\r\n */\r\ninterface IHighlightLayerExcludedMesh {\r\n /**\r\n * The glowy mesh\r\n */\r\n mesh: Mesh;\r\n /**\r\n * The mesh render callback use to prevent stencil use\r\n */\r\n beforeBind: Nullable<Observer<Mesh>>;\r\n /**\r\n * The mesh render callback use to restore previous stencil use\r\n */\r\n afterRender: Nullable<Observer<Mesh>>;\r\n /**\r\n * Current stencil state of the engine\r\n */\r\n stencilState: boolean;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinHighlightLayer extends ThinEffectLayer {\r\n /**\r\n * Effect Name of the highlight layer.\r\n */\r\n public static readonly EffectName = \"HighlightLayer\";\r\n\r\n /**\r\n * The neutral color used during the preparation of the glow effect.\r\n * This is black by default as the blend operation is a blend operation.\r\n */\r\n public static NeutralColor: Color4 = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Stencil value used for glowing meshes.\r\n */\r\n public static GlowingMeshStencilReference = 0x02;\r\n\r\n /**\r\n * Stencil value used for the other meshes in the scene.\r\n */\r\n public static NormalMeshStencilReference = 0x01;\r\n\r\n /**\r\n * Specifies whether or not the inner glow is ACTIVE in the layer.\r\n */\r\n public innerGlow: boolean = true;\r\n\r\n /**\r\n * Specifies whether or not the outer glow is ACTIVE in the layer.\r\n */\r\n public outerGlow: boolean = true;\r\n\r\n /**\r\n * Specifies the horizontal size of the blur.\r\n */\r\n public set blurHorizontalSize(value: number) {\r\n this._horizontalBlurPostprocess.kernel = value;\r\n this._options.blurHorizontalSize = value;\r\n }\r\n\r\n /**\r\n * Specifies the vertical size of the blur.\r\n */\r\n public set blurVerticalSize(value: number) {\r\n this._verticalBlurPostprocess.kernel = value;\r\n this._options.blurVerticalSize = value;\r\n }\r\n\r\n /**\r\n * Gets the horizontal size of the blur.\r\n */\r\n public get blurHorizontalSize(): number {\r\n return this._horizontalBlurPostprocess.kernel;\r\n }\r\n\r\n /**\r\n * Gets the vertical size of the blur.\r\n */\r\n public get blurVerticalSize(): number {\r\n return this._verticalBlurPostprocess.kernel;\r\n }\r\n\r\n private _instanceGlowingMeshStencilReference = ThinHighlightLayer.GlowingMeshStencilReference++;\r\n\r\n /** @internal */\r\n public override _options: Required<IThinHighlightLayerOptions>;\r\n\r\n private _downSamplePostprocess: ThinPassPostProcess;\r\n private _horizontalBlurPostprocess: IBlurPostProcess;\r\n private _verticalBlurPostprocess: IBlurPostProcess;\r\n\r\n /** @internal */\r\n public _meshes: Nullable<{ [id: string]: Nullable<IHighlightLayerMesh> }> = {};\r\n /** @internal */\r\n public _excludedMeshes: Nullable<{ [id: string]: Nullable<IHighlightLayerExcludedMesh> }> = {};\r\n\r\n /** @internal */\r\n public _mainObjectRendererRenderPassId = -1;\r\n\r\n /**\r\n * Instantiates a new highlight Layer and references it to the scene..\r\n * @param name The name of the layer\r\n * @param scene The scene to use the layer in\r\n * @param options Sets of none mandatory options to use with the layer (see IHighlightLayerOptions for more information)\r\n * @param dontCheckIfReady Specifies if the layer should disable checking whether all the post processes are ready (default: false). To save performance, this should be set to true and you should call `isReady` manually before rendering to the layer.\r\n */\r\n constructor(name: string, scene?: Scene, options?: Partial<IThinHighlightLayerOptions>, dontCheckIfReady = false) {\r\n super(name, scene, options !== undefined ? !!options.forceGLSL : false);\r\n\r\n this.neutralColor = ThinHighlightLayer.NeutralColor;\r\n\r\n // Adapt options\r\n this._options = {\r\n mainTextureRatio: 0.5,\r\n blurTextureSizeRatio: 0.5,\r\n mainTextureFixedSize: 0,\r\n blurHorizontalSize: 1.0,\r\n blurVerticalSize: 1.0,\r\n alphaBlendingMode: Constants.ALPHA_COMBINE,\r\n camera: null,\r\n renderingGroupId: -1,\r\n forceGLSL: false,\r\n mainTextureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n isStroke: false,\r\n ...options,\r\n };\r\n\r\n // Initialize the layer\r\n this._init(this._options);\r\n\r\n // Do not render as long as no meshes have been added\r\n this._shouldRender = false;\r\n\r\n if (dontCheckIfReady) {\r\n // When dontCheckIfReady is true, we are in the new ThinXXX layer mode, so we must call _createTextureAndPostProcesses ourselves (it is called by EffectLayer otherwise)\r\n this._createTextureAndPostProcesses();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the class name of the effect layer\r\n * @returns the string with the class name of the effect layer\r\n */\r\n public getClassName(): string {\r\n return \"HighlightLayer\";\r\n }\r\n\r\n protected override async _importShadersAsync() {\r\n if (this._shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../ShadersWGSL/glowMapMerge.fragment\"),\r\n import(\"../ShadersWGSL/glowMapMerge.vertex\"),\r\n import(\"../ShadersWGSL/glowBlurPostProcess.fragment\"),\r\n ]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/glowMapMerge.fragment\"), import(\"../Shaders/glowMapMerge.vertex\"), import(\"../Shaders/glowBlurPostProcess.fragment\")]);\r\n }\r\n\r\n await super._importShadersAsync();\r\n }\r\n\r\n public override getEffectName(): string {\r\n return ThinHighlightLayer.EffectName;\r\n }\r\n\r\n public override _numInternalDraws(): number {\r\n return 2; // we need two rendering, one for the inner glow and the other for the outer glow\r\n }\r\n\r\n public override _createMergeEffect(): Effect {\r\n return this._engine.createEffect(\r\n \"glowMapMerge\",\r\n [VertexBuffer.PositionKind],\r\n [\"offset\"],\r\n [\"textureSampler\"],\r\n this._options.isStroke ? \"#define STROKE \\n\" : undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._shaderLanguage,\r\n this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n await this._importShadersAsync();\r\n this._shadersLoaded = true;\r\n }\r\n );\r\n }\r\n\r\n public override _createTextureAndPostProcesses(): void {\r\n if (this._options.alphaBlendingMode === Constants.ALPHA_COMBINE) {\r\n this._downSamplePostprocess = new ThinPassPostProcess(\"HighlightLayerPPP\", this._scene.getEngine());\r\n this._horizontalBlurPostprocess = new ThinGlowBlurPostProcess(\"HighlightLayerHBP\", this._scene.getEngine(), new Vector2(1.0, 0), this._options.blurHorizontalSize);\r\n this._verticalBlurPostprocess = new ThinGlowBlurPostProcess(\"HighlightLayerVBP\", this._scene.getEngine(), new Vector2(0, 1.0), this._options.blurVerticalSize);\r\n this._postProcesses = [this._downSamplePostprocess, this._horizontalBlurPostprocess, this._verticalBlurPostprocess];\r\n } else {\r\n this._horizontalBlurPostprocess = new ThinBlurPostProcess(\"HighlightLayerHBP\", this._scene.getEngine(), new Vector2(1.0, 0), this._options.blurHorizontalSize / 2);\r\n this._verticalBlurPostprocess = new ThinBlurPostProcess(\"HighlightLayerVBP\", this._scene.getEngine(), new Vector2(0, 1.0), this._options.blurVerticalSize / 2);\r\n this._postProcesses = [this._horizontalBlurPostprocess, this._verticalBlurPostprocess];\r\n }\r\n }\r\n\r\n public override needStencil(): boolean {\r\n return true;\r\n }\r\n\r\n public override isReady(subMesh: SubMesh, useInstances: boolean): boolean {\r\n const material = subMesh.getMaterial();\r\n const mesh = subMesh.getRenderingMesh();\r\n\r\n if (!material || !mesh || !this._meshes) {\r\n return false;\r\n }\r\n\r\n let emissiveTexture: Nullable<any> = null;\r\n const highlightLayerMesh = this._meshes[mesh.uniqueId];\r\n\r\n if (highlightLayerMesh && highlightLayerMesh.glowEmissiveOnly && material) {\r\n emissiveTexture = (<any>material).emissiveTexture;\r\n }\r\n return super._isSubMeshReady(subMesh, useInstances, emissiveTexture);\r\n }\r\n\r\n public override _canRenderMesh(_mesh: AbstractMesh, _material: Material): boolean {\r\n // all meshes can be rendered in the highlight layer, even transparent ones\r\n return true;\r\n }\r\n\r\n public override _internalCompose(effect: Effect, renderIndex: number): void {\r\n // Texture\r\n this.bindTexturesForCompose(effect);\r\n\r\n // Cache\r\n const engine = this._engine;\r\n engine.cacheStencilState();\r\n\r\n // Stencil operations\r\n engine.setStencilOperationPass(Constants.REPLACE);\r\n engine.setStencilOperationFail(Constants.KEEP);\r\n engine.setStencilOperationDepthFail(Constants.KEEP);\r\n\r\n // Draw order\r\n engine.setStencilMask(0x00);\r\n engine.setStencilBuffer(true);\r\n engine.setStencilFunctionReference(this._instanceGlowingMeshStencilReference);\r\n\r\n // 2 passes inner outer\r\n if (this.outerGlow && renderIndex === 0) {\r\n // the outer glow is rendered the first time _internalRender is called, so when renderIndex == 0 (and only if outerGlow is enabled)\r\n effect.setFloat(\"offset\", 0);\r\n engine.setStencilFunction(Constants.NOTEQUAL);\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n }\r\n if (this.innerGlow && renderIndex === 1) {\r\n // the inner glow is rendered the second time _internalRender is called, so when renderIndex == 1 (and only if innerGlow is enabled)\r\n effect.setFloat(\"offset\", 1);\r\n engine.setStencilFunction(Constants.EQUAL);\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n }\r\n\r\n // Restore Cache\r\n engine.restoreStencilState();\r\n }\r\n\r\n public override _setEmissiveTextureAndColor(mesh: Mesh, _subMesh: SubMesh, material: Material): void {\r\n const highlightLayerMesh = this._meshes![mesh.uniqueId];\r\n if (highlightLayerMesh) {\r\n this._emissiveTextureAndColor.color.set(highlightLayerMesh.color.r, highlightLayerMesh.color.g, highlightLayerMesh.color.b, 1.0);\r\n } else {\r\n this._emissiveTextureAndColor.color.set(this.neutralColor.r, this.neutralColor.g, this.neutralColor.b, this.neutralColor.a);\r\n }\r\n\r\n if (highlightLayerMesh && highlightLayerMesh.glowEmissiveOnly && material) {\r\n this._emissiveTextureAndColor.texture = (<any>material).emissiveTexture;\r\n this._emissiveTextureAndColor.color.set(1.0, 1.0, 1.0, 1.0);\r\n } else {\r\n this._emissiveTextureAndColor.texture = null;\r\n }\r\n }\r\n\r\n public override shouldRender(): boolean {\r\n return this._meshes && super.shouldRender() ? true : false;\r\n }\r\n\r\n public override _shouldRenderMesh(mesh: Mesh): boolean {\r\n if (this._excludedMeshes && this._excludedMeshes[mesh.uniqueId]) {\r\n return false;\r\n }\r\n\r\n return super.hasMesh(mesh);\r\n }\r\n\r\n public override _addCustomEffectDefines(defines: string[]): void {\r\n defines.push(\"#define HIGHLIGHT\");\r\n }\r\n\r\n /**\r\n * Add a mesh in the exclusion list to prevent it to impact or being impacted by the highlight layer.\r\n * @param mesh The mesh to exclude from the highlight layer\r\n */\r\n public addExcludedMesh(mesh: Mesh) {\r\n if (!this._excludedMeshes) {\r\n return;\r\n }\r\n\r\n const meshExcluded = this._excludedMeshes[mesh.uniqueId];\r\n if (!meshExcluded) {\r\n const obj: IHighlightLayerExcludedMesh = {\r\n mesh: mesh,\r\n beforeBind: null,\r\n afterRender: null,\r\n stencilState: false,\r\n };\r\n\r\n obj.beforeBind = mesh.onBeforeBindObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n obj.stencilState = mesh.getEngine().getStencilBuffer();\r\n mesh.getEngine().setStencilBuffer(false);\r\n });\r\n\r\n obj.afterRender = mesh.onAfterRenderObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n mesh.getEngine().setStencilBuffer(obj.stencilState);\r\n });\r\n\r\n this._excludedMeshes[mesh.uniqueId] = obj;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the exclusion list to let it impact or being impacted by the highlight layer.\r\n * @param mesh The mesh to highlight\r\n */\r\n public removeExcludedMesh(mesh: Mesh) {\r\n if (!this._excludedMeshes) {\r\n return;\r\n }\r\n\r\n const meshExcluded = this._excludedMeshes[mesh.uniqueId];\r\n if (meshExcluded) {\r\n if (meshExcluded.beforeBind) {\r\n mesh.onBeforeBindObservable.remove(meshExcluded.beforeBind);\r\n }\r\n\r\n if (meshExcluded.afterRender) {\r\n mesh.onAfterRenderObservable.remove(meshExcluded.afterRender);\r\n }\r\n }\r\n\r\n this._excludedMeshes[mesh.uniqueId] = null;\r\n }\r\n\r\n public override hasMesh(mesh: AbstractMesh): boolean {\r\n if (!this._meshes || !super.hasMesh(mesh)) {\r\n return false;\r\n }\r\n\r\n return !!this._meshes[mesh.uniqueId];\r\n }\r\n\r\n /**\r\n * Add a mesh in the highlight layer in order to make it glow with the chosen color.\r\n * @param mesh The mesh to highlight\r\n * @param color The color of the highlight\r\n * @param glowEmissiveOnly Extract the glow from the emissive texture\r\n */\r\n public addMesh(mesh: Mesh, color: Color3, glowEmissiveOnly = false) {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n const meshHighlight = this._meshes[mesh.uniqueId];\r\n if (meshHighlight) {\r\n meshHighlight.color = color;\r\n } else {\r\n this._meshes[mesh.uniqueId] = {\r\n mesh: mesh,\r\n color: color,\r\n // Lambda required for capture due to Observable this context\r\n observerHighlight: mesh.onBeforeBindObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n if (this.isEnabled) {\r\n if (this._excludedMeshes && this._excludedMeshes[mesh.uniqueId]) {\r\n this._defaultStencilReference(mesh);\r\n } else {\r\n mesh.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference);\r\n }\r\n }\r\n }),\r\n observerDefault: mesh.onAfterRenderObservable.add((mesh: Mesh) => {\r\n if (this._mainObjectRendererRenderPassId !== -1 && this._mainObjectRendererRenderPassId !== this._engine.currentRenderPassId) {\r\n return;\r\n }\r\n if (this.isEnabled) {\r\n this._defaultStencilReference(mesh);\r\n }\r\n }),\r\n glowEmissiveOnly: glowEmissiveOnly,\r\n };\r\n\r\n mesh.onDisposeObservable.add(() => {\r\n this._disposeMesh(mesh);\r\n });\r\n }\r\n\r\n this._shouldRender = true;\r\n }\r\n\r\n /**\r\n * Remove a mesh from the highlight layer in order to make it stop glowing.\r\n * @param mesh The mesh to highlight\r\n */\r\n public removeMesh(mesh: Mesh) {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n const meshHighlight = this._meshes[mesh.uniqueId];\r\n if (meshHighlight) {\r\n if (meshHighlight.observerHighlight) {\r\n mesh.onBeforeBindObservable.remove(meshHighlight.observerHighlight);\r\n }\r\n\r\n if (meshHighlight.observerDefault) {\r\n mesh.onAfterRenderObservable.remove(meshHighlight.observerDefault);\r\n }\r\n delete this._meshes[mesh.uniqueId];\r\n }\r\n\r\n this._shouldRender = false;\r\n for (const meshHighlightToCheck in this._meshes) {\r\n if (this._meshes[meshHighlightToCheck]) {\r\n this._shouldRender = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the meshes currently referenced in the highlight layer\r\n */\r\n public removeAllMeshes(): void {\r\n if (!this._meshes) {\r\n return;\r\n }\r\n\r\n for (const uniqueId in this._meshes) {\r\n if (Object.prototype.hasOwnProperty.call(this._meshes, uniqueId)) {\r\n const mesh = this._meshes[uniqueId];\r\n if (mesh) {\r\n this.removeMesh(mesh.mesh);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _defaultStencilReference(mesh: Mesh) {\r\n mesh.getScene().getEngine().setStencilFunctionReference(ThinHighlightLayer.NormalMeshStencilReference);\r\n }\r\n\r\n public _disposeMesh(mesh: Mesh): void {\r\n this.removeMesh(mesh);\r\n this.removeExcludedMesh(mesh);\r\n }\r\n\r\n public override dispose(): void {\r\n if (this._meshes) {\r\n // Clean mesh references\r\n for (const id in this._meshes) {\r\n const meshHighlight = this._meshes[id];\r\n if (meshHighlight && meshHighlight.mesh) {\r\n if (meshHighlight.observerHighlight) {\r\n meshHighlight.mesh.onBeforeBindObservable.remove(meshHighlight.observerHighlight);\r\n }\r\n\r\n if (meshHighlight.observerDefault) {\r\n meshHighlight.mesh.onAfterRenderObservable.remove(meshHighlight.observerDefault);\r\n }\r\n }\r\n }\r\n this._meshes = null;\r\n }\r\n\r\n if (this._excludedMeshes) {\r\n for (const id in this._excludedMeshes) {\r\n const meshHighlight = this._excludedMeshes[id];\r\n if (meshHighlight) {\r\n if (meshHighlight.beforeBind) {\r\n meshHighlight.mesh.onBeforeBindObservable.remove(meshHighlight.beforeBind);\r\n }\r\n\r\n if (meshHighlight.afterRender) {\r\n meshHighlight.mesh.onAfterRenderObservable.remove(meshHighlight.afterRender);\r\n }\r\n }\r\n }\r\n this._excludedMeshes = null;\r\n }\r\n\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
package/Legacy/legacy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
-
/* eslint-disable
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-restricted-imports */
|
|
3
3
|
import * as BABYLON from "../index.js";
|
|
4
4
|
import * as DebugImport from "../Debug/index.js";
|
|
5
5
|
/**
|
package/Legacy/legacy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../../lts/core/src/Legacy/legacy.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../../lts/core/src/Legacy/legacy.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,6DAA6D;AAC7D,OAAO,KAAK,OAAO,oBAAmB;AACtC,OAAO,KAAK,WAAW,0BAAyB;AAIhD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;IACtC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACvB,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAS,WAAY,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;IACL,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,aAAa,CAAC,GAAG,CAAC,GAAS,OAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;AACL,CAAC;AAED,4BAA2B;AAC3B,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,aAAa,EAAE,OAAO,CAAC,aAAa;IACpC,cAAc,EAAE,OAAO,CAAC,cAAc;CACzC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as BABYLON from \"core/index\";\r\nimport * as DebugImport from \"core/Debug/index\";\r\n\r\ndeclare let global: any;\r\n\r\n/**\r\n * Legacy support, defining window.BABYLON (global variable).\r\n *\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n GlobalObject.BABYLON = GlobalObject.BABYLON || {};\r\n const BABYLONGLOBAL = GlobalObject.BABYLON;\r\n if (!BABYLONGLOBAL.Debug) {\r\n BABYLONGLOBAL.Debug = BABYLONGLOBAL.Debug || {};\r\n\r\n for (const key in DebugImport) {\r\n if (!BABYLONGLOBAL.Debug[key]) {\r\n BABYLONGLOBAL.Debug[key] = (<any>DebugImport)[key];\r\n }\r\n }\r\n }\r\n for (const key in BABYLON) {\r\n if (!BABYLONGLOBAL[key]) {\r\n BABYLONGLOBAL[key] = (<any>BABYLON)[key];\r\n }\r\n }\r\n}\r\n\r\nexport * from \"core/index\";\r\nexport const Debug = {\r\n AxesViewer: BABYLON.AxesViewer,\r\n BoneAxesViewer: BABYLON.BoneAxesViewer,\r\n PhysicsViewer: BABYLON.PhysicsViewer,\r\n SkeletonViewer: BABYLON.SkeletonViewer,\r\n};\r\n"]}
|
package/Lights/index.js
CHANGED
package/Lights/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Lights/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Lights/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./light\";\r\nexport * from \"./shadowLight\";\r\nexport * from \"./Shadows/index\";\r\nexport * from \"./directionalLight\";\r\nexport * from \"./hemisphericLight\";\r\nexport * from \"./pointLight\";\r\nexport * from \"./spotLight\";\r\nexport * from \"./areaLight\";\r\nexport * from \"./rectAreaLight\";\r\nexport * from \"./IES/iesLoader\";\r\n"]}
|
package/Loading/index.js
CHANGED
package/Loading/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Loading/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Loading/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./loadingScreen\";\r\nexport * from \"./Plugins/index\";\r\nexport * from \"./sceneLoader\";\r\nexport * from \"./sceneLoaderFlags\";\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Vertex/index\";\r\nexport * from \"./Fragment/index\";\r\nexport * from \"./Dual/index\";\r\nexport * from \"./Input/index\";\r\nexport * from \"./Teleport/index\";\r\nexport * from \"./multiplyBlock\";\r\nexport * from \"./addBlock\";\r\nexport * from \"./scaleBlock\";\r\nexport * from \"./clampBlock\";\r\nexport * from \"./crossBlock\";\r\nexport * from \"./customBlock\";\r\nexport * from \"./dotBlock\";\r\nexport * from \"./transformBlock\";\r\nexport * from \"./remapBlock\";\r\nexport * from \"./normalizeBlock\";\r\nexport * from \"./trigonometryBlock\";\r\nexport * from \"./colorMergerBlock\";\r\nexport * from \"./vectorMergerBlock\";\r\nexport * from \"./colorSplitterBlock\";\r\nexport * from \"./vectorSplitterBlock\";\r\nexport * from \"./lerpBlock\";\r\nexport * from \"./divideBlock\";\r\nexport * from \"./subtractBlock\";\r\nexport * from \"./stepBlock\";\r\nexport * from \"./oneMinusBlock\";\r\nexport * from \"./viewDirectionBlock\";\r\nexport * from \"./fresnelBlock\";\r\nexport * from \"./maxBlock\";\r\nexport * from \"./minBlock\";\r\nexport * from \"./distanceBlock\";\r\nexport * from \"./lengthBlock\";\r\nexport * from \"./negateBlock\";\r\nexport * from \"./powBlock\";\r\nexport * from \"./randomNumberBlock\";\r\nexport * from \"./arcTan2Block\";\r\nexport * from \"./smoothStepBlock\";\r\nexport * from \"./reciprocalBlock\";\r\nexport * from \"./replaceColorBlock\";\r\nexport * from \"./posterizeBlock\";\r\nexport * from \"./waveBlock\";\r\nexport * from \"./gradientBlock\";\r\nexport * from \"./nLerpBlock\";\r\nexport * from \"./worleyNoise3DBlock\";\r\nexport * from \"./simplexPerlin3DBlock\";\r\nexport * from \"./normalBlendBlock\";\r\nexport * from \"./rotate2dBlock\";\r\nexport * from \"./reflectBlock\";\r\nexport * from \"./refractBlock\";\r\nexport * from \"./desaturateBlock\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./Particle/index\";\r\nexport * from \"./modBlock\";\r\nexport * from \"./matrixBuilderBlock\";\r\nexport * from \"./conditionalBlock\";\r\nexport * from \"./cloudBlock\";\r\nexport * from \"./voronoiNoiseBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./triPlanarBlock\";\r\nexport * from \"./biPlanarBlock\";\r\nexport * from \"./matrixDeterminantBlock\";\r\nexport * from \"./matrixTransposeBlock\";\r\nexport * from \"./meshAttributeExistsBlock\";\r\nexport * from \"./curveBlock\";\r\nexport * from \"./colorConverterBlock\";\r\nexport * from \"./loopBlock\";\r\nexport * from \"./storageReadBlock\";\r\nexport * from \"./storageWriteBlock\";\r\nexport * from \"./matrixSplitterBlock\";\r\nexport * from \"./GaussianSplatting/index\";\r\nexport * from \"./debugBlock\";\r\n"]}
|
package/Materials/Node/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Enums/index\";\r\nexport * from \"./nodeMaterialConnectionPointCustomObject\";\r\nexport * from \"./nodeMaterialBlockConnectionPoint\";\r\nexport * from \"./nodeMaterialBlock\";\r\nexport * from \"./nodeMaterialDefault\";\r\nexport * from \"./nodeMaterial\";\r\nexport * from \"./Blocks/index\";\r\nexport * from \"./Optimizers/index\";\r\nexport * from \"../../Decorators/nodeDecorator\";\r\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-restricted-imports */
|
|
1
2
|
export * from "./internalTextureLoader.js";
|
|
2
3
|
export * from "./ddsTextureLoader.js";
|
|
3
4
|
export * from "./envTextureLoader.js";
|
|
@@ -8,6 +9,5 @@ export * from "./basisTextureLoader.js";
|
|
|
8
9
|
export * from "./exrTextureLoader.js";
|
|
9
10
|
export * from "./iesTextureLoader.js";
|
|
10
11
|
export * from "./textureLoaderManager.js";
|
|
11
|
-
// eslint-disable-next-line import/no-internal-modules
|
|
12
12
|
export * from "./EXR/index.js";
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Loaders/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Loaders/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./internalTextureLoader\";\r\nexport * from \"./ddsTextureLoader\";\r\nexport * from \"./envTextureLoader\";\r\nexport * from \"./ktxTextureLoader\";\r\nexport * from \"./tgaTextureLoader\";\r\nexport * from \"./hdrTextureLoader\";\r\nexport * from \"./basisTextureLoader\";\r\nexport * from \"./exrTextureLoader\";\r\nexport * from \"./iesTextureLoader\";\r\nexport * from \"./textureLoaderManager\";\r\nexport * from \"./EXR/index\";\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,yCAAyC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAEzC,kCAAkC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAEhD,gBAAgB;AAChB,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./baseTexture\";\r\n// eslint-disable-next-line import/export\r\nexport * from \"./baseTexture.polynomial\";\r\nexport * from \"./colorGradingTexture\";\r\nexport * from \"./cubeTexture\";\r\nexport * from \"./dynamicTexture\";\r\nexport * from \"./equiRectangularCubeTexture\";\r\nexport * from \"./externalTexture\";\r\nexport * from \"./Filtering/hdrFiltering\";\r\nexport * from \"./hdrCubeTexture\";\r\nexport * from \"./htmlElementTexture\";\r\nexport * from \"./internalTexture\";\r\nexport * from \"./Loaders/index\";\r\nexport * from \"./mirrorTexture\";\r\nexport * from \"./multiRenderTarget\";\r\nexport * from \"./Packer/index\";\r\nexport * from \"./Procedurals/index\";\r\nexport * from \"./rawCubeTexture\";\r\nexport * from \"./rawTexture\";\r\nexport * from \"./rawTexture2DArray\";\r\nexport * from \"./rawTexture3D\";\r\nexport * from \"./refractionTexture\";\r\nexport * from \"./renderTargetTexture\";\r\nexport * from \"./textureSampler\";\r\nexport * from \"./texture\";\r\nexport * from \"./thinTexture\";\r\nexport * from \"./thinRenderTargetTexture\";\r\nexport * from \"./videoTexture\";\r\nexport * from \"./ktx2decoderTypes\";\r\nexport * from \"./textureCreationOptions\";\r\n\r\n// Shaders for procedural textures\r\nexport * from \"../../ShadersWGSL/procedural.vertex\";\r\nexport * from \"../../Shaders/procedural.vertex\";\r\n\r\n// HDR filtering\r\nexport * from \"../../Shaders/hdrFiltering.vertex\";\r\nexport * from \"../../Shaders/hdrFiltering.fragment\";\r\nexport * from \"../../ShadersWGSL/hdrFiltering.vertex\";\r\nexport * from \"../../ShadersWGSL/hdrFiltering.fragment\";\r\nexport * from \"../../Shaders/hdrIrradianceFiltering.vertex\";\r\nexport * from \"../../Shaders/hdrIrradianceFiltering.fragment\";\r\nexport * from \"../../ShadersWGSL/hdrIrradianceFiltering.vertex\";\r\nexport * from \"../../ShadersWGSL/hdrIrradianceFiltering.fragment\";\r\n"]}
|
package/Materials/index.js
CHANGED
package/Materials/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,OAAO,qBAAqB,CAAC;AAE7B,uBAAuB;AAEvB,mBAAmB;AACnB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,2BAA2B;AAC3B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Background/index\";\r\nexport * from \"./colorCurves\";\r\nexport * from \"./iEffectFallbacks\";\r\nexport * from \"./effectFallbacks\";\r\nexport * from \"./effect\";\r\nexport * from \"./fresnelParameters\";\r\nexport * from \"./imageProcessingConfiguration\";\r\nexport * from \"./material\";\r\nexport * from \"./materialDefines\";\r\nexport * from \"./clipPlaneMaterialHelper\";\r\nexport * from \"./materialHelper\";\r\nexport * from \"./multiMaterial\";\r\nexport * from \"./Occlusion/index\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./pushMaterial\";\r\nexport * from \"./shaderLanguage\";\r\nexport * from \"./shaderMaterial\";\r\nexport * from \"./standardMaterial\";\r\nexport * from \"./Textures/index\";\r\nexport * from \"./uniformBuffer\";\r\nexport * from \"./materialFlags\";\r\nexport * from \"./Node/index\";\r\nexport * from \"./effectRenderer\";\r\nexport * from \"./shadowDepthWrapper\";\r\nexport * from \"./drawWrapper.functions\";\r\nexport * from \"./drawWrapper\";\r\nexport * from \"./materialPluginBase\";\r\nexport * from \"./materialPluginManager\";\r\nexport * from \"./materialPluginEvent\";\r\nexport * from \"./material.detailMapConfiguration\";\r\nexport * from \"./material.decalMapConfiguration\";\r\nexport * from \"./materialPluginFactoryExport\";\r\nexport * from \"./GreasedLine/greasedLinePluginMaterial\";\r\nexport * from \"./GreasedLine/greasedLineSimpleMaterial\";\r\nexport * from \"./GreasedLine/greasedLineMaterialInterfaces\";\r\nexport * from \"./GreasedLine/greasedLineMaterialDefaults\";\r\nexport * from \"./meshDebugPluginMaterial\";\r\nexport * from \"./GaussianSplatting/gaussianSplattingMaterial\";\r\nexport * from \"./materialHelper.functions\";\r\nexport * from \"./materialHelper.geometryrendering\";\r\nimport \"./material.decalMap\";\r\n\r\n// async-loaded shaders\r\n\r\n// StandardMaterial\r\nexport * from \"../Shaders/default.fragment\";\r\nexport * from \"../Shaders/default.vertex\";\r\nexport * from \"../ShadersWGSL/default.fragment\";\r\nexport * from \"../ShadersWGSL/default.vertex\";\r\n\r\n// GreasedLineSimplMaterial\r\nexport * from \"../Shaders/greasedLine.fragment\";\r\nexport * from \"../Shaders/greasedLine.vertex\";\r\nexport * from \"../ShadersWGSL/greasedLine.fragment\";\r\nexport * from \"../ShadersWGSL/greasedLine.vertex\";\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialHelper.geometryrendering.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialHelper.geometryrendering.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { MaterialDefines, Effect, Mesh, AbstractMesh, Material } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Matrix } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Type of clear operation to perform on a geometry texture.\r\n */\r\nexport const enum GeometryRenderingTextureClearType {\r\n /**\r\n * Clear the texture with zero.\r\n */\r\n Zero = 0,\r\n\r\n /**\r\n * Clear the texture with one.\r\n */\r\n One = 1,\r\n\r\n /**\r\n * Clear the texture with the maximum view Z value.\r\n */\r\n MaxViewZ = 2,\r\n}\r\n\r\n/**\r\n * Configuration for geometry rendering.\r\n * A configuration is created for each rendering pass a geometry rendering is used in.\r\n */\r\nexport type GeometryRenderingConfiguration = {\r\n /**\r\n * Defines used for the geometry rendering.\r\n */\r\n defines: { [name: string]: number };\r\n\r\n /**\r\n * Previous world matrices for meshes.\r\n */\r\n previousWorldMatrices: { [index: number]: Matrix };\r\n\r\n /**\r\n * Previous view projection matrix.\r\n */\r\n previousViewProjection: Matrix;\r\n\r\n /**\r\n * Current view projection matrix.\r\n */\r\n currentViewProjection: Matrix;\r\n\r\n /**\r\n * Previous bones for skinned meshes.\r\n */\r\n previousBones: { [index: number]: Float32Array };\r\n\r\n /**\r\n * Last frame id the configuration was updated.\r\n */\r\n lastUpdateFrameId: number;\r\n\r\n /**\r\n * List of excluded skinned meshes.\r\n */\r\n excludedSkinnedMesh: AbstractMesh[];\r\n\r\n /**\r\n * Whether to reverse culling for the geometry rendering (meaning, if back faces should be culled, front faces are culled instead, and the other way around).\r\n */\r\n reverseCulling: boolean;\r\n};\r\n\r\n/**\r\n * Helper class to manage geometry rendering.\r\n */\r\nexport class MaterialHelperGeometryRendering {\r\n /**\r\n * Descriptions of the geometry textures.\r\n */\r\n public static readonly GeometryTextureDescriptions = [\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n name: \"Irradiance\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE\",\r\n defineIndex: \"PREPASS_IRRADIANCE_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n name: \"WorldPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_POSITION\",\r\n defineIndex: \"PREPASS_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n name: \"Velocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY\",\r\n defineIndex: \"PREPASS_VELOCITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n name: \"Reflectivity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_REFLECTIVITY\",\r\n defineIndex: \"PREPASS_REFLECTIVITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n name: \"ViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.MaxViewZ,\r\n define: \"PREPASS_DEPTH\",\r\n defineIndex: \"PREPASS_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n name: \"ViewNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_NORMAL\",\r\n defineIndex: \"PREPASS_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n name: \"AlbedoSqrt\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO_SQRT\",\r\n defineIndex: \"PREPASS_ALBEDO_SQRT_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n name: \"WorldNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_WORLD_NORMAL\",\r\n defineIndex: \"PREPASS_WORLD_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n name: \"LocalPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_LOCAL_POSITION\",\r\n defineIndex: \"PREPASS_LOCAL_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n name: \"ScreenDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_SCREENSPACE_DEPTH\",\r\n defineIndex: \"PREPASS_SCREENSPACE_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n name: \"LinearVelocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY_LINEAR\",\r\n defineIndex: \"PREPASS_VELOCITY_LINEAR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n name: \"Albedo\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO\",\r\n defineIndex: \"PREPASS_ALBEDO_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE,\r\n name: \"NormalizedViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_NORMALIZED_VIEW_DEPTH\",\r\n defineIndex: \"PREPASS_NORMALIZED_VIEW_DEPTH_INDEX\",\r\n },\r\n ];\r\n\r\n private static _Configurations: { [renderPassId: number]: GeometryRenderingConfiguration } = {};\r\n\r\n /**\r\n * Creates a new geometry rendering configuration.\r\n * @param renderPassId Render pass id the configuration is created for.\r\n * @returns The created configuration.\r\n */\r\n public static CreateConfiguration(renderPassId: number) {\r\n MaterialHelperGeometryRendering._Configurations[renderPassId] = {\r\n defines: {},\r\n previousWorldMatrices: {},\r\n previousViewProjection: Matrix.Zero(),\r\n currentViewProjection: Matrix.Zero(),\r\n previousBones: {},\r\n lastUpdateFrameId: -1,\r\n excludedSkinnedMesh: [],\r\n reverseCulling: false,\r\n };\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Deletes a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to delete.\r\n */\r\n public static DeleteConfiguration(renderPassId: number) {\r\n delete MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Gets a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to get.\r\n * @returns The configuration.\r\n */\r\n public static GetConfiguration(renderPassId: number): GeometryRenderingConfiguration {\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Adds uniforms and samplers for geometry rendering.\r\n * @param uniforms The array of uniforms to add to.\r\n * @param _samplers The array of samplers to add to.\r\n */\r\n public static AddUniformsAndSamplers(uniforms: string[], _samplers: string[]) {\r\n uniforms.push(\"previousWorld\", \"previousViewProjection\", \"mPreviousBones\");\r\n }\r\n\r\n /**\r\n * Marks a list of meshes as dirty for geometry rendering.\r\n * @param renderPassId The render pass id the meshes are marked as dirty for.\r\n * @param meshes The list of meshes to mark as dirty.\r\n */\r\n public static MarkAsDirty(renderPassId: number, meshes: AbstractMesh[]) {\r\n for (const mesh of meshes) {\r\n if (!mesh.subMeshes) {\r\n continue;\r\n }\r\n\r\n for (const subMesh of mesh.subMeshes) {\r\n subMesh._removeDrawWrapper(renderPassId);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prepares defines for geometry rendering.\r\n * @param renderPassId The render pass id the defines are prepared for.\r\n * @param mesh The mesh the defines are prepared for.\r\n * @param defines The defines to update according to the geometry rendering configuration.\r\n */\r\n public static PrepareDefines(renderPassId: number, mesh: AbstractMesh, defines: MaterialDefines) {\r\n if (!defines._arePrePassDirty) {\r\n return;\r\n }\r\n\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n defines[\"PREPASS\"] = true;\r\n defines[\"PREPASS_COLOR\"] = false;\r\n defines[\"PREPASS_COLOR_INDEX\"] = -1;\r\n\r\n let numMRT = 0;\r\n\r\n for (let i = 0; i < MaterialHelperGeometryRendering.GeometryTextureDescriptions.length; i++) {\r\n const geometryTextureDescription = MaterialHelperGeometryRendering.GeometryTextureDescriptions[i];\r\n const defineName = geometryTextureDescription.define;\r\n const defineIndex = geometryTextureDescription.defineIndex;\r\n const index = configuration.defines[defineIndex];\r\n\r\n if (index !== undefined) {\r\n defines[defineName] = true;\r\n defines[defineIndex] = index;\r\n numMRT++;\r\n } else {\r\n defines[defineName] = false;\r\n delete defines[defineIndex];\r\n }\r\n }\r\n\r\n defines[\"SCENE_MRT_COUNT\"] = numMRT;\r\n\r\n defines[\"BONES_VELOCITY_ENABLED\"] =\r\n mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton && !mesh.skeleton.isUsingTextureForMatrices && configuration.excludedSkinnedMesh.indexOf(mesh) === -1;\r\n }\r\n\r\n /**\r\n * Binds geometry rendering data for a mesh.\r\n * @param renderPassId The render pass id the geometry rendering data is bound for.\r\n * @param effect The effect to bind the geometry rendering data to.\r\n * @param mesh The mesh to bind the geometry rendering data for.\r\n * @param world The world matrix of the mesh.\r\n * @param material The material of the mesh.\r\n */\r\n public static Bind(renderPassId: number, effect: Effect, mesh: Mesh, world: Matrix, material: Material) {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n const engine = scene.getEngine();\r\n\r\n if (configuration.reverseCulling) {\r\n engine.setStateCullFaceType(scene._mirroredCameraPosition ? material.cullBackFaces : !material.cullBackFaces);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_VELOCITY_INDEX\"] !== undefined || configuration.defines[\"PREPASS_VELOCITY_LINEAR_INDEX\"] !== undefined) {\r\n if (!configuration.previousWorldMatrices[mesh.uniqueId]) {\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n }\r\n\r\n if (!configuration.previousViewProjection) {\r\n configuration.previousViewProjection = scene.getTransformMatrix().clone();\r\n configuration.currentViewProjection = scene.getTransformMatrix().clone();\r\n }\r\n\r\n if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {\r\n // First update of the prepass configuration for this rendering pass\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());\r\n } else if (configuration.lastUpdateFrameId !== engine.frameId) {\r\n // The scene transformation did not change from the previous frame (so no camera motion), we must update previousViewProjection accordingly\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n }\r\n\r\n effect.setMatrix(\"previousWorld\", configuration.previousWorldMatrices[mesh.uniqueId]);\r\n effect.setMatrix(\"previousViewProjection\", configuration.previousViewProjection);\r\n\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n\r\n if (mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n const skeleton = mesh.skeleton;\r\n\r\n if (!skeleton.isUsingTextureForMatrices || effect.getUniformIndex(\"boneTextureWidth\") === -1) {\r\n const matrices = skeleton.getTransformMatrices(mesh);\r\n\r\n if (matrices) {\r\n if (!configuration.previousBones[mesh.uniqueId]) {\r\n configuration.previousBones[mesh.uniqueId] = matrices.slice();\r\n }\r\n effect.setMatrices(\"mPreviousBones\", configuration.previousBones[mesh.uniqueId]);\r\n configuration.previousBones[mesh.uniqueId].set(matrices);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"materialHelper.geometryrendering.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialHelper.geometryrendering.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MaterialDefines, Effect, Mesh, AbstractMesh, Material } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Matrix } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Type of clear operation to perform on a geometry texture.\r\n */\r\nexport const enum GeometryRenderingTextureClearType {\r\n /**\r\n * Clear the texture with zero.\r\n */\r\n Zero = 0,\r\n\r\n /**\r\n * Clear the texture with one.\r\n */\r\n One = 1,\r\n\r\n /**\r\n * Clear the texture with the maximum view Z value.\r\n */\r\n MaxViewZ = 2,\r\n}\r\n\r\n/**\r\n * Configuration for geometry rendering.\r\n * A configuration is created for each rendering pass a geometry rendering is used in.\r\n */\r\nexport type GeometryRenderingConfiguration = {\r\n /**\r\n * Defines used for the geometry rendering.\r\n */\r\n defines: { [name: string]: number };\r\n\r\n /**\r\n * Previous world matrices for meshes.\r\n */\r\n previousWorldMatrices: { [index: number]: Matrix };\r\n\r\n /**\r\n * Previous view projection matrix.\r\n */\r\n previousViewProjection: Matrix;\r\n\r\n /**\r\n * Current view projection matrix.\r\n */\r\n currentViewProjection: Matrix;\r\n\r\n /**\r\n * Previous bones for skinned meshes.\r\n */\r\n previousBones: { [index: number]: Float32Array };\r\n\r\n /**\r\n * Last frame id the configuration was updated.\r\n */\r\n lastUpdateFrameId: number;\r\n\r\n /**\r\n * List of excluded skinned meshes.\r\n */\r\n excludedSkinnedMesh: AbstractMesh[];\r\n\r\n /**\r\n * Whether to reverse culling for the geometry rendering (meaning, if back faces should be culled, front faces are culled instead, and the other way around).\r\n */\r\n reverseCulling: boolean;\r\n};\r\n\r\n/**\r\n * Helper class to manage geometry rendering.\r\n */\r\nexport class MaterialHelperGeometryRendering {\r\n /**\r\n * Descriptions of the geometry textures.\r\n */\r\n public static readonly GeometryTextureDescriptions = [\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n name: \"Irradiance\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE\",\r\n defineIndex: \"PREPASS_IRRADIANCE_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n name: \"WorldPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_POSITION\",\r\n defineIndex: \"PREPASS_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n name: \"Velocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY\",\r\n defineIndex: \"PREPASS_VELOCITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n name: \"Reflectivity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_REFLECTIVITY\",\r\n defineIndex: \"PREPASS_REFLECTIVITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n name: \"ViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.MaxViewZ,\r\n define: \"PREPASS_DEPTH\",\r\n defineIndex: \"PREPASS_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n name: \"ViewNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_NORMAL\",\r\n defineIndex: \"PREPASS_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n name: \"AlbedoSqrt\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO_SQRT\",\r\n defineIndex: \"PREPASS_ALBEDO_SQRT_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n name: \"WorldNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_WORLD_NORMAL\",\r\n defineIndex: \"PREPASS_WORLD_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n name: \"LocalPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_LOCAL_POSITION\",\r\n defineIndex: \"PREPASS_LOCAL_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n name: \"ScreenDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_SCREENSPACE_DEPTH\",\r\n defineIndex: \"PREPASS_SCREENSPACE_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n name: \"LinearVelocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY_LINEAR\",\r\n defineIndex: \"PREPASS_VELOCITY_LINEAR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n name: \"Albedo\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO\",\r\n defineIndex: \"PREPASS_ALBEDO_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE,\r\n name: \"NormalizedViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_NORMALIZED_VIEW_DEPTH\",\r\n defineIndex: \"PREPASS_NORMALIZED_VIEW_DEPTH_INDEX\",\r\n },\r\n ];\r\n\r\n private static _Configurations: { [renderPassId: number]: GeometryRenderingConfiguration } = {};\r\n\r\n /**\r\n * Creates a new geometry rendering configuration.\r\n * @param renderPassId Render pass id the configuration is created for.\r\n * @returns The created configuration.\r\n */\r\n public static CreateConfiguration(renderPassId: number) {\r\n MaterialHelperGeometryRendering._Configurations[renderPassId] = {\r\n defines: {},\r\n previousWorldMatrices: {},\r\n previousViewProjection: Matrix.Zero(),\r\n currentViewProjection: Matrix.Zero(),\r\n previousBones: {},\r\n lastUpdateFrameId: -1,\r\n excludedSkinnedMesh: [],\r\n reverseCulling: false,\r\n };\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Deletes a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to delete.\r\n */\r\n public static DeleteConfiguration(renderPassId: number) {\r\n delete MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Gets a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to get.\r\n * @returns The configuration.\r\n */\r\n public static GetConfiguration(renderPassId: number): GeometryRenderingConfiguration {\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Adds uniforms and samplers for geometry rendering.\r\n * @param uniforms The array of uniforms to add to.\r\n * @param _samplers The array of samplers to add to.\r\n */\r\n public static AddUniformsAndSamplers(uniforms: string[], _samplers: string[]) {\r\n uniforms.push(\"previousWorld\", \"previousViewProjection\", \"mPreviousBones\");\r\n }\r\n\r\n /**\r\n * Marks a list of meshes as dirty for geometry rendering.\r\n * @param renderPassId The render pass id the meshes are marked as dirty for.\r\n * @param meshes The list of meshes to mark as dirty.\r\n */\r\n public static MarkAsDirty(renderPassId: number, meshes: AbstractMesh[]) {\r\n for (const mesh of meshes) {\r\n if (!mesh.subMeshes) {\r\n continue;\r\n }\r\n\r\n for (const subMesh of mesh.subMeshes) {\r\n subMesh._removeDrawWrapper(renderPassId);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prepares defines for geometry rendering.\r\n * @param renderPassId The render pass id the defines are prepared for.\r\n * @param mesh The mesh the defines are prepared for.\r\n * @param defines The defines to update according to the geometry rendering configuration.\r\n */\r\n public static PrepareDefines(renderPassId: number, mesh: AbstractMesh, defines: MaterialDefines) {\r\n if (!defines._arePrePassDirty) {\r\n return;\r\n }\r\n\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n defines[\"PREPASS\"] = true;\r\n defines[\"PREPASS_COLOR\"] = false;\r\n defines[\"PREPASS_COLOR_INDEX\"] = -1;\r\n\r\n let numMRT = 0;\r\n\r\n for (let i = 0; i < MaterialHelperGeometryRendering.GeometryTextureDescriptions.length; i++) {\r\n const geometryTextureDescription = MaterialHelperGeometryRendering.GeometryTextureDescriptions[i];\r\n const defineName = geometryTextureDescription.define;\r\n const defineIndex = geometryTextureDescription.defineIndex;\r\n const index = configuration.defines[defineIndex];\r\n\r\n if (index !== undefined) {\r\n defines[defineName] = true;\r\n defines[defineIndex] = index;\r\n numMRT++;\r\n } else {\r\n defines[defineName] = false;\r\n delete defines[defineIndex];\r\n }\r\n }\r\n\r\n defines[\"SCENE_MRT_COUNT\"] = numMRT;\r\n\r\n defines[\"BONES_VELOCITY_ENABLED\"] =\r\n mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton && !mesh.skeleton.isUsingTextureForMatrices && configuration.excludedSkinnedMesh.indexOf(mesh) === -1;\r\n }\r\n\r\n /**\r\n * Binds geometry rendering data for a mesh.\r\n * @param renderPassId The render pass id the geometry rendering data is bound for.\r\n * @param effect The effect to bind the geometry rendering data to.\r\n * @param mesh The mesh to bind the geometry rendering data for.\r\n * @param world The world matrix of the mesh.\r\n * @param material The material of the mesh.\r\n */\r\n public static Bind(renderPassId: number, effect: Effect, mesh: Mesh, world: Matrix, material: Material) {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n const engine = scene.getEngine();\r\n\r\n if (configuration.reverseCulling) {\r\n engine.setStateCullFaceType(scene._mirroredCameraPosition ? material.cullBackFaces : !material.cullBackFaces);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_VELOCITY_INDEX\"] !== undefined || configuration.defines[\"PREPASS_VELOCITY_LINEAR_INDEX\"] !== undefined) {\r\n if (!configuration.previousWorldMatrices[mesh.uniqueId]) {\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n }\r\n\r\n if (!configuration.previousViewProjection) {\r\n configuration.previousViewProjection = scene.getTransformMatrix().clone();\r\n configuration.currentViewProjection = scene.getTransformMatrix().clone();\r\n }\r\n\r\n if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {\r\n // First update of the prepass configuration for this rendering pass\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());\r\n } else if (configuration.lastUpdateFrameId !== engine.frameId) {\r\n // The scene transformation did not change from the previous frame (so no camera motion), we must update previousViewProjection accordingly\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n }\r\n\r\n effect.setMatrix(\"previousWorld\", configuration.previousWorldMatrices[mesh.uniqueId]);\r\n effect.setMatrix(\"previousViewProjection\", configuration.previousViewProjection);\r\n\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n\r\n if (mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n const skeleton = mesh.skeleton;\r\n\r\n if (!skeleton.isUsingTextureForMatrices || effect.getUniformIndex(\"boneTextureWidth\") === -1) {\r\n const matrices = skeleton.getTransformMatrices(mesh);\r\n\r\n if (matrices) {\r\n if (!configuration.previousBones[mesh.uniqueId]) {\r\n configuration.previousBones[mesh.uniqueId] = matrices.slice();\r\n }\r\n effect.setMatrices(\"mPreviousBones\", configuration.previousBones[mesh.uniqueId]);\r\n configuration.previousBones[mesh.uniqueId].set(matrices);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
package/Maths/index.js
CHANGED
package/Maths/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./math.scalar\";\r\nexport * from \"./math.functions\";\r\nexport * from \"./math.polar\";\r\nexport * from \"./math.like\";\r\nexport * from \"./math\";\r\nexport * from \"./sphericalPolynomial\";\r\nexport * from \"./halton2DSequence\";\r\nexport * from \"./math.vector.functions\";\r\nexport * from \"./ThinMaths/index\";\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractMesh.hotSpot.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/abstractMesh.hotSpot.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { AbstractMesh, PickingInfo } from \"core/index\";\r\nimport { Vector3, TmpVectors, Matrix } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Data for mesh hotspot computation\r\n */\r\nexport type HotSpotQuery = {\r\n /**\r\n * 3 point indices\r\n */\r\n pointIndex: [number, number, number];\r\n /**\r\n * 3 barycentric coordinates\r\n */\r\n barycentric: [number, number, number];\r\n};\r\n\r\n/**\r\n * Create a HotSpotQuery from a picking info\r\n * @remarks If there is no pickedMesh or the pickedMesh has no indices, the faceId is used as the base index\r\n * @param pickingInfo picking info to use\r\n * @returns the created HotSpotQuery\r\n */\r\nexport function CreateHotSpotQueryForPickingInfo(pickingInfo: PickingInfo): HotSpotQuery {\r\n const indices = pickingInfo.pickedMesh?.getIndices();\r\n const base = pickingInfo.faceId * 3;\r\n\r\n return {\r\n pointIndex: indices ? [indices[base], indices[base + 1], indices[base + 2]] : [base, base + 1, base + 2],\r\n barycentric: [pickingInfo.bu, pickingInfo.bv, 1 - pickingInfo.bu - pickingInfo.bv],\r\n };\r\n}\r\n\r\n/**\r\n * Return a transformed local position from a mesh and vertex index\r\n * @param mesh mesh used to get vertex array from\r\n * @param index vertex index\r\n * @param res resulting local position\r\n * @returns false if it was not possible to compute the position for that vertex\r\n */\r\nexport function GetTransformedPosition(mesh: AbstractMesh, index: number, res: Vector3): boolean {\r\n const data = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n if (!data) {\r\n return false;\r\n }\r\n const base = index * 3;\r\n const values = [data[base + 0], data[base + 1], data[base + 2]];\r\n if (values.some((value) => isNaN(value ?? Number.NaN))) {\r\n return false;\r\n }\r\n\r\n if (mesh.morphTargetManager) {\r\n for (let component = 0; component < 3; component++) {\r\n let value = values[component];\r\n for (let targetCount = 0; targetCount < mesh.morphTargetManager.numTargets; targetCount++) {\r\n const target = mesh.morphTargetManager.getTarget(targetCount);\r\n const influence = target.influence;\r\n if (influence !== 0) {\r\n const targetData = target.getPositions();\r\n if (targetData) {\r\n value += (targetData[base + component] - data[base + component]) * influence;\r\n }\r\n }\r\n }\r\n values[component] = value;\r\n }\r\n }\r\n res.fromArray(values);\r\n if (mesh.skeleton) {\r\n const matricesIndicesData = mesh.getVerticesData(VertexBuffer.MatricesIndicesKind);\r\n const matricesWeightsData = mesh.getVerticesData(VertexBuffer.MatricesWeightsKind);\r\n if (matricesWeightsData && matricesIndicesData) {\r\n const needExtras = mesh.numBoneInfluencers > 4;\r\n const matricesIndicesExtraData = needExtras ? mesh.getVerticesData(VertexBuffer.MatricesIndicesExtraKind) : null;\r\n const matricesWeightsExtraData = needExtras ? mesh.getVerticesData(VertexBuffer.MatricesWeightsExtraKind) : null;\r\n const skeletonMatrices = mesh.skeleton.getTransformMatrices(mesh);\r\n\r\n const finalMatrix = TmpVectors.Matrix[0];\r\n const tempMatrix = TmpVectors.Matrix[1];\r\n\r\n finalMatrix.reset();\r\n const matWeightIdx = index * 4;\r\n\r\n let inf: number;\r\n let weight: number;\r\n for (inf = 0; inf < 4; inf++) {\r\n weight = matricesWeightsData[matWeightIdx + inf];\r\n if (weight > 0) {\r\n Matrix.FromFloat32ArrayToRefScaled(skeletonMatrices, Math.floor(matricesIndicesData[matWeightIdx + inf] * 16), weight, tempMatrix);\r\n finalMatrix.addToSelf(tempMatrix);\r\n }\r\n }\r\n if (matricesIndicesExtraData && matricesWeightsExtraData) {\r\n for (inf = 0; inf < 4; inf++) {\r\n weight = matricesWeightsExtraData[matWeightIdx + inf];\r\n if (weight > 0) {\r\n Matrix.FromFloat32ArrayToRefScaled(skeletonMatrices, Math.floor(matricesIndicesExtraData[matWeightIdx + inf] * 16), weight, tempMatrix);\r\n finalMatrix.addToSelf(tempMatrix);\r\n }\r\n }\r\n }\r\n\r\n Vector3.TransformCoordinatesFromFloatsToRef(values[0], values[1], values[2], finalMatrix, res);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Compute a world space hotspot position\r\n * TmpVectors.Vector3[0..4] are modified by this function. Do not use them as result output.\r\n * @param mesh mesh used to get hotspot from\r\n * @param hotSpotQuery point indices and barycentric\r\n * @param resPosition output world position\r\n * @param resNormal optional output world normal\r\n * @returns false if it was not possible to compute the hotspot position\r\n */\r\nexport function GetHotSpotToRef(mesh: AbstractMesh, hotSpotQuery: HotSpotQuery, resPosition: Vector3, resNormal?: Vector3): boolean {\r\n resPosition.set(0, 0, 0);\r\n for (let i = 0; i < 3; i++) {\r\n const index = hotSpotQuery.pointIndex[i];\r\n if (!GetTransformedPosition(mesh, index, TmpVectors.Vector3[i])) {\r\n return false;\r\n }\r\n TmpVectors.Vector3[i].scaleAndAddToRef(hotSpotQuery.barycentric[i], resPosition);\r\n }\r\n\r\n // Convert the result to world space\r\n Vector3.TransformCoordinatesToRef(resPosition, mesh.getWorldMatrix(), resPosition);\r\n\r\n // compute normal in world space\r\n if (resNormal) {\r\n const pointA = TmpVectors.Vector3[0];\r\n const pointB = TmpVectors.Vector3[1];\r\n const pointC = TmpVectors.Vector3[2];\r\n const segmentA = TmpVectors.Vector3[3];\r\n const segmentB = TmpVectors.Vector3[4];\r\n segmentA.copyFrom(pointB);\r\n segmentA.subtractInPlace(pointA);\r\n segmentB.copyFrom(pointC);\r\n segmentB.subtractInPlace(pointA);\r\n segmentA.normalize();\r\n segmentB.normalize();\r\n Vector3.CrossToRef(segmentA, segmentB, resNormal);\r\n\r\n // flip normal when face culling is changed\r\n const flipNormal =\r\n mesh.material &&\r\n mesh.material.sideOrientation ===\r\n (mesh.getScene().useRightHandedSystem ? Constants.MATERIAL_ClockWiseSideOrientation : Constants.MATERIAL_CounterClockWiseSideOrientation);\r\n\r\n if (flipNormal) {\r\n resNormal.scaleInPlace(-1);\r\n }\r\n\r\n // Convert the result to world space\r\n Vector3.TransformNormalToRef(resNormal, mesh.getWorldMatrix(), resNormal);\r\n resNormal.normalize();\r\n }\r\n\r\n return true;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"abstractMesh.hotSpot.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/abstractMesh.hotSpot.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractMesh, PickingInfo } from \"core/index\";\r\nimport { Vector3, TmpVectors, Matrix } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Data for mesh hotspot computation\r\n */\r\nexport type HotSpotQuery = {\r\n /**\r\n * 3 point indices\r\n */\r\n pointIndex: [number, number, number];\r\n /**\r\n * 3 barycentric coordinates\r\n */\r\n barycentric: [number, number, number];\r\n};\r\n\r\n/**\r\n * Create a HotSpotQuery from a picking info\r\n * @remarks If there is no pickedMesh or the pickedMesh has no indices, the faceId is used as the base index\r\n * @param pickingInfo picking info to use\r\n * @returns the created HotSpotQuery\r\n */\r\nexport function CreateHotSpotQueryForPickingInfo(pickingInfo: PickingInfo): HotSpotQuery {\r\n const indices = pickingInfo.pickedMesh?.getIndices();\r\n const base = pickingInfo.faceId * 3;\r\n\r\n return {\r\n pointIndex: indices ? [indices[base], indices[base + 1], indices[base + 2]] : [base, base + 1, base + 2],\r\n barycentric: [pickingInfo.bu, pickingInfo.bv, 1 - pickingInfo.bu - pickingInfo.bv],\r\n };\r\n}\r\n\r\n/**\r\n * Return a transformed local position from a mesh and vertex index\r\n * @param mesh mesh used to get vertex array from\r\n * @param index vertex index\r\n * @param res resulting local position\r\n * @returns false if it was not possible to compute the position for that vertex\r\n */\r\nexport function GetTransformedPosition(mesh: AbstractMesh, index: number, res: Vector3): boolean {\r\n const data = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n if (!data) {\r\n return false;\r\n }\r\n const base = index * 3;\r\n const values = [data[base + 0], data[base + 1], data[base + 2]];\r\n if (values.some((value) => isNaN(value ?? Number.NaN))) {\r\n return false;\r\n }\r\n\r\n if (mesh.morphTargetManager) {\r\n for (let component = 0; component < 3; component++) {\r\n let value = values[component];\r\n for (let targetCount = 0; targetCount < mesh.morphTargetManager.numTargets; targetCount++) {\r\n const target = mesh.morphTargetManager.getTarget(targetCount);\r\n const influence = target.influence;\r\n if (influence !== 0) {\r\n const targetData = target.getPositions();\r\n if (targetData) {\r\n value += (targetData[base + component] - data[base + component]) * influence;\r\n }\r\n }\r\n }\r\n values[component] = value;\r\n }\r\n }\r\n res.fromArray(values);\r\n if (mesh.skeleton) {\r\n const matricesIndicesData = mesh.getVerticesData(VertexBuffer.MatricesIndicesKind);\r\n const matricesWeightsData = mesh.getVerticesData(VertexBuffer.MatricesWeightsKind);\r\n if (matricesWeightsData && matricesIndicesData) {\r\n const needExtras = mesh.numBoneInfluencers > 4;\r\n const matricesIndicesExtraData = needExtras ? mesh.getVerticesData(VertexBuffer.MatricesIndicesExtraKind) : null;\r\n const matricesWeightsExtraData = needExtras ? mesh.getVerticesData(VertexBuffer.MatricesWeightsExtraKind) : null;\r\n const skeletonMatrices = mesh.skeleton.getTransformMatrices(mesh);\r\n\r\n const finalMatrix = TmpVectors.Matrix[0];\r\n const tempMatrix = TmpVectors.Matrix[1];\r\n\r\n finalMatrix.reset();\r\n const matWeightIdx = index * 4;\r\n\r\n let inf: number;\r\n let weight: number;\r\n for (inf = 0; inf < 4; inf++) {\r\n weight = matricesWeightsData[matWeightIdx + inf];\r\n if (weight > 0) {\r\n Matrix.FromFloat32ArrayToRefScaled(skeletonMatrices, Math.floor(matricesIndicesData[matWeightIdx + inf] * 16), weight, tempMatrix);\r\n finalMatrix.addToSelf(tempMatrix);\r\n }\r\n }\r\n if (matricesIndicesExtraData && matricesWeightsExtraData) {\r\n for (inf = 0; inf < 4; inf++) {\r\n weight = matricesWeightsExtraData[matWeightIdx + inf];\r\n if (weight > 0) {\r\n Matrix.FromFloat32ArrayToRefScaled(skeletonMatrices, Math.floor(matricesIndicesExtraData[matWeightIdx + inf] * 16), weight, tempMatrix);\r\n finalMatrix.addToSelf(tempMatrix);\r\n }\r\n }\r\n }\r\n\r\n Vector3.TransformCoordinatesFromFloatsToRef(values[0], values[1], values[2], finalMatrix, res);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Compute a world space hotspot position\r\n * TmpVectors.Vector3[0..4] are modified by this function. Do not use them as result output.\r\n * @param mesh mesh used to get hotspot from\r\n * @param hotSpotQuery point indices and barycentric\r\n * @param resPosition output world position\r\n * @param resNormal optional output world normal\r\n * @returns false if it was not possible to compute the hotspot position\r\n */\r\nexport function GetHotSpotToRef(mesh: AbstractMesh, hotSpotQuery: HotSpotQuery, resPosition: Vector3, resNormal?: Vector3): boolean {\r\n resPosition.set(0, 0, 0);\r\n for (let i = 0; i < 3; i++) {\r\n const index = hotSpotQuery.pointIndex[i];\r\n if (!GetTransformedPosition(mesh, index, TmpVectors.Vector3[i])) {\r\n return false;\r\n }\r\n TmpVectors.Vector3[i].scaleAndAddToRef(hotSpotQuery.barycentric[i], resPosition);\r\n }\r\n\r\n // Convert the result to world space\r\n Vector3.TransformCoordinatesToRef(resPosition, mesh.getWorldMatrix(), resPosition);\r\n\r\n // compute normal in world space\r\n if (resNormal) {\r\n const pointA = TmpVectors.Vector3[0];\r\n const pointB = TmpVectors.Vector3[1];\r\n const pointC = TmpVectors.Vector3[2];\r\n const segmentA = TmpVectors.Vector3[3];\r\n const segmentB = TmpVectors.Vector3[4];\r\n segmentA.copyFrom(pointB);\r\n segmentA.subtractInPlace(pointA);\r\n segmentB.copyFrom(pointC);\r\n segmentB.subtractInPlace(pointA);\r\n segmentA.normalize();\r\n segmentB.normalize();\r\n Vector3.CrossToRef(segmentA, segmentB, resNormal);\r\n\r\n // flip normal when face culling is changed\r\n const flipNormal =\r\n mesh.material &&\r\n mesh.material.sideOrientation ===\r\n (mesh.getScene().useRightHandedSystem ? Constants.MATERIAL_ClockWiseSideOrientation : Constants.MATERIAL_CounterClockWiseSideOrientation);\r\n\r\n if (flipNormal) {\r\n resNormal.scaleInPlace(-1);\r\n }\r\n\r\n // Convert the result to world space\r\n Vector3.TransformNormalToRef(resNormal, mesh.getWorldMatrix(), resNormal);\r\n resNormal.normalize();\r\n }\r\n\r\n return true;\r\n}\r\n"]}
|
package/Meshes/index.js
CHANGED
package/Meshes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,6DAA6D;AAC7D,cAAc,gBAAgB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,oBAAoB,CAAC;AAC5B,gDAAgD;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,2CAA2C,CAAC;AAE1D,WAAW;AACX,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,sBAAsB;AACtB,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,oDAAoD,CAAC","sourcesContent":["/* eslint-disable import/export */\r\n/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./abstractMesh\";\r\nimport \"./abstractMesh.decalMap\";\r\nexport * from \"./abstractMesh.hotSpot\";\r\nexport * from \"./Compression/index\";\r\nexport * from \"./csg\";\r\nexport * from \"./meshUVSpaceRenderer\";\r\nexport * from \"./geometry\";\r\nexport * from \"./groundMesh\";\r\nexport * from \"./goldbergMesh\";\r\nexport * from \"./trailMesh\";\r\nexport * from \"./instancedMesh\";\r\nexport * from \"./linesMesh\";\r\nexport * from \"./mesh\";\r\nexport * from \"./mesh.vertexData\";\r\nexport * from \"./meshBuilder\";\r\nexport * from \"./meshSimplification\";\r\nexport * from \"./meshSimplificationSceneComponent\";\r\nexport * from \"./meshUtils\";\r\nexport * from \"./polygonMesh\";\r\nexport * from \"./geodesicMesh\";\r\nexport * from \"./subMesh\";\r\nexport * from \"./subMesh.project\";\r\nexport * from \"./lattice\";\r\nexport * from \"./lattice.material\";\r\nexport * from \"./meshLODLevel\";\r\nexport * from \"./transformNode\";\r\nexport * from \"./Builders/index\";\r\nexport * from \"./WebGL/webGLDataBuffer\";\r\nexport * from \"./WebGPU/webgpuDataBuffer\";\r\nexport * from \"./GreasedLine/greasedLineMesh\";\r\nexport * from \"./GreasedLine/greasedLineRibbonMesh\";\r\nexport * from \"./GreasedLine/greasedLineBaseMesh\";\r\nexport * from \"./csg2\";\r\nexport * from \"./mesh.vertexData.functions\";\r\nexport * from \"./mesh.vertexData.subdivide\";\r\nimport \"./thinInstanceMesh\";\r\n// eslint-disable-next-line no-duplicate-imports\r\nexport * from \"./thinInstanceMesh\";\r\nexport * from \"./Node/index\";\r\nexport * from \"./GaussianSplatting/gaussianSplattingMesh\";\r\n\r\n// LineMesh\r\nexport * from \"../Shaders/color.fragment\";\r\nexport * from \"../Shaders/color.vertex\";\r\nexport * from \"../ShadersWGSL/color.fragment\";\r\nexport * from \"../ShadersWGSL/color.vertex\";\r\n\r\n// MeshUVSPaceRenderer\r\nexport * from \"../Shaders/meshUVSpaceRenderer.vertex\";\r\nexport * from \"../Shaders/meshUVSpaceRenderer.fragment\";\r\nexport * from \"../Shaders/meshUVSpaceRendererMasker.vertex\";\r\nexport * from \"../Shaders/meshUVSpaceRendererMasker.fragment\";\r\nexport * from \"../Shaders/meshUVSpaceRendererFinaliser.fragment\";\r\nexport * from \"../Shaders/meshUVSpaceRendererFinaliser.vertex\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRenderer.vertex\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRenderer.fragment\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRendererMasker.vertex\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRendererMasker.fragment\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRendererFinaliser.fragment\";\r\nexport * from \"../ShadersWGSL/meshUVSpaceRendererFinaliser.vertex\";\r\n"]}
|