@onerjs/core 8.41.5 → 8.41.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animation.d.ts +6 -2
- package/Animations/animation.js +28 -4
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.d.ts +2 -1
- package/Animations/animationGroup.js +3 -2
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animatorAvatar.d.ts +161 -0
- package/Animations/animatorAvatar.js +573 -0
- package/Animations/animatorAvatar.js.map +1 -0
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/AudioV2/webAudio/webAudioSoundSource.d.ts +2 -2
- package/AudioV2/webAudio/webAudioSoundSource.js +12 -2
- package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
- package/Bones/index.d.ts +1 -0
- package/Bones/index.js +1 -0
- package/Bones/index.js.map +1 -1
- package/Bones/skeleton.d.ts +13 -0
- package/Bones/skeleton.functions.d.ts +26 -0
- package/Bones/skeleton.functions.js +91 -0
- package/Bones/skeleton.functions.js.map +1 -0
- package/Bones/skeleton.js +26 -0
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +16 -0
- package/Cameras/Inputs/geospatialCameraPointersInput.js +19 -3
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Limits/geospatialLimits.d.ts +0 -6
- package/Cameras/Limits/geospatialLimits.js +0 -6
- package/Cameras/Limits/geospatialLimits.js.map +1 -1
- package/Cameras/geospatialCamera.d.ts +5 -0
- package/Cameras/geospatialCamera.js +54 -25
- package/Cameras/geospatialCamera.js.map +1 -1
- package/Cameras/geospatialCameraMovement.d.ts +8 -1
- package/Cameras/geospatialCameraMovement.js +29 -8
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +11 -0
- package/Collisions/gpuPicker.js +148 -19
- package/Collisions/gpuPicker.js.map +1 -1
- package/Debug/skeletonViewer.d.ts +4 -8
- package/Debug/skeletonViewer.js +13 -22
- package/Debug/skeletonViewer.js.map +1 -1
- package/Engines/Extensions/engine.multiview.d.ts +2 -0
- package/Engines/Extensions/engine.multiview.js +7 -3
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/abstractEngine.d.ts +2 -2
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -4
- package/Engines/webgpuEngine.js +8 -6
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/frameGraphContext.js +1 -1
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.js +2 -2
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +2 -1
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Layers/effectLayer.js +1 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +3 -4
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/lightingVolume.js +1 -1
- package/Lights/lightingVolume.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +37 -2
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.d.ts +109 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js +210 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +71 -15
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.d.ts +86 -0
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js +161 -0
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js.map +1 -0
- package/Materials/GreasedLine/greasedLinePluginMaterial.js +0 -6
- package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +0 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +0 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +14 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +14 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +20 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +20 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/depthSourceBlock.d.ts +13 -0
- package/Materials/Node/Blocks/Dual/depthSourceBlock.js +13 -0
- package/Materials/Node/Blocks/Dual/depthSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.d.ts +21 -0
- package/Materials/Node/Blocks/Dual/fogBlock.js +21 -0
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +21 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +21 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.d.ts +38 -0
- package/Materials/Node/Blocks/Dual/lightBlock.js +38 -0
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +29 -0
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +29 -0
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.d.ts +5 -0
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +5 -0
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +16 -0
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +16 -0
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.d.ts +16 -0
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +16 -0
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.d.ts +34 -0
- package/Materials/Node/Blocks/Dual/textureBlock.js +34 -0
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +17 -0
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +17 -2
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.d.ts +7 -0
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js +7 -0
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +21 -0
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +21 -0
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.d.ts +10 -0
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +10 -0
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +28 -0
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +28 -0
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +30 -0
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +30 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +4 -0
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +4 -0
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +5 -0
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -0
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +3 -0
- package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -0
- package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.d.ts +6 -0
- package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js +6 -0
- package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.d.ts +16 -0
- package/Materials/Node/Blocks/Input/inputBlock.js +16 -1
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +5 -0
- package/Materials/Node/Blocks/Input/prePassTextureBlock.js +5 -0
- package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +10 -0
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +10 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +23 -0
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +23 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +17 -0
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +17 -0
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +41 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +41 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +21 -0
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +21 -0
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +29 -0
- package/Materials/Node/Blocks/PBR/refractionBlock.js +29 -0
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +14 -0
- package/Materials/Node/Blocks/PBR/sheenBlock.js +14 -0
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +7 -0
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +7 -0
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +23 -0
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +23 -0
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +6 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js +6 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +17 -0
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +17 -0
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +22 -0
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +22 -0
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +13 -0
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +13 -0
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +20 -0
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +20 -0
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +27 -0
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +27 -0
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.d.ts +10 -0
- package/Materials/Node/Blocks/clampBlock.js +10 -0
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.d.ts +10 -0
- package/Materials/Node/Blocks/cloudBlock.js +10 -0
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.d.ts +10 -0
- package/Materials/Node/Blocks/colorMergerBlock.js +10 -0
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.d.ts +14 -0
- package/Materials/Node/Blocks/conditionalBlock.js +14 -0
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.d.ts +10 -0
- package/Materials/Node/Blocks/curveBlock.js +10 -0
- package/Materials/Node/Blocks/curveBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.d.ts +10 -0
- package/Materials/Node/Blocks/customBlock.js +10 -0
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.d.ts +10 -0
- package/Materials/Node/Blocks/debugBlock.js +10 -0
- package/Materials/Node/Blocks/debugBlock.js.map +1 -1
- package/Materials/Node/Blocks/fresnelBlock.d.ts +4 -0
- package/Materials/Node/Blocks/fresnelBlock.js +4 -0
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.d.ts +10 -0
- package/Materials/Node/Blocks/gradientBlock.js +10 -0
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.d.ts +10 -0
- package/Materials/Node/Blocks/loopBlock.js +10 -0
- package/Materials/Node/Blocks/loopBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.d.ts +1 -0
- package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -0
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +10 -0
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js +10 -0
- package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
- package/Materials/Node/Blocks/pannerBlock.d.ts +5 -0
- package/Materials/Node/Blocks/pannerBlock.js +5 -0
- package/Materials/Node/Blocks/pannerBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.d.ts +10 -0
- package/Materials/Node/Blocks/remapBlock.js +10 -0
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.d.ts +1 -0
- package/Materials/Node/Blocks/rotate2dBlock.js +1 -0
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.d.ts +10 -0
- package/Materials/Node/Blocks/transformBlock.js +10 -0
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.d.ts +22 -0
- package/Materials/Node/Blocks/triPlanarBlock.js +22 -0
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.d.ts +10 -0
- package/Materials/Node/Blocks/trigonometryBlock.js +10 -0
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.d.ts +10 -0
- package/Materials/Node/Blocks/vectorMergerBlock.js +10 -0
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.d.ts +5 -0
- package/Materials/Node/Blocks/viewDirectionBlock.js +5 -0
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.d.ts +10 -0
- package/Materials/Node/Blocks/waveBlock.js +10 -0
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +1 -0
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +1 -0
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +13 -0
- package/Materials/Node/nodeMaterial.js +14 -2
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.d.ts +0 -3
- package/Materials/Node/nodeMaterialBlock.js +1 -6
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -2
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +1 -1
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/index.d.ts +2 -0
- package/Materials/index.js +2 -0
- package/Materials/index.js.map +1 -1
- package/Maths/math.constants.d.ts +2 -1
- package/Maths/math.constants.js +3 -2
- package/Maths/math.constants.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.js +0 -3
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
- package/Meshes/Builders/cylinderBuilder.js +1 -2
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/decalBuilder.js +2 -0
- package/Meshes/Builders/decalBuilder.js.map +1 -1
- package/Meshes/Builders/discBuilder.js +0 -1
- package/Meshes/Builders/discBuilder.js.map +1 -1
- package/Meshes/Builders/groundBuilder.d.ts +50 -54
- package/Meshes/Builders/groundBuilder.js +50 -54
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +0 -26
- package/Meshes/Builders/tiledBoxBuilder.js +0 -26
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +0 -25
- package/Meshes/Builders/tiledPlaneBuilder.js +0 -25
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Builders/torusBuilder.d.ts +0 -13
- package/Meshes/Builders/torusBuilder.js +0 -13
- package/Meshes/Builders/torusBuilder.js.map +1 -1
- package/Meshes/Builders/torusKnotBuilder.d.ts +0 -19
- package/Meshes/Builders/torusKnotBuilder.js +0 -19
- package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
- package/Meshes/Compression/dracoDecoder.js.map +1 -1
- package/Meshes/Compression/dracoDecoder.types.d.ts +11 -0
- package/Meshes/Compression/dracoDecoder.types.js.map +1 -1
- package/Meshes/Compression/dracoEncoder.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +0 -2
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +17 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineRibbonMesh.js +0 -8
- package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Matrices/scalingBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Matrices/scalingBlock.js +1 -0
- package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Matrices/translationBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Matrices/translationBlock.js +1 -0
- package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/aggregatorBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/aggregatorBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/latticeBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/latticeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js +1 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/boxBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/discBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/gridBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js +1 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/planeBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/pointListBlock.d.ts +2 -1
- package/Meshes/Node/Blocks/Sources/pointListBlock.js +2 -1
- package/Meshes/Node/Blocks/Sources/pointListBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/sphereBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/Sources/torusBlock.js +2 -0
- package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js +1 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.d.ts +3 -0
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js +3 -0
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +1 -0
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/booleanGeometryBlock.js +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/cleanGeometryBlock.js +1 -0
- package/Meshes/Node/Blocks/cleanGeometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/conditionBlock.js +2 -0
- package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryClampBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/geometryClampBlock.js +1 -0
- package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js +1 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/geometryCurveBlock.js +2 -0
- package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/geometryEaseBlock.js +2 -0
- package/Meshes/Node/Blocks/geometryEaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryInputBlock.d.ts +3 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js +3 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js +1 -0
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/geometryTransformBlock.js +1 -0
- package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +2 -0
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/mappingBlock.js +1 -0
- package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/mathBlock.js +1 -0
- package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/mergeGeometryBlock.js +1 -0
- package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/randomBlock.js +2 -0
- package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.d.ts +1 -0
- package/Meshes/Node/Blocks/subdivideBlock.js +1 -0
- package/Meshes/Node/Blocks/subdivideBlock.js.map +1 -1
- package/Meshes/Node/Interfaces/nodeGeometryTextureData.d.ts +3 -0
- package/Meshes/Node/Interfaces/nodeGeometryTextureData.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +0 -2
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +0 -1
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
- package/Meshes/Node/nodeGeometryBuildState.js +0 -1
- package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
- package/Meshes/WebGL/webGLDataBuffer.d.ts +2 -0
- package/Meshes/WebGL/webGLDataBuffer.js +2 -0
- package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.d.ts +4 -0
- package/Meshes/WebGPU/webgpuDataBuffer.js +4 -0
- package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +1 -0
- package/Meshes/abstractMesh.decalMap.d.ts +1 -0
- package/Meshes/abstractMesh.decalMap.js.map +1 -1
- package/Meshes/abstractMesh.js +1 -6
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg.js +0 -6
- package/Meshes/csg.js.map +1 -1
- package/Meshes/csg2.js +1 -2
- package/Meshes/csg2.js.map +1 -1
- package/Meshes/geodesicMesh.d.ts +26 -0
- package/Meshes/geodesicMesh.js +18 -3
- package/Meshes/geodesicMesh.js.map +1 -1
- package/Meshes/groundMesh.d.ts +1 -0
- package/Meshes/groundMesh.js +1 -0
- package/Meshes/groundMesh.js.map +1 -1
- package/Meshes/index.js +0 -2
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.d.ts +18 -3
- package/Meshes/instancedMesh.js +11 -3
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +291 -204
- package/Meshes/mesh.js +290 -213
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +15 -19
- package/Meshes/mesh.vertexData.js +15 -19
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/meshSimplification.d.ts +0 -1
- package/Meshes/meshSimplification.js +6 -1
- package/Meshes/meshSimplification.js.map +1 -1
- package/Meshes/meshSimplificationSceneComponent.d.ts +2 -0
- package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
- package/Meshes/meshUVSpaceRenderer.d.ts +1 -0
- package/Meshes/meshUVSpaceRenderer.js.map +1 -1
- package/Meshes/polygonMesh.js +4 -0
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.project.d.ts +1 -0
- package/Meshes/subMesh.project.js.map +1 -1
- package/Meshes/thinInstanceMesh.d.ts +5 -0
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/transformNode.d.ts +1 -1
- package/Meshes/transformNode.js +1 -1
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/dataStorage.d.ts +13 -0
- package/Misc/dataStorage.js +25 -0
- package/Misc/dataStorage.js.map +1 -1
- package/Morph/morphTarget.d.ts +9 -5
- package/Morph/morphTarget.js +15 -7
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +3 -1
- package/Morph/morphTargetManager.js +5 -2
- package/Morph/morphTargetManager.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/emitters.functions.js +3 -3
- package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +2 -2
- package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -1
- package/Particles/Node/Blocks/Update/updateNoiseBlock.js +7 -7
- package/Particles/Node/Blocks/Update/updateNoiseBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.js +2 -2
- package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.js +7 -7
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.helper.js +9 -4
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/particle.d.ts +73 -61
- package/Particles/particle.js +106 -91
- package/Particles/particle.js.map +1 -1
- package/Particles/particleSystem.js +5 -5
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.function.js +83 -83
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Particles/thinParticleSystem.js +8 -8
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +89 -3
- package/Physics/v2/Plugins/havokPlugin.js +388 -53
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Probes/reflectionProbe.js +10 -7
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/depthRenderer.js +1 -1
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +3 -1
- package/Rendering/objectRenderer.js +28 -8
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/reflectiveShadowMap.js +1 -1
- package/Rendering/reflectiveShadowMap.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.js +8 -0
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +8 -2
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +8 -2
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +7 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +8 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +22 -4
- package/scene.js +33 -20
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport { BindMorphTargetParameters, PrepareDefinesForMorphTargets } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.tangent.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"uv2\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"uv2Output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"colorOutput\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 input component\r\n */\r\n public get uv2(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 output component\r\n */\r\n public get uv2Output(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color output component\r\n */\r\n public get colorOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n } else {\r\n await Promise.all([\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\" && additionalFilteringInfo(b));\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\" && additionalFilteringInfo(b));\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\" && additionalFilteringInfo(b));\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n if (!this.uv2.isConnected) {\r\n let uv2Input = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv2\" && additionalFilteringInfo(b));\r\n\r\n if (!uv2Input) {\r\n uv2Input = new InputBlock(\"uv2\");\r\n uv2Input.setAsAttribute(\"uv2\");\r\n }\r\n uv2Input.output.connectTo(this.uv2);\r\n }\r\n if (!this.color.isConnected) {\r\n let colorInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"color\" && additionalFilteringInfo(b));\r\n\r\n if (!colorInput) {\r\n colorInput = new InputBlock(\"color\");\r\n colorInput.setAsAttribute(\"color\");\r\n }\r\n colorInput.output.connectTo(this.color);\r\n }\r\n }\r\n\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial, mesh?: AbstractMesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && (morphTargetManager.numMaxInfluencers || morphTargetManager.numInfluencers) !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n public override replaceRepeatableContent(vertexShaderState: NodeMaterialBuildState, defines: NodeMaterialDefines, mesh?: AbstractMesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const supportPositions = manager && manager.supportsPositions;\r\n const supportNormals = manager && manager.supportsNormals;\r\n const supportTangents = manager && manager.supportsTangents;\r\n const supportUVs = manager && manager.supportsUVs;\r\n const supportUV2s = manager && manager.supportsUV2s;\r\n const supportColors = manager && manager.supportsColors;\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `${state._declareLocalVar(\"vertexID\", NodeMaterialBlockConnectionPointTypes.Float)};\\n`;\r\n }\r\n\r\n injectionCode += `#ifdef MORPHTARGETS\\n`;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n const uniformsPrefix = isWebGPU ? \"uniforms.\" : \"\";\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `for (${isWebGPU ? \"var\" : \"int\"} i = 0; i < NUM_MORPH_INFLUENCERS; i++) {\\n`;\r\n injectionCode += `if (${isWebGPU ? \"f32\" : \"float\"}(i) >= ${uniformsPrefix}morphTargetCount) { break; }\\n`;\r\n\r\n injectionCode += `vertexID = ${isWebGPU ? \"f32(vertexInputs.vertexIndex\" : \"float(gl_VertexID\"}) * ${uniformsPrefix}morphTargetTextureInfo.x;\\n`;\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASPOSITIONS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASNORMALS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUVS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (readVector3FromRawSampler(i, vertexID) - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASTANGENTS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUV2s) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv2.associatedVariableName}) * morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUV2S\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportColors) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (readVector4FromRawSampler(i, vertexID) - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n injectionCode += \"}\\n\";\r\n } else {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName}.xy += (uv2_${index} - ${uv2.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (color${index} - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n }\r\n }\r\n injectionCode += `#endif\\n`;\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n state.attributes.push(VertexBuffer.UV2Kind + \"_\" + index);\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n state.attributes.push(VertexBuffer.ColorKind + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetCount\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${state._declareOutput(positionOutput)} = ${position.associatedVariableName};\\n`;\r\n state.compilationString += `#ifdef NORMAL\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = ${normal.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = vec3(0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef TANGENT\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = ${tangent.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV1\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = ${uv.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV2\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = ${uv2.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef VERTEXCOLOR_NME\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = ${color.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport { BindMorphTargetParameters, PrepareDefinesForMorphTargets } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.tangent.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"uv2\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"uv2Output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"colorOutput\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 input component\r\n */\r\n public get uv2(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 output component\r\n */\r\n public get uv2Output(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color output component\r\n */\r\n public get colorOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Initialize the block\r\n * @param state - the build state\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n } else {\r\n await Promise.all([\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Auto configure the block based on the material\r\n * @param material - the node material\r\n * @param additionalFilteringInfo - additional filtering info\r\n */\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\" && additionalFilteringInfo(b));\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\" && additionalFilteringInfo(b));\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\" && additionalFilteringInfo(b));\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n if (!this.uv2.isConnected) {\r\n let uv2Input = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv2\" && additionalFilteringInfo(b));\r\n\r\n if (!uv2Input) {\r\n uv2Input = new InputBlock(\"uv2\");\r\n uv2Input.setAsAttribute(\"uv2\");\r\n }\r\n uv2Input.output.connectTo(this.uv2);\r\n }\r\n if (!this.color.isConnected) {\r\n let colorInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"color\" && additionalFilteringInfo(b));\r\n\r\n if (!colorInput) {\r\n colorInput = new InputBlock(\"color\");\r\n colorInput.setAsAttribute(\"color\");\r\n }\r\n colorInput.output.connectTo(this.color);\r\n }\r\n }\r\n\r\n /**\r\n * Prepare the list of defines\r\n * @param defines - the list of defines\r\n * @param nodeMaterial - the node material\r\n * @param mesh - the mesh\r\n */\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial, mesh?: AbstractMesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && (morphTargetManager.numMaxInfluencers || morphTargetManager.numInfluencers) !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n /**\r\n * Bind data to effect\r\n * @param effect - the effect to bind to\r\n * @param nodeMaterial - the node material\r\n * @param mesh - the mesh\r\n */\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Replace repeatable content\r\n * @param vertexShaderState - the vertex shader build state\r\n * @param defines - the list of defines\r\n * @param mesh - the mesh\r\n */\r\n public override replaceRepeatableContent(vertexShaderState: NodeMaterialBuildState, defines: NodeMaterialDefines, mesh?: AbstractMesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const supportPositions = manager && manager.supportsPositions;\r\n const supportNormals = manager && manager.supportsNormals;\r\n const supportTangents = manager && manager.supportsTangents;\r\n const supportUVs = manager && manager.supportsUVs;\r\n const supportUV2s = manager && manager.supportsUV2s;\r\n const supportColors = manager && manager.supportsColors;\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `${state._declareLocalVar(\"vertexID\", NodeMaterialBlockConnectionPointTypes.Float)};\\n`;\r\n }\r\n\r\n injectionCode += `#ifdef MORPHTARGETS\\n`;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n const uniformsPrefix = isWebGPU ? \"uniforms.\" : \"\";\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `for (${isWebGPU ? \"var\" : \"int\"} i = 0; i < NUM_MORPH_INFLUENCERS; i++) {\\n`;\r\n injectionCode += `if (${isWebGPU ? \"f32\" : \"float\"}(i) >= ${uniformsPrefix}morphTargetCount) { break; }\\n`;\r\n\r\n injectionCode += `vertexID = ${isWebGPU ? \"f32(vertexInputs.vertexIndex\" : \"float(gl_VertexID\"}) * ${uniformsPrefix}morphTargetTextureInfo.x;\\n`;\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASPOSITIONS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASNORMALS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUVS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (readVector3FromRawSampler(i, vertexID) - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASTANGENTS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUV2s) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv2.associatedVariableName}) * morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUV2S\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportColors) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (readVector4FromRawSampler(i, vertexID) - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n injectionCode += \"}\\n\";\r\n } else {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName}.xy += (uv2_${index} - ${uv2.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (color${index} - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n }\r\n }\r\n injectionCode += `#endif\\n`;\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n state.attributes.push(VertexBuffer.UV2Kind + \"_\" + index);\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n state.attributes.push(VertexBuffer.ColorKind + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetCount\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${state._declareOutput(positionOutput)} = ${position.associatedVariableName};\\n`;\r\n state.compilationString += `#ifdef NORMAL\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = ${normal.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = vec3(0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef TANGENT\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = ${tangent.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV1\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = ${uv.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV2\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = ${uv2.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef VERTEXCOLOR_NME\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = ${color.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
|
|
@@ -30,6 +30,16 @@ export declare class ClampBlock extends NodeMaterialBlock {
|
|
|
30
30
|
get output(): NodeMaterialConnectionPoint;
|
|
31
31
|
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
32
32
|
protected _dumpPropertiesCode(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Serializes the block
|
|
35
|
+
* @returns the serialized object
|
|
36
|
+
*/
|
|
33
37
|
serialize(): any;
|
|
38
|
+
/**
|
|
39
|
+
* Deserializes the block
|
|
40
|
+
* @param serializationObject - the serialization object
|
|
41
|
+
* @param scene - the scene
|
|
42
|
+
* @param rootUrl - the root URL
|
|
43
|
+
*/
|
|
34
44
|
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
35
45
|
}
|
|
@@ -55,12 +55,22 @@ export class ClampBlock extends NodeMaterialBlock {
|
|
|
55
55
|
codeString += `${this._codeVariableName}.maximum = ${this.maximum};\n`;
|
|
56
56
|
return codeString;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Serializes the block
|
|
60
|
+
* @returns the serialized object
|
|
61
|
+
*/
|
|
58
62
|
serialize() {
|
|
59
63
|
const serializationObject = super.serialize();
|
|
60
64
|
serializationObject.minimum = this.minimum;
|
|
61
65
|
serializationObject.maximum = this.maximum;
|
|
62
66
|
return serializationObject;
|
|
63
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Deserializes the block
|
|
70
|
+
* @param serializationObject - the serialization object
|
|
71
|
+
* @param scene - the scene
|
|
72
|
+
* @param rootUrl - the root URL
|
|
73
|
+
*/
|
|
64
74
|
_deserialize(serializationObject, scene, rootUrl) {
|
|
65
75
|
super._deserialize(serializationObject, scene, rootUrl);
|
|
66
76
|
this.minimum = serializationObject.minimum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clampBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/clampBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAA0B,MAAM,mCAAmC,CAAC;AAGnG;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IAQ7C;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAZlD,qCAAqC;QAE9B,YAAO,GAAG,GAAG,CAAC;QACrB,qCAAqC;QAE9B,YAAO,GAAG,GAAG,CAAC;QASjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEkB,WAAW,CAAC,KAA6B;QACxD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEhC,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,gCAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvG,KAAK,CAAC,iBAAiB;YACnB,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC5B,YAAY,IAAI,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAEhJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAEkB,mBAAmB;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,cAAc,IAAI,CAAC,OAAO,KAAK,CAAC;QAExG,UAAU,IAAI,GAAG,IAAI,CAAC,iBAAiB,cAAc,IAAI,CAAC,OAAO,KAAK,CAAC;QAEvE,OAAO,UAAU,CAAC;IACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"clampBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/clampBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to clamp a float\r\n */\r\nexport class ClampBlock extends NodeMaterialBlock {\r\n /** Gets or sets the minimum range */\r\n @editableInPropertyPage(\"Minimum\", PropertyTypeForEdition.Float, undefined, { embedded: true })\r\n public minimum = 0.0;\r\n /** Gets or sets the maximum range */\r\n @editableInPropertyPage(\"Maximum\", PropertyTypeForEdition.Float, undefined, { embedded: true })\r\n public maximum = 1.0;\r\n\r\n /**\r\n * Creates a new ClampBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"value\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ClampBlock\";\r\n }\r\n\r\n /**\r\n * Gets the value input component\r\n */\r\n public get value(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n const cast = state.shaderLanguage === ShaderLanguage.WGSL ? state._getShaderType(this.value.type) : \"\";\r\n\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = clamp(${this.value.associatedVariableName}, ${cast}(${this._writeFloat(this.minimum)}), ${cast}(${this._writeFloat(this.maximum)}));\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.minimum = ${this.minimum};\\n`;\r\n\r\n codeString += `${this._codeVariableName}.maximum = ${this.maximum};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Serializes the block\r\n * @returns the serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.minimum = this.minimum;\r\n serializationObject.maximum = this.maximum;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Deserializes the block\r\n * @param serializationObject - the serialization object\r\n * @param scene - the scene\r\n * @param rootUrl - the root URL\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.minimum = serializationObject.minimum;\r\n this.maximum = serializationObject.maximum;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ClampBlock\", ClampBlock);\r\n"]}
|
|
@@ -44,6 +44,16 @@ export declare class CloudBlock extends NodeMaterialBlock {
|
|
|
44
44
|
get output(): NodeMaterialConnectionPoint;
|
|
45
45
|
protected _buildBlock(state: NodeMaterialBuildState): this | undefined;
|
|
46
46
|
protected _dumpPropertiesCode(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Serializes the block
|
|
49
|
+
* @returns the serialized object
|
|
50
|
+
*/
|
|
47
51
|
serialize(): any;
|
|
52
|
+
/**
|
|
53
|
+
* Deserializes the block
|
|
54
|
+
* @param serializationObject - the serialization object
|
|
55
|
+
* @param scene - the scene
|
|
56
|
+
* @param rootUrl - the root URL
|
|
57
|
+
*/
|
|
48
58
|
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
49
59
|
}
|
|
@@ -183,11 +183,21 @@ export class CloudBlock extends NodeMaterialBlock {
|
|
|
183
183
|
const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\n`;
|
|
184
184
|
return codeString;
|
|
185
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Serializes the block
|
|
188
|
+
* @returns the serialized object
|
|
189
|
+
*/
|
|
186
190
|
serialize() {
|
|
187
191
|
const serializationObject = super.serialize();
|
|
188
192
|
serializationObject.octaves = this.octaves;
|
|
189
193
|
return serializationObject;
|
|
190
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Deserializes the block
|
|
197
|
+
* @param serializationObject - the serialization object
|
|
198
|
+
* @param scene - the scene
|
|
199
|
+
* @param rootUrl - the root URL
|
|
200
|
+
*/
|
|
191
201
|
_deserialize(serializationObject, scene, rootUrl) {
|
|
192
202
|
super._deserialize(serializationObject, scene, rootUrl);
|
|
193
203
|
this.octaves = serializationObject.octaves;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/cloudBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { ShaderLanguage } from \"../../../Materials/shaderLanguage\";\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int, undefined, { embedded: true })\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"chaos\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._linkConnectionTypes(0, 1);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"CloudBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the chaos input component\r\n */\r\n public get chaos(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `\r\n\r\n float cloudRandom(float p) { \r\n float temp = fract(p * 0.011); \r\n temp *= temp + 7.5; \r\n temp *= temp + temp; \r\n return fract(temp); \r\n }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise2(vec2 x, vec2 chaos) {\r\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\r\n\r\n vec2 i = floor(x);\r\n vec2 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n return mix(\r\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\r\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\r\n u.y\r\n );\r\n }\r\n\r\n float cloudNoise3(vec3 x, vec3 chaos) {\r\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm2(vec2 st, vec2 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n vec2 tempST = st;\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise2(tempST, chaos);\r\n tempST *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm3(vec3 x, vec3 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n vec3 tempX = x;\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise3(tempX, chaos);\r\n tempX = tempX * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n functionString = state._babylonSLtoWGSL(functionString);\r\n fractalBrownianString = state._babylonSLtoWGSL(fractalBrownianString);\r\n }\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction(\"CloudBlockCode\", functionString, \"// CloudBlockCode\");\r\n state._emitFunction(\r\n \"CloudBlockCodeFBM\" + this.octaves,\r\n fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()),\r\n \"// CloudBlockCode FBM\"\r\n );\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type || NodeMaterialBlockConnectionPointTypes.Vector3;\r\n\r\n state.compilationString += `${state._declareLocalVar(localVariable, seedType)} = ${this.seed.associatedVariableName};\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === NodeMaterialBlockConnectionPointTypes.Vector3) {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\n`;\r\n }\r\n\r\n let chaosValue = \"\";\r\n if (this.chaos.isConnected) {\r\n chaosValue = this.chaos.associatedVariableName;\r\n } else {\r\n const addF = state.fSuffix;\r\n chaosValue = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? `vec2${addF}(0., 0.)` : `vec3${addF}(0., 0., 0.)`;\r\n }\r\n\r\n state.compilationString +=\r\n state._declareOutput(this._outputs[0]) +\r\n ` = ${fbmNewName}${this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"2\" : \"3\"}(${localVariable}, ${chaosValue});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\n`;\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/cloudBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { ShaderLanguage } from \"../../../Materials/shaderLanguage\";\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int, undefined, { embedded: true })\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"chaos\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._linkConnectionTypes(0, 1);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"CloudBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the chaos input component\r\n */\r\n public get chaos(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `\r\n\r\n float cloudRandom(float p) { \r\n float temp = fract(p * 0.011); \r\n temp *= temp + 7.5; \r\n temp *= temp + temp; \r\n return fract(temp); \r\n }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise2(vec2 x, vec2 chaos) {\r\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\r\n\r\n vec2 i = floor(x);\r\n vec2 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n return mix(\r\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\r\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\r\n u.y\r\n );\r\n }\r\n\r\n float cloudNoise3(vec3 x, vec3 chaos) {\r\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm2(vec2 st, vec2 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n vec2 tempST = st;\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise2(tempST, chaos);\r\n tempST *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm3(vec3 x, vec3 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n vec3 tempX = x;\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise3(tempX, chaos);\r\n tempX = tempX * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n functionString = state._babylonSLtoWGSL(functionString);\r\n fractalBrownianString = state._babylonSLtoWGSL(fractalBrownianString);\r\n }\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction(\"CloudBlockCode\", functionString, \"// CloudBlockCode\");\r\n state._emitFunction(\r\n \"CloudBlockCodeFBM\" + this.octaves,\r\n fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()),\r\n \"// CloudBlockCode FBM\"\r\n );\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type || NodeMaterialBlockConnectionPointTypes.Vector3;\r\n\r\n state.compilationString += `${state._declareLocalVar(localVariable, seedType)} = ${this.seed.associatedVariableName};\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === NodeMaterialBlockConnectionPointTypes.Vector3) {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\n`;\r\n }\r\n\r\n let chaosValue = \"\";\r\n if (this.chaos.isConnected) {\r\n chaosValue = this.chaos.associatedVariableName;\r\n } else {\r\n const addF = state.fSuffix;\r\n chaosValue = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? `vec2${addF}(0., 0.)` : `vec3${addF}(0., 0., 0.)`;\r\n }\r\n\r\n state.compilationString +=\r\n state._declareOutput(this._outputs[0]) +\r\n ` = ${fbmNewName}${this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"2\" : \"3\"}(${localVariable}, ${chaosValue});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\n`;\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Serializes the block\r\n * @returns the serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Deserializes the block\r\n * @param serializationObject - the serialization object\r\n * @param scene - the scene\r\n * @param rootUrl - the root URL\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
|
|
@@ -69,7 +69,17 @@ export declare class ColorMergerBlock extends NodeMaterialBlock {
|
|
|
69
69
|
protected _outputRename(name: string): string;
|
|
70
70
|
private _buildSwizzle;
|
|
71
71
|
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
72
|
+
/**
|
|
73
|
+
* Serializes the block
|
|
74
|
+
* @returns the serialized object
|
|
75
|
+
*/
|
|
72
76
|
serialize(): any;
|
|
77
|
+
/**
|
|
78
|
+
* Deserializes the block
|
|
79
|
+
* @param serializationObject - the serialization object
|
|
80
|
+
* @param scene - the scene
|
|
81
|
+
* @param rootUrl - the root URL
|
|
82
|
+
*/
|
|
73
83
|
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
74
84
|
protected _dumpPropertiesCode(): string;
|
|
75
85
|
}
|
|
@@ -143,6 +143,10 @@ export class ColorMergerBlock extends NodeMaterialBlock {
|
|
|
143
143
|
}
|
|
144
144
|
return this;
|
|
145
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Serializes the block
|
|
148
|
+
* @returns the serialized object
|
|
149
|
+
*/
|
|
146
150
|
serialize() {
|
|
147
151
|
const serializationObject = super.serialize();
|
|
148
152
|
serializationObject.rSwizzle = this.rSwizzle;
|
|
@@ -151,6 +155,12 @@ export class ColorMergerBlock extends NodeMaterialBlock {
|
|
|
151
155
|
serializationObject.aSwizzle = this.aSwizzle;
|
|
152
156
|
return serializationObject;
|
|
153
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Deserializes the block
|
|
160
|
+
* @param serializationObject - the serialization object
|
|
161
|
+
* @param scene - the scene
|
|
162
|
+
* @param rootUrl - the root URL
|
|
163
|
+
*/
|
|
154
164
|
_deserialize(serializationObject, scene, rootUrl) {
|
|
155
165
|
super._deserialize(serializationObject, scene, rootUrl);
|
|
156
166
|
this.rSwizzle = serializationObject.rSwizzle ?? "r";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the swizzle for r (meaning which component to affect to the output.r)\r\n */\r\n public rSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"r\";\r\n /**\r\n * Gets or sets the swizzle for g (meaning which component to affect to the output.g)\r\n */\r\n public gSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"g\";\r\n /**\r\n * Gets or sets the swizzle for b (meaning which component to affect to the output.b)\r\n */\r\n public bSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"b\";\r\n /**\r\n * Gets or sets the swizzle for a (meaning which component to affect to the output.a)\r\n */\r\n public aSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"a\";\r\n\r\n /**\r\n * Create a new ColorMergerBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected override _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n protected override _outputRename(name: string) {\r\n if (name === \"rgb\") {\r\n return \"rgbOut\";\r\n }\r\n return name;\r\n }\r\n\r\n private _buildSwizzle(len: number) {\r\n const swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;\r\n return \".\" + swizzle.substring(0, len);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rInput = this.r;\r\n const gInput = this.g;\r\n const bInput = this.b;\r\n const aInput = this.a;\r\n const rgbInput = this.rgbIn;\r\n\r\n const color4Output = this._outputs[0];\r\n const color3Output = this._outputs[1];\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n const vec3 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color4Output) +\r\n ` = ${vec4}(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += state._declareOutput(color3Output) + ` = ${rgbInput.associatedVariableName}${this._buildSwizzle(3)};\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color4Output) +\r\n ` = ${vec4}(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${\r\n bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"\r\n }, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color3Output) +\r\n ` = ${vec3}(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${\r\n bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"\r\n })${this._buildSwizzle(3)};\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.rSwizzle = this.rSwizzle;\r\n serializationObject.gSwizzle = this.gSwizzle;\r\n serializationObject.bSwizzle = this.bSwizzle;\r\n serializationObject.aSwizzle = this.aSwizzle;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.rSwizzle = serializationObject.rSwizzle ?? \"r\";\r\n this.gSwizzle = serializationObject.gSwizzle ?? \"g\";\r\n this.bSwizzle = serializationObject.bSwizzle ?? \"b\";\r\n this.aSwizzle = serializationObject.aSwizzle ?? \"a\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.rSwizzle = \"${this.rSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.gSwizzle = \"${this.gSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.bSwizzle = \"${this.bSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.aSwizzle = \"${this.aSwizzle}\";\\n`;\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the swizzle for r (meaning which component to affect to the output.r)\r\n */\r\n public rSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"r\";\r\n /**\r\n * Gets or sets the swizzle for g (meaning which component to affect to the output.g)\r\n */\r\n public gSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"g\";\r\n /**\r\n * Gets or sets the swizzle for b (meaning which component to affect to the output.b)\r\n */\r\n public bSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"b\";\r\n /**\r\n * Gets or sets the swizzle for a (meaning which component to affect to the output.a)\r\n */\r\n public aSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"a\";\r\n\r\n /**\r\n * Create a new ColorMergerBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected override _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n protected override _outputRename(name: string) {\r\n if (name === \"rgb\") {\r\n return \"rgbOut\";\r\n }\r\n return name;\r\n }\r\n\r\n private _buildSwizzle(len: number) {\r\n const swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;\r\n return \".\" + swizzle.substring(0, len);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rInput = this.r;\r\n const gInput = this.g;\r\n const bInput = this.b;\r\n const aInput = this.a;\r\n const rgbInput = this.rgbIn;\r\n\r\n const color4Output = this._outputs[0];\r\n const color3Output = this._outputs[1];\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n const vec3 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color4Output) +\r\n ` = ${vec4}(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += state._declareOutput(color3Output) + ` = ${rgbInput.associatedVariableName}${this._buildSwizzle(3)};\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color4Output) +\r\n ` = ${vec4}(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${\r\n bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"\r\n }, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString +=\r\n state._declareOutput(color3Output) +\r\n ` = ${vec3}(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${\r\n bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"\r\n })${this._buildSwizzle(3)};\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Serializes the block\r\n * @returns the serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.rSwizzle = this.rSwizzle;\r\n serializationObject.gSwizzle = this.gSwizzle;\r\n serializationObject.bSwizzle = this.bSwizzle;\r\n serializationObject.aSwizzle = this.aSwizzle;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Deserializes the block\r\n * @param serializationObject - the serialization object\r\n * @param scene - the scene\r\n * @param rootUrl - the root URL\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.rSwizzle = serializationObject.rSwizzle ?? \"r\";\r\n this.gSwizzle = serializationObject.gSwizzle ?? \"g\";\r\n this.bSwizzle = serializationObject.bSwizzle ?? \"b\";\r\n this.aSwizzle = serializationObject.aSwizzle ?? \"a\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.rSwizzle = \"${this.rSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.gSwizzle = \"${this.gSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.bSwizzle = \"${this.bSwizzle}\";\\n`;\r\n codeString += `${this._codeVariableName}.aSwizzle = \"${this.aSwizzle}\";\\n`;\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);\r\n"]}
|
|
@@ -65,9 +65,23 @@ export declare class ConditionalBlock extends NodeMaterialBlock {
|
|
|
65
65
|
* Gets the output component
|
|
66
66
|
*/
|
|
67
67
|
get output(): NodeMaterialConnectionPoint;
|
|
68
|
+
/**
|
|
69
|
+
* Auto configure the block based on the material
|
|
70
|
+
* @param nodeMaterial - the node material
|
|
71
|
+
*/
|
|
68
72
|
autoConfigure(nodeMaterial: NodeMaterial): void;
|
|
69
73
|
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
74
|
+
/**
|
|
75
|
+
* Serializes the block
|
|
76
|
+
* @returns the serialized object
|
|
77
|
+
*/
|
|
70
78
|
serialize(): any;
|
|
79
|
+
/**
|
|
80
|
+
* Deserializes the block
|
|
81
|
+
* @param serializationObject - the serialization object
|
|
82
|
+
* @param scene - the scene
|
|
83
|
+
* @param rootUrl - the root URL
|
|
84
|
+
*/
|
|
71
85
|
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
72
86
|
protected _dumpPropertiesCode(): string;
|
|
73
87
|
}
|
|
@@ -90,6 +90,10 @@ export class ConditionalBlock extends NodeMaterialBlock {
|
|
|
90
90
|
get output() {
|
|
91
91
|
return this._outputs[0];
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Auto configure the block based on the material
|
|
95
|
+
* @param nodeMaterial - the node material
|
|
96
|
+
*/
|
|
93
97
|
autoConfigure(nodeMaterial) {
|
|
94
98
|
if (!this.true.isConnected) {
|
|
95
99
|
const minInput = nodeMaterial.getBlockByPredicate((b) => b.isInput && b.value === 1 && b.name === "True") || new InputBlock("True");
|
|
@@ -165,11 +169,21 @@ export class ConditionalBlock extends NodeMaterialBlock {
|
|
|
165
169
|
}
|
|
166
170
|
return this;
|
|
167
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Serializes the block
|
|
174
|
+
* @returns the serialized object
|
|
175
|
+
*/
|
|
168
176
|
serialize() {
|
|
169
177
|
const serializationObject = super.serialize();
|
|
170
178
|
serializationObject.condition = this.condition;
|
|
171
179
|
return serializationObject;
|
|
172
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Deserializes the block
|
|
183
|
+
* @param serializationObject - the serialization object
|
|
184
|
+
* @param scene - the scene
|
|
185
|
+
* @param rootUrl - the root URL
|
|
186
|
+
*/
|
|
173
187
|
_deserialize(serializationObject, scene, rootUrl) {
|
|
174
188
|
super._deserialize(serializationObject, scene, rootUrl);
|
|
175
189
|
this.condition = serializationObject.condition;
|