@babylonjs/core 7.5.0 → 7.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/Audio/sound.js +3 -0
  2. package/Audio/sound.js.map +1 -1
  3. package/Bones/bone.js +1 -1
  4. package/Bones/bone.js.map +1 -1
  5. package/Buffers/storageBuffer.d.ts +2 -2
  6. package/Buffers/storageBuffer.js.map +1 -1
  7. package/Cameras/arcRotateCamera.js +3 -0
  8. package/Cameras/arcRotateCamera.js.map +1 -1
  9. package/Cameras/camera.js +1 -1
  10. package/Cameras/camera.js.map +1 -1
  11. package/Cameras/flyCamera.js +3 -0
  12. package/Cameras/flyCamera.js.map +1 -1
  13. package/Cameras/followCamera.js +4 -0
  14. package/Cameras/followCamera.js.map +1 -1
  15. package/Cameras/freeCamera.js +3 -0
  16. package/Cameras/freeCamera.js.map +1 -1
  17. package/Engines/Extensions/index.d.ts +0 -3
  18. package/Engines/Extensions/index.js +0 -3
  19. package/Engines/Extensions/index.js.map +1 -1
  20. package/Engines/WebGPU/Extensions/index.d.ts +0 -3
  21. package/Engines/WebGPU/Extensions/index.js +0 -3
  22. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  23. package/Engines/abstractEngine.d.ts +0 -51
  24. package/Engines/abstractEngine.js +7 -3
  25. package/Engines/abstractEngine.js.map +1 -1
  26. package/Engines/engine.js +5 -2
  27. package/Engines/engine.js.map +1 -1
  28. package/Engines/nativeEngine.js +2 -2
  29. package/Engines/nativeEngine.js.map +1 -1
  30. package/Engines/thinEngine.functions.d.ts +0 -10
  31. package/Engines/thinEngine.functions.js +0 -19
  32. package/Engines/thinEngine.functions.js.map +1 -1
  33. package/Engines/thinEngine.js +18 -1
  34. package/Engines/thinEngine.js.map +1 -1
  35. package/Engines/webgpuEngine.d.ts +54 -2
  36. package/Engines/webgpuEngine.js +147 -0
  37. package/Engines/webgpuEngine.js.map +1 -1
  38. package/Inputs/scene.inputManager.d.ts +1 -0
  39. package/Inputs/scene.inputManager.js +1 -0
  40. package/Inputs/scene.inputManager.js.map +1 -1
  41. package/Lights/directionalLight.js +3 -0
  42. package/Lights/directionalLight.js.map +1 -1
  43. package/Lights/hemisphericLight.js +3 -0
  44. package/Lights/hemisphericLight.js.map +1 -1
  45. package/Lights/light.js +1 -1
  46. package/Lights/light.js.map +1 -1
  47. package/Lights/pointLight.js +3 -0
  48. package/Lights/pointLight.js.map +1 -1
  49. package/Lights/spotLight.js +3 -0
  50. package/Lights/spotLight.js.map +1 -1
  51. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +1 -1
  52. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  53. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +1 -1
  54. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  55. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +1 -1
  56. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  57. package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +1 -1
  58. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +9 -3
  59. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  60. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +1 -1
  61. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  62. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +1 -1
  63. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  64. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +2 -2
  65. package/Materials/Node/Blocks/Dual/textureBlock.js +13 -3
  66. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  67. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +1 -1
  68. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  69. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +1 -1
  70. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  71. package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +1 -1
  72. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  73. package/Materials/Node/Blocks/Fragment/shadowMapBlock.d.ts +1 -1
  74. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  75. package/Materials/Node/Blocks/Input/animatedInputBlockTypes.d.ts +2 -1
  76. package/Materials/Node/Blocks/Input/animatedInputBlockTypes.js +1 -0
  77. package/Materials/Node/Blocks/Input/animatedInputBlockTypes.js.map +1 -1
  78. package/Materials/Node/Blocks/Input/inputBlock.d.ts +1 -1
  79. package/Materials/Node/Blocks/Input/inputBlock.js +16 -0
  80. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  81. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +1 -1
  82. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  83. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -1
  84. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  85. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  86. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  87. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -1
  88. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  89. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +1 -1
  90. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  91. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +1 -1
  92. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  93. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -1
  94. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  95. package/Materials/Node/Blocks/baseMathBlock.js +2 -4
  96. package/Materials/Node/Blocks/baseMathBlock.js.map +1 -1
  97. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -1
  98. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  99. package/Materials/Node/Blocks/trigonometryBlock.d.ts +3 -1
  100. package/Materials/Node/Blocks/trigonometryBlock.js +6 -0
  101. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  102. package/Materials/Node/nodeMaterial.d.ts +6 -3
  103. package/Materials/Node/nodeMaterial.js +9 -6
  104. package/Materials/Node/nodeMaterial.js.map +1 -1
  105. package/Materials/Node/nodeMaterialBlock.d.ts +1 -1
  106. package/Materials/Node/nodeMaterialBlock.js +1 -1
  107. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  108. package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +34 -14
  109. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +87 -9
  110. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  111. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  112. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  113. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
  114. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  115. package/Materials/Textures/htmlElementTexture.d.ts +0 -1
  116. package/Materials/Textures/htmlElementTexture.js +7 -2
  117. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  118. package/Materials/Textures/videoTexture.js +4 -2
  119. package/Materials/Textures/videoTexture.js.map +1 -1
  120. package/Materials/effect.functions.d.ts +1 -1
  121. package/Materials/effect.functions.js +4 -4
  122. package/Materials/effect.functions.js.map +1 -1
  123. package/Materials/effect.js +1 -1
  124. package/Materials/effect.js.map +1 -1
  125. package/Materials/effect.webgl.functions.js +2 -2
  126. package/Materials/effect.webgl.functions.js.map +1 -1
  127. package/Materials/imageProcessingConfiguration.js +3 -0
  128. package/Materials/imageProcessingConfiguration.js.map +1 -1
  129. package/Materials/materialPluginBase.js +3 -0
  130. package/Materials/materialPluginBase.js.map +1 -1
  131. package/Materials/shaderMaterial.js +18 -8
  132. package/Materials/shaderMaterial.js.map +1 -1
  133. package/Maths/math.color.d.ts +85 -82
  134. package/Maths/math.color.js +34 -27
  135. package/Maths/math.color.js.map +1 -1
  136. package/Maths/math.vector.d.ts +202 -202
  137. package/Maths/math.vector.js +133 -130
  138. package/Maths/math.vector.js.map +1 -1
  139. package/Maths/tensor.d.ts +44 -42
  140. package/Maths/tensor.js.map +1 -1
  141. package/Meshes/Compression/dracoCompression.d.ts +7 -0
  142. package/Meshes/Compression/dracoCompression.js +14 -0
  143. package/Meshes/Compression/dracoCompression.js.map +1 -1
  144. package/Meshes/instancedMesh.js +3 -0
  145. package/Meshes/instancedMesh.js.map +1 -1
  146. package/Meshes/transformNode.js +1 -1
  147. package/Meshes/transformNode.js.map +1 -1
  148. package/Misc/dumpTools.js +11 -0
  149. package/Misc/dumpTools.js.map +1 -1
  150. package/Misc/fileTools.d.ts +9 -9
  151. package/Misc/fileTools.js +17 -15
  152. package/Misc/fileTools.js.map +1 -1
  153. package/Misc/tools.d.ts +5 -0
  154. package/Misc/tools.js +9 -0
  155. package/Misc/tools.js.map +1 -1
  156. package/Misc/typeStore.d.ts +4 -0
  157. package/Misc/typeStore.js +11 -0
  158. package/Misc/typeStore.js.map +1 -1
  159. package/NOTICE.md +8 -0
  160. package/Particles/baseParticleSystem.js +3 -0
  161. package/Particles/baseParticleSystem.js.map +1 -1
  162. package/Particles/computeShaderParticleSystem.d.ts +2 -2
  163. package/Particles/computeShaderParticleSystem.js.map +1 -1
  164. package/Physics/v1/Plugins/ammoJSPlugin.js +39 -10
  165. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  166. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +3 -0
  167. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  168. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +4 -0
  169. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  170. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +7 -0
  171. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +40 -20
  172. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  173. package/Rendering/prePassRenderer.js +3 -0
  174. package/Rendering/prePassRenderer.js.map +1 -1
  175. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +8 -0
  176. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  177. package/Shaders/fluidRenderingRender.fragment.js +11 -2
  178. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  179. package/Shaders/screenSpaceReflection2.fragment.js +7 -1
  180. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  181. package/Shaders/sprites.fragment.d.ts +2 -0
  182. package/Shaders/sprites.fragment.js +8 -1
  183. package/Shaders/sprites.fragment.js.map +1 -1
  184. package/Shaders/sprites.vertex.d.ts +2 -0
  185. package/Shaders/sprites.vertex.js +4 -0
  186. package/Shaders/sprites.vertex.js.map +1 -1
  187. package/Shaders/ssao2.fragment.js +1 -1
  188. package/Shaders/ssao2.fragment.js.map +1 -1
  189. package/Sprites/spriteManager.d.ts +3 -0
  190. package/Sprites/spriteManager.js +11 -0
  191. package/Sprites/spriteManager.js.map +1 -1
  192. package/Sprites/spriteRenderer.d.ts +11 -3
  193. package/Sprites/spriteRenderer.js +49 -32
  194. package/Sprites/spriteRenderer.js.map +1 -1
  195. package/XR/features/WebXRNearInteraction.d.ts +6 -0
  196. package/XR/features/WebXRNearInteraction.js +14 -2
  197. package/XR/features/WebXRNearInteraction.js.map +1 -1
  198. package/XR/webXRManagedOutputCanvas.d.ts +2 -0
  199. package/XR/webXRManagedOutputCanvas.js +14 -6
  200. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  201. package/abstractScene.js +3 -0
  202. package/abstractScene.js.map +1 -1
  203. package/assets/glslang/glslang.js +113 -0
  204. package/assets/glslang/glslang.wasm +0 -0
  205. package/assets/twgsl/twgsl.js +53 -0
  206. package/assets/twgsl/twgsl.wasm +0 -0
  207. package/node.d.ts +2 -1
  208. package/node.js +5 -1
  209. package/node.js.map +1 -1
  210. package/package.json +1 -1
  211. package/scene.js +3 -0
  212. package/scene.js.map +1 -1
  213. package/Engines/Extensions/engine.externalTexture.d.ts +0 -18
  214. package/Engines/Extensions/engine.externalTexture.js +0 -10
  215. package/Engines/Extensions/engine.externalTexture.js.map +0 -1
  216. package/Engines/Extensions/engine.storageBuffer.d.ts +0 -39
  217. package/Engines/Extensions/engine.storageBuffer.js +0 -16
  218. package/Engines/Extensions/engine.storageBuffer.js.map +0 -1
  219. package/Engines/Extensions/engine.textureSampler.d.ts +0 -12
  220. package/Engines/Extensions/engine.textureSampler.js +0 -6
  221. package/Engines/Extensions/engine.textureSampler.js.map +0 -1
  222. package/Engines/WebGPU/Extensions/engine.externalTexture.d.ts +0 -28
  223. package/Engines/WebGPU/Extensions/engine.externalTexture.js +0 -18
  224. package/Engines/WebGPU/Extensions/engine.externalTexture.js.map +0 -1
  225. package/Engines/WebGPU/Extensions/engine.storageBuffer.d.ts +0 -50
  226. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +0 -88
  227. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +0 -1
  228. package/Engines/WebGPU/Extensions/engine.textureSampler.d.ts +0 -22
  229. package/Engines/WebGPU/Extensions/engine.textureSampler.js +0 -9
  230. package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"triPlanarBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/triPlanarBlock.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 { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../nodeMaterial\";\r\nimport { NodeMaterial } from \"../nodeMaterial\";\r\nimport type { Effect } from \"../../effect\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Texture } from \"../../Textures/texture\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport \"../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Block used to read a texture with triplanar mapping (see \"boxmap\" in https://iquilezles.org/articles/biplanar/)\r\n */\r\nexport class TriPlanarBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n protected _tempTextureRead: string;\r\n private _samplerName: string;\r\n private _textureInfoName: string;\r\n private _imageSource: Nullable<ImageSourceBlock>;\r\n\r\n /**\r\n * Project the texture(s) for a better fit to a cube\r\n */\r\n @editableInPropertyPage(\"Project as cube\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { notifiers: { update: true } })\r\n public projectAsCube: boolean = false;\r\n\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n if (this.source.isConnected) {\r\n return (this.source.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the textureY associated with the node\r\n */\r\n public get textureY(): Nullable<Texture> {\r\n if (this.sourceY.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the textureZ associated with the node\r\n */\r\n public get textureZ(): Nullable<Texture> {\r\n if (this.sourceZ?.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n protected _getImageSourceBlock(connectionPoint: Nullable<NodeMaterialConnectionPoint>): Nullable<ImageSourceBlock> {\r\n return connectionPoint?.isConnected ? (connectionPoint.connectedPoint!.ownerBlock as ImageSourceBlock) : null;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this texture\r\n */\r\n public get samplerName(): string {\r\n const imageSourceBlock = this._getImageSourceBlock(this.source);\r\n if (imageSourceBlock) {\r\n return imageSourceBlock.samplerName;\r\n }\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Gets the samplerY name associated with this texture\r\n */\r\n public get samplerYName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceY)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets the samplerZ name associated with this texture\r\n */\r\n public get samplerZName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceZ)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block is linked to an ImageSourceBlock\r\n */\r\n public get hasImageSource(): boolean {\r\n return this.source.isConnected;\r\n }\r\n\r\n private _convertToGammaSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public set convertToGammaSpace(value: boolean) {\r\n if (value === this._convertToGammaSpace) {\r\n return;\r\n }\r\n\r\n this._convertToGammaSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToGammaSpace(): boolean {\r\n return this._convertToGammaSpace;\r\n }\r\n\r\n private _convertToLinearSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public set convertToLinearSpace(value: boolean) {\r\n if (value === this._convertToLinearSpace) {\r\n return;\r\n }\r\n\r\n this._convertToLinearSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToLinearSpace(): boolean {\r\n return this._convertToLinearSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if multiplication of texture with level should be disabled\r\n */\r\n public disableLevelMultiplication = false;\r\n\r\n /**\r\n * Create a new TriPlanarBlock\r\n * @param name defines the block name\r\n * @param hideSourceZ defines a boolean indicating that normal Z should not be used (false by default)\r\n */\r\n public constructor(name: string, hideSourceZ = false) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"sharpness\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\r\n \"source\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerInput(\r\n \"sourceY\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceY\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n if (!hideSourceZ) {\r\n this.registerInput(\r\n \"sourceZ\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceZ\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerOutput(\"level\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\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 \"TriPlanarBlock\";\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 sharpness input component\r\n */\r\n public get sharpness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sourceY input component\r\n */\r\n public get sourceY(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the sourceZ input component\r\n */\r\n public get sourceZ(): Nullable<NodeMaterialConnectionPoint> {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\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 output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the level output component\r\n */\r\n public get level(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const toGamma = this.convertToGammaSpace && this.texture && !this.texture.gammaSpace;\r\n const toLinear = this.convertToLinearSpace && this.texture && this.texture.gammaSpace;\r\n\r\n // Not a bug... Name defines the texture space not the required conversion\r\n defines.setValue(this._linearDefineName, toGamma, true);\r\n defines.setValue(this._gammaDefineName, toLinear, true);\r\n }\r\n\r\n public override isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setFloat(this._textureInfoName, this.texture.level);\r\n\r\n if (!this._imageSource) {\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n }\r\n\r\n protected _generateTextureLookup(state: NodeMaterialBuildState): void {\r\n const samplerName = this.samplerName;\r\n const samplerYName = this.samplerYName ?? samplerName;\r\n const samplerZName = this.samplerZName ?? samplerName;\r\n\r\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\r\n\r\n const x = state._getFreeVariableName(\"x\");\r\n const y = state._getFreeVariableName(\"y\");\r\n const z = state._getFreeVariableName(\"z\");\r\n const w = state._getFreeVariableName(\"w\");\r\n const n = state._getFreeVariableName(\"n\");\r\n const uvx = state._getFreeVariableName(\"uvx\");\r\n const uvy = state._getFreeVariableName(\"uvy\");\r\n const uvz = state._getFreeVariableName(\"uvz\");\r\n\r\n state.compilationString += `\r\n vec3 ${n} = ${this.normal.associatedVariableName}.xyz;\r\n\r\n vec2 ${uvx} = ${this.position.associatedVariableName}.yz;\r\n vec2 ${uvy} = ${this.position.associatedVariableName}.zx;\r\n vec2 ${uvz} = ${this.position.associatedVariableName}.xy;\r\n `;\r\n\r\n if (this.projectAsCube) {\r\n state.compilationString += `\r\n ${uvx}.xy = ${uvx}.yx;\r\n\r\n if (${n}.x >= 0.0) {\r\n ${uvx}.x = -${uvx}.x;\r\n }\r\n if (${n}.y < 0.0) {\r\n ${uvy}.y = -${uvy}.y;\r\n }\r\n if (${n}.z < 0.0) {\r\n ${uvz}.x = -${uvz}.x;\r\n }\r\n `;\r\n }\r\n\r\n state.compilationString += `\r\n vec4 ${x} = texture2D(${samplerName}, ${uvx});\r\n vec4 ${y} = texture2D(${samplerYName}, ${uvy});\r\n vec4 ${z} = texture2D(${samplerZName}, ${uvz});\r\n \r\n // blend weights\r\n vec3 ${w} = pow(abs(${n}), vec3(${sharpness}));\r\n\r\n // blend and return\r\n vec4 ${this._tempTextureRead} = (${x}*${w}.x + ${y}*${w}.y + ${z}*${w}.z) / (${w}.x + ${w}.y + ${w}.z); \r\n `;\r\n }\r\n\r\n private _generateConversionCode(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string): void {\r\n if (swizzle !== \"a\") {\r\n // no conversion if the output is \"a\" (alpha)\r\n if (!this.texture || !this.texture.gammaSpace) {\r\n state.compilationString += `#ifdef ${this._linearDefineName}\r\n ${output.associatedVariableName} = toGammaSpace(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\r\n ${output.associatedVariableName} = toLinearSpace(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string) {\r\n let complement = \"\";\r\n\r\n if (!this.disableLevelMultiplication) {\r\n complement = ` * ${this._textureInfoName}`;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle}${complement};\\n`;\r\n this._generateConversionCode(state, output, swizzle);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.source.isConnected) {\r\n this._imageSource = this.source.connectedPoint!.ownerBlock as ImageSourceBlock;\r\n } else {\r\n this._imageSource = null;\r\n }\r\n\r\n this._textureInfoName = state._getFreeVariableName(\"textureInfoName\");\r\n\r\n this.level.associatedVariableName = this._textureInfoName;\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n if (!this._imageSource) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n\r\n state._emit2DSampler(this._samplerName);\r\n }\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitUniformFromString(this._textureInfoName, NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._generateTextureLookup(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints && output.name !== \"level\") {\r\n this._writeOutput(state, output, output.name);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.disableLevelMultiplication = ${this.disableLevelMultiplication};\\n`;\r\n codeString += `${this._codeVariableName}.projectAsCube = ${this.projectAsCube};\\n`;\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\n`;\r\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.disableLevelMultiplication = this.disableLevelMultiplication;\r\n serializationObject.projectAsCube = this.projectAsCube;\r\n if (!this.hasImageSource && this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.disableLevelMultiplication = !!serializationObject.disableLevelMultiplication;\r\n this.projectAsCube = !!serializationObject.projectAsCube;\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TriPlanarBlock\", TriPlanarBlock);\r\n"]}
1
+ {"version":3,"file":"triPlanarBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/triPlanarBlock.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 { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../nodeMaterial\";\r\nimport { NodeMaterial } from \"../nodeMaterial\";\r\nimport type { Effect } from \"../../effect\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Texture } from \"../../Textures/texture\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport \"../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Block used to read a texture with triplanar mapping (see \"boxmap\" in https://iquilezles.org/articles/biplanar/)\r\n */\r\nexport class TriPlanarBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n protected _tempTextureRead: string;\r\n private _samplerName: string;\r\n private _textureInfoName: string;\r\n private _imageSource: Nullable<ImageSourceBlock>;\r\n\r\n /**\r\n * Project the texture(s) for a better fit to a cube\r\n */\r\n @editableInPropertyPage(\"Project as cube\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { notifiers: { update: true } })\r\n public projectAsCube: boolean = false;\r\n\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n if (this.source.isConnected) {\r\n return (this.source.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the textureY associated with the node\r\n */\r\n public get textureY(): Nullable<Texture> {\r\n if (this.sourceY.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the textureZ associated with the node\r\n */\r\n public get textureZ(): Nullable<Texture> {\r\n if (this.sourceZ?.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n protected _getImageSourceBlock(connectionPoint: Nullable<NodeMaterialConnectionPoint>): Nullable<ImageSourceBlock> {\r\n return connectionPoint?.isConnected ? (connectionPoint.connectedPoint!.ownerBlock as ImageSourceBlock) : null;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this texture\r\n */\r\n public get samplerName(): string {\r\n const imageSourceBlock = this._getImageSourceBlock(this.source);\r\n if (imageSourceBlock) {\r\n return imageSourceBlock.samplerName;\r\n }\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Gets the samplerY name associated with this texture\r\n */\r\n public get samplerYName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceY)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets the samplerZ name associated with this texture\r\n */\r\n public get samplerZName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceZ)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block is linked to an ImageSourceBlock\r\n */\r\n public get hasImageSource(): boolean {\r\n return this.source.isConnected;\r\n }\r\n\r\n private _convertToGammaSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public set convertToGammaSpace(value: boolean) {\r\n if (value === this._convertToGammaSpace) {\r\n return;\r\n }\r\n\r\n this._convertToGammaSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToGammaSpace(): boolean {\r\n return this._convertToGammaSpace;\r\n }\r\n\r\n private _convertToLinearSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public set convertToLinearSpace(value: boolean) {\r\n if (value === this._convertToLinearSpace) {\r\n return;\r\n }\r\n\r\n this._convertToLinearSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToLinearSpace(): boolean {\r\n return this._convertToLinearSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if multiplication of texture with level should be disabled\r\n */\r\n public disableLevelMultiplication = false;\r\n\r\n /**\r\n * Create a new TriPlanarBlock\r\n * @param name defines the block name\r\n * @param hideSourceZ defines a boolean indicating that normal Z should not be used (false by default)\r\n */\r\n public constructor(name: string, hideSourceZ = false) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"sharpness\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\r\n \"source\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerInput(\r\n \"sourceY\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceY\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n if (!hideSourceZ) {\r\n this.registerInput(\r\n \"sourceZ\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceZ\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerOutput(\"level\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\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 \"TriPlanarBlock\";\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 sharpness input component\r\n */\r\n public get sharpness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sourceY input component\r\n */\r\n public get sourceY(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the sourceZ input component\r\n */\r\n public get sourceZ(): Nullable<NodeMaterialConnectionPoint> {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\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 output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the level output component\r\n */\r\n public get level(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const toGamma = this.convertToGammaSpace && this.texture && !this.texture.gammaSpace;\r\n const toLinear = this.convertToLinearSpace && this.texture && this.texture.gammaSpace;\r\n\r\n // Not a bug... Name defines the texture space not the required conversion\r\n defines.setValue(this._linearDefineName, toGamma, true);\r\n defines.setValue(this._gammaDefineName, toLinear, true);\r\n }\r\n\r\n public override isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setFloat(this._textureInfoName, this.texture.level);\r\n\r\n if (!this._imageSource) {\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n }\r\n\r\n protected _generateTextureLookup(state: NodeMaterialBuildState): void {\r\n const samplerName = this.samplerName;\r\n const samplerYName = this.samplerYName ?? samplerName;\r\n const samplerZName = this.samplerZName ?? samplerName;\r\n\r\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\r\n\r\n const x = state._getFreeVariableName(\"x\");\r\n const y = state._getFreeVariableName(\"y\");\r\n const z = state._getFreeVariableName(\"z\");\r\n const w = state._getFreeVariableName(\"w\");\r\n const n = state._getFreeVariableName(\"n\");\r\n const uvx = state._getFreeVariableName(\"uvx\");\r\n const uvy = state._getFreeVariableName(\"uvy\");\r\n const uvz = state._getFreeVariableName(\"uvz\");\r\n\r\n state.compilationString += `\r\n vec3 ${n} = ${this.normal.associatedVariableName}.xyz;\r\n\r\n vec2 ${uvx} = ${this.position.associatedVariableName}.yz;\r\n vec2 ${uvy} = ${this.position.associatedVariableName}.zx;\r\n vec2 ${uvz} = ${this.position.associatedVariableName}.xy;\r\n `;\r\n\r\n if (this.projectAsCube) {\r\n state.compilationString += `\r\n ${uvx}.xy = ${uvx}.yx;\r\n\r\n if (${n}.x >= 0.0) {\r\n ${uvx}.x = -${uvx}.x;\r\n }\r\n if (${n}.y < 0.0) {\r\n ${uvy}.y = -${uvy}.y;\r\n }\r\n if (${n}.z < 0.0) {\r\n ${uvz}.x = -${uvz}.x;\r\n }\r\n `;\r\n }\r\n\r\n state.compilationString += `\r\n vec4 ${x} = texture2D(${samplerName}, ${uvx});\r\n vec4 ${y} = texture2D(${samplerYName}, ${uvy});\r\n vec4 ${z} = texture2D(${samplerZName}, ${uvz});\r\n \r\n // blend weights\r\n vec3 ${w} = pow(abs(${n}), vec3(${sharpness}));\r\n\r\n // blend and return\r\n vec4 ${this._tempTextureRead} = (${x}*${w}.x + ${y}*${w}.y + ${z}*${w}.z) / (${w}.x + ${w}.y + ${w}.z); \r\n `;\r\n }\r\n\r\n private _generateConversionCode(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string): void {\r\n if (swizzle !== \"a\") {\r\n // no conversion if the output is \"a\" (alpha)\r\n if (!this.texture || !this.texture.gammaSpace) {\r\n state.compilationString += `#ifdef ${this._linearDefineName}\r\n ${output.associatedVariableName} = toGammaSpace(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\r\n ${output.associatedVariableName} = toLinearSpace(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string) {\r\n let complement = \"\";\r\n\r\n if (!this.disableLevelMultiplication) {\r\n complement = ` * ${this._textureInfoName}`;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle}${complement};\\n`;\r\n this._generateConversionCode(state, output, swizzle);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.source.isConnected) {\r\n this._imageSource = this.source.connectedPoint!.ownerBlock as ImageSourceBlock;\r\n } else {\r\n this._imageSource = null;\r\n }\r\n\r\n this._textureInfoName = state._getFreeVariableName(\"textureInfoName\");\r\n\r\n this.level.associatedVariableName = this._textureInfoName;\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n if (!this._imageSource) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n\r\n state._emit2DSampler(this._samplerName);\r\n }\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitUniformFromString(this._textureInfoName, NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._generateTextureLookup(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints && output.name !== \"level\") {\r\n this._writeOutput(state, output, output.name);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.disableLevelMultiplication = ${this.disableLevelMultiplication};\\n`;\r\n codeString += `${this._codeVariableName}.projectAsCube = ${this.projectAsCube};\\n`;\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\n`;\r\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.disableLevelMultiplication = this.disableLevelMultiplication;\r\n serializationObject.projectAsCube = this.projectAsCube;\r\n if (!this.hasImageSource && this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.disableLevelMultiplication = !!serializationObject.disableLevelMultiplication;\r\n this.projectAsCube = !!serializationObject.projectAsCube;\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TriPlanarBlock\", TriPlanarBlock);\r\n"]}
@@ -41,7 +41,9 @@ export declare enum TrigonometryBlockOperations {
41
41
  /** To radians (from degrees) */
42
42
  Radians = 16,
43
43
  /** To degrees (from radians) */
44
- Degrees = 17
44
+ Degrees = 17,
45
+ /** To Set a = b */
46
+ Set = 18
45
47
  }
46
48
  /**
47
49
  * Block used to apply trigonometry operation to floats
@@ -43,6 +43,8 @@ export var TrigonometryBlockOperations;
43
43
  TrigonometryBlockOperations[TrigonometryBlockOperations["Radians"] = 16] = "Radians";
44
44
  /** To degrees (from radians) */
45
45
  TrigonometryBlockOperations[TrigonometryBlockOperations["Degrees"] = 17] = "Degrees";
46
+ /** To Set a = b */
47
+ TrigonometryBlockOperations[TrigonometryBlockOperations["Set"] = 18] = "Set";
46
48
  })(TrigonometryBlockOperations || (TrigonometryBlockOperations = {}));
47
49
  /**
48
50
  * Block used to apply trigonometry operation to floats
@@ -158,6 +160,10 @@ export class TrigonometryBlock extends NodeMaterialBlock {
158
160
  operation = "degrees";
159
161
  break;
160
162
  }
163
+ case TrigonometryBlockOperations.Set: {
164
+ operation = "";
165
+ break;
166
+ }
161
167
  }
162
168
  state.compilationString += state._declareOutput(output) + ` = ${operation}(${this.input.associatedVariableName});\n`;
163
169
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"trigonometryBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/trigonometryBlock.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\n\r\n/**\r\n * Operations supported by the Trigonometry block\r\n */\r\nexport enum TrigonometryBlockOperations {\r\n /** Cos */\r\n Cos,\r\n /** Sin */\r\n Sin,\r\n /** Abs */\r\n Abs,\r\n /** Exp */\r\n Exp,\r\n /** Exp2 */\r\n Exp2,\r\n /** Round */\r\n Round,\r\n /** Floor */\r\n Floor,\r\n /** Ceiling */\r\n Ceiling,\r\n /** Square root */\r\n Sqrt,\r\n /** Log */\r\n Log,\r\n /** Tangent */\r\n Tan,\r\n /** Arc tangent */\r\n ArcTan,\r\n /** Arc cosinus */\r\n ArcCos,\r\n /** Arc sinus */\r\n ArcSin,\r\n /** Fraction */\r\n Fract,\r\n /** Sign */\r\n Sign,\r\n /** To radians (from degrees) */\r\n Radians,\r\n /** To degrees (from radians) */\r\n Degrees,\r\n}\r\n\r\n/**\r\n * Block used to apply trigonometry operation to floats\r\n */\r\nexport class TrigonometryBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the operation applied by the block\r\n */\r\n public operation = TrigonometryBlockOperations.Cos;\r\n\r\n /**\r\n * Creates a new TrigonometryBlock\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(\"input\", 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 \"TrigonometryBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 let operation = \"\";\r\n\r\n switch (this.operation) {\r\n case TrigonometryBlockOperations.Cos: {\r\n operation = \"cos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sin: {\r\n operation = \"sin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Abs: {\r\n operation = \"abs\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp: {\r\n operation = \"exp\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp2: {\r\n operation = \"exp2\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Round: {\r\n operation = \"round\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Floor: {\r\n operation = \"floor\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Ceiling: {\r\n operation = \"ceil\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sqrt: {\r\n operation = \"sqrt\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Log: {\r\n operation = \"log\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Tan: {\r\n operation = \"tan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcTan: {\r\n operation = \"atan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcCos: {\r\n operation = \"acos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcSin: {\r\n operation = \"asin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Fract: {\r\n operation = \"fract\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sign: {\r\n operation = \"sign\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Radians: {\r\n operation = \"radians\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Degrees: {\r\n operation = \"degrees\";\r\n break;\r\n }\r\n }\r\n\r\n state.compilationString += state._declareOutput(output) + ` = ${operation}(${this.input.associatedVariableName});\\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.operation = this.operation;\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.operation = serializationObject.operation;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.operation = BABYLON.TrigonometryBlockOperations.${TrigonometryBlockOperations[this.operation]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TrigonometryBlock\", TrigonometryBlock);\r\n"]}
1
+ {"version":3,"file":"trigonometryBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/trigonometryBlock.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;AAGxD;;GAEG;AACH,MAAM,CAAN,IAAY,2BAuCX;AAvCD,WAAY,2BAA2B;IACnC,UAAU;IACV,2EAAG,CAAA;IACH,UAAU;IACV,2EAAG,CAAA;IACH,UAAU;IACV,2EAAG,CAAA;IACH,UAAU;IACV,2EAAG,CAAA;IACH,WAAW;IACX,6EAAI,CAAA;IACJ,YAAY;IACZ,+EAAK,CAAA;IACL,YAAY;IACZ,+EAAK,CAAA;IACL,cAAc;IACd,mFAAO,CAAA;IACP,kBAAkB;IAClB,6EAAI,CAAA;IACJ,UAAU;IACV,2EAAG,CAAA;IACH,cAAc;IACd,4EAAG,CAAA;IACH,kBAAkB;IAClB,kFAAM,CAAA;IACN,kBAAkB;IAClB,kFAAM,CAAA;IACN,gBAAgB;IAChB,kFAAM,CAAA;IACN,eAAe;IACf,gFAAK,CAAA;IACL,WAAW;IACX,8EAAI,CAAA;IACJ,gCAAgC;IAChC,oFAAO,CAAA;IACP,gCAAgC;IAChC,oFAAO,CAAA;IACP,mBAAmB;IACnB,4EAAG,CAAA;AACP,CAAC,EAvCW,2BAA2B,KAA3B,2BAA2B,QAuCtC;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAMpD;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAVlD;;WAEG;QACI,cAAS,GAAG,2BAA2B,CAAC,GAAG,CAAC;QAS/C,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,mBAAmB,CAAC;IAC/B,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;QAChC,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,QAAQ,IAAI,CAAC,SAAS,EAAE;YACpB,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,IAAI,CAAC,CAAC;gBACnC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBACpC,SAAS,GAAG,OAAO,CAAC;gBACpB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBACpC,SAAS,GAAG,OAAO,CAAC;gBACpB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBACtC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,IAAI,CAAC,CAAC;gBACnC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,MAAM,CAAC,CAAC;gBACrC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,MAAM,CAAC,CAAC;gBACrC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,MAAM,CAAC,CAAC;gBACrC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBACpC,SAAS,GAAG,OAAO,CAAC;gBACpB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,IAAI,CAAC,CAAC;gBACnC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC;gBACtB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC;gBACtB,MAAM;aACT;YACD,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS,GAAG,EAAE,CAAC;gBACf,MAAM;aACT;SACJ;QAED,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC;QAErH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE/C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB,EAAE,KAAY,EAAE,OAAe;QAChF,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;IACnD,CAAC;IAEkB,mBAAmB;QAClC,MAAM,UAAU,GACZ,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,oDAAoD,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChK,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAED,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","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\n\r\n/**\r\n * Operations supported by the Trigonometry block\r\n */\r\nexport enum TrigonometryBlockOperations {\r\n /** Cos */\r\n Cos,\r\n /** Sin */\r\n Sin,\r\n /** Abs */\r\n Abs,\r\n /** Exp */\r\n Exp,\r\n /** Exp2 */\r\n Exp2,\r\n /** Round */\r\n Round,\r\n /** Floor */\r\n Floor,\r\n /** Ceiling */\r\n Ceiling,\r\n /** Square root */\r\n Sqrt,\r\n /** Log */\r\n Log,\r\n /** Tangent */\r\n Tan,\r\n /** Arc tangent */\r\n ArcTan,\r\n /** Arc cosinus */\r\n ArcCos,\r\n /** Arc sinus */\r\n ArcSin,\r\n /** Fraction */\r\n Fract,\r\n /** Sign */\r\n Sign,\r\n /** To radians (from degrees) */\r\n Radians,\r\n /** To degrees (from radians) */\r\n Degrees,\r\n /** To Set a = b */\r\n Set,\r\n}\r\n\r\n/**\r\n * Block used to apply trigonometry operation to floats\r\n */\r\nexport class TrigonometryBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the operation applied by the block\r\n */\r\n public operation = TrigonometryBlockOperations.Cos;\r\n\r\n /**\r\n * Creates a new TrigonometryBlock\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(\"input\", 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 \"TrigonometryBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 let operation = \"\";\r\n\r\n switch (this.operation) {\r\n case TrigonometryBlockOperations.Cos: {\r\n operation = \"cos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sin: {\r\n operation = \"sin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Abs: {\r\n operation = \"abs\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp: {\r\n operation = \"exp\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp2: {\r\n operation = \"exp2\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Round: {\r\n operation = \"round\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Floor: {\r\n operation = \"floor\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Ceiling: {\r\n operation = \"ceil\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sqrt: {\r\n operation = \"sqrt\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Log: {\r\n operation = \"log\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Tan: {\r\n operation = \"tan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcTan: {\r\n operation = \"atan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcCos: {\r\n operation = \"acos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcSin: {\r\n operation = \"asin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Fract: {\r\n operation = \"fract\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sign: {\r\n operation = \"sign\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Radians: {\r\n operation = \"radians\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Degrees: {\r\n operation = \"degrees\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Set: {\r\n operation = \"\";\r\n break;\r\n }\r\n }\r\n\r\n state.compilationString += state._declareOutput(output) + ` = ${operation}(${this.input.associatedVariableName});\\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.operation = this.operation;\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.operation = serializationObject.operation;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.operation = BABYLON.TrigonometryBlockOperations.${TrigonometryBlockOperations[this.operation]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TrigonometryBlock\", TrigonometryBlock);\r\n"]}
@@ -542,8 +542,9 @@ export declare class NodeMaterial extends PushMaterial {
542
542
  * @param source defines the JSON representation of the material
543
543
  * @param rootUrl defines the root URL to use to load textures and relative dependencies
544
544
  * @param merge defines whether or not the source must be merged or replace the current content
545
+ * @param urlRewriter defines a function used to rewrite urls
545
546
  */
546
- parseSerializedObject(source: any, rootUrl?: string, merge?: boolean): void;
547
+ parseSerializedObject(source: any, rootUrl?: string, merge?: boolean, urlRewriter?: (url: string) => string): void;
547
548
  /**
548
549
  * Clear the current graph and load a new one from a serialization object
549
550
  * @param source defines the JSON representation of the material
@@ -581,9 +582,10 @@ export declare class NodeMaterial extends PushMaterial {
581
582
  * @param rootUrl defines the root URL for nested url in the node material
582
583
  * @param skipBuild defines whether to build the node material
583
584
  * @param targetMaterial defines a material to use instead of creating a new one
585
+ * @param urlRewriter defines a function used to rewrite urls
584
586
  * @returns a promise that will resolve to the new node material
585
587
  */
586
- static ParseFromFileAsync(name: string, url: string, scene: Scene, rootUrl?: string, skipBuild?: boolean, targetMaterial?: NodeMaterial): Promise<NodeMaterial>;
588
+ static ParseFromFileAsync(name: string, url: string, scene: Scene, rootUrl?: string, skipBuild?: boolean, targetMaterial?: NodeMaterial, urlRewriter?: (url: string) => string): Promise<NodeMaterial>;
587
589
  /**
588
590
  * Creates a node material from a snippet saved by the node material editor
589
591
  * @param snippetId defines the snippet to load
@@ -592,9 +594,10 @@ export declare class NodeMaterial extends PushMaterial {
592
594
  * @param nodeMaterial defines a node material to update (instead of creating a new one)
593
595
  * @param skipBuild defines whether to build the node material
594
596
  * @param waitForTextureReadyness defines whether to wait for texture readiness resolving the promise (default: false)
597
+ * @param urlRewriter defines a function used to rewrite urls
595
598
  * @returns a promise that will resolve to the new node material
596
599
  */
597
- static ParseFromSnippetAsync(snippetId: string, scene?: Scene, rootUrl?: string, nodeMaterial?: NodeMaterial, skipBuild?: boolean, waitForTextureReadyness?: boolean): Promise<NodeMaterial>;
600
+ static ParseFromSnippetAsync(snippetId: string, scene?: Scene, rootUrl?: string, nodeMaterial?: NodeMaterial, skipBuild?: boolean, waitForTextureReadyness?: boolean, urlRewriter?: (url: string) => string): Promise<NodeMaterial>;
598
601
  /**
599
602
  * Creates a new node material set to default basic configuration
600
603
  * @param name defines the name of the material
@@ -1649,8 +1649,9 @@ export class NodeMaterial extends PushMaterial {
1649
1649
  * @param source defines the JSON representation of the material
1650
1650
  * @param rootUrl defines the root URL to use to load textures and relative dependencies
1651
1651
  * @param merge defines whether or not the source must be merged or replace the current content
1652
+ * @param urlRewriter defines a function used to rewrite urls
1652
1653
  */
1653
- parseSerializedObject(source, rootUrl = "", merge = false) {
1654
+ parseSerializedObject(source, rootUrl = "", merge = false, urlRewriter) {
1654
1655
  if (!merge) {
1655
1656
  this.clear();
1656
1657
  }
@@ -1660,7 +1661,7 @@ export class NodeMaterial extends PushMaterial {
1660
1661
  const blockType = GetClass(parsedBlock.customType);
1661
1662
  if (blockType) {
1662
1663
  const block = new blockType();
1663
- block._deserialize(parsedBlock, this.getScene(), rootUrl);
1664
+ block._deserialize(parsedBlock, this.getScene(), rootUrl, urlRewriter);
1664
1665
  map[parsedBlock.id] = block;
1665
1666
  this.attachedBlocks.push(block);
1666
1667
  }
@@ -1801,13 +1802,14 @@ export class NodeMaterial extends PushMaterial {
1801
1802
  * @param rootUrl defines the root URL for nested url in the node material
1802
1803
  * @param skipBuild defines whether to build the node material
1803
1804
  * @param targetMaterial defines a material to use instead of creating a new one
1805
+ * @param urlRewriter defines a function used to rewrite urls
1804
1806
  * @returns a promise that will resolve to the new node material
1805
1807
  */
1806
- static async ParseFromFileAsync(name, url, scene, rootUrl = "", skipBuild = false, targetMaterial) {
1808
+ static async ParseFromFileAsync(name, url, scene, rootUrl = "", skipBuild = false, targetMaterial, urlRewriter) {
1807
1809
  const material = targetMaterial ?? new NodeMaterial(name, scene);
1808
1810
  const data = await scene._loadFileAsync(url);
1809
1811
  const serializationObject = JSON.parse(data);
1810
- material.parseSerializedObject(serializationObject, rootUrl);
1812
+ material.parseSerializedObject(serializationObject, rootUrl, undefined, urlRewriter);
1811
1813
  if (!skipBuild) {
1812
1814
  material.build();
1813
1815
  }
@@ -1821,9 +1823,10 @@ export class NodeMaterial extends PushMaterial {
1821
1823
  * @param nodeMaterial defines a node material to update (instead of creating a new one)
1822
1824
  * @param skipBuild defines whether to build the node material
1823
1825
  * @param waitForTextureReadyness defines whether to wait for texture readiness resolving the promise (default: false)
1826
+ * @param urlRewriter defines a function used to rewrite urls
1824
1827
  * @returns a promise that will resolve to the new node material
1825
1828
  */
1826
- static ParseFromSnippetAsync(snippetId, scene = EngineStore.LastCreatedScene, rootUrl = "", nodeMaterial, skipBuild = false, waitForTextureReadyness = false) {
1829
+ static ParseFromSnippetAsync(snippetId, scene = EngineStore.LastCreatedScene, rootUrl = "", nodeMaterial, skipBuild = false, waitForTextureReadyness = false, urlRewriter) {
1827
1830
  if (snippetId === "_BLANK") {
1828
1831
  return Promise.resolve(NodeMaterial.CreateDefault("blank", scene));
1829
1832
  }
@@ -1838,7 +1841,7 @@ export class NodeMaterial extends PushMaterial {
1838
1841
  nodeMaterial = SerializationHelper.Parse(() => new NodeMaterial(snippetId, scene), serializationObject, scene, rootUrl);
1839
1842
  nodeMaterial.uniqueId = scene.getUniqueId();
1840
1843
  }
1841
- nodeMaterial.parseSerializedObject(serializationObject);
1844
+ nodeMaterial.parseSerializedObject(serializationObject, undefined, undefined, urlRewriter);
1842
1845
  nodeMaterial.snippetId = snippetId;
1843
1846
  try {
1844
1847
  if (!skipBuild) {