@babylonjs/core 6.14.2 → 6.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Actions/actionManager.js +8 -3
- package/Actions/actionManager.js.map +1 -1
- package/Behaviors/Cameras/framingBehavior.d.ts +2 -1
- package/Behaviors/Cameras/framingBehavior.js +3 -1
- package/Behaviors/Cameras/framingBehavior.js.map +1 -1
- package/Bones/skeleton.js +1 -0
- package/Bones/skeleton.js.map +1 -1
- package/Compute/computeEffect.js +1 -1
- package/Compute/computeEffect.js.map +1 -1
- package/{Materials/Node/nodeMaterialDecorator.d.ts → Decorators/nodeDecorator.d.ts} +6 -7
- package/{Materials/Node/nodeMaterialDecorator.js → Decorators/nodeDecorator.js} +3 -3
- package/Decorators/nodeDecorator.js.map +1 -0
- package/Engines/Processors/shaderCodeNode.js +1 -1
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +2 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +3 -0
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +11 -10
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/nativeEngine.js +5 -4
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +2 -0
- package/Engines/thinEngine.js +35 -4
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +12 -2
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.d.ts +34 -0
- package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js +29 -0
- package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js.map +1 -0
- package/FlowGraph/Blocks/Data/index.d.ts +1 -0
- package/FlowGraph/Blocks/Data/index.js +2 -0
- package/FlowGraph/Blocks/Data/index.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +23 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js +51 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +20 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +29 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/index.d.ts +2 -0
- package/FlowGraph/Blocks/Event/index.js +3 -0
- package/FlowGraph/Blocks/Event/index.js.map +1 -0
- package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.d.ts +43 -0
- package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js +40 -0
- package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/flowGraphLogBlock.d.ts +18 -0
- package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +21 -0
- package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/index.d.ts +2 -0
- package/FlowGraph/Blocks/Execution/index.js +3 -0
- package/FlowGraph/Blocks/Execution/index.js.map +1 -0
- package/FlowGraph/Blocks/index.d.ts +3 -0
- package/FlowGraph/Blocks/index.js +5 -0
- package/FlowGraph/Blocks/index.js.map +1 -0
- package/FlowGraph/flowGraph.d.ts +34 -0
- package/FlowGraph/flowGraph.js +54 -0
- package/FlowGraph/flowGraph.js.map +1 -0
- package/FlowGraph/flowGraphBlock.d.ts +33 -0
- package/FlowGraph/flowGraphBlock.js +39 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -0
- package/FlowGraph/flowGraphConnection.d.ts +38 -0
- package/FlowGraph/flowGraphConnection.js +40 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -0
- package/FlowGraph/flowGraphDataConnection.d.ts +15 -0
- package/FlowGraph/flowGraphDataConnection.js +30 -0
- package/FlowGraph/flowGraphDataConnection.js.map +1 -0
- package/FlowGraph/flowGraphEventBlock.d.ts +20 -0
- package/FlowGraph/flowGraphEventBlock.js +15 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -0
- package/FlowGraph/flowGraphExecutionBlock.d.ts +24 -0
- package/FlowGraph/flowGraphExecutionBlock.js +27 -0
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -0
- package/FlowGraph/flowGraphSignalConnection.d.ts +14 -0
- package/FlowGraph/flowGraphSignalConnection.js +22 -0
- package/FlowGraph/flowGraphSignalConnection.js.map +1 -0
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +7 -0
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +8 -0
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -0
- package/FlowGraph/index.d.ts +6 -0
- package/FlowGraph/index.js +8 -0
- package/FlowGraph/index.js.map +1 -0
- package/Gizmos/lightGizmo.d.ts +5 -0
- package/Gizmos/lightGizmo.js +21 -7
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.d.ts +6 -0
- package/Gizmos/planeRotationGizmo.js +5 -1
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.d.ts +8 -0
- package/Gizmos/rotationGizmo.js +15 -0
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Layers/layer.js +1 -1
- package/Layers/layer.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +2 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +4 -3
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +3 -1
- package/Lights/Shadows/shadowGenerator.js +4 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/directionalLight.d.ts +1 -1
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/hemisphericLight.d.ts +1 -1
- package/Lights/hemisphericLight.js.map +1 -1
- package/Lights/light.d.ts +1 -1
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.d.ts +1 -1
- package/Lights/pointLight.js.map +1 -1
- package/Lights/spotLight.d.ts +1 -1
- package/Lights/spotLight.js.map +1 -1
- package/Loading/sceneLoader.js +2 -0
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +13 -13
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +16 -16
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +27 -27
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +8 -8
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +28 -28
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -5
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +15 -15
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +6 -6
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +13 -13
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +13 -13
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +7 -7
- package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -3
- package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +11 -11
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +6 -6
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +9 -9
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +47 -47
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +9 -9
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +14 -14
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +4 -4
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +8 -8
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Teleport/index.d.ts +2 -0
- package/Materials/Node/Blocks/Teleport/index.js +3 -0
- package/Materials/Node/Blocks/Teleport/index.js.map +1 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +42 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js +83 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +59 -0
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +122 -0
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +5 -5
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +11 -11
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +11 -11
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +39 -39
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/addBlock.js +1 -1
- package/Materials/Node/Blocks/addBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +4 -4
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +7 -7
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.js +10 -10
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/crossBlock.js +1 -1
- package/Materials/Node/Blocks/crossBlock.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.js +5 -5
- package/Materials/Node/Blocks/curveBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +4 -4
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/desaturateBlock.js +4 -4
- package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
- package/Materials/Node/Blocks/distanceBlock.js +1 -1
- package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
- package/Materials/Node/Blocks/divideBlock.js +1 -1
- package/Materials/Node/Blocks/divideBlock.js.map +1 -1
- package/Materials/Node/Blocks/dotBlock.js +1 -1
- package/Materials/Node/Blocks/dotBlock.js.map +1 -1
- package/Materials/Node/Blocks/elbowBlock.js +1 -1
- package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
- package/Materials/Node/Blocks/fresnelBlock.js +1 -1
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +8 -8
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.d.ts +1 -0
- package/Materials/Node/Blocks/index.js +1 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/Blocks/lengthBlock.js +1 -1
- package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
- package/Materials/Node/Blocks/lerpBlock.js +1 -1
- package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixDeterminantBlock.js +1 -1
- package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixTransposeBlock.js +1 -1
- package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
- package/Materials/Node/Blocks/maxBlock.js +1 -1
- package/Materials/Node/Blocks/maxBlock.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js +7 -7
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
- package/Materials/Node/Blocks/minBlock.js +1 -1
- package/Materials/Node/Blocks/minBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +1 -1
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/negateBlock.js +1 -1
- package/Materials/Node/Blocks/negateBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalBlendBlock.js +6 -6
- package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.js +1 -1
- package/Materials/Node/Blocks/powBlock.js.map +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js +2 -2
- package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
- package/Materials/Node/Blocks/reflectBlock.js +1 -1
- package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
- package/Materials/Node/Blocks/refractBlock.js +1 -1
- package/Materials/Node/Blocks/refractBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +4 -4
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/replaceColorBlock.js +6 -6
- package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/scaleBlock.js +1 -1
- package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +41 -41
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
- package/Materials/Node/Blocks/stepBlock.js +1 -1
- package/Materials/Node/Blocks/stepBlock.js.map +1 -1
- package/Materials/Node/Blocks/subtractBlock.js +1 -1
- package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +13 -14
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js +17 -17
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
- package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
- package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.js +3 -4
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +155 -155
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/index.d.ts +1 -1
- package/Materials/Node/index.js +1 -1
- package/Materials/Node/index.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +1 -0
- package/Materials/Node/nodeMaterial.js +50 -15
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.d.ts +14 -2
- package/Materials/Node/nodeMaterialBlock.js +34 -11
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +36 -36
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +4 -4
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +1 -0
- package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
- package/Materials/effect.js +1 -1
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.d.ts +4 -0
- package/Materials/effectRenderer.js +8 -2
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/greasedLinePluginMaterial.d.ts +4 -0
- package/Materials/greasedLinePluginMaterial.js +12 -1
- package/Materials/greasedLinePluginMaterial.js.map +1 -1
- package/Materials/materialPluginManager.js +5 -5
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.d.ts +4 -15
- package/Materials/meshDebugPluginMaterial.js +8 -29
- package/Materials/meshDebugPluginMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +5 -5
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Meshes/Builders/boxBuilder.d.ts +31 -0
- package/Meshes/Builders/boxBuilder.js +65 -1
- package/Meshes/Builders/boxBuilder.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.js +3 -3
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.js +2 -2
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/groundBuilder.js +2 -2
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Builders/icoSphereBuilder.js +1 -1
- package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
- package/Meshes/Builders/linesBuilder.d.ts +1 -1
- package/Meshes/Builders/linesBuilder.js +1 -1
- package/Meshes/Builders/linesBuilder.js.map +1 -1
- package/Meshes/Builders/sphereBuilder.js +1 -1
- package/Meshes/Builders/sphereBuilder.js.map +1 -1
- package/Meshes/Builders/torusBuilder.js +1 -1
- package/Meshes/Builders/torusBuilder.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +85 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +210 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +68 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +186 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -0
- package/Meshes/Node/Blocks/IntFloatConverterBlock.d.ts +35 -0
- package/Meshes/Node/Blocks/IntFloatConverterBlock.js +81 -0
- package/Meshes/Node/Blocks/IntFloatConverterBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/alignBlock.d.ts +31 -0
- package/Meshes/Node/Blocks/Matrices/alignBlock.js +58 -0
- package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +28 -0
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.js +53 -0
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +28 -0
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.js +53 -0
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +28 -0
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.js +53 -0
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/scalingBlock.d.ts +28 -0
- package/Meshes/Node/Blocks/Matrices/scalingBlock.js +54 -0
- package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Matrices/translationBlock.d.ts +28 -0
- package/Meshes/Node/Blocks/Matrices/translationBlock.js +54 -0
- package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +44 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js +91 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.d.ts +36 -0
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +84 -0
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +44 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js +91 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +44 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js +82 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +44 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js +91 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +55 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js +145 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/boxBlock.d.ts +68 -0
- package/Meshes/Node/Blocks/Sources/boxBlock.js +175 -0
- package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/capsuleBlock.d.ts +52 -0
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js +117 -0
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/cylinderBlock.d.ts +64 -0
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js +143 -0
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/discBlock.d.ts +48 -0
- package/Meshes/Node/Blocks/Sources/discBlock.js +104 -0
- package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/gridBlock.d.ts +56 -0
- package/Meshes/Node/Blocks/Sources/gridBlock.js +125 -0
- package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.d.ts +56 -0
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +120 -0
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +38 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js +78 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/planeBlock.d.ts +48 -0
- package/Meshes/Node/Blocks/Sources/planeBlock.js +118 -0
- package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/sphereBlock.d.ts +64 -0
- package/Meshes/Node/Blocks/Sources/sphereBlock.js +136 -0
- package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Sources/torusBlock.d.ts +48 -0
- package/Meshes/Node/Blocks/Sources/torusBlock.js +104 -0
- package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.d.ts +37 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js +75 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.d.ts +50 -0
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js +105 -0
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.d.ts +26 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.js +49 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -0
- package/Meshes/Node/Blocks/conditionBlock.d.ts +72 -0
- package/Meshes/Node/Blocks/conditionBlock.js +174 -0
- package/Meshes/Node/Blocks/conditionBlock.js.map +1 -0
- package/Meshes/Node/Blocks/debugBlock.d.ts +34 -0
- package/Meshes/Node/Blocks/debugBlock.js +63 -0
- package/Meshes/Node/Blocks/debugBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryElbowBlock.d.ts +31 -0
- package/Meshes/Node/Blocks/geometryElbowBlock.js +53 -0
- package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryInputBlock.d.ts +71 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js +218 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryOutputBlock.d.ts +30 -0
- package/Meshes/Node/Blocks/geometryOutputBlock.js +42 -0
- package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryTransformBlock.d.ts +53 -0
- package/Meshes/Node/Blocks/geometryTransformBlock.js +134 -0
- package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.d.ts +77 -0
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +248 -0
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -0
- package/Meshes/Node/Blocks/mapRangeBlock.d.ts +42 -0
- package/Meshes/Node/Blocks/mapRangeBlock.js +84 -0
- package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -0
- package/Meshes/Node/Blocks/mathBlock.d.ts +58 -0
- package/Meshes/Node/Blocks/mathBlock.js +233 -0
- package/Meshes/Node/Blocks/mathBlock.js.map +1 -0
- package/Meshes/Node/Blocks/mergeGeometryBlock.d.ts +55 -0
- package/Meshes/Node/Blocks/mergeGeometryBlock.js +123 -0
- package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -0
- package/Meshes/Node/Blocks/noiseBlock.d.ts +49 -0
- package/Meshes/Node/Blocks/noiseBlock.js +149 -0
- package/Meshes/Node/Blocks/noiseBlock.js.map +1 -0
- package/Meshes/Node/Blocks/normalizeVectorBlock.d.ts +27 -0
- package/Meshes/Node/Blocks/normalizeVectorBlock.js +51 -0
- package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -0
- package/Meshes/Node/Blocks/randomBlock.d.ts +31 -0
- package/Meshes/Node/Blocks/randomBlock.js +99 -0
- package/Meshes/Node/Blocks/randomBlock.js.map +1 -0
- package/Meshes/Node/Blocks/vectorConverterBlock.d.ts +84 -0
- package/Meshes/Node/Blocks/vectorConverterBlock.js +238 -0
- package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -0
- package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.d.ts +27 -0
- package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js +29 -0
- package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js.map +1 -0
- package/Meshes/Node/Enums/nodeGeometryContextualSources.d.ts +33 -0
- package/Meshes/Node/Enums/nodeGeometryContextualSources.js +35 -0
- package/Meshes/Node/Enums/nodeGeometryContextualSources.js.map +1 -0
- package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.d.ts +25 -0
- package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js +2 -0
- package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js.map +1 -0
- package/Meshes/Node/index.d.ts +49 -0
- package/Meshes/Node/index.js +50 -0
- package/Meshes/Node/index.js.map +1 -0
- package/Meshes/Node/nodeGeometry.d.ts +180 -0
- package/Meshes/Node/nodeGeometry.js +529 -0
- package/Meshes/Node/nodeGeometry.js.map +1 -0
- package/Meshes/Node/nodeGeometryBlock.d.ts +166 -0
- package/Meshes/Node/nodeGeometryBlock.js +432 -0
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -0
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +176 -0
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +305 -0
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -0
- package/Meshes/Node/nodeGeometryBuildState.d.ts +57 -0
- package/Meshes/Node/nodeGeometryBuildState.js +178 -0
- package/Meshes/Node/nodeGeometryBuildState.js.map +1 -0
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +37 -2
- package/Meshes/mesh.vertexData.js +425 -95
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/meshUVSpaceRenderer.js +1 -0
- package/Meshes/meshUVSpaceRenderer.js.map +1 -1
- package/Particles/IGPUParticleSystemPlatform.d.ts +1 -0
- package/Particles/IGPUParticleSystemPlatform.js.map +1 -1
- package/Particles/computeShaderParticleSystem.d.ts +1 -0
- package/Particles/computeShaderParticleSystem.js +5 -0
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +11 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/webgl2ParticleSystem.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.js +5 -0
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +20 -2
- package/Physics/v2/IPhysicsEnginePlugin.js +8 -0
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +27 -2
- package/Physics/v2/Plugins/havokPlugin.js +98 -11
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsAggregate.d.ts +4 -0
- package/Physics/v2/physicsAggregate.js +3 -0
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +7 -0
- package/Physics/v2/physicsBody.js +10 -0
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsShape.d.ts +3 -0
- package/Physics/v2/physicsShape.js +11 -0
- package/Physics/v2/physicsShape.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +6 -4
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +5 -5
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.d.ts +0 -1
- package/Rendering/fluidRenderer/fluidRenderer.js +0 -1
- package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +16 -8
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js +9 -4
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +8 -4
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimation.js +20 -10
- package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
- package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js +9 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.js +13 -6
- package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bonesVertex.js +36 -18
- package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +2 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +6 -3
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +4 -2
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragment.js +40 -20
- package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js +11 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +57 -7
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js +2 -1
- package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.js +20 -7
- package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +12 -6
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.js +12 -6
- package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +12 -6
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
- package/Shaders/ShadersInclude/decalFragment.js +6 -3
- package/Shaders/ShadersInclude/decalFragment.js.map +1 -1
- package/Shaders/ShadersInclude/decalFragmentDeclaration.js +2 -1
- package/Shaders/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/decalVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/decalVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +48 -24
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js +5 -2
- package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js +22 -11
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/depthPrePass.js +2 -1
- package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
- package/Shaders/ShadersInclude/fibonacci.js +4 -1
- package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragment.js +6 -3
- package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js +9 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/fogVertex.js +2 -1
- package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.js +3 -1
- package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.js +20 -2
- package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +48 -17
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +98 -28
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js +2 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +18 -9
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +71 -28
- package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/importanceSampling.js +4 -1
- package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +14 -7
- package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/instancesVertex.js +12 -6
- package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.js +9 -4
- package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.js +8 -4
- package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +186 -93
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js +54 -22
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.js +51 -20
- package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +18 -9
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js +15 -7
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +48 -20
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js +2 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.js +2 -1
- package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.js +2 -1
- package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +2 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js +2 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.js +5 -2
- package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -8
- package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +7 -2
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.js +5 -2
- package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/oitFragment.js +24 -12
- package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
- package/Shaders/ShadersInclude/packingFunctions.js +4 -1
- package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +118 -42
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +49 -20
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +25 -8
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +26 -11
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +32 -12
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js +194 -84
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +12 -6
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +30 -14
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +56 -28
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +18 -9
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +14 -7
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +8 -4
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.js +36 -15
- package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +8 -4
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +8 -4
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +10 -5
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +12 -6
- package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js +8 -4
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +197 -77
- package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +79 -36
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js +145 -60
- package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +226 -100
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +146 -67
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +34 -8
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +53 -22
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +12 -5
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +88 -44
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +10 -5
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +30 -15
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +27 -8
- package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js +9 -4
- package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +4 -2
- package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +64 -32
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js +2 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +24 -12
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js +4 -2
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.js +52 -17
- package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +2 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +4 -2
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js +2 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.js +18 -6
- package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +6 -3
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.js +6 -3
- package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js +6 -3
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js +109 -24
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.js +20 -10
- package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +10 -5
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +2 -1
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +2 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +8 -4
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js +12 -6
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +6 -3
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +311 -54
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.js +14 -7
- package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +2 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js +2 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.js +4 -2
- package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/vertexColorMixing.js +8 -4
- package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
- package/Shaders/anaglyph.fragment.js +4 -2
- package/Shaders/anaglyph.fragment.js.map +1 -1
- package/Shaders/background.fragment.js +133 -62
- package/Shaders/background.fragment.js.map +1 -1
- package/Shaders/background.vertex.js +63 -30
- package/Shaders/background.vertex.js.map +1 -1
- package/Shaders/blackAndWhite.fragment.js +5 -2
- package/Shaders/blackAndWhite.fragment.js.map +1 -1
- package/Shaders/bloomMerge.fragment.js +5 -2
- package/Shaders/bloomMerge.fragment.js.map +1 -1
- package/Shaders/blur.fragment.js +6 -2
- package/Shaders/blur.fragment.js.map +1 -1
- package/Shaders/boundingBoxRenderer.fragment.js +4 -2
- package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
- package/Shaders/boundingBoxRenderer.vertex.js +12 -6
- package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
- package/Shaders/chromaticAberration.fragment.js +8 -2
- package/Shaders/chromaticAberration.fragment.js.map +1 -1
- package/Shaders/circleOfConfusion.fragment.js +9 -4
- package/Shaders/circleOfConfusion.fragment.js.map +1 -1
- package/Shaders/clearQuad.fragment.js +2 -1
- package/Shaders/clearQuad.fragment.js.map +1 -1
- package/Shaders/clearQuad.vertex.js +11 -4
- package/Shaders/clearQuad.vertex.js.map +1 -1
- package/Shaders/color.fragment.js +10 -5
- package/Shaders/color.fragment.js.map +1 -1
- package/Shaders/color.vertex.js +18 -9
- package/Shaders/color.vertex.js.map +1 -1
- package/Shaders/colorCorrection.fragment.js +10 -2
- package/Shaders/colorCorrection.fragment.js.map +1 -1
- package/Shaders/convolution.fragment.js +23 -2
- package/Shaders/convolution.fragment.js.map +1 -1
- package/Shaders/copyTextureToTexture.fragment.js +12 -5
- package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
- package/Shaders/default.fragment.js +142 -71
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.js +58 -29
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/depth.fragment.js +24 -11
- package/Shaders/depth.fragment.js.map +1 -1
- package/Shaders/depth.vertex.js +35 -17
- package/Shaders/depth.vertex.js.map +1 -1
- package/Shaders/depthBoxBlur.fragment.js +6 -2
- package/Shaders/depthBoxBlur.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +28 -3
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/depthOfFieldMerge.fragment.js +17 -8
- package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
- package/Shaders/displayPass.fragment.js +4 -2
- package/Shaders/displayPass.fragment.js.map +1 -1
- package/Shaders/extractHighlights.fragment.js +4 -2
- package/Shaders/extractHighlights.fragment.js.map +1 -1
- package/Shaders/filter.fragment.js +4 -2
- package/Shaders/filter.fragment.js.map +1 -1
- package/Shaders/fluidRenderingBilateralBlur.fragment.js +4 -1
- package/Shaders/fluidRenderingBilateralBlur.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js +22 -11
- package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +10 -5
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleDiffuse.fragment.js +2 -1
- package/Shaders/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js +0 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.fragment.js +2 -1
- package/Shaders/fluidRenderingParticleThickness.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +2 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/fluidRenderingRender.fragment.js +76 -35
- package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
- package/Shaders/fluidRenderingStandardBlur.fragment.js +4 -1
- package/Shaders/fluidRenderingStandardBlur.fragment.js.map +1 -1
- package/Shaders/fxaa.fragment.js +47 -6
- package/Shaders/fxaa.fragment.js.map +1 -1
- package/Shaders/fxaa.vertex.js +6 -3
- package/Shaders/fxaa.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +85 -42
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/geometry.vertex.js +91 -45
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Shaders/glowBlurPostProcess.fragment.js +7 -2
- package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
- package/Shaders/glowMapGeneration.fragment.js +46 -22
- package/Shaders/glowMapGeneration.fragment.js.map +1 -1
- package/Shaders/glowMapGeneration.vertex.js +41 -20
- package/Shaders/glowMapGeneration.vertex.js.map +1 -1
- package/Shaders/glowMapMerge.fragment.js +20 -10
- package/Shaders/glowMapMerge.fragment.js.map +1 -1
- package/Shaders/glowMapMerge.vertex.js +6 -3
- package/Shaders/glowMapMerge.vertex.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +16 -8
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +77 -39
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/gpuUpdateParticles.fragment.js +2 -1
- package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js +206 -100
- package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
- package/Shaders/grain.fragment.js +5 -2
- package/Shaders/grain.fragment.js.map +1 -1
- package/Shaders/hdrFiltering.fragment.js +1 -1
- package/Shaders/hdrFiltering.fragment.js.map +1 -1
- package/Shaders/hdrFiltering.vertex.js +6 -3
- package/Shaders/hdrFiltering.vertex.js.map +1 -1
- package/Shaders/highlights.fragment.js +4 -2
- package/Shaders/highlights.fragment.js.map +1 -1
- package/Shaders/imageProcessing.fragment.js +12 -6
- package/Shaders/imageProcessing.fragment.js.map +1 -1
- package/Shaders/kernelBlur.fragment.js +24 -11
- package/Shaders/kernelBlur.fragment.js.map +1 -1
- package/Shaders/kernelBlur.vertex.js +10 -5
- package/Shaders/kernelBlur.vertex.js.map +1 -1
- package/Shaders/layer.fragment.js +13 -6
- package/Shaders/layer.fragment.js.map +1 -1
- package/Shaders/layer.vertex.js +6 -3
- package/Shaders/layer.vertex.js.map +1 -1
- package/Shaders/lensFlare.fragment.js +6 -3
- package/Shaders/lensFlare.fragment.js.map +1 -1
- package/Shaders/lensFlare.vertex.js +6 -3
- package/Shaders/lensFlare.vertex.js.map +1 -1
- package/Shaders/lensHighlights.fragment.js +14 -5
- package/Shaders/lensHighlights.fragment.js.map +1 -1
- package/Shaders/line.fragment.js +6 -3
- package/Shaders/line.fragment.js.map +1 -1
- package/Shaders/line.vertex.js +8 -4
- package/Shaders/line.vertex.js.map +1 -1
- package/Shaders/meshUVSpaceRenderer.fragment.js +3 -1
- package/Shaders/meshUVSpaceRenderer.fragment.js.map +1 -1
- package/Shaders/meshUVSpaceRenderer.vertex.js +14 -7
- package/Shaders/meshUVSpaceRenderer.vertex.js.map +1 -1
- package/Shaders/minmaxRedux.fragment.js +21 -8
- package/Shaders/minmaxRedux.fragment.js.map +1 -1
- package/Shaders/motionBlur.fragment.js +35 -14
- package/Shaders/motionBlur.fragment.js.map +1 -1
- package/Shaders/noise.fragment.js +13 -2
- package/Shaders/noise.fragment.js.map +1 -1
- package/Shaders/oitBackBlend.fragment.js +2 -1
- package/Shaders/oitBackBlend.fragment.js.map +1 -1
- package/Shaders/oitFinal.fragment.js +4 -1
- package/Shaders/oitFinal.fragment.js.map +1 -1
- package/Shaders/outline.fragment.js +11 -5
- package/Shaders/outline.fragment.js.map +1 -1
- package/Shaders/outline.vertex.js +27 -13
- package/Shaders/outline.vertex.js.map +1 -1
- package/Shaders/particles.fragment.js +18 -9
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +58 -29
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/pass.fragment.js +4 -2
- package/Shaders/pass.fragment.js.map +1 -1
- package/Shaders/passCube.fragment.js +17 -8
- package/Shaders/passCube.fragment.js.map +1 -1
- package/Shaders/pbr.fragment.js +389 -154
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.js +70 -35
- package/Shaders/pbr.vertex.js.map +1 -1
- package/Shaders/postprocess.vertex.js +6 -3
- package/Shaders/postprocess.vertex.js.map +1 -1
- package/Shaders/procedural.vertex.js +6 -3
- package/Shaders/procedural.vertex.js.map +1 -1
- package/Shaders/refraction.fragment.js +1 -1
- package/Shaders/refraction.fragment.js.map +1 -1
- package/Shaders/rgbdDecode.fragment.js +4 -2
- package/Shaders/rgbdDecode.fragment.js.map +1 -1
- package/Shaders/rgbdEncode.fragment.js +4 -2
- package/Shaders/rgbdEncode.fragment.js.map +1 -1
- package/Shaders/screenSpaceCurvature.fragment.js +11 -3
- package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection.fragment.js +57 -15
- package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2.fragment.js +125 -51
- package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2Blur.fragment.js +7 -1
- package/Shaders/screenSpaceReflection2Blur.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +28 -13
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
- package/Shaders/shadowMap.fragment.js +14 -6
- package/Shaders/shadowMap.fragment.js.map +1 -1
- package/Shaders/shadowMap.vertex.js +35 -17
- package/Shaders/shadowMap.vertex.js.map +1 -1
- package/Shaders/sharpen.fragment.js +8 -2
- package/Shaders/sharpen.fragment.js.map +1 -1
- package/Shaders/spriteMap.fragment.js +17 -4
- package/Shaders/spriteMap.fragment.js.map +1 -1
- package/Shaders/spriteMap.vertex.js +2 -1
- package/Shaders/spriteMap.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +17 -7
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +10 -4
- package/Shaders/sprites.vertex.js.map +1 -1
- package/Shaders/ssao.fragment.js +0 -2
- package/Shaders/ssao.fragment.js.map +1 -1
- package/Shaders/ssao2.fragment.js +0 -2
- package/Shaders/ssao2.fragment.js.map +1 -1
- package/Shaders/ssaoCombine.fragment.js +8 -4
- package/Shaders/ssaoCombine.fragment.js.map +1 -1
- package/Shaders/standard.fragment.js +101 -25
- package/Shaders/standard.fragment.js.map +1 -1
- package/Shaders/stereoscopicInterlace.fragment.js +14 -6
- package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
- package/Shaders/subSurfaceScattering.fragment.js +58 -12
- package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
- package/Shaders/tonemap.fragment.js +21 -9
- package/Shaders/tonemap.fragment.js.map +1 -1
- package/Shaders/velocity.fragment.js +8 -4
- package/Shaders/velocity.fragment.js.map +1 -1
- package/Shaders/velocity.vertex.js +18 -9
- package/Shaders/velocity.vertex.js.map +1 -1
- package/Shaders/volumetricLightScattering.fragment.js +9 -4
- package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.js +12 -5
- package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.js +23 -11
- package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
- package/Shaders/vrDistortionCorrection.fragment.js +6 -2
- package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.js +4 -2
- package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +24 -12
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +14 -6
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.js +36 -18
- package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +20 -7
- package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
- package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +12 -6
- package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
- package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +14 -7
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.js +16 -8
- package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +3 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +16 -8
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +6 -2
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +8 -3
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +229 -90
- package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
- package/ShadersWGSL/postprocess.vertex.js +9 -4
- package/ShadersWGSL/postprocess.vertex.js.map +1 -1
- package/assetContainer.d.ts +7 -0
- package/assetContainer.js +46 -0
- package/assetContainer.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +5 -0
- package/scene.js.map +1 -1
- package/Materials/Node/nodeMaterialDecorator.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshDebugPluginMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/meshDebugPluginMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { FloatArray, Nullable } from \"../types\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport type { PBRBaseMaterial } from \"./PBR/pbrBaseMaterial\";\r\nimport type { StandardMaterial } from \"./standardMaterial\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { Color3 } from \"core/Maths/math\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { expandToProperty, serialize, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\n\r\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\r\nattribute float dbg_initialPass;\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n#endif`;\r\n\r\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\r\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\r\nif (dbg_vertexIndex == 0.0) { \r\n dbg_vBarycentric = vec3(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n dbg_vBarycentric = vec3(0.,1.,0.); \r\n}\r\nelse { \r\n dbg_vBarycentric = vec3(0.,0.,1.); \r\n}\r\n\r\ndbg_vVertexWorldPos = vPositionW;\r\ndbg_vPass = dbg_initialPass;\r\n#endif`;\r\n\r\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\r\nuniform vec3 dbg_shadedDiffuseColor;\r\nuniform vec4 dbg_shadedSpecularColorPower;\r\nuniform vec3 dbg_thicknessRadiusScale;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform vec3 dbg_vertexColor;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform vec3 dbg_wireframeTrianglesColor;\r\n#elif DBG_MODE == 3\r\n uniform vec3 dbg_wireframeVerticesColor;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform vec3 dbg_uvPrimaryColor;\r\n uniform vec3 dbg_uvSecondaryColor;\r\n#elif DBG_MODE == 7\r\n uniform vec3 dbg_materialColor;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n vec3 dbg_applyShading(vec3 color) {\r\n vec3 N = vNormalW.xyz;\r\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\r\n vec3 H = normalize(L + L);\r\n float LdotN = clamp(dot(L,N), 0., 1.);\r\n float HdotN = clamp(dot(H,N), 0., 1.);\r\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\r\n color *= (LdotN / PI);\r\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return color;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n float dbg_edgeFactor() {\r\n vec3 d = fwidth(dbg_vBarycentric);\r\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor() {\r\n vec3 worldPos = vPositionW;\r\n float dist = length(worldPos - dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n float dbg_checkerboardFactor(vec2 uv) {\r\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\r\nvec3 dbg_color = vec3(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor = dbg_cornerFactor();\r\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(UV1)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\r\n#elif DBG_MODE == 5 && defined(UV2)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n gl_FragColor *= vec4(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n gl_FragColor = vec4(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst defaultMaterialColors = [\r\n new Color3(0.98, 0.26, 0.38),\r\n new Color3(0.47, 0.75, 0.3),\r\n new Color3(0, 0.26, 0.77),\r\n new Color3(0.97, 0.6, 0.76),\r\n new Color3(0.19, 0.63, 0.78),\r\n new Color3(0.98, 0.8, 0.6),\r\n new Color3(0.65, 0.43, 0.15),\r\n new Color3(0.15, 0.47, 0.22),\r\n new Color3(0.67, 0.71, 0.86),\r\n new Color3(0.09, 0.46, 0.56),\r\n new Color3(0.8, 0.98, 0.02),\r\n new Color3(0.39, 0.29, 0.13),\r\n new Color3(0.53, 0.63, 0.06),\r\n new Color3(0.95, 0.96, 0.41),\r\n new Color3(1, 0.72, 0.94),\r\n new Color3(0.63, 0.08, 0.31),\r\n new Color3(0.66, 0.96, 0.95),\r\n new Color3(0.22, 0.14, 0.19),\r\n new Color3(0.14, 0.65, 0.59),\r\n new Color3(0.93, 1, 0.68),\r\n new Color3(0.93, 0.14, 0.44),\r\n new Color3(0.47, 0.86, 0.67),\r\n new Color3(0.85, 0.07, 0.78),\r\n new Color3(0.53, 0.64, 0.98),\r\n new Color3(0.43, 0.37, 0.56),\r\n new Color3(0.71, 0.65, 0.25),\r\n new Color3(0.66, 0.19, 0.01),\r\n new Color3(0.94, 0.53, 0.12),\r\n new Color3(0.41, 0.44, 0.44),\r\n new Color3(0.24, 0.71, 0.96),\r\n new Color3(0.57, 0.28, 0.56),\r\n new Color3(0.44, 0.98, 0.42),\r\n];\r\n\r\n/**\r\n * Supported visualizations of MeshDebugPluginMaterial\r\n */\r\nexport enum MeshDebugMode {\r\n /**\r\n * Material without any mesh debug visualization\r\n */\r\n NONE = 0,\r\n /**\r\n * A wireframe of the mesh\r\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES = 1,\r\n /**\r\n * Points drawn over vertices of mesh\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n VERTICES = 2,\r\n /**\r\n * A wireframe of the mesh, with points drawn over vertices\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES_VERTICES = 3,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 0\r\n */\r\n UV0 = 4,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 1\r\n */\r\n UV1 = 5,\r\n /**\r\n * The mesh's vertex colors displayed as the primary texture\r\n */\r\n VERTEXCOLORS = 6,\r\n /**\r\n * An arbitrary, distinguishable color to identify the material\r\n */\r\n MATERIALIDS = 7,\r\n}\r\n\r\n/**\r\n * Options for MeshDebugPluginMaterial that are given at initialization\r\n */\r\nexport interface MeshDebugOptions {\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n mode?: MeshDebugMode;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n multiply?: boolean;\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n shadedDiffuseColor?: Color3;\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n shadedSpecularColor?: Color3;\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n shadedSpecularPower?: number;\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n wireframeThickness?: number;\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n wireframeTrianglesColor?: Color3;\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n wireframeVerticesColor?: Color3;\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n vertexColor?: Color3;\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n vertexRadius?: number;\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n uvScale?: number;\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n uvPrimaryColor?: Color3;\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n uvSecondaryColor?: Color3;\r\n}\r\n\r\n/** @internal */\r\nclass MeshDebugDefines extends MaterialDefines {\r\n /**\r\n * Current mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n DBG_MODE: MeshDebugMode = MeshDebugMode.NONE;\r\n /**\r\n * Whether the mesh debug visualization multiplies with colors underneath.\r\n * Defaults to true.\r\n */\r\n DBG_MULTIPLY: boolean = true;\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true.\r\n */\r\n DBG_ENABLED: boolean = true;\r\n}\r\n\r\n/**\r\n * Plugin that implements various mesh debug visualizations,\r\n * List of available visualizations can be found in MeshDebugMode enum.\r\n */\r\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\r\n /**\r\n * Total number of instances of the plugin.\r\n * Starts at 0.\r\n */\r\n private static _PluginCount: number = 0;\r\n\r\n /**\r\n * Color palette used for MATERIALIDS mode.\r\n * Defaults to `defaultMaterialColors`\r\n */\r\n public static MaterialColors: Color3[] = defaultMaterialColors;\r\n\r\n /**\r\n * Options for the plugin.\r\n * See MeshDebugOptions interface for defaults.\r\n */\r\n private _options: Required<MeshDebugOptions>;\r\n\r\n /**\r\n * Material ID color of this plugin instance.\r\n * Taken from index `_PluginCount` of `MaterialColors` at time of instantiation.\r\n */\r\n @serializeAsColor3()\r\n private _materialColor: Color3;\r\n\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true in constructor.\r\n */\r\n @serialize()\r\n private _isEnabled = false;\r\n\r\n private _mode: MeshDebugMode = MeshDebugMode.NONE;\r\n /**\r\n * Current mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public mode: MeshDebugMode = MeshDebugMode.NONE;\r\n\r\n private _multiply: boolean = true;\r\n /**\r\n * Whether the mesh debug visualization multiplies with colors underneath.\r\n * Defaults to true.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public multiply: boolean = true;\r\n\r\n /** @internal */\r\n protected _markAllDefinesAsDirty(): void {\r\n this._enable(this._isEnabled);\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new MeshDebugPluginMaterial\r\n * @param material Material to attach the mesh debug plugin to\r\n * @param options Options for the mesh debug plugin\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, options?: MeshDebugOptions) {\r\n options = options ?? {};\r\n\r\n const defines = new MeshDebugDefines();\r\n defines.DBG_MODE = options.mode ?? defines.DBG_MODE;\r\n defines.DBG_MULTIPLY = options.multiply ?? defines.DBG_MULTIPLY;\r\n super(material, \"MeshDebug\", 200, defines, true, true);\r\n\r\n const defaults: Required<MeshDebugOptions> = {\r\n mode: defines.DBG_MODE,\r\n multiply: defines.DBG_MULTIPLY,\r\n shadedDiffuseColor: new Color3(1, 1, 1),\r\n shadedSpecularColor: new Color3(0.8, 0.8, 0.8),\r\n shadedSpecularPower: 10,\r\n wireframeThickness: 0.7,\r\n wireframeTrianglesColor: new Color3(0, 0, 0),\r\n wireframeVerticesColor: new Color3(0.8, 0.8, 0.8),\r\n vertexColor: new Color3(0, 0, 0),\r\n vertexRadius: 1.2,\r\n uvScale: 20,\r\n uvPrimaryColor: new Color3(1, 1, 1),\r\n uvSecondaryColor: new Color3(0.5, 0.5, 0.5),\r\n };\r\n\r\n this._mode = defines.DBG_MODE;\r\n this._multiply = defines.DBG_MULTIPLY;\r\n this._options = { ...defaults, ...options };\r\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\r\n this.isEnabled = true;\r\n }\r\n\r\n /**\r\n * Get the class name\r\n * @returns Class name\r\n */\r\n public getClassName() {\r\n return \"MeshDebugPluginMaterial\";\r\n }\r\n\r\n /**\r\n * Gets whether the mesh debug plugin is enabled in the material.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the mesh debug plugin is enabled in the material.\r\n * @param value enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n if (this._material.getScene().getEngine().webGLVersion == 1) {\r\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\r\n this._isEnabled = false;\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Prepare the defines\r\n * @param defines Mesh debug defines\r\n * @param scene Scene\r\n * @param mesh Mesh associated with material\r\n */\r\n public prepareDefines(defines: MeshDebugDefines, scene: Scene, mesh: AbstractMesh) {\r\n if (\r\n (this._mode == MeshDebugMode.VERTICES || this._mode == MeshDebugMode.TRIANGLES || this._mode == MeshDebugMode.TRIANGLES_VERTICES) &&\r\n !mesh.isVerticesDataPresent(\"dbg_initialPass\")\r\n ) {\r\n Logger.Warn(\r\n \"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\",\r\n 1\r\n );\r\n }\r\n\r\n defines.DBG_MODE = this._mode;\r\n defines.DBG_MULTIPLY = this._multiply;\r\n defines.DBG_ENABLED = this._isEnabled;\r\n }\r\n\r\n /**\r\n * Get the shader attributes\r\n * @param attributes Array of attributes\r\n */\r\n public getAttributes(attributes: string[]) {\r\n attributes.push(\"dbg_initialPass\");\r\n }\r\n\r\n /**\r\n * Get the shader uniforms\r\n * @returns Uniforms\r\n */\r\n public getUniforms() {\r\n return {\r\n ubo: [\r\n { name: \"dbg_shadedDiffuseColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_shadedSpecularColorPower\", size: 4, type: \"vec4\" }, // shadedSpecularColor, shadedSpecularPower\r\n { name: \"dbg_thicknessRadiusScale\", size: 3, type: \"vec3\" }, // wireframeThickness, vertexRadius, uvScale\r\n { name: \"dbg_wireframeTrianglesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_wireframeVerticesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_vertexColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvPrimaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvSecondaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_materialColor\", size: 3, type: \"vec3\" },\r\n ],\r\n fragment: fragmentUniforms,\r\n };\r\n }\r\n\r\n /**\r\n * Bind the uniform buffer\r\n * @param uniformBuffer Uniform buffer\r\n */\r\n public bindForSubMesh(uniformBuffer: UniformBuffer): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this._options.shadedDiffuseColor.r, this._options.shadedDiffuseColor.g, this._options.shadedDiffuseColor.b);\r\n uniformBuffer.updateFloat4(\r\n \"dbg_shadedSpecularColorPower\",\r\n this._options.shadedSpecularColor.r,\r\n this._options.shadedSpecularColor.g,\r\n this._options.shadedSpecularColor.b,\r\n this._options.shadedSpecularPower\r\n );\r\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this._options.wireframeThickness, this._options.vertexRadius, this._options.uvScale);\r\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this._options.wireframeTrianglesColor);\r\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this._options.wireframeVerticesColor);\r\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this._options.vertexColor);\r\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this._options.uvPrimaryColor);\r\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this._options.uvSecondaryColor);\r\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\r\n }\r\n\r\n /**\r\n * Get shader code\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @returns Shader code\r\n */\r\n public getCustomCode(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd,\r\n };\r\n }\r\n\r\n /**\r\n * Serializes this plugin material\r\n * @returns serialized object\r\n */\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.shadedDiffuseColor = this._options.shadedDiffuseColor.asArray();\r\n serializationObject.shadedSpecularColor = this._options.shadedSpecularColor.asArray();\r\n serializationObject.shadedSpecularPower = this._options.shadedSpecularPower;\r\n serializationObject.wireframeThickness = this._options.wireframeThickness;\r\n serializationObject.wireframeTrianglesColor = this._options.wireframeTrianglesColor.asArray();\r\n serializationObject.wireframeVerticesColor = this._options.wireframeVerticesColor.asArray();\r\n serializationObject.vertexColor = this._options.vertexColor.asArray();\r\n serializationObject.vertexRadius = this._options.vertexRadius;\r\n serializationObject.uvScale = this._options.uvScale;\r\n serializationObject.uvPrimaryColor = this._options.uvPrimaryColor.asArray();\r\n serializationObject.uvSecondaryColor = this._options.uvSecondaryColor.asArray();\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Parses a serialized object\r\n * @param serializationObject serialized object\r\n * @param scene scene\r\n * @param rootUrl root url for textures\r\n */\r\n public parse(serializationObject: any, scene: Scene, rootUrl: string): void {\r\n super.parse(serializationObject, scene, rootUrl);\r\n\r\n this._options.mode = serializationObject.mode;\r\n this._options.multiply = serializationObject.multiply;\r\n this._options.shadedDiffuseColor = Color3.FromArray(serializationObject.shadedDiffuseColor);\r\n this._options.shadedSpecularColor = Color3.FromArray(serializationObject.shadedSpecularColor);\r\n this._options.shadedSpecularPower = serializationObject.shadedSpecularPower;\r\n this._options.wireframeThickness = serializationObject.wireframeThickness;\r\n this._options.wireframeTrianglesColor = Color3.FromArray(serializationObject.wireframeTrianglesColor);\r\n this._options.wireframeVerticesColor = Color3.FromArray(serializationObject.wireframeVerticesColor);\r\n this._options.vertexColor = Color3.FromArray(serializationObject.vertexColor);\r\n this._options.vertexRadius = serializationObject.vertexRadius;\r\n this._options.uvScale = serializationObject.uvScale;\r\n this._options.uvPrimaryColor = Color3.FromArray(serializationObject.uvPrimaryColor);\r\n this._options.uvSecondaryColor = Color3.FromArray(serializationObject.uvSecondaryColor);\r\n\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Resets static variables of the plugin to their original state\r\n */\r\n public static Reset(): void {\r\n this._PluginCount = 0;\r\n this.MaterialColors = defaultMaterialColors;\r\n }\r\n\r\n /**\r\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\r\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\r\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\r\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\r\n * @param mesh the mesh to target\r\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\r\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\r\n */\r\n public static PrepareMeshForTrianglesAndVerticesMode(mesh: Mesh, returnRollback: boolean = false): () => void {\r\n let rollback = () => {};\r\n\r\n if (mesh.getTotalIndices() == 0) return rollback;\r\n\r\n if (returnRollback) {\r\n const kinds = mesh.getVerticesDataKinds();\r\n const indices = mesh.getIndices()!;\r\n const data: { [kind: string]: FloatArray } = {};\r\n for (const kind of kinds) {\r\n data[kind] = mesh.getVerticesData(kind)!;\r\n }\r\n\r\n rollback = function () {\r\n mesh.setIndices(indices);\r\n for (const kind of kinds) {\r\n mesh.setVerticesData(kind, data[kind]);\r\n }\r\n mesh.removeVerticesData(\"dbg_initialPass\");\r\n };\r\n }\r\n\r\n let indices = Array.from(mesh.getIndices()!);\r\n const newIndices1 = [];\r\n for (let i = 0; i < indices.length; i += 3) {\r\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices1));\r\n\r\n mesh.convertToUnIndexedMesh();\r\n\r\n mesh.isUnIndexed = false;\r\n\r\n indices = Array.from(mesh.getIndices()!);\r\n const newIndices2 = [];\r\n for (let i = indices.length / 2; i < indices.length; i += 3) {\r\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices2));\r\n\r\n const num = mesh.getTotalVertices();\r\n const mid = num / 2;\r\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\r\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\r\n\r\n return rollback;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"meshDebugPluginMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/meshDebugPluginMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { FloatArray, Nullable } from \"../types\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport type { PBRBaseMaterial } from \"./PBR/pbrBaseMaterial\";\r\nimport type { StandardMaterial } from \"./standardMaterial\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { Color3 } from \"core/Maths/math\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { expandToProperty, serialize, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\n\r\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\r\nattribute float dbg_initialPass;\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n#endif`;\r\n\r\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\r\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\r\nif (dbg_vertexIndex == 0.0) { \r\n dbg_vBarycentric = vec3(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n dbg_vBarycentric = vec3(0.,1.,0.); \r\n}\r\nelse { \r\n dbg_vBarycentric = vec3(0.,0.,1.); \r\n}\r\n\r\ndbg_vVertexWorldPos = vPositionW;\r\ndbg_vPass = dbg_initialPass;\r\n#endif`;\r\n\r\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\r\nuniform vec3 dbg_shadedDiffuseColor;\r\nuniform vec4 dbg_shadedSpecularColorPower;\r\nuniform vec3 dbg_thicknessRadiusScale;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform vec3 dbg_vertexColor;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform vec3 dbg_wireframeTrianglesColor;\r\n#elif DBG_MODE == 3\r\n uniform vec3 dbg_wireframeVerticesColor;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform vec3 dbg_uvPrimaryColor;\r\n uniform vec3 dbg_uvSecondaryColor;\r\n#elif DBG_MODE == 7\r\n uniform vec3 dbg_materialColor;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n vec3 dbg_applyShading(vec3 color) {\r\n vec3 N = vNormalW.xyz;\r\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\r\n vec3 H = normalize(L + L);\r\n float LdotN = clamp(dot(L,N), 0., 1.);\r\n float HdotN = clamp(dot(H,N), 0., 1.);\r\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\r\n color *= (LdotN / PI);\r\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return color;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n float dbg_edgeFactor() {\r\n vec3 d = fwidth(dbg_vBarycentric);\r\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor() {\r\n vec3 worldPos = vPositionW;\r\n float dist = length(worldPos - dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n float dbg_checkerboardFactor(vec2 uv) {\r\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\r\nvec3 dbg_color = vec3(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor = dbg_cornerFactor();\r\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(UV1)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\r\n#elif DBG_MODE == 5 && defined(UV2)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n gl_FragColor *= vec4(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n gl_FragColor = vec4(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst defaultMaterialColors = [\r\n new Color3(0.98, 0.26, 0.38),\r\n new Color3(0.47, 0.75, 0.3),\r\n new Color3(0, 0.26, 0.77),\r\n new Color3(0.97, 0.6, 0.76),\r\n new Color3(0.19, 0.63, 0.78),\r\n new Color3(0.98, 0.8, 0.6),\r\n new Color3(0.65, 0.43, 0.15),\r\n new Color3(0.15, 0.47, 0.22),\r\n new Color3(0.67, 0.71, 0.86),\r\n new Color3(0.09, 0.46, 0.56),\r\n new Color3(0.8, 0.98, 0.02),\r\n new Color3(0.39, 0.29, 0.13),\r\n new Color3(0.53, 0.63, 0.06),\r\n new Color3(0.95, 0.96, 0.41),\r\n new Color3(1, 0.72, 0.94),\r\n new Color3(0.63, 0.08, 0.31),\r\n new Color3(0.66, 0.96, 0.95),\r\n new Color3(0.22, 0.14, 0.19),\r\n new Color3(0.14, 0.65, 0.59),\r\n new Color3(0.93, 1, 0.68),\r\n new Color3(0.93, 0.14, 0.44),\r\n new Color3(0.47, 0.86, 0.67),\r\n new Color3(0.85, 0.07, 0.78),\r\n new Color3(0.53, 0.64, 0.98),\r\n new Color3(0.43, 0.37, 0.56),\r\n new Color3(0.71, 0.65, 0.25),\r\n new Color3(0.66, 0.19, 0.01),\r\n new Color3(0.94, 0.53, 0.12),\r\n new Color3(0.41, 0.44, 0.44),\r\n new Color3(0.24, 0.71, 0.96),\r\n new Color3(0.57, 0.28, 0.56),\r\n new Color3(0.44, 0.98, 0.42),\r\n];\r\n\r\n/**\r\n * Supported visualizations of MeshDebugPluginMaterial\r\n */\r\nexport enum MeshDebugMode {\r\n /**\r\n * Material without any mesh debug visualization\r\n */\r\n NONE = 0,\r\n /**\r\n * A wireframe of the mesh\r\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES = 1,\r\n /**\r\n * Points drawn over vertices of mesh\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n VERTICES = 2,\r\n /**\r\n * A wireframe of the mesh, with points drawn over vertices\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES_VERTICES = 3,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 0\r\n */\r\n UV0 = 4,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 1\r\n */\r\n UV1 = 5,\r\n /**\r\n * The mesh's vertex colors displayed as the primary texture\r\n */\r\n VERTEXCOLORS = 6,\r\n /**\r\n * An arbitrary, distinguishable color to identify the material\r\n */\r\n MATERIALIDS = 7,\r\n}\r\n\r\n/**\r\n * Options for MeshDebugPluginMaterial that are given at initialization\r\n */\r\nexport interface MeshDebugOptions {\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n mode?: MeshDebugMode;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n multiply?: boolean;\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n shadedDiffuseColor?: Color3;\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n shadedSpecularColor?: Color3;\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n shadedSpecularPower?: number;\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n wireframeThickness?: number;\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n wireframeTrianglesColor?: Color3;\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n wireframeVerticesColor?: Color3;\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n vertexColor?: Color3;\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n vertexRadius?: number;\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n uvScale?: number;\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n uvPrimaryColor?: Color3;\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n uvSecondaryColor?: Color3;\r\n}\r\n\r\n/** @internal */\r\nclass MeshDebugDefines extends MaterialDefines {\r\n /**\r\n * Current mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n DBG_MODE: MeshDebugMode = MeshDebugMode.NONE;\r\n /**\r\n * Whether the mesh debug visualization multiplies with colors underneath.\r\n * Defaults to true.\r\n */\r\n DBG_MULTIPLY: boolean = true;\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true.\r\n */\r\n DBG_ENABLED: boolean = true;\r\n}\r\n\r\n/**\r\n * Plugin that implements various mesh debug visualizations,\r\n * List of available visualizations can be found in MeshDebugMode enum.\r\n */\r\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\r\n /**\r\n * Total number of instances of the plugin.\r\n * Starts at 0.\r\n */\r\n private static _PluginCount: number = 0;\r\n\r\n /**\r\n * Color palette used for MATERIALIDS mode.\r\n * Defaults to `defaultMaterialColors`\r\n */\r\n public static MaterialColors: Color3[] = defaultMaterialColors;\r\n\r\n /**\r\n * Material ID color of this plugin instance.\r\n * Taken from index `_PluginCount` of `MaterialColors` at time of instantiation.\r\n */\r\n @serializeAsColor3()\r\n private _materialColor: Color3;\r\n\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true in constructor.\r\n */\r\n @serialize()\r\n private _isEnabled: boolean;\r\n\r\n private _options: Required<MeshDebugOptions>;\r\n /**\r\n * Options for the plugin.\r\n * See MeshDebugOptions interface for defaults.\r\n */\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public options: Required<MeshDebugOptions>;\r\n\r\n /** @internal */\r\n protected _markAllDefinesAsDirty(): void {\r\n this._enable(this._isEnabled);\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new MeshDebugPluginMaterial\r\n * @param material Material to attach the mesh debug plugin to\r\n * @param options Options for the mesh debug plugin\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, options?: MeshDebugOptions) {\r\n options = options ?? {};\r\n\r\n const defines = new MeshDebugDefines();\r\n defines.DBG_MODE = options.mode ?? defines.DBG_MODE;\r\n defines.DBG_MULTIPLY = options.multiply ?? defines.DBG_MULTIPLY;\r\n super(material, \"MeshDebug\", 200, defines, true, true);\r\n\r\n const defaults: Required<MeshDebugOptions> = {\r\n mode: defines.DBG_MODE,\r\n multiply: defines.DBG_MULTIPLY,\r\n shadedDiffuseColor: new Color3(1, 1, 1),\r\n shadedSpecularColor: new Color3(0.8, 0.8, 0.8),\r\n shadedSpecularPower: 10,\r\n wireframeThickness: 0.7,\r\n wireframeTrianglesColor: new Color3(0, 0, 0),\r\n wireframeVerticesColor: new Color3(0.8, 0.8, 0.8),\r\n vertexColor: new Color3(0, 0, 0),\r\n vertexRadius: 1.2,\r\n uvScale: 20,\r\n uvPrimaryColor: new Color3(1, 1, 1),\r\n uvSecondaryColor: new Color3(0.5, 0.5, 0.5),\r\n };\r\n\r\n this._options = { ...defaults, ...options };\r\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\r\n this.isEnabled = true;\r\n }\r\n\r\n /**\r\n * Get the class name\r\n * @returns Class name\r\n */\r\n public getClassName() {\r\n return \"MeshDebugPluginMaterial\";\r\n }\r\n\r\n /**\r\n * Gets whether the mesh debug plugin is enabled in the material.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the mesh debug plugin is enabled in the material.\r\n * @param value enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n if (this._material.getScene().getEngine().webGLVersion == 1) {\r\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\r\n this._isEnabled = false;\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Prepare the defines\r\n * @param defines Mesh debug defines\r\n * @param scene Scene\r\n * @param mesh Mesh associated with material\r\n */\r\n public prepareDefines(defines: MeshDebugDefines, scene: Scene, mesh: AbstractMesh) {\r\n if (\r\n (this._options.mode == MeshDebugMode.VERTICES || this._options.mode == MeshDebugMode.TRIANGLES || this._options.mode == MeshDebugMode.TRIANGLES_VERTICES) &&\r\n !mesh.isVerticesDataPresent(\"dbg_initialPass\")\r\n ) {\r\n Logger.Warn(\r\n \"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\",\r\n 1\r\n );\r\n }\r\n\r\n defines.DBG_MODE = this._options.mode;\r\n defines.DBG_MULTIPLY = this._options.multiply;\r\n defines.DBG_ENABLED = this._isEnabled;\r\n }\r\n\r\n /**\r\n * Get the shader attributes\r\n * @param attributes Array of attributes\r\n */\r\n public getAttributes(attributes: string[]) {\r\n attributes.push(\"dbg_initialPass\");\r\n }\r\n\r\n /**\r\n * Get the shader uniforms\r\n * @returns Uniforms\r\n */\r\n public getUniforms() {\r\n return {\r\n ubo: [\r\n { name: \"dbg_shadedDiffuseColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_shadedSpecularColorPower\", size: 4, type: \"vec4\" }, // shadedSpecularColor, shadedSpecularPower\r\n { name: \"dbg_thicknessRadiusScale\", size: 3, type: \"vec3\" }, // wireframeThickness, vertexRadius, uvScale\r\n { name: \"dbg_wireframeTrianglesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_wireframeVerticesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_vertexColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvPrimaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvSecondaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_materialColor\", size: 3, type: \"vec3\" },\r\n ],\r\n fragment: fragmentUniforms,\r\n };\r\n }\r\n\r\n /**\r\n * Bind the uniform buffer\r\n * @param uniformBuffer Uniform buffer\r\n */\r\n public bindForSubMesh(uniformBuffer: UniformBuffer): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this._options.shadedDiffuseColor.r, this._options.shadedDiffuseColor.g, this._options.shadedDiffuseColor.b);\r\n uniformBuffer.updateFloat4(\r\n \"dbg_shadedSpecularColorPower\",\r\n this._options.shadedSpecularColor.r,\r\n this._options.shadedSpecularColor.g,\r\n this._options.shadedSpecularColor.b,\r\n this._options.shadedSpecularPower\r\n );\r\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this._options.wireframeThickness, this._options.vertexRadius, this._options.uvScale);\r\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this._options.wireframeTrianglesColor);\r\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this._options.wireframeVerticesColor);\r\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this._options.vertexColor);\r\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this._options.uvPrimaryColor);\r\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this._options.uvSecondaryColor);\r\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\r\n }\r\n\r\n /**\r\n * Get shader code\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @returns Shader code\r\n */\r\n public getCustomCode(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd,\r\n };\r\n }\r\n\r\n /**\r\n * Serializes this plugin material\r\n * @returns serialized object\r\n */\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.mode = this._options.mode;\r\n serializationObject.multiply = this._options.multiply;\r\n serializationObject.shadedDiffuseColor = this._options.shadedDiffuseColor.asArray();\r\n serializationObject.shadedSpecularColor = this._options.shadedSpecularColor.asArray();\r\n serializationObject.shadedSpecularPower = this._options.shadedSpecularPower;\r\n serializationObject.wireframeThickness = this._options.wireframeThickness;\r\n serializationObject.wireframeTrianglesColor = this._options.wireframeTrianglesColor.asArray();\r\n serializationObject.wireframeVerticesColor = this._options.wireframeVerticesColor.asArray();\r\n serializationObject.vertexColor = this._options.vertexColor.asArray();\r\n serializationObject.vertexRadius = this._options.vertexRadius;\r\n serializationObject.uvScale = this._options.uvScale;\r\n serializationObject.uvPrimaryColor = this._options.uvPrimaryColor.asArray();\r\n serializationObject.uvSecondaryColor = this._options.uvSecondaryColor.asArray();\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Parses a serialized object\r\n * @param serializationObject serialized object\r\n * @param scene scene\r\n * @param rootUrl root url for textures\r\n */\r\n public parse(serializationObject: any, scene: Scene, rootUrl: string): void {\r\n super.parse(serializationObject, scene, rootUrl);\r\n\r\n this._options.mode = serializationObject.mode;\r\n this._options.multiply = serializationObject.multiply;\r\n this._options.shadedDiffuseColor = Color3.FromArray(serializationObject.shadedDiffuseColor);\r\n this._options.shadedSpecularColor = Color3.FromArray(serializationObject.shadedSpecularColor);\r\n this._options.shadedSpecularPower = serializationObject.shadedSpecularPower;\r\n this._options.wireframeThickness = serializationObject.wireframeThickness;\r\n this._options.wireframeTrianglesColor = Color3.FromArray(serializationObject.wireframeTrianglesColor);\r\n this._options.wireframeVerticesColor = Color3.FromArray(serializationObject.wireframeVerticesColor);\r\n this._options.vertexColor = Color3.FromArray(serializationObject.vertexColor);\r\n this._options.vertexRadius = serializationObject.vertexRadius;\r\n this._options.uvScale = serializationObject.uvScale;\r\n this._options.uvPrimaryColor = Color3.FromArray(serializationObject.uvPrimaryColor);\r\n this._options.uvSecondaryColor = Color3.FromArray(serializationObject.uvSecondaryColor);\r\n\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Resets static variables of the plugin to their original state\r\n */\r\n public static Reset(): void {\r\n this._PluginCount = 0;\r\n this.MaterialColors = defaultMaterialColors;\r\n }\r\n\r\n /**\r\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\r\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\r\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\r\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\r\n * @param mesh the mesh to target\r\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\r\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\r\n */\r\n public static PrepareMeshForTrianglesAndVerticesMode(mesh: Mesh, returnRollback: boolean = false): () => void {\r\n let rollback = () => {};\r\n\r\n if (mesh.getTotalIndices() == 0) return rollback;\r\n\r\n if (returnRollback) {\r\n const kinds = mesh.getVerticesDataKinds();\r\n const indices = mesh.getIndices()!;\r\n const data: { [kind: string]: FloatArray } = {};\r\n for (const kind of kinds) {\r\n data[kind] = mesh.getVerticesData(kind)!;\r\n }\r\n\r\n rollback = function () {\r\n mesh.setIndices(indices);\r\n for (const kind of kinds) {\r\n const stride = mesh.getVertexBuffer(kind)!.getStrideSize();\r\n mesh.setVerticesData(kind, data[kind], undefined, stride);\r\n }\r\n mesh.removeVerticesData(\"dbg_initialPass\");\r\n };\r\n }\r\n\r\n let indices = Array.from(mesh.getIndices()!);\r\n const newIndices1 = [];\r\n for (let i = 0; i < indices.length; i += 3) {\r\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices1));\r\n\r\n mesh.convertToUnIndexedMesh();\r\n\r\n mesh.isUnIndexed = false;\r\n\r\n indices = Array.from(mesh.getIndices()!);\r\n const newIndices2 = [];\r\n for (let i = indices.length / 2; i < indices.length; i += 3) {\r\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices2));\r\n\r\n const num = mesh.getTotalVertices();\r\n const mid = num / 2;\r\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\r\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\r\n\r\n return rollback;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);\r\n"]}
|
|
@@ -169,13 +169,13 @@ export class ShadowDepthWrapper {
|
|
|
169
169
|
: Effect.IncludesShadersStore["shadowMapVertexMetric"], fragmentSoftTransparentShadow = this._options && this._options.remappedVariables
|
|
170
170
|
? `#include<shadowMapFragmentSoftTransparentShadow>(${this._options.remappedVariables.join(",")})`
|
|
171
171
|
: Effect.IncludesShadersStore["shadowMapFragmentSoftTransparentShadow"], fragmentBlockCode = Effect.IncludesShadersStore["shadowMapFragment"];
|
|
172
|
-
vertexCode = vertexCode.replace(/void\s+?main/g, Effect.IncludesShadersStore["shadowMapVertexExtraDeclaration"] + "\
|
|
172
|
+
vertexCode = vertexCode.replace(/void\s+?main/g, Effect.IncludesShadersStore["shadowMapVertexExtraDeclaration"] + "\nvoid main");
|
|
173
173
|
vertexCode = vertexCode.replace(/#define SHADOWDEPTH_NORMALBIAS|#define CUSTOM_VERTEX_UPDATE_WORLDPOS/g, vertexNormalBiasCode);
|
|
174
174
|
if (vertexCode.indexOf("#define SHADOWDEPTH_METRIC") !== -1) {
|
|
175
175
|
vertexCode = vertexCode.replace(/#define SHADOWDEPTH_METRIC/g, vertexMetricCode);
|
|
176
176
|
}
|
|
177
177
|
else {
|
|
178
|
-
vertexCode = vertexCode.replace(/}\s*$/g, vertexMetricCode + "\
|
|
178
|
+
vertexCode = vertexCode.replace(/}\s*$/g, vertexMetricCode + "\n}");
|
|
179
179
|
}
|
|
180
180
|
vertexCode = vertexCode.replace(/#define SHADER_NAME.*?\n|out vec4 glFragColor;\n/g, "");
|
|
181
181
|
// fragment code
|
|
@@ -183,17 +183,17 @@ export class ShadowDepthWrapper {
|
|
|
183
183
|
const hasLocationForFragment = fragmentCode.indexOf("#define SHADOWDEPTH_FRAGMENT") !== -1;
|
|
184
184
|
let fragmentCodeToInjectAtEnd = "";
|
|
185
185
|
if (!hasLocationForSoftTransparentShadow) {
|
|
186
|
-
fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + "\
|
|
186
|
+
fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + "\n";
|
|
187
187
|
}
|
|
188
188
|
else {
|
|
189
189
|
fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW|#define CUSTOM_FRAGMENT_BEFORE_FOG/g, fragmentSoftTransparentShadow);
|
|
190
190
|
}
|
|
191
|
-
fragmentCode = fragmentCode.replace(/void\s+?main/g, Effect.IncludesShadersStore["shadowMapFragmentExtraDeclaration"] + "\
|
|
191
|
+
fragmentCode = fragmentCode.replace(/void\s+?main/g, Effect.IncludesShadersStore["shadowMapFragmentExtraDeclaration"] + "\nvoid main");
|
|
192
192
|
if (hasLocationForFragment) {
|
|
193
193
|
fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_FRAGMENT/g, fragmentBlockCode);
|
|
194
194
|
}
|
|
195
195
|
else {
|
|
196
|
-
fragmentCodeToInjectAtEnd += fragmentBlockCode + "\
|
|
196
|
+
fragmentCodeToInjectAtEnd += fragmentBlockCode + "\n";
|
|
197
197
|
}
|
|
198
198
|
if (fragmentCodeToInjectAtEnd) {
|
|
199
199
|
fragmentCode = fragmentCode.replace(/}\s*$/g, fragmentCodeToInjectAtEnd + "}");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowDepthWrapper.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/shadowDepthWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Observer } from \"../Misc/observable\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\nimport type { Material } from \"./material\";\r\nimport type { IEffectCreationOptions } from \"./effect\";\r\nimport { Effect } from \"./effect\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Node } from \"../node\";\r\nimport type { ShadowGenerator } from \"../Lights/Shadows/shadowGenerator\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport { DrawWrapper } from \"./drawWrapper\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Options to be used when creating a shadow depth material\r\n */\r\nexport interface IIOptionShadowDepthMaterial {\r\n /** Variables in the vertex shader code that need to have their names remapped.\r\n * The format is: [\"var_name\", \"var_remapped_name\", \"var_name\", \"var_remapped_name\", ...]\r\n * \"var_name\" should be either: worldPos or vNormalW\r\n * So, if the variable holding the world position in your vertex shader is not named worldPos, you must tell the system\r\n * the name to use instead by using: [\"worldPos\", \"myWorldPosVar\"] assuming the variable is named myWorldPosVar in your code.\r\n * If the normal must also be remapped: [\"worldPos\", \"myWorldPosVar\", \"vNormalW\", \"myWorldNormal\"]\r\n */\r\n remappedVariables?: string[];\r\n\r\n /** Set standalone to true if the base material wrapped by ShadowDepthMaterial is not used for a regular object but for depth shadow generation only */\r\n standalone?: boolean;\r\n\r\n /** Set doNotInjectCode if the specific shadow map generation code is already implemented by the material. That will prevent this code to be injected twice by ShadowDepthWrapper */\r\n doNotInjectCode?: boolean;\r\n}\r\n\r\nclass MapMap<Ka, Kb, V> {\r\n readonly mm = new Map<Ka, Map<Kb, V>>();\r\n\r\n get(a: Ka, b: Kb): V | undefined {\r\n const m = this.mm.get(a);\r\n if (m !== undefined) {\r\n return m.get(b);\r\n }\r\n return undefined;\r\n }\r\n\r\n set(a: Ka, b: Kb, v: V): void {\r\n let m = this.mm.get(a);\r\n if (m === undefined) {\r\n this.mm.set(a, (m = new Map()));\r\n }\r\n m.set(b, v);\r\n }\r\n}\r\n\r\n/**\r\n * Class that can be used to wrap a base material to generate accurate shadows when using custom vertex/fragment code in the base material\r\n */\r\nexport class ShadowDepthWrapper {\r\n private _scene: Scene;\r\n private _options?: IIOptionShadowDepthMaterial;\r\n private _baseMaterial: Material;\r\n private _onEffectCreatedObserver: Nullable<Observer<{ effect: Effect; subMesh: Nullable<SubMesh> }>>;\r\n private _subMeshToEffect: Map<Nullable<SubMesh>, [Effect, number]>;\r\n private _subMeshToDepthWrapper: MapMap<\r\n Nullable<SubMesh>,\r\n ShadowGenerator,\r\n { drawWrapper: Array<Nullable<DrawWrapper>>; mainDrawWrapper: DrawWrapper; depthDefines: string; token: string }\r\n >; // key is (subMesh + shadowGenerator)\r\n private _meshes: Map<AbstractMesh, Nullable<Observer<Node>>>;\r\n\r\n /** Gets the standalone status of the wrapper */\r\n public get standalone(): boolean {\r\n return this._options?.standalone ?? false;\r\n }\r\n\r\n /** Gets the base material the wrapper is built upon */\r\n public get baseMaterial(): Material {\r\n return this._baseMaterial;\r\n }\r\n\r\n /** Gets the doNotInjectCode status of the wrapper */\r\n public get doNotInjectCode(): boolean {\r\n return this._options?.doNotInjectCode ?? false;\r\n }\r\n\r\n /**\r\n * Instantiate a new shadow depth wrapper.\r\n * It works by injecting some specific code in the vertex/fragment shaders of the base material and is used by a shadow generator to\r\n * generate the shadow depth map. For more information, please refer to the documentation:\r\n * https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows\r\n * @param baseMaterial Material to wrap\r\n * @param scene Define the scene the material belongs to\r\n * @param options Options used to create the wrapper\r\n */\r\n constructor(baseMaterial: Material, scene?: Scene, options?: IIOptionShadowDepthMaterial) {\r\n this._baseMaterial = baseMaterial;\r\n this._scene = scene ?? <Scene>EngineStore.LastCreatedScene;\r\n this._options = options;\r\n\r\n this._subMeshToEffect = new Map();\r\n this._subMeshToDepthWrapper = new MapMap();\r\n this._meshes = new Map();\r\n\r\n // Register for onEffectCreated to store the effect of the base material when it is (re)generated. This effect will be used\r\n // to create the depth effect later on\r\n this._onEffectCreatedObserver = this._baseMaterial.onEffectCreatedObservable.add((params: { effect: Effect; subMesh: Nullable<SubMesh> }) => {\r\n const mesh = params.subMesh?.getMesh();\r\n\r\n if (mesh && !this._meshes.has(mesh)) {\r\n // Register for mesh onDispose to clean up our internal maps when a mesh is disposed\r\n this._meshes.set(\r\n mesh,\r\n mesh.onDisposeObservable.add((mesh: Node) => {\r\n const iterator = this._subMeshToEffect.keys();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const subMesh = key.value;\r\n if (subMesh?.getMesh() === (mesh as AbstractMesh)) {\r\n this._subMeshToEffect.delete(subMesh);\r\n this._subMeshToDepthWrapper.mm.delete(subMesh);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n this._subMeshToEffect.set(params.subMesh, [params.effect, this._scene.getEngine().currentRenderPassId]);\r\n this._subMeshToDepthWrapper.mm.delete(params.subMesh); // trigger a depth effect recreation\r\n });\r\n }\r\n\r\n /**\r\n * Gets the effect to use to generate the depth map\r\n * @param subMesh subMesh to get the effect for\r\n * @param shadowGenerator shadow generator to get the effect for\r\n * @param passIdForDrawWrapper Id of the pass for which the effect from the draw wrapper must be retrieved from\r\n * @returns the effect to use to generate the depth map for the subMesh + shadow generator specified\r\n */\r\n public getEffect(subMesh: Nullable<SubMesh>, shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<DrawWrapper> {\r\n const entry = this._subMeshToDepthWrapper.mm.get(subMesh)?.get(shadowGenerator);\r\n if (!entry) {\r\n return null;\r\n }\r\n let drawWrapper = entry.drawWrapper[passIdForDrawWrapper];\r\n if (!drawWrapper) {\r\n drawWrapper = entry.drawWrapper[passIdForDrawWrapper] = new DrawWrapper(this._scene.getEngine());\r\n drawWrapper.setEffect(entry.mainDrawWrapper.effect, entry.mainDrawWrapper.defines);\r\n }\r\n\r\n return drawWrapper;\r\n }\r\n\r\n /**\r\n * Specifies that the submesh is ready to be used for depth rendering\r\n * @param subMesh submesh to check\r\n * @param defines the list of defines to take into account when checking the effect\r\n * @param shadowGenerator combined with subMesh, it defines the effect to check\r\n * @param useInstances specifies that instances should be used\r\n * @param passIdForDrawWrapper Id of the pass for which the draw wrapper should be created\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public isReadyForSubMesh(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, useInstances: boolean, passIdForDrawWrapper: number): boolean {\r\n if (this.standalone) {\r\n // will ensure the effect is (re)created for the base material\r\n if (!this._baseMaterial.isReadyForSubMesh(subMesh.getMesh(), subMesh, useInstances)) {\r\n return false;\r\n }\r\n }\r\n\r\n return this._makeEffect(subMesh, defines, shadowGenerator, passIdForDrawWrapper)?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n this._baseMaterial.onEffectCreatedObservable.remove(this._onEffectCreatedObserver);\r\n this._onEffectCreatedObserver = null;\r\n\r\n const iterator = this._meshes.entries();\r\n for (let entry = iterator.next(); entry.done !== true; entry = iterator.next()) {\r\n const [mesh, observer] = entry.value;\r\n\r\n mesh.onDisposeObservable.remove(observer);\r\n }\r\n }\r\n\r\n private _makeEffect(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<Effect> {\r\n const engine = this._scene.getEngine();\r\n const origEffectAndRenderPassId = this._subMeshToEffect.get(subMesh);\r\n\r\n if (!origEffectAndRenderPassId) {\r\n return null;\r\n }\r\n\r\n const [origEffect, origRenderPassId] = origEffectAndRenderPassId;\r\n\r\n let params = this._subMeshToDepthWrapper.get(subMesh, shadowGenerator);\r\n if (!params) {\r\n const mainDrawWrapper = new DrawWrapper(engine);\r\n mainDrawWrapper.defines = subMesh._getDrawWrapper(origRenderPassId)?.defines ?? null;\r\n\r\n params = {\r\n drawWrapper: [],\r\n mainDrawWrapper,\r\n depthDefines: \"\",\r\n token: RandomGUID(),\r\n };\r\n params.drawWrapper[passIdForDrawWrapper] = mainDrawWrapper;\r\n this._subMeshToDepthWrapper.set(subMesh, shadowGenerator, params);\r\n }\r\n\r\n const join = defines.join(\"\\n\");\r\n\r\n if (params.mainDrawWrapper.effect) {\r\n if (join === params.depthDefines) {\r\n // we already created the depth effect and it is still up to date for this submesh + shadow generator\r\n return params.mainDrawWrapper.effect;\r\n }\r\n }\r\n\r\n params.depthDefines = join;\r\n\r\n const uniforms = origEffect.getUniformNames().slice();\r\n\r\n // the depth effect is either out of date or has not been created yet\r\n let vertexCode = origEffect.vertexSourceCodeBeforeMigration,\r\n fragmentCode = origEffect.fragmentSourceCodeBeforeMigration;\r\n\r\n if (!this.doNotInjectCode) {\r\n // vertex code\r\n const vertexNormalBiasCode =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapVertexNormalBias>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapVertexNormalBias\"],\r\n vertexMetricCode =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapVertexMetric>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapVertexMetric\"],\r\n fragmentSoftTransparentShadow =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapFragmentSoftTransparentShadow>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapFragmentSoftTransparentShadow\"],\r\n fragmentBlockCode = Effect.IncludesShadersStore[\"shadowMapFragment\"];\r\n\r\n vertexCode = vertexCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapVertexExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_NORMALBIAS|#define CUSTOM_VERTEX_UPDATE_WORLDPOS/g, vertexNormalBiasCode);\r\n\r\n if (vertexCode.indexOf(\"#define SHADOWDEPTH_METRIC\") !== -1) {\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_METRIC/g, vertexMetricCode);\r\n } else {\r\n vertexCode = vertexCode.replace(/}\\s*$/g, vertexMetricCode + \"\\r\\n}\");\r\n }\r\n vertexCode = vertexCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n // fragment code\r\n const hasLocationForSoftTransparentShadow =\r\n fragmentCode.indexOf(\"#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW\") >= 0 || fragmentCode.indexOf(\"#define CUSTOM_FRAGMENT_BEFORE_FOG\") >= 0;\r\n const hasLocationForFragment = fragmentCode.indexOf(\"#define SHADOWDEPTH_FRAGMENT\") !== -1;\r\n\r\n let fragmentCodeToInjectAtEnd = \"\";\r\n\r\n if (!hasLocationForSoftTransparentShadow) {\r\n fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + \"\\r\\n\";\r\n } else {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW|#define CUSTOM_FRAGMENT_BEFORE_FOG/g, fragmentSoftTransparentShadow);\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapFragmentExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n\r\n if (hasLocationForFragment) {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_FRAGMENT/g, fragmentBlockCode);\r\n } else {\r\n fragmentCodeToInjectAtEnd += fragmentBlockCode + \"\\r\\n\";\r\n }\r\n if (fragmentCodeToInjectAtEnd) {\r\n fragmentCode = fragmentCode.replace(/}\\s*$/g, fragmentCodeToInjectAtEnd + \"}\");\r\n }\r\n\r\n uniforms.push(\"biasAndScaleSM\", \"depthValuesSM\", \"lightDataSM\", \"softTransparentShadowSM\");\r\n }\r\n\r\n params.mainDrawWrapper.effect = engine.createEffect(\r\n {\r\n vertexSource: vertexCode,\r\n fragmentSource: fragmentCode,\r\n vertexToken: params.token,\r\n fragmentToken: params.token,\r\n },\r\n <IEffectCreationOptions>{\r\n attributes: origEffect.getAttributesNames(),\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: origEffect.getUniformBuffersNames(),\r\n samplers: origEffect.getSamplers(),\r\n defines: join + \"\\n\" + origEffect.defines.replace(\"#define SHADOWS\", \"\").replace(/#define SHADOW\\d/g, \"\"),\r\n indexParameters: origEffect.getIndexParameters(),\r\n },\r\n engine\r\n );\r\n\r\n for (let id = 0; id < params.drawWrapper.length; ++id) {\r\n if (id !== passIdForDrawWrapper) {\r\n params.drawWrapper[id]?.setEffect(params.mainDrawWrapper.effect, params.mainDrawWrapper.defines);\r\n }\r\n }\r\n return params.mainDrawWrapper.effect;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"shadowDepthWrapper.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/shadowDepthWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Observer } from \"../Misc/observable\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\nimport type { Material } from \"./material\";\r\nimport type { IEffectCreationOptions } from \"./effect\";\r\nimport { Effect } from \"./effect\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Node } from \"../node\";\r\nimport type { ShadowGenerator } from \"../Lights/Shadows/shadowGenerator\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport { DrawWrapper } from \"./drawWrapper\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Options to be used when creating a shadow depth material\r\n */\r\nexport interface IIOptionShadowDepthMaterial {\r\n /** Variables in the vertex shader code that need to have their names remapped.\r\n * The format is: [\"var_name\", \"var_remapped_name\", \"var_name\", \"var_remapped_name\", ...]\r\n * \"var_name\" should be either: worldPos or vNormalW\r\n * So, if the variable holding the world position in your vertex shader is not named worldPos, you must tell the system\r\n * the name to use instead by using: [\"worldPos\", \"myWorldPosVar\"] assuming the variable is named myWorldPosVar in your code.\r\n * If the normal must also be remapped: [\"worldPos\", \"myWorldPosVar\", \"vNormalW\", \"myWorldNormal\"]\r\n */\r\n remappedVariables?: string[];\r\n\r\n /** Set standalone to true if the base material wrapped by ShadowDepthMaterial is not used for a regular object but for depth shadow generation only */\r\n standalone?: boolean;\r\n\r\n /** Set doNotInjectCode if the specific shadow map generation code is already implemented by the material. That will prevent this code to be injected twice by ShadowDepthWrapper */\r\n doNotInjectCode?: boolean;\r\n}\r\n\r\nclass MapMap<Ka, Kb, V> {\r\n readonly mm = new Map<Ka, Map<Kb, V>>();\r\n\r\n get(a: Ka, b: Kb): V | undefined {\r\n const m = this.mm.get(a);\r\n if (m !== undefined) {\r\n return m.get(b);\r\n }\r\n return undefined;\r\n }\r\n\r\n set(a: Ka, b: Kb, v: V): void {\r\n let m = this.mm.get(a);\r\n if (m === undefined) {\r\n this.mm.set(a, (m = new Map()));\r\n }\r\n m.set(b, v);\r\n }\r\n}\r\n\r\n/**\r\n * Class that can be used to wrap a base material to generate accurate shadows when using custom vertex/fragment code in the base material\r\n */\r\nexport class ShadowDepthWrapper {\r\n private _scene: Scene;\r\n private _options?: IIOptionShadowDepthMaterial;\r\n private _baseMaterial: Material;\r\n private _onEffectCreatedObserver: Nullable<Observer<{ effect: Effect; subMesh: Nullable<SubMesh> }>>;\r\n private _subMeshToEffect: Map<Nullable<SubMesh>, [Effect, number]>;\r\n private _subMeshToDepthWrapper: MapMap<\r\n Nullable<SubMesh>,\r\n ShadowGenerator,\r\n { drawWrapper: Array<Nullable<DrawWrapper>>; mainDrawWrapper: DrawWrapper; depthDefines: string; token: string }\r\n >; // key is (subMesh + shadowGenerator)\r\n private _meshes: Map<AbstractMesh, Nullable<Observer<Node>>>;\r\n\r\n /** Gets the standalone status of the wrapper */\r\n public get standalone(): boolean {\r\n return this._options?.standalone ?? false;\r\n }\r\n\r\n /** Gets the base material the wrapper is built upon */\r\n public get baseMaterial(): Material {\r\n return this._baseMaterial;\r\n }\r\n\r\n /** Gets the doNotInjectCode status of the wrapper */\r\n public get doNotInjectCode(): boolean {\r\n return this._options?.doNotInjectCode ?? false;\r\n }\r\n\r\n /**\r\n * Instantiate a new shadow depth wrapper.\r\n * It works by injecting some specific code in the vertex/fragment shaders of the base material and is used by a shadow generator to\r\n * generate the shadow depth map. For more information, please refer to the documentation:\r\n * https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows\r\n * @param baseMaterial Material to wrap\r\n * @param scene Define the scene the material belongs to\r\n * @param options Options used to create the wrapper\r\n */\r\n constructor(baseMaterial: Material, scene?: Scene, options?: IIOptionShadowDepthMaterial) {\r\n this._baseMaterial = baseMaterial;\r\n this._scene = scene ?? <Scene>EngineStore.LastCreatedScene;\r\n this._options = options;\r\n\r\n this._subMeshToEffect = new Map();\r\n this._subMeshToDepthWrapper = new MapMap();\r\n this._meshes = new Map();\r\n\r\n // Register for onEffectCreated to store the effect of the base material when it is (re)generated. This effect will be used\r\n // to create the depth effect later on\r\n this._onEffectCreatedObserver = this._baseMaterial.onEffectCreatedObservable.add((params: { effect: Effect; subMesh: Nullable<SubMesh> }) => {\r\n const mesh = params.subMesh?.getMesh();\r\n\r\n if (mesh && !this._meshes.has(mesh)) {\r\n // Register for mesh onDispose to clean up our internal maps when a mesh is disposed\r\n this._meshes.set(\r\n mesh,\r\n mesh.onDisposeObservable.add((mesh: Node) => {\r\n const iterator = this._subMeshToEffect.keys();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const subMesh = key.value;\r\n if (subMesh?.getMesh() === (mesh as AbstractMesh)) {\r\n this._subMeshToEffect.delete(subMesh);\r\n this._subMeshToDepthWrapper.mm.delete(subMesh);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n this._subMeshToEffect.set(params.subMesh, [params.effect, this._scene.getEngine().currentRenderPassId]);\r\n this._subMeshToDepthWrapper.mm.delete(params.subMesh); // trigger a depth effect recreation\r\n });\r\n }\r\n\r\n /**\r\n * Gets the effect to use to generate the depth map\r\n * @param subMesh subMesh to get the effect for\r\n * @param shadowGenerator shadow generator to get the effect for\r\n * @param passIdForDrawWrapper Id of the pass for which the effect from the draw wrapper must be retrieved from\r\n * @returns the effect to use to generate the depth map for the subMesh + shadow generator specified\r\n */\r\n public getEffect(subMesh: Nullable<SubMesh>, shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<DrawWrapper> {\r\n const entry = this._subMeshToDepthWrapper.mm.get(subMesh)?.get(shadowGenerator);\r\n if (!entry) {\r\n return null;\r\n }\r\n let drawWrapper = entry.drawWrapper[passIdForDrawWrapper];\r\n if (!drawWrapper) {\r\n drawWrapper = entry.drawWrapper[passIdForDrawWrapper] = new DrawWrapper(this._scene.getEngine());\r\n drawWrapper.setEffect(entry.mainDrawWrapper.effect, entry.mainDrawWrapper.defines);\r\n }\r\n\r\n return drawWrapper;\r\n }\r\n\r\n /**\r\n * Specifies that the submesh is ready to be used for depth rendering\r\n * @param subMesh submesh to check\r\n * @param defines the list of defines to take into account when checking the effect\r\n * @param shadowGenerator combined with subMesh, it defines the effect to check\r\n * @param useInstances specifies that instances should be used\r\n * @param passIdForDrawWrapper Id of the pass for which the draw wrapper should be created\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public isReadyForSubMesh(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, useInstances: boolean, passIdForDrawWrapper: number): boolean {\r\n if (this.standalone) {\r\n // will ensure the effect is (re)created for the base material\r\n if (!this._baseMaterial.isReadyForSubMesh(subMesh.getMesh(), subMesh, useInstances)) {\r\n return false;\r\n }\r\n }\r\n\r\n return this._makeEffect(subMesh, defines, shadowGenerator, passIdForDrawWrapper)?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n this._baseMaterial.onEffectCreatedObservable.remove(this._onEffectCreatedObserver);\r\n this._onEffectCreatedObserver = null;\r\n\r\n const iterator = this._meshes.entries();\r\n for (let entry = iterator.next(); entry.done !== true; entry = iterator.next()) {\r\n const [mesh, observer] = entry.value;\r\n\r\n mesh.onDisposeObservable.remove(observer);\r\n }\r\n }\r\n\r\n private _makeEffect(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<Effect> {\r\n const engine = this._scene.getEngine();\r\n const origEffectAndRenderPassId = this._subMeshToEffect.get(subMesh);\r\n\r\n if (!origEffectAndRenderPassId) {\r\n return null;\r\n }\r\n\r\n const [origEffect, origRenderPassId] = origEffectAndRenderPassId;\r\n\r\n let params = this._subMeshToDepthWrapper.get(subMesh, shadowGenerator);\r\n if (!params) {\r\n const mainDrawWrapper = new DrawWrapper(engine);\r\n mainDrawWrapper.defines = subMesh._getDrawWrapper(origRenderPassId)?.defines ?? null;\r\n\r\n params = {\r\n drawWrapper: [],\r\n mainDrawWrapper,\r\n depthDefines: \"\",\r\n token: RandomGUID(),\r\n };\r\n params.drawWrapper[passIdForDrawWrapper] = mainDrawWrapper;\r\n this._subMeshToDepthWrapper.set(subMesh, shadowGenerator, params);\r\n }\r\n\r\n const join = defines.join(\"\\n\");\r\n\r\n if (params.mainDrawWrapper.effect) {\r\n if (join === params.depthDefines) {\r\n // we already created the depth effect and it is still up to date for this submesh + shadow generator\r\n return params.mainDrawWrapper.effect;\r\n }\r\n }\r\n\r\n params.depthDefines = join;\r\n\r\n const uniforms = origEffect.getUniformNames().slice();\r\n\r\n // the depth effect is either out of date or has not been created yet\r\n let vertexCode = origEffect.vertexSourceCodeBeforeMigration,\r\n fragmentCode = origEffect.fragmentSourceCodeBeforeMigration;\r\n\r\n if (!this.doNotInjectCode) {\r\n // vertex code\r\n const vertexNormalBiasCode =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapVertexNormalBias>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapVertexNormalBias\"],\r\n vertexMetricCode =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapVertexMetric>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapVertexMetric\"],\r\n fragmentSoftTransparentShadow =\r\n this._options && this._options.remappedVariables\r\n ? `#include<shadowMapFragmentSoftTransparentShadow>(${this._options.remappedVariables.join(\",\")})`\r\n : Effect.IncludesShadersStore[\"shadowMapFragmentSoftTransparentShadow\"],\r\n fragmentBlockCode = Effect.IncludesShadersStore[\"shadowMapFragment\"];\r\n\r\n vertexCode = vertexCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapVertexExtraDeclaration\"] + \"\\nvoid main\");\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_NORMALBIAS|#define CUSTOM_VERTEX_UPDATE_WORLDPOS/g, vertexNormalBiasCode);\r\n\r\n if (vertexCode.indexOf(\"#define SHADOWDEPTH_METRIC\") !== -1) {\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_METRIC/g, vertexMetricCode);\r\n } else {\r\n vertexCode = vertexCode.replace(/}\\s*$/g, vertexMetricCode + \"\\n}\");\r\n }\r\n vertexCode = vertexCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n // fragment code\r\n const hasLocationForSoftTransparentShadow =\r\n fragmentCode.indexOf(\"#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW\") >= 0 || fragmentCode.indexOf(\"#define CUSTOM_FRAGMENT_BEFORE_FOG\") >= 0;\r\n const hasLocationForFragment = fragmentCode.indexOf(\"#define SHADOWDEPTH_FRAGMENT\") !== -1;\r\n\r\n let fragmentCodeToInjectAtEnd = \"\";\r\n\r\n if (!hasLocationForSoftTransparentShadow) {\r\n fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + \"\\n\";\r\n } else {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW|#define CUSTOM_FRAGMENT_BEFORE_FOG/g, fragmentSoftTransparentShadow);\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapFragmentExtraDeclaration\"] + \"\\nvoid main\");\r\n\r\n if (hasLocationForFragment) {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_FRAGMENT/g, fragmentBlockCode);\r\n } else {\r\n fragmentCodeToInjectAtEnd += fragmentBlockCode + \"\\n\";\r\n }\r\n if (fragmentCodeToInjectAtEnd) {\r\n fragmentCode = fragmentCode.replace(/}\\s*$/g, fragmentCodeToInjectAtEnd + \"}\");\r\n }\r\n\r\n uniforms.push(\"biasAndScaleSM\", \"depthValuesSM\", \"lightDataSM\", \"softTransparentShadowSM\");\r\n }\r\n\r\n params.mainDrawWrapper.effect = engine.createEffect(\r\n {\r\n vertexSource: vertexCode,\r\n fragmentSource: fragmentCode,\r\n vertexToken: params.token,\r\n fragmentToken: params.token,\r\n },\r\n <IEffectCreationOptions>{\r\n attributes: origEffect.getAttributesNames(),\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: origEffect.getUniformBuffersNames(),\r\n samplers: origEffect.getSamplers(),\r\n defines: join + \"\\n\" + origEffect.defines.replace(\"#define SHADOWS\", \"\").replace(/#define SHADOW\\d/g, \"\"),\r\n indexParameters: origEffect.getIndexParameters(),\r\n },\r\n engine\r\n );\r\n\r\n for (let id = 0; id < params.drawWrapper.length; ++id) {\r\n if (id !== passIdForDrawWrapper) {\r\n params.drawWrapper[id]?.setEffect(params.mainDrawWrapper.effect, params.mainDrawWrapper.defines);\r\n }\r\n }\r\n return params.mainDrawWrapper.effect;\r\n }\r\n}\r\n"]}
|
|
@@ -44,6 +44,37 @@ export declare function CreateBoxVertexData(options: {
|
|
|
44
44
|
topBaseAt?: number;
|
|
45
45
|
bottomBaseAt?: number;
|
|
46
46
|
}): VertexData;
|
|
47
|
+
/**
|
|
48
|
+
* Creates the VertexData for a segmented box
|
|
49
|
+
* @param options an object used to set the following optional parameters for the box, required but can be empty
|
|
50
|
+
* * size sets the width, height and depth of the box to the value of size, optional default 1
|
|
51
|
+
* * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size
|
|
52
|
+
* * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size
|
|
53
|
+
* * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size
|
|
54
|
+
* * segments sets the number of segments on the all axis (1 by default)
|
|
55
|
+
* * widthSegments sets the number of segments on the x axis (1 by default)
|
|
56
|
+
* * heightSegments sets the number of segments on the y axis (1 by default)
|
|
57
|
+
* * depthSegments sets the number of segments on the z axis (1 by default)
|
|
58
|
+
* @param options.size
|
|
59
|
+
* @param options.width
|
|
60
|
+
* @param options.height
|
|
61
|
+
* @param options.depth
|
|
62
|
+
* @param options.segments
|
|
63
|
+
* @param options.widthSegments
|
|
64
|
+
* @param options.heightSegments
|
|
65
|
+
* @param options.depthSegments
|
|
66
|
+
* @returns the VertexData of the box
|
|
67
|
+
*/
|
|
68
|
+
export declare function CreateSegmentedBoxVertexData(options: {
|
|
69
|
+
size?: number;
|
|
70
|
+
width?: number;
|
|
71
|
+
height?: number;
|
|
72
|
+
depth?: number;
|
|
73
|
+
segments?: number;
|
|
74
|
+
widthSegments?: number;
|
|
75
|
+
heightSegments?: number;
|
|
76
|
+
depthSegments?: number;
|
|
77
|
+
}): VertexData;
|
|
47
78
|
/**
|
|
48
79
|
* Creates a box mesh
|
|
49
80
|
* * The parameter `size` sets the size (float) of each box side (default 1)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Vector4 } from "../../Maths/math.vector.js";
|
|
1
|
+
import { Matrix, Vector4 } from "../../Maths/math.vector.js";
|
|
2
2
|
import { Color4 } from "../../Maths/math.color.js";
|
|
3
3
|
import { Mesh } from "../mesh.js";
|
|
4
4
|
import { VertexData } from "../mesh.vertexData.js";
|
|
5
5
|
import { CompatibilityOptions } from "../../Compat/compatibilityOptions.js";
|
|
6
|
+
import { CreateGroundVertexData } from "./groundBuilder.js";
|
|
6
7
|
/**
|
|
7
8
|
* Creates the VertexData for a box
|
|
8
9
|
* @param options an object used to set the following optional parameters for the box, required but can be empty
|
|
@@ -130,6 +131,69 @@ export function CreateBoxVertexData(options) {
|
|
|
130
131
|
}
|
|
131
132
|
return vertexData;
|
|
132
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Creates the VertexData for a segmented box
|
|
136
|
+
* @param options an object used to set the following optional parameters for the box, required but can be empty
|
|
137
|
+
* * size sets the width, height and depth of the box to the value of size, optional default 1
|
|
138
|
+
* * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size
|
|
139
|
+
* * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size
|
|
140
|
+
* * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size
|
|
141
|
+
* * segments sets the number of segments on the all axis (1 by default)
|
|
142
|
+
* * widthSegments sets the number of segments on the x axis (1 by default)
|
|
143
|
+
* * heightSegments sets the number of segments on the y axis (1 by default)
|
|
144
|
+
* * depthSegments sets the number of segments on the z axis (1 by default)
|
|
145
|
+
* @param options.size
|
|
146
|
+
* @param options.width
|
|
147
|
+
* @param options.height
|
|
148
|
+
* @param options.depth
|
|
149
|
+
* @param options.segments
|
|
150
|
+
* @param options.widthSegments
|
|
151
|
+
* @param options.heightSegments
|
|
152
|
+
* @param options.depthSegments
|
|
153
|
+
* @returns the VertexData of the box
|
|
154
|
+
*/
|
|
155
|
+
export function CreateSegmentedBoxVertexData(options) {
|
|
156
|
+
const width = options.width || options.size || 1;
|
|
157
|
+
const height = options.height || options.size || 1;
|
|
158
|
+
const depth = options.depth || options.size || 1;
|
|
159
|
+
const widthSegments = (options.widthSegments || options.segments || 1) | 0;
|
|
160
|
+
const heightSegments = (options.heightSegments || options.segments || 1) | 0;
|
|
161
|
+
const depthSegments = (options.depthSegments || options.segments || 1) | 0;
|
|
162
|
+
const rotationMatrix = new Matrix();
|
|
163
|
+
const translationMatrix = new Matrix();
|
|
164
|
+
const transformMatrix = new Matrix();
|
|
165
|
+
const bottomPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });
|
|
166
|
+
Matrix.TranslationToRef(0, -height / 2, 0, translationMatrix);
|
|
167
|
+
Matrix.RotationZToRef(Math.PI, rotationMatrix);
|
|
168
|
+
rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
|
|
169
|
+
bottomPlane.transform(transformMatrix);
|
|
170
|
+
const topPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });
|
|
171
|
+
Matrix.TranslationToRef(0, height / 2, 0, transformMatrix);
|
|
172
|
+
topPlane.transform(transformMatrix);
|
|
173
|
+
const negXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });
|
|
174
|
+
Matrix.TranslationToRef(-width / 2, 0, 0, translationMatrix);
|
|
175
|
+
Matrix.RotationZToRef(Math.PI / 2, rotationMatrix);
|
|
176
|
+
rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
|
|
177
|
+
negXPlane.transform(transformMatrix);
|
|
178
|
+
const posXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });
|
|
179
|
+
Matrix.TranslationToRef(width / 2, 0, 0, translationMatrix);
|
|
180
|
+
Matrix.RotationZToRef(-Math.PI / 2, rotationMatrix);
|
|
181
|
+
rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
|
|
182
|
+
posXPlane.transform(transformMatrix);
|
|
183
|
+
const negZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });
|
|
184
|
+
Matrix.TranslationToRef(0, 0, -depth / 2, translationMatrix);
|
|
185
|
+
Matrix.RotationXToRef(-Math.PI / 2, rotationMatrix);
|
|
186
|
+
rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
|
|
187
|
+
negZPlane.transform(transformMatrix);
|
|
188
|
+
const posZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });
|
|
189
|
+
Matrix.TranslationToRef(0, 0, depth / 2, translationMatrix);
|
|
190
|
+
Matrix.RotationXToRef(Math.PI / 2, rotationMatrix);
|
|
191
|
+
rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
|
|
192
|
+
posZPlane.transform(transformMatrix);
|
|
193
|
+
// Result
|
|
194
|
+
bottomPlane.merge([topPlane, posXPlane, negXPlane, negZPlane, posZPlane], true);
|
|
195
|
+
return bottomPlane;
|
|
196
|
+
}
|
|
133
197
|
/**
|
|
134
198
|
* Creates a box mesh
|
|
135
199
|
* * The parameter `size` sets the size (float) of each box side (default 1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boxBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/boxBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * faceUV an array of 6 Vector4 elements used to set different images to each box side\r\n * * faceColors an array of 6 Color3 elements used to set different colors to each box side\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n}): VertexData {\r\n const nbFaces = 6;\r\n let indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23];\r\n const normals = [\r\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0,\r\n 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\r\n ];\r\n const uvs = [];\r\n let positions = [];\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const wrap = options.wrap || false;\r\n let topBaseAt = options.topBaseAt === void 0 ? 1 : options.topBaseAt;\r\n let bottomBaseAt = options.bottomBaseAt === void 0 ? 0 : options.bottomBaseAt;\r\n topBaseAt = (topBaseAt + 4) % 4; // places values as 0 to 3\r\n bottomBaseAt = (bottomBaseAt + 4) % 4; // places values as 0 to 3\r\n const topOrder = [2, 0, 3, 1];\r\n const bottomOrder = [2, 0, 1, 3];\r\n let topIndex = topOrder[topBaseAt];\r\n let bottomIndex = bottomOrder[bottomBaseAt];\r\n let basePositions = [\r\n 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1,\r\n 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1,\r\n ];\r\n if (wrap) {\r\n indices = [2, 3, 0, 2, 0, 1, 4, 5, 6, 4, 6, 7, 9, 10, 11, 9, 11, 8, 12, 14, 15, 12, 13, 14];\r\n basePositions = [\r\n -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1,\r\n ];\r\n let topFaceBase: any = [\r\n [1, 1, 1],\r\n [-1, 1, 1],\r\n [-1, 1, -1],\r\n [1, 1, -1],\r\n ];\r\n let bottomFaceBase: any = [\r\n [-1, -1, 1],\r\n [1, -1, 1],\r\n [1, -1, -1],\r\n [-1, -1, -1],\r\n ];\r\n const topFaceOrder: any = [17, 18, 19, 16];\r\n const bottomFaceOrder: any = [22, 23, 20, 21];\r\n while (topIndex > 0) {\r\n topFaceBase.unshift(topFaceBase.pop());\r\n topFaceOrder.unshift(topFaceOrder.pop());\r\n topIndex--;\r\n }\r\n while (bottomIndex > 0) {\r\n bottomFaceBase.unshift(bottomFaceBase.pop());\r\n bottomFaceOrder.unshift(bottomFaceOrder.pop());\r\n bottomIndex--;\r\n }\r\n topFaceBase = topFaceBase.flat();\r\n bottomFaceBase = bottomFaceBase.flat();\r\n basePositions = basePositions.concat(topFaceBase).concat(bottomFaceBase);\r\n indices.push(topFaceOrder[0], topFaceOrder[2], topFaceOrder[3], topFaceOrder[0], topFaceOrder[1], topFaceOrder[2]);\r\n indices.push(bottomFaceOrder[0], bottomFaceOrder[2], bottomFaceOrder[3], bottomFaceOrder[0], bottomFaceOrder[1], bottomFaceOrder[2]);\r\n }\r\n const scaleArray = [width / 2, height / 2, depth / 2];\r\n positions = basePositions.reduce((accumulator: Array<number>, currentValue, currentIndex) => accumulator.concat(currentValue * scaleArray[currentIndex % 3]), []);\r\n\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(6);\r\n const faceColors = options.faceColors;\r\n const colors = [];\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 6; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n // Create each face in turn.\r\n for (let index = 0; index < nbFaces; index++) {\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n if (faceColors) {\r\n for (let c = 0; c < 4; c++) {\r\n colors.push(faceColors[index].r, faceColors[index].g, faceColors[index].b, faceColors[index].a);\r\n }\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a box mesh\r\n * * The parameter `size` sets the size (float) of each box side (default 1)\r\n * * You can set some different box dimensions by using the parameters `width`, `height` and `depth` (all by default have the same value of `size`)\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of 6 Color3 elements) and `faceUV` (an array of 6 Vector4 elements)\r\n * * Please read this tutorial : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#box\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @param options.updatable\r\n * @param scene defines the hosting scene\r\n * @returns the box mesh\r\n */\r\nexport function CreateBox(\r\n name: string,\r\n options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n updatable?: boolean;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const box = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n box._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateBoxVertexData(options);\r\n\r\n vertexData.applyToMesh(box, options.updatable);\r\n\r\n return box;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateBox directly\r\n */\r\nexport const BoxBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateBox,\r\n};\r\n\r\n// Side effects\r\nVertexData.CreateBox = CreateBoxVertexData;\r\n\r\nMesh.CreateBox = (name: string, size: number, scene: Nullable<Scene> = null, updatable?: boolean, sideOrientation?: number): Mesh => {\r\n const options = {\r\n size,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateBox(name, options, scene);\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"boxBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/boxBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Matrix, Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\nimport { CreateGroundVertexData } from \"./groundBuilder\";\r\n\r\n/**\r\n * Creates the VertexData for a box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * faceUV an array of 6 Vector4 elements used to set different images to each box side\r\n * * faceColors an array of 6 Color3 elements used to set different colors to each box side\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n}): VertexData {\r\n const nbFaces = 6;\r\n let indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23];\r\n const normals = [\r\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0,\r\n 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\r\n ];\r\n const uvs = [];\r\n let positions = [];\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const wrap = options.wrap || false;\r\n let topBaseAt = options.topBaseAt === void 0 ? 1 : options.topBaseAt;\r\n let bottomBaseAt = options.bottomBaseAt === void 0 ? 0 : options.bottomBaseAt;\r\n topBaseAt = (topBaseAt + 4) % 4; // places values as 0 to 3\r\n bottomBaseAt = (bottomBaseAt + 4) % 4; // places values as 0 to 3\r\n const topOrder = [2, 0, 3, 1];\r\n const bottomOrder = [2, 0, 1, 3];\r\n let topIndex = topOrder[topBaseAt];\r\n let bottomIndex = bottomOrder[bottomBaseAt];\r\n let basePositions = [\r\n 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1,\r\n 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1,\r\n ];\r\n if (wrap) {\r\n indices = [2, 3, 0, 2, 0, 1, 4, 5, 6, 4, 6, 7, 9, 10, 11, 9, 11, 8, 12, 14, 15, 12, 13, 14];\r\n basePositions = [\r\n -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1,\r\n ];\r\n let topFaceBase: any = [\r\n [1, 1, 1],\r\n [-1, 1, 1],\r\n [-1, 1, -1],\r\n [1, 1, -1],\r\n ];\r\n let bottomFaceBase: any = [\r\n [-1, -1, 1],\r\n [1, -1, 1],\r\n [1, -1, -1],\r\n [-1, -1, -1],\r\n ];\r\n const topFaceOrder: any = [17, 18, 19, 16];\r\n const bottomFaceOrder: any = [22, 23, 20, 21];\r\n while (topIndex > 0) {\r\n topFaceBase.unshift(topFaceBase.pop());\r\n topFaceOrder.unshift(topFaceOrder.pop());\r\n topIndex--;\r\n }\r\n while (bottomIndex > 0) {\r\n bottomFaceBase.unshift(bottomFaceBase.pop());\r\n bottomFaceOrder.unshift(bottomFaceOrder.pop());\r\n bottomIndex--;\r\n }\r\n topFaceBase = topFaceBase.flat();\r\n bottomFaceBase = bottomFaceBase.flat();\r\n basePositions = basePositions.concat(topFaceBase).concat(bottomFaceBase);\r\n indices.push(topFaceOrder[0], topFaceOrder[2], topFaceOrder[3], topFaceOrder[0], topFaceOrder[1], topFaceOrder[2]);\r\n indices.push(bottomFaceOrder[0], bottomFaceOrder[2], bottomFaceOrder[3], bottomFaceOrder[0], bottomFaceOrder[1], bottomFaceOrder[2]);\r\n }\r\n const scaleArray = [width / 2, height / 2, depth / 2];\r\n positions = basePositions.reduce((accumulator: Array<number>, currentValue, currentIndex) => accumulator.concat(currentValue * scaleArray[currentIndex % 3]), []);\r\n\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(6);\r\n const faceColors = options.faceColors;\r\n const colors = [];\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 6; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n // Create each face in turn.\r\n for (let index = 0; index < nbFaces; index++) {\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n if (faceColors) {\r\n for (let c = 0; c < 4; c++) {\r\n colors.push(faceColors[index].r, faceColors[index].g, faceColors[index].b, faceColors[index].a);\r\n }\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates the VertexData for a segmented box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * segments sets the number of segments on the all axis (1 by default)\r\n * * widthSegments sets the number of segments on the x axis (1 by default)\r\n * * heightSegments sets the number of segments on the y axis (1 by default)\r\n * * depthSegments sets the number of segments on the z axis (1 by default)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.segments\r\n * @param options.widthSegments\r\n * @param options.heightSegments\r\n * @param options.depthSegments\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateSegmentedBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n segments?: number;\r\n widthSegments?: number;\r\n heightSegments?: number;\r\n depthSegments?: number;\r\n}): VertexData {\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const widthSegments = (options.widthSegments || options.segments || 1) | 0;\r\n const heightSegments = (options.heightSegments || options.segments || 1) | 0;\r\n const depthSegments = (options.depthSegments || options.segments || 1) | 0;\r\n const rotationMatrix = new Matrix();\r\n const translationMatrix = new Matrix();\r\n const transformMatrix = new Matrix();\r\n\r\n const bottomPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(0, -height / 2, 0, translationMatrix);\r\n Matrix.RotationZToRef(Math.PI, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n bottomPlane.transform(transformMatrix);\r\n\r\n const topPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(0, height / 2, 0, transformMatrix);\r\n topPlane.transform(transformMatrix);\r\n\r\n const negXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(-width / 2, 0, 0, translationMatrix);\r\n Matrix.RotationZToRef(Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n negXPlane.transform(transformMatrix);\r\n\r\n const posXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(width / 2, 0, 0, translationMatrix);\r\n Matrix.RotationZToRef(-Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n posXPlane.transform(transformMatrix);\r\n\r\n const negZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });\r\n Matrix.TranslationToRef(0, 0, -depth / 2, translationMatrix);\r\n Matrix.RotationXToRef(-Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n negZPlane.transform(transformMatrix);\r\n\r\n const posZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });\r\n Matrix.TranslationToRef(0, 0, depth / 2, translationMatrix);\r\n Matrix.RotationXToRef(Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n posZPlane.transform(transformMatrix);\r\n\r\n // Result\r\n bottomPlane.merge([topPlane, posXPlane, negXPlane, negZPlane, posZPlane], true);\r\n\r\n return bottomPlane;\r\n}\r\n\r\n/**\r\n * Creates a box mesh\r\n * * The parameter `size` sets the size (float) of each box side (default 1)\r\n * * You can set some different box dimensions by using the parameters `width`, `height` and `depth` (all by default have the same value of `size`)\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of 6 Color3 elements) and `faceUV` (an array of 6 Vector4 elements)\r\n * * Please read this tutorial : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#box\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @param options.updatable\r\n * @param scene defines the hosting scene\r\n * @returns the box mesh\r\n */\r\nexport function CreateBox(\r\n name: string,\r\n options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n updatable?: boolean;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const box = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n box._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateBoxVertexData(options);\r\n\r\n vertexData.applyToMesh(box, options.updatable);\r\n\r\n return box;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateBox directly\r\n */\r\nexport const BoxBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateBox,\r\n};\r\n\r\n// Side effects\r\nVertexData.CreateBox = CreateBoxVertexData;\r\n\r\nMesh.CreateBox = (name: string, size: number, scene: Nullable<Scene> = null, updatable?: boolean, sideOrientation?: number): Mesh => {\r\n const options = {\r\n size,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateBox(name, options, scene);\r\n};\r\n"]}
|
|
@@ -16,11 +16,11 @@ export function CreateCapsuleVertexData(options = {
|
|
|
16
16
|
radius: 0.25,
|
|
17
17
|
capSubdivisions: 6,
|
|
18
18
|
}) {
|
|
19
|
-
const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1);
|
|
20
|
-
const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3);
|
|
19
|
+
const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1) | 0;
|
|
20
|
+
const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3) | 0;
|
|
21
21
|
const height = Math.max(options.height ? options.height : 1, 0);
|
|
22
22
|
const radius = Math.max(options.radius ? options.radius : 0.25, 0);
|
|
23
|
-
const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1);
|
|
23
|
+
const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1) | 0;
|
|
24
24
|
const radialSegments = tessellation;
|
|
25
25
|
const heightSegments = subdivisions;
|
|
26
26
|
const radiusTop = Math.max(options.radiusTop ? options.radiusTop : radius, 0);
|