@babylonjs/core 5.0.0-alpha.48 → 5.0.0-alpha.51

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 (1305) hide show
  1. package/Actions/action.js +5 -5
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/actionManager.js +11 -11
  4. package/Actions/actionManager.js.map +1 -1
  5. package/Actions/condition.js +5 -5
  6. package/Actions/condition.js.map +1 -1
  7. package/Actions/directActions.js +13 -13
  8. package/Actions/directActions.js.map +1 -1
  9. package/Actions/directAudioActions.js +4 -4
  10. package/Actions/directAudioActions.js.map +1 -1
  11. package/Actions/index.js +8 -8
  12. package/Actions/interpolateValueAction.js +8 -8
  13. package/Actions/interpolateValueAction.js.map +1 -1
  14. package/Animations/animatable.js +12 -7
  15. package/Animations/animatable.js.map +1 -1
  16. package/Animations/animation.js +11 -11
  17. package/Animations/animation.js.map +1 -1
  18. package/Animations/animationGroup.js +4 -14
  19. package/Animations/animationGroup.js.map +1 -1
  20. package/Animations/animationPropertiesOverride.js +1 -1
  21. package/Animations/easing.js +1 -1
  22. package/Animations/index.js +12 -12
  23. package/Animations/pathCursor.js +1 -1
  24. package/Animations/runtimeAnimation.js +12 -7
  25. package/Animations/runtimeAnimation.js.map +1 -1
  26. package/Audio/analyser.js +2 -2
  27. package/Audio/audioEngine.js +5 -5
  28. package/Audio/audioEngine.js.map +1 -1
  29. package/Audio/audioSceneComponent.js +9 -9
  30. package/Audio/index.js +8 -8
  31. package/Audio/sound.js +7 -7
  32. package/Audio/sound.js.map +1 -1
  33. package/Audio/soundTrack.js +1 -1
  34. package/Audio/weightedsound.js +1 -1
  35. package/Behaviors/Cameras/autoRotationBehavior.js +2 -2
  36. package/Behaviors/Cameras/bouncingBehavior.js +2 -2
  37. package/Behaviors/Cameras/framingBehavior.js +5 -5
  38. package/Behaviors/Cameras/index.js +3 -3
  39. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  40. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +9 -1
  41. package/Behaviors/Meshes/baseSixDofDragBehavior.js +119 -62
  42. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  43. package/Behaviors/Meshes/followBehavior.js +3 -3
  44. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  45. package/Behaviors/Meshes/index.js +9 -9
  46. package/Behaviors/Meshes/multiPointerScaleBehavior.js +2 -2
  47. package/Behaviors/Meshes/pointerDragBehavior.js +10 -9
  48. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  49. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +4 -0
  50. package/Behaviors/Meshes/sixDofDragBehavior.js +24 -13
  51. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  52. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +2 -2
  53. package/Behaviors/index.js +3 -3
  54. package/Bones/bone.js +4 -4
  55. package/Bones/boneIKController.js +2 -2
  56. package/Bones/boneLookController.js +3 -3
  57. package/Bones/index.js +4 -4
  58. package/Bones/skeleton.js +9 -9
  59. package/Buffers/buffer.js +2 -5
  60. package/Buffers/buffer.js.map +1 -1
  61. package/Buffers/index.js +3 -3
  62. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +5 -5
  63. package/Cameras/Inputs/BaseCameraPointersInput.js +3 -3
  64. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +3 -3
  65. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +4 -4
  66. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +9 -9
  67. package/Cameras/Inputs/arcRotateCameraPointersInput.js +3 -3
  68. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +3 -3
  69. package/Cameras/Inputs/flyCameraKeyboardInput.js +5 -5
  70. package/Cameras/Inputs/flyCameraMouseInput.js +6 -6
  71. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +4 -4
  72. package/Cameras/Inputs/followCameraMouseWheelInput.js +4 -4
  73. package/Cameras/Inputs/followCameraPointersInput.js +3 -3
  74. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +5 -5
  75. package/Cameras/Inputs/freeCameraGamepadInput.js +4 -4
  76. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +5 -5
  77. package/Cameras/Inputs/freeCameraMouseInput.js +5 -5
  78. package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -5
  79. package/Cameras/Inputs/freeCameraTouchInput.js +5 -5
  80. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +4 -4
  81. package/Cameras/Inputs/index.js +19 -19
  82. package/Cameras/RigModes/index.js +4 -4
  83. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  84. package/Cameras/RigModes/stereoscopicRigMode.js +4 -4
  85. package/Cameras/RigModes/vrRigMode.js +6 -6
  86. package/Cameras/RigModes/webVRRigMode.js +2 -2
  87. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +5 -5
  88. package/Cameras/Stereoscopic/anaglyphFreeCamera.js +5 -5
  89. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +5 -5
  90. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +5 -5
  91. package/Cameras/Stereoscopic/index.js +9 -9
  92. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +5 -5
  93. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +5 -5
  94. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +5 -5
  95. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  96. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +29 -16
  97. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  98. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +5 -5
  99. package/Cameras/VR/index.js +6 -6
  100. package/Cameras/VR/vrCameraMetrics.js +1 -1
  101. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +7 -7
  102. package/Cameras/VR/vrDeviceOrientationFreeCamera.js +6 -6
  103. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +6 -6
  104. package/Cameras/VR/vrExperienceHelper.d.ts +0 -3
  105. package/Cameras/VR/vrExperienceHelper.js +52 -39
  106. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  107. package/Cameras/VR/webVRCamera.js +13 -13
  108. package/Cameras/arcRotateCamera.d.ts +10 -0
  109. package/Cameras/arcRotateCamera.js +40 -13
  110. package/Cameras/arcRotateCamera.js.map +1 -1
  111. package/Cameras/arcRotateCameraInputsManager.js +4 -4
  112. package/Cameras/camera.js +15 -15
  113. package/Cameras/camera.js.map +1 -1
  114. package/Cameras/cameraInputsManager.js +3 -3
  115. package/Cameras/deviceOrientationCamera.js +5 -5
  116. package/Cameras/flyCamera.js +6 -6
  117. package/Cameras/flyCameraInputsManager.js +3 -3
  118. package/Cameras/followCamera.js +6 -6
  119. package/Cameras/followCameraInputsManager.js +4 -4
  120. package/Cameras/freeCamera.js +6 -6
  121. package/Cameras/freeCameraInputsManager.js +5 -5
  122. package/Cameras/gamepadCamera.js +3 -3
  123. package/Cameras/index.js +20 -20
  124. package/Cameras/targetCamera.js +5 -5
  125. package/Cameras/touchCamera.js +3 -3
  126. package/Cameras/universalCamera.js +5 -5
  127. package/Cameras/virtualJoysticksCamera.js +4 -4
  128. package/Collisions/collider.js +2 -2
  129. package/Collisions/collisionCoordinator.js +4 -4
  130. package/Collisions/index.js +5 -5
  131. package/Collisions/meshCollisionData.js +1 -1
  132. package/Collisions/pickingInfo.d.ts +12 -2
  133. package/Collisions/pickingInfo.js +13 -4
  134. package/Collisions/pickingInfo.js.map +1 -1
  135. package/Compute/computeEffect.js +8 -8
  136. package/Compute/computeEffect.js.map +1 -1
  137. package/Compute/computeShader.js +8 -8
  138. package/Compute/computeShader.js.map +1 -1
  139. package/Compute/index.js +2 -2
  140. package/Culling/Octrees/index.js +3 -3
  141. package/Culling/Octrees/octree.js +2 -2
  142. package/Culling/Octrees/octreeBlock.js +2 -2
  143. package/Culling/Octrees/octreeSceneComponent.js +6 -6
  144. package/Culling/boundingBox.js +3 -3
  145. package/Culling/boundingInfo.js +4 -4
  146. package/Culling/boundingSphere.js +2 -2
  147. package/Culling/index.js +5 -5
  148. package/Culling/ray.js +6 -6
  149. package/Debug/axesViewer.js +4 -4
  150. package/Debug/boneAxesViewer.js +3 -3
  151. package/Debug/debugLayer.js +4 -4
  152. package/Debug/directionalLightFrustumViewer.js +19 -19
  153. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  154. package/Debug/index.js +8 -8
  155. package/Debug/physicsViewer.js +15 -15
  156. package/Debug/physicsViewer.js.map +1 -1
  157. package/Debug/rayHelper.js +5 -5
  158. package/Debug/rayHelper.js.map +1 -1
  159. package/Debug/skeletonViewer.js +17 -17
  160. package/Debug/skeletonViewer.js.map +1 -1
  161. package/DeviceInput/Helpers/eventFactory.js +2 -2
  162. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +3 -3
  163. package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -5
  164. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  165. package/DeviceInput/InputDevices/deviceSourceManager.js +3 -3
  166. package/DeviceInput/deviceInputSystem.js +2 -2
  167. package/DeviceInput/index.js +8 -8
  168. package/Engines/Extensions/engine.alpha.js +1 -1
  169. package/Engines/Extensions/engine.computeShader.js +1 -1
  170. package/Engines/Extensions/engine.cubeTexture.js +7 -7
  171. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  172. package/Engines/Extensions/engine.debugging.js +1 -1
  173. package/Engines/Extensions/engine.dynamicBuffer.js +1 -1
  174. package/Engines/Extensions/engine.dynamicTexture.js +2 -2
  175. package/Engines/Extensions/engine.externalTexture.js +1 -1
  176. package/Engines/Extensions/engine.multiRender.js +3 -3
  177. package/Engines/Extensions/engine.multiview.js +8 -8
  178. package/Engines/Extensions/engine.query.js +4 -4
  179. package/Engines/Extensions/engine.rawTexture.js +4 -4
  180. package/Engines/Extensions/engine.readTexture.js +1 -1
  181. package/Engines/Extensions/engine.renderTarget.js +5 -5
  182. package/Engines/Extensions/engine.renderTargetCube.js +3 -3
  183. package/Engines/Extensions/engine.storageBuffer.js +1 -1
  184. package/Engines/Extensions/engine.textureSampler.js +1 -1
  185. package/Engines/Extensions/engine.textureSelector.js +1 -1
  186. package/Engines/Extensions/engine.transformFeedback.js +1 -1
  187. package/Engines/Extensions/engine.uniformBuffer.js +2 -2
  188. package/Engines/Extensions/engine.videoTexture.js +1 -1
  189. package/Engines/Extensions/engine.views.js +1 -1
  190. package/Engines/Extensions/engine.webVR.js +7 -7
  191. package/Engines/Extensions/engine.webVR.js.map +1 -1
  192. package/Engines/Extensions/index.js +23 -23
  193. package/Engines/Processors/Expressions/Operators/index.js +4 -4
  194. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js +1 -1
  195. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +1 -1
  196. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js +1 -1
  197. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js +1 -1
  198. package/Engines/Processors/Expressions/index.js +2 -2
  199. package/Engines/Processors/index.js +9 -9
  200. package/Engines/Processors/shaderCodeConditionNode.js +1 -1
  201. package/Engines/Processors/shaderCodeInliner.js +13 -13
  202. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  203. package/Engines/Processors/shaderCodeNode.js +4 -4
  204. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  205. package/Engines/Processors/shaderCodeTestNode.js +1 -1
  206. package/Engines/Processors/shaderProcessor.js +12 -12
  207. package/Engines/Processors/shaderProcessor.js.map +1 -1
  208. package/Engines/WebGL/webGL2ShaderProcessors.js +1 -1
  209. package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
  210. package/Engines/WebGL/webGLShaderProcessors.js +1 -1
  211. package/Engines/WebGPU/Extensions/engine.alpha.js +2 -2
  212. package/Engines/WebGPU/Extensions/engine.computeShader.js +4 -4
  213. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
  214. package/Engines/WebGPU/Extensions/engine.debugging.js +1 -1
  215. package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js +1 -1
  216. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +1 -1
  217. package/Engines/WebGPU/Extensions/engine.externalTexture.js +3 -3
  218. package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -3
  219. package/Engines/WebGPU/Extensions/engine.query.js +1 -1
  220. package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
  221. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -1
  222. package/Engines/WebGPU/Extensions/engine.renderTarget.js +4 -4
  223. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
  224. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -3
  225. package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -2
  226. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +2 -2
  227. package/Engines/WebGPU/Extensions/engine.videoTexture.js +1 -1
  228. package/Engines/WebGPU/Extensions/index.js +17 -17
  229. package/Engines/WebGPU/webgpuBufferManager.js +5 -5
  230. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  231. package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -1
  232. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -3
  233. package/Engines/WebGPU/webgpuCacheRenderPipelineString.js +1 -1
  234. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +1 -1
  235. package/Engines/WebGPU/webgpuCacheSampler.js +2 -2
  236. package/Engines/WebGPU/webgpuClearQuad.js +4 -4
  237. package/Engines/WebGPU/webgpuComputeContext.js +3 -3
  238. package/Engines/WebGPU/webgpuDepthCullingState.js +1 -1
  239. package/Engines/WebGPU/webgpuExternalTexture.js +1 -1
  240. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -3
  241. package/Engines/WebGPU/webgpuMaterialContext.js +2 -2
  242. package/Engines/WebGPU/webgpuOcclusionQuery.js +2 -2
  243. package/Engines/WebGPU/webgpuPipelineContext.js +2 -2
  244. package/Engines/WebGPU/webgpuQuerySet.js +1 -1
  245. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -2
  246. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +5 -5
  247. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +17 -17
  248. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  249. package/Engines/WebGPU/webgpuStencilStateComposer.js +1 -1
  250. package/Engines/WebGPU/webgpuTextureHelper.js +5 -5
  251. package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
  252. package/Engines/WebGPU/webgpuTintWASM.js +3 -3
  253. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  254. package/Engines/engine.js +21 -20
  255. package/Engines/engine.js.map +1 -1
  256. package/Engines/engineFactory.js +3 -3
  257. package/Engines/index.js +30 -30
  258. package/Engines/nativeEngine.d.ts +4 -12
  259. package/Engines/nativeEngine.js +32 -42
  260. package/Engines/nativeEngine.js.map +1 -1
  261. package/Engines/nullEngine.d.ts +25 -0
  262. package/Engines/nullEngine.js +62 -8
  263. package/Engines/nullEngine.js.map +1 -1
  264. package/Engines/renderTargetWrapper.js +2 -2
  265. package/Engines/shaderStore.js +1 -1
  266. package/Engines/thinEngine.js +40 -37
  267. package/Engines/thinEngine.js.map +1 -1
  268. package/Engines/webgpuEngine.js +37 -37
  269. package/Engines/webgpuEngine.js.map +1 -1
  270. package/Events/index.js +4 -4
  271. package/Events/pointerEvents.js +1 -1
  272. package/Gamepads/Controllers/daydreamController.js +4 -4
  273. package/Gamepads/Controllers/gearVRController.js +5 -5
  274. package/Gamepads/Controllers/genericController.js +3 -3
  275. package/Gamepads/Controllers/index.js +8 -8
  276. package/Gamepads/Controllers/oculusTouchController.js +5 -5
  277. package/Gamepads/Controllers/poseEnabledController.js +5 -5
  278. package/Gamepads/Controllers/viveController.js +3 -3
  279. package/Gamepads/Controllers/webVRController.js +2 -2
  280. package/Gamepads/Controllers/windowsMotionController.js +9 -9
  281. package/Gamepads/dualShockGamepad.js +2 -2
  282. package/Gamepads/gamepad.js +1 -1
  283. package/Gamepads/gamepadManager.js +9 -9
  284. package/Gamepads/gamepadManager.js.map +1 -1
  285. package/Gamepads/gamepadSceneComponent.js +7 -7
  286. package/Gamepads/index.js +6 -6
  287. package/Gamepads/xboxGamepad.js +2 -2
  288. package/Gizmos/axisDragGizmo.js +36 -22
  289. package/Gizmos/axisDragGizmo.js.map +1 -1
  290. package/Gizmos/axisScaleGizmo.js +12 -12
  291. package/Gizmos/axisScaleGizmo.js.map +1 -1
  292. package/Gizmos/boundingBoxGizmo.js +31 -32
  293. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  294. package/Gizmos/cameraGizmo.js +19 -19
  295. package/Gizmos/cameraGizmo.js.map +1 -1
  296. package/Gizmos/gizmo.js +5 -5
  297. package/Gizmos/gizmoManager.js +11 -11
  298. package/Gizmos/index.js +12 -12
  299. package/Gizmos/lightGizmo.js +45 -23
  300. package/Gizmos/lightGizmo.js.map +1 -1
  301. package/Gizmos/planeDragGizmo.js +10 -10
  302. package/Gizmos/planeDragGizmo.js.map +1 -1
  303. package/Gizmos/planeRotationGizmo.js +24 -14
  304. package/Gizmos/planeRotationGizmo.js.map +1 -1
  305. package/Gizmos/positionGizmo.js +8 -8
  306. package/Gizmos/rotationGizmo.js +7 -7
  307. package/Gizmos/scaleGizmo.js +11 -11
  308. package/Gizmos/scaleGizmo.js.map +1 -1
  309. package/Helpers/environmentHelper.js +17 -15
  310. package/Helpers/environmentHelper.js.map +1 -1
  311. package/Helpers/index.js +4 -4
  312. package/Helpers/photoDome.js +2 -2
  313. package/Helpers/sceneHelpers.js +18 -18
  314. package/Helpers/sceneHelpers.js.map +1 -1
  315. package/Helpers/textureDome.js +11 -11
  316. package/Helpers/textureDome.js.map +1 -1
  317. package/Helpers/videoDome.js +3 -3
  318. package/Inputs/scene.inputManager.js +8 -8
  319. package/Inputs/scene.inputManager.js.map +1 -1
  320. package/Instrumentation/engineInstrumentation.js +1 -1
  321. package/Instrumentation/index.js +3 -3
  322. package/Instrumentation/sceneInstrumentation.js +2 -2
  323. package/Layers/effectLayer.js +17 -17
  324. package/Layers/effectLayer.js.map +1 -1
  325. package/Layers/effectLayerSceneComponent.js +4 -4
  326. package/Layers/glowLayer.js +19 -16
  327. package/Layers/glowLayer.js.map +1 -1
  328. package/Layers/highlightLayer.js +20 -20
  329. package/Layers/highlightLayer.js.map +1 -1
  330. package/Layers/index.js +6 -6
  331. package/Layers/layer.js +12 -12
  332. package/Layers/layerSceneComponent.js +1 -1
  333. package/Legacy/legacy.js +3 -3
  334. package/LensFlares/index.js +3 -3
  335. package/LensFlares/lensFlare.js +2 -2
  336. package/LensFlares/lensFlareSystem.js +14 -14
  337. package/LensFlares/lensFlareSystem.js.map +1 -1
  338. package/LensFlares/lensFlareSystemSceneComponent.js +4 -4
  339. package/Lights/Shadows/cascadedShadowGenerator.js +12 -12
  340. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  341. package/Lights/Shadows/index.js +3 -3
  342. package/Lights/Shadows/shadowGenerator.js +19 -19
  343. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  344. package/Lights/Shadows/shadowGeneratorSceneComponent.js +4 -4
  345. package/Lights/directionalLight.js +5 -5
  346. package/Lights/hemisphericLight.js +5 -5
  347. package/Lights/index.js +7 -7
  348. package/Lights/light.js +8 -8
  349. package/Lights/light.js.map +1 -1
  350. package/Lights/pointLight.js +5 -5
  351. package/Lights/shadowLight.js +4 -4
  352. package/Lights/spotLight.js +6 -6
  353. package/Loading/Plugins/babylonFileLoader.js +30 -30
  354. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  355. package/Loading/Plugins/index.js +1 -1
  356. package/Loading/index.js +4 -4
  357. package/Loading/loadingScreen.js +1 -1
  358. package/Loading/sceneLoader.js +11 -11
  359. package/Loading/sceneLoader.js.map +1 -1
  360. package/Materials/Background/backgroundMaterial.js +17 -17
  361. package/Materials/Background/backgroundMaterial.js.map +1 -1
  362. package/Materials/Background/index.js +1 -1
  363. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +6 -6
  364. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/Dual/fogBlock.js +9 -9
  366. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  367. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +10 -10
  368. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  369. package/Materials/Node/Blocks/Dual/index.js +7 -7
  370. package/Materials/Node/Blocks/Dual/lightBlock.js +17 -17
  371. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  372. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +10 -10
  373. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  374. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +7 -7
  375. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  376. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +6 -6
  377. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  378. package/Materials/Node/Blocks/Dual/textureBlock.js +14 -14
  379. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  380. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +5 -5
  381. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  382. package/Materials/Node/Blocks/Fragment/discardBlock.js +5 -5
  383. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  384. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +5 -5
  385. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  386. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +6 -6
  387. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  388. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +5 -5
  389. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  390. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +9 -9
  391. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  392. package/Materials/Node/Blocks/Fragment/index.js +8 -8
  393. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +10 -10
  394. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  395. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +5 -5
  396. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  397. package/Materials/Node/Blocks/Input/index.js +2 -2
  398. package/Materials/Node/Blocks/Input/inputBlock.js +12 -12
  399. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  400. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +7 -7
  401. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  402. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +10 -10
  403. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  404. package/Materials/Node/Blocks/PBR/index.js +7 -7
  405. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +21 -21
  406. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  407. package/Materials/Node/Blocks/PBR/reflectionBlock.js +10 -10
  408. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  409. package/Materials/Node/Blocks/PBR/refractionBlock.js +13 -13
  410. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  411. package/Materials/Node/Blocks/PBR/sheenBlock.js +8 -8
  412. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  413. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +9 -9
  414. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  415. package/Materials/Node/Blocks/Particle/index.js +3 -3
  416. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +5 -5
  417. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  418. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +5 -5
  419. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  420. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  421. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  422. package/Materials/Node/Blocks/Vertex/bonesBlock.js +10 -10
  423. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  424. package/Materials/Node/Blocks/Vertex/index.js +5 -5
  425. package/Materials/Node/Blocks/Vertex/instancesBlock.js +7 -7
  426. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  427. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +6 -6
  428. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  429. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +10 -10
  430. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  431. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +5 -5
  432. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  433. package/Materials/Node/Blocks/addBlock.js +5 -5
  434. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  435. package/Materials/Node/Blocks/arcTan2Block.js +5 -5
  436. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  437. package/Materials/Node/Blocks/clampBlock.js +6 -6
  438. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  439. package/Materials/Node/Blocks/colorMergerBlock.js +5 -5
  440. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  441. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  442. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  443. package/Materials/Node/Blocks/conditionalBlock.js +5 -5
  444. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  445. package/Materials/Node/Blocks/crossBlock.js +5 -5
  446. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  447. package/Materials/Node/Blocks/desaturateBlock.js +5 -5
  448. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  449. package/Materials/Node/Blocks/distanceBlock.js +5 -5
  450. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  451. package/Materials/Node/Blocks/divideBlock.js +5 -5
  452. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  453. package/Materials/Node/Blocks/dotBlock.js +5 -5
  454. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  455. package/Materials/Node/Blocks/fresnelBlock.js +8 -8
  456. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  457. package/Materials/Node/Blocks/gradientBlock.js +7 -7
  458. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  459. package/Materials/Node/Blocks/index.js +52 -52
  460. package/Materials/Node/Blocks/lengthBlock.js +5 -5
  461. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  462. package/Materials/Node/Blocks/lerpBlock.js +5 -5
  463. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  464. package/Materials/Node/Blocks/matrixBuilderBlock.js +7 -7
  465. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  466. package/Materials/Node/Blocks/maxBlock.js +5 -5
  467. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  468. package/Materials/Node/Blocks/minBlock.js +5 -5
  469. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  470. package/Materials/Node/Blocks/modBlock.js +5 -5
  471. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  472. package/Materials/Node/Blocks/multiplyBlock.js +5 -5
  473. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  474. package/Materials/Node/Blocks/nLerpBlock.js +5 -5
  475. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  476. package/Materials/Node/Blocks/negateBlock.js +5 -5
  477. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  478. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  479. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  480. package/Materials/Node/Blocks/normalizeBlock.js +5 -5
  481. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  482. package/Materials/Node/Blocks/oneMinusBlock.js +6 -6
  483. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  484. package/Materials/Node/Blocks/posterizeBlock.js +5 -5
  485. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  486. package/Materials/Node/Blocks/powBlock.js +5 -5
  487. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  488. package/Materials/Node/Blocks/randomNumberBlock.js +6 -6
  489. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  490. package/Materials/Node/Blocks/reciprocalBlock.js +5 -5
  491. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  492. package/Materials/Node/Blocks/reflectBlock.js +5 -5
  493. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  494. package/Materials/Node/Blocks/refractBlock.js +5 -5
  495. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  496. package/Materials/Node/Blocks/remapBlock.js +7 -7
  497. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  498. package/Materials/Node/Blocks/replaceColorBlock.js +5 -5
  499. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  500. package/Materials/Node/Blocks/rotate2dBlock.js +6 -6
  501. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  502. package/Materials/Node/Blocks/scaleBlock.js +5 -5
  503. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  504. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +5 -5
  505. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  506. package/Materials/Node/Blocks/smoothStepBlock.js +5 -5
  507. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  508. package/Materials/Node/Blocks/stepBlock.js +5 -5
  509. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  510. package/Materials/Node/Blocks/subtractBlock.js +5 -5
  511. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  512. package/Materials/Node/Blocks/transformBlock.js +5 -5
  513. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  514. package/Materials/Node/Blocks/trigonometryBlock.js +5 -5
  515. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  516. package/Materials/Node/Blocks/vectorMergerBlock.js +5 -5
  517. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  518. package/Materials/Node/Blocks/vectorSplitterBlock.js +5 -5
  519. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  520. package/Materials/Node/Blocks/viewDirectionBlock.js +7 -7
  521. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  522. package/Materials/Node/Blocks/waveBlock.js +5 -5
  523. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  524. package/Materials/Node/Blocks/worleyNoise3DBlock.js +6 -6
  525. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  526. package/Materials/Node/Enums/index.js +5 -5
  527. package/Materials/Node/Optimizers/index.js +1 -1
  528. package/Materials/Node/index.js +7 -7
  529. package/Materials/Node/nodeMaterial.js +40 -40
  530. package/Materials/Node/nodeMaterial.js.map +1 -1
  531. package/Materials/Node/nodeMaterialBlock.js +6 -6
  532. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  533. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +3 -3
  534. package/Materials/Node/nodeMaterialBuildState.js +6 -6
  535. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  536. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +1 -1
  537. package/Materials/Occlusion/index.js +1 -1
  538. package/Materials/Occlusion/occlusionMaterial.js +4 -4
  539. package/Materials/PBR/index.js +5 -5
  540. package/Materials/PBR/pbrAnisotropicConfiguration.js +11 -5
  541. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  542. package/Materials/PBR/pbrBRDFConfiguration.js +1 -1
  543. package/Materials/PBR/pbrBaseMaterial.js +28 -28
  544. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  545. package/Materials/PBR/pbrBaseSimpleMaterial.js +3 -3
  546. package/Materials/PBR/pbrClearCoatConfiguration.js +10 -4
  547. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  548. package/Materials/PBR/pbrMaterial.js +7 -7
  549. package/Materials/PBR/pbrMaterial.js.map +1 -1
  550. package/Materials/PBR/pbrMetallicRoughnessMaterial.js +4 -4
  551. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  552. package/Materials/PBR/pbrSheenConfiguration.js +10 -4
  553. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  554. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +4 -4
  555. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  556. package/Materials/PBR/pbrSubSurfaceConfiguration.js +19 -6
  557. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  558. package/Materials/Textures/Filtering/hdrFiltering.js +6 -6
  559. package/Materials/Textures/Loaders/basisTextureLoader.js +9 -9
  560. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  561. package/Materials/Textures/Loaders/ddsTextureLoader.js +5 -5
  562. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  563. package/Materials/Textures/Loaders/envTextureLoader.js +7 -7
  564. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  565. package/Materials/Textures/Loaders/hdrTextureLoader.js +4 -4
  566. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  567. package/Materials/Textures/Loaders/index.js +6 -6
  568. package/Materials/Textures/Loaders/ktxTextureLoader.js +6 -6
  569. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  570. package/Materials/Textures/Loaders/tgaTextureLoader.js +6 -6
  571. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  572. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  573. package/Materials/Textures/Packer/index.js +2 -2
  574. package/Materials/Textures/Packer/packer.js +9 -9
  575. package/Materials/Textures/Procedurals/customProceduralTexture.js +6 -6
  576. package/Materials/Textures/Procedurals/index.js +4 -4
  577. package/Materials/Textures/Procedurals/noiseProceduralTexture.js +5 -5
  578. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  579. package/Materials/Textures/Procedurals/proceduralTexture.js +15 -15
  580. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  581. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +2 -2
  582. package/Materials/Textures/baseTexture.js +8 -8
  583. package/Materials/Textures/baseTexture.js.map +1 -1
  584. package/Materials/Textures/baseTexture.polynomial.js +2 -2
  585. package/Materials/Textures/colorGradingTexture.js +5 -5
  586. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  587. package/Materials/Textures/cubeTexture.js +12 -12
  588. package/Materials/Textures/cubeTexture.js.map +1 -1
  589. package/Materials/Textures/dynamicTexture.js +3 -3
  590. package/Materials/Textures/equiRectangularCubeTexture.js +10 -12
  591. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  592. package/Materials/Textures/externalTexture.js +1 -1
  593. package/Materials/Textures/hdrCubeTexture.js +16 -16
  594. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  595. package/Materials/Textures/htmlElementTexture.js +4 -4
  596. package/Materials/Textures/index.js +27 -27
  597. package/Materials/Textures/internalTexture.d.ts +15 -2
  598. package/Materials/Textures/internalTexture.js +29 -13
  599. package/Materials/Textures/internalTexture.js.map +1 -1
  600. package/Materials/Textures/mirrorTexture.js +5 -5
  601. package/Materials/Textures/multiRenderTarget.js +3 -3
  602. package/Materials/Textures/prePassRenderTarget.js +2 -2
  603. package/Materials/Textures/rawCubeTexture.d.ts +0 -3
  604. package/Materials/Textures/rawCubeTexture.js +6 -17
  605. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  606. package/Materials/Textures/rawTexture.js +2 -2
  607. package/Materials/Textures/rawTexture2DArray.js +2 -2
  608. package/Materials/Textures/rawTexture3D.js +2 -2
  609. package/Materials/Textures/refractionTexture.js +2 -2
  610. package/Materials/Textures/renderTargetTexture.js +9 -9
  611. package/Materials/Textures/texture.js +30 -25
  612. package/Materials/Textures/texture.js.map +1 -1
  613. package/Materials/Textures/thinTexture.js +1 -1
  614. package/Materials/Textures/videoTexture.js +6 -6
  615. package/Materials/colorCurves.js +2 -2
  616. package/Materials/effect.js +8 -8
  617. package/Materials/effect.js.map +1 -1
  618. package/Materials/effectRenderer.js +6 -6
  619. package/Materials/fresnelParameters.js +4 -4
  620. package/Materials/imageProcessingConfiguration.js +6 -6
  621. package/Materials/index.js +25 -25
  622. package/Materials/material.detailMapConfiguration.js +7 -4
  623. package/Materials/material.detailMapConfiguration.js.map +1 -1
  624. package/Materials/material.js +11 -11
  625. package/Materials/materialFlags.js +1 -1
  626. package/Materials/materialHelper.js +7 -7
  627. package/Materials/materialStencilState.js +1 -1
  628. package/Materials/multiMaterial.js +4 -4
  629. package/Materials/multiMaterial.js.map +1 -1
  630. package/Materials/prePassConfiguration.d.ts +1 -0
  631. package/Materials/prePassConfiguration.js +8 -2
  632. package/Materials/prePassConfiguration.js.map +1 -1
  633. package/Materials/pushMaterial.js +2 -2
  634. package/Materials/shaderMaterial.d.ts +0 -2
  635. package/Materials/shaderMaterial.js +12 -30
  636. package/Materials/shaderMaterial.js.map +1 -1
  637. package/Materials/shadowDepthWrapper.js +6 -5
  638. package/Materials/shadowDepthWrapper.js.map +1 -1
  639. package/Materials/standardMaterial.js +20 -20
  640. package/Materials/standardMaterial.js.map +1 -1
  641. package/Materials/uniformBuffer.js +3 -3
  642. package/Maths/index.js +4 -4
  643. package/Maths/math.axis.js +1 -1
  644. package/Maths/math.color.js +6 -6
  645. package/Maths/math.color.js.map +1 -1
  646. package/Maths/math.frustum.js +1 -1
  647. package/Maths/math.functions.js +2 -2
  648. package/Maths/math.isovector.js +2 -2
  649. package/Maths/math.js +10 -10
  650. package/Maths/math.path.js +3 -3
  651. package/Maths/math.plane.js +1 -1
  652. package/Maths/math.vector.js +9 -9
  653. package/Maths/math.vector.js.map +1 -1
  654. package/Maths/math.vertexFormat.js +1 -1
  655. package/Maths/sphericalPolynomial.js +2 -2
  656. package/Meshes/Builders/boxBuilder.d.ts +63 -32
  657. package/Meshes/Builders/boxBuilder.js +53 -39
  658. package/Meshes/Builders/boxBuilder.js.map +1 -1
  659. package/Meshes/Builders/capsuleBuilder.d.ts +20 -10
  660. package/Meshes/Builders/capsuleBuilder.js +36 -37
  661. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  662. package/Meshes/Builders/cylinderBuilder.d.ts +87 -48
  663. package/Meshes/Builders/cylinderBuilder.js +71 -53
  664. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  665. package/Meshes/Builders/decalBuilder.d.ts +26 -24
  666. package/Meshes/Builders/decalBuilder.js +211 -213
  667. package/Meshes/Builders/decalBuilder.js.map +1 -1
  668. package/Meshes/Builders/discBuilder.d.ts +27 -25
  669. package/Meshes/Builders/discBuilder.js +46 -36
  670. package/Meshes/Builders/discBuilder.js.map +1 -1
  671. package/Meshes/Builders/geodesicBuilder.d.ts +34 -39
  672. package/Meshes/Builders/geodesicBuilder.js +58 -67
  673. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  674. package/Meshes/Builders/goldbergBuilder.d.ts +56 -29
  675. package/Meshes/Builders/goldbergBuilder.js +97 -84
  676. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  677. package/Meshes/Builders/groundBuilder.d.ts +151 -79
  678. package/Meshes/Builders/groundBuilder.js +174 -137
  679. package/Meshes/Builders/groundBuilder.js.map +1 -1
  680. package/Meshes/Builders/hemisphereBuilder.d.ts +16 -14
  681. package/Meshes/Builders/hemisphereBuilder.js +33 -34
  682. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  683. package/Meshes/Builders/icoSphereBuilder.d.ts +57 -29
  684. package/Meshes/Builders/icoSphereBuilder.js +51 -38
  685. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  686. package/Meshes/Builders/index.js +23 -23
  687. package/Meshes/Builders/latheBuilder.d.ts +38 -36
  688. package/Meshes/Builders/latheBuilder.js +70 -72
  689. package/Meshes/Builders/latheBuilder.js.map +1 -1
  690. package/Meshes/Builders/linesBuilder.d.ts +113 -82
  691. package/Meshes/Builders/linesBuilder.js +202 -184
  692. package/Meshes/Builders/linesBuilder.js.map +1 -1
  693. package/Meshes/Builders/planeBuilder.d.ts +48 -26
  694. package/Meshes/Builders/planeBuilder.js +50 -40
  695. package/Meshes/Builders/planeBuilder.js.map +1 -1
  696. package/Meshes/Builders/polygonBuilder.d.ts +68 -51
  697. package/Meshes/Builders/polygonBuilder.js +91 -79
  698. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  699. package/Meshes/Builders/polyhedronBuilder.d.ts +73 -36
  700. package/Meshes/Builders/polyhedronBuilder.js +63 -43
  701. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  702. package/Meshes/Builders/ribbonBuilder.d.ts +69 -39
  703. package/Meshes/Builders/ribbonBuilder.js +166 -152
  704. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  705. package/Meshes/Builders/shapeBuilder.d.ts +83 -81
  706. package/Meshes/Builders/shapeBuilder.js +185 -186
  707. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  708. package/Meshes/Builders/sphereBuilder.d.ts +62 -31
  709. package/Meshes/Builders/sphereBuilder.js +53 -39
  710. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  711. package/Meshes/Builders/tiledBoxBuilder.d.ts +56 -29
  712. package/Meshes/Builders/tiledBoxBuilder.js +45 -36
  713. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  714. package/Meshes/Builders/tiledPlaneBuilder.d.ts +67 -38
  715. package/Meshes/Builders/tiledPlaneBuilder.js +51 -40
  716. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  717. package/Meshes/Builders/torusBuilder.d.ts +47 -25
  718. package/Meshes/Builders/torusBuilder.js +46 -36
  719. package/Meshes/Builders/torusBuilder.js.map +1 -1
  720. package/Meshes/Builders/torusKnotBuilder.d.ts +57 -29
  721. package/Meshes/Builders/torusKnotBuilder.js +51 -37
  722. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  723. package/Meshes/Builders/tubeBuilder.d.ts +42 -40
  724. package/Meshes/Builders/tubeBuilder.js +140 -142
  725. package/Meshes/Builders/tubeBuilder.js.map +1 -1
  726. package/Meshes/Compression/dracoCompression.js +3 -3
  727. package/Meshes/Compression/index.js +2 -2
  728. package/Meshes/Compression/meshoptCompression.js +1 -1
  729. package/Meshes/WebGL/webGLDataBuffer.js +1 -1
  730. package/Meshes/WebGPU/webgpuDataBuffer.js +1 -1
  731. package/Meshes/abstractMesh.js +20 -20
  732. package/Meshes/abstractMesh.js.map +1 -1
  733. package/Meshes/csg.js +5 -5
  734. package/Meshes/geodesicMesh.js +4 -4
  735. package/Meshes/geometry.js +13 -17
  736. package/Meshes/geometry.js.map +1 -1
  737. package/Meshes/groundMesh.js +3 -3
  738. package/Meshes/index.d.ts +1 -0
  739. package/Meshes/index.js +25 -24
  740. package/Meshes/index.js.map +1 -1
  741. package/Meshes/instancedMesh.js +8 -8
  742. package/Meshes/linesMesh.js +9 -9
  743. package/Meshes/mesh.d.ts +2 -383
  744. package/Meshes/mesh.js +32 -439
  745. package/Meshes/mesh.js.map +1 -1
  746. package/Meshes/mesh.lts.d.ts +417 -0
  747. package/Meshes/mesh.lts.js +25 -0
  748. package/Meshes/mesh.lts.js.map +1 -0
  749. package/Meshes/mesh.vertexData.d.ts +21 -64
  750. package/Meshes/mesh.vertexData.js +46 -71
  751. package/Meshes/mesh.vertexData.js.map +1 -1
  752. package/Meshes/meshBuilder.d.ts +52 -799
  753. package/Meshes/meshBuilder.js +52 -609
  754. package/Meshes/meshBuilder.js.map +1 -1
  755. package/Meshes/meshSimplification.js +6 -6
  756. package/Meshes/meshSimplificationSceneComponent.js +4 -4
  757. package/Meshes/polygonMesh.js +8 -8
  758. package/Meshes/subMesh.js +5 -5
  759. package/Meshes/subMesh.project.js +2 -2
  760. package/Meshes/thinInstanceMesh.js +3 -3
  761. package/Meshes/trailMesh.js +5 -5
  762. package/Meshes/transformNode.js +5 -5
  763. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +5 -5
  764. package/Misc/HighDynamicRange/hdr.js +1 -1
  765. package/Misc/HighDynamicRange/index.js +3 -3
  766. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  767. package/Misc/PerformanceViewer/index.js +4 -4
  768. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +2 -2
  769. package/Misc/PerformanceViewer/performanceViewerCollector.js +4 -4
  770. package/Misc/PerformanceViewer/performanceViewerSceneExtension.js +2 -2
  771. package/Misc/assetsManager.js +8 -8
  772. package/Misc/basis.d.ts +40 -12
  773. package/Misc/basis.js +172 -145
  774. package/Misc/basis.js.map +1 -1
  775. package/Misc/brdfTextureTools.d.ts +9 -8
  776. package/Misc/brdfTextureTools.js +49 -50
  777. package/Misc/brdfTextureTools.js.map +1 -1
  778. package/Misc/codeStringParsingTools.d.ts +40 -45
  779. package/Misc/codeStringParsingTools.js +154 -163
  780. package/Misc/codeStringParsingTools.js.map +1 -1
  781. package/Misc/computePressure.js +2 -2
  782. package/Misc/computePressure.js.map +1 -1
  783. package/Misc/copyTools.d.ts +30 -5
  784. package/Misc/copyTools.js +108 -87
  785. package/Misc/copyTools.js.map +1 -1
  786. package/Misc/dataReader.js +2 -2
  787. package/Misc/dataReader.js.map +1 -1
  788. package/Misc/dds.js +23 -23
  789. package/Misc/dds.js.map +1 -1
  790. package/Misc/decorators.js +8 -8
  791. package/Misc/decorators.js.map +1 -1
  792. package/Misc/deepCopier.js +3 -3
  793. package/Misc/deepCopier.js.map +1 -1
  794. package/Misc/depthReducer.js +2 -2
  795. package/Misc/devTools.d.ts +1 -3
  796. package/Misc/devTools.js +3 -9
  797. package/Misc/devTools.js.map +1 -1
  798. package/Misc/domManagement.d.ts +27 -6
  799. package/Misc/domManagement.js +43 -26
  800. package/Misc/domManagement.js.map +1 -1
  801. package/Misc/environmentTextureTools.d.ts +61 -28
  802. package/Misc/environmentTextureTools.js +550 -503
  803. package/Misc/environmentTextureTools.js.map +1 -1
  804. package/Misc/fileTools.d.ts +91 -101
  805. package/Misc/fileTools.js +414 -396
  806. package/Misc/fileTools.js.map +1 -1
  807. package/Misc/fileTools.lts.d.ts +9 -0
  808. package/Misc/fileTools.lts.js +64 -0
  809. package/Misc/fileTools.lts.js.map +1 -0
  810. package/Misc/filesInput.d.ts +1 -1
  811. package/Misc/filesInput.js +4 -4
  812. package/Misc/filesInput.js.map +1 -1
  813. package/Misc/gradients.js +1 -1
  814. package/Misc/guid.d.ts +10 -3
  815. package/Misc/guid.js +15 -12
  816. package/Misc/guid.js.map +1 -1
  817. package/Misc/index.d.ts +1 -0
  818. package/Misc/index.js +61 -60
  819. package/Misc/index.js.map +1 -1
  820. package/Misc/instantiationTools.js +3 -3
  821. package/Misc/instantiationTools.js.map +1 -1
  822. package/Misc/khronosTextureContainer.js +1 -1
  823. package/Misc/khronosTextureContainer2.js +2 -2
  824. package/Misc/meshExploder.js +1 -1
  825. package/Misc/minMaxReducer.js +4 -4
  826. package/Misc/observable.d.ts +7 -0
  827. package/Misc/observable.js +22 -0
  828. package/Misc/observable.js.map +1 -1
  829. package/Misc/observableCoroutine.js +1 -1
  830. package/Misc/perfCounter.js +1 -1
  831. package/Misc/performanceMonitor.js +1 -1
  832. package/Misc/pivotTools.js +1 -1
  833. package/Misc/precisionDate.js +1 -1
  834. package/Misc/reflector.js +4 -4
  835. package/Misc/reflector.js.map +1 -1
  836. package/Misc/rgbdTextureTools.js +5 -5
  837. package/Misc/rgbdTextureTools.js.map +1 -1
  838. package/Misc/sceneOptimizer.js +3 -3
  839. package/Misc/sceneRecorder.js +14 -14
  840. package/Misc/sceneSerializer.js +4 -4
  841. package/Misc/screenshotTools.d.ts +96 -12
  842. package/Misc/screenshotTools.js +302 -207
  843. package/Misc/screenshotTools.js.map +1 -1
  844. package/Misc/stringTools.d.ts +54 -47
  845. package/Misc/stringTools.js +108 -105
  846. package/Misc/stringTools.js.map +1 -1
  847. package/Misc/tags.js +1 -1
  848. package/Misc/textureTools.d.ts +38 -8
  849. package/Misc/textureTools.js +169 -138
  850. package/Misc/textureTools.js.map +1 -1
  851. package/Misc/tga.d.ts +34 -22
  852. package/Misc/tga.js +279 -260
  853. package/Misc/tga.js.map +1 -1
  854. package/Misc/timer.js +1 -1
  855. package/Misc/timingTools.js +2 -2
  856. package/Misc/timingTools.js.map +1 -1
  857. package/Misc/tools.d.ts +5 -5
  858. package/Misc/tools.js +42 -42
  859. package/Misc/tools.js.map +1 -1
  860. package/Misc/trajectoryClassifier.js +1 -1
  861. package/Misc/typeStore.d.ts +3 -8
  862. package/Misc/typeStore.js +9 -15
  863. package/Misc/typeStore.js.map +1 -1
  864. package/Misc/videoRecorder.js +1 -1
  865. package/Misc/virtualJoystick.js +2 -2
  866. package/Morph/index.js +2 -2
  867. package/Morph/morphTarget.js +6 -6
  868. package/Morph/morphTarget.js.map +1 -1
  869. package/Morph/morphTargetManager.d.ts +1 -1
  870. package/Morph/morphTargetManager.js +11 -10
  871. package/Morph/morphTargetManager.js.map +1 -1
  872. package/Navigation/Plugins/index.js +1 -1
  873. package/Navigation/Plugins/recastJSPlugin.js +6 -6
  874. package/Navigation/index.js +2 -2
  875. package/Offline/database.js +6 -6
  876. package/Offline/database.js.map +1 -1
  877. package/Offline/index.js +2 -2
  878. package/Particles/EmitterTypes/boxParticleEmitter.js +3 -3
  879. package/Particles/EmitterTypes/coneParticleEmitter.js +3 -3
  880. package/Particles/EmitterTypes/customParticleEmitter.js +2 -2
  881. package/Particles/EmitterTypes/cylinderParticleEmitter.js +3 -3
  882. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +3 -3
  883. package/Particles/EmitterTypes/index.js +9 -9
  884. package/Particles/EmitterTypes/meshParticleEmitter.js +4 -4
  885. package/Particles/EmitterTypes/pointParticleEmitter.js +3 -3
  886. package/Particles/EmitterTypes/sphereParticleEmitter.js +3 -3
  887. package/Particles/baseParticleSystem.js +5 -5
  888. package/Particles/cloudPoint.js +1 -1
  889. package/Particles/computeShaderParticleSystem.js +7 -7
  890. package/Particles/computeShaderParticleSystem.js.map +1 -1
  891. package/Particles/gpuParticleSystem.js +24 -24
  892. package/Particles/gpuParticleSystem.js.map +1 -1
  893. package/Particles/index.js +17 -17
  894. package/Particles/particle.js +3 -3
  895. package/Particles/particleHelper.js +8 -8
  896. package/Particles/particleSystem.js +26 -26
  897. package/Particles/particleSystem.js.map +1 -1
  898. package/Particles/particleSystemComponent.js +7 -7
  899. package/Particles/particleSystemSet.js +7 -7
  900. package/Particles/particleSystemSet.js.map +1 -1
  901. package/Particles/pointsCloudSystem.js +12 -12
  902. package/Particles/solidParticle.js +5 -5
  903. package/Particles/solidParticleSystem.js +15 -15
  904. package/Particles/solidParticleSystem.js.map +1 -1
  905. package/Particles/subEmitter.d.ts +2 -1
  906. package/Particles/subEmitter.js +10 -8
  907. package/Particles/subEmitter.js.map +1 -1
  908. package/Particles/webgl2ParticleSystem.js +7 -7
  909. package/Particles/webgl2ParticleSystem.js.map +1 -1
  910. package/Physics/Plugins/ammoJSPlugin.js +35 -27
  911. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  912. package/Physics/Plugins/cannonJSPlugin.js +7 -7
  913. package/Physics/Plugins/index.js +3 -3
  914. package/Physics/Plugins/oimoJSPlugin.js +6 -6
  915. package/Physics/index.js +7 -7
  916. package/Physics/physicsEngine.js +3 -3
  917. package/Physics/physicsEngine.js.map +1 -1
  918. package/Physics/physicsEngineComponent.js +7 -7
  919. package/Physics/physicsHelper.js +8 -8
  920. package/Physics/physicsHelper.js.map +1 -1
  921. package/Physics/physicsImpostor.js +7 -7
  922. package/Physics/physicsRaycastResult.js +1 -1
  923. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +18 -18
  924. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  925. package/PostProcesses/RenderPipeline/Pipelines/index.js +5 -5
  926. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +9 -9
  927. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +17 -17
  928. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  929. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +12 -12
  930. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +16 -16
  931. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  932. package/PostProcesses/RenderPipeline/index.js +5 -5
  933. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  934. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +2 -2
  935. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js +3 -3
  936. package/PostProcesses/anaglyphPostProcess.js +4 -4
  937. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  938. package/PostProcesses/blackAndWhitePostProcess.js +5 -5
  939. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  940. package/PostProcesses/bloomEffect.js +6 -6
  941. package/PostProcesses/bloomMergePostProcess.js +5 -5
  942. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  943. package/PostProcesses/blurPostProcess.js +7 -7
  944. package/PostProcesses/blurPostProcess.js.map +1 -1
  945. package/PostProcesses/chromaticAberrationPostProcess.js +6 -6
  946. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  947. package/PostProcesses/circleOfConfusionPostProcess.js +6 -6
  948. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  949. package/PostProcesses/colorCorrectionPostProcess.js +6 -6
  950. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  951. package/PostProcesses/convolutionPostProcess.js +5 -5
  952. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  953. package/PostProcesses/depthOfFieldBlurPostProcess.js +5 -5
  954. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  955. package/PostProcesses/depthOfFieldEffect.js +6 -6
  956. package/PostProcesses/depthOfFieldMergePostProcess.js +2 -2
  957. package/PostProcesses/displayPassPostProcess.js +5 -5
  958. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  959. package/PostProcesses/extractHighlightsPostProcess.js +6 -6
  960. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  961. package/PostProcesses/filterPostProcess.js +5 -5
  962. package/PostProcesses/filterPostProcess.js.map +1 -1
  963. package/PostProcesses/fxaaPostProcess.js +7 -7
  964. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  965. package/PostProcesses/grainPostProcess.js +5 -5
  966. package/PostProcesses/grainPostProcess.js.map +1 -1
  967. package/PostProcesses/highlightsPostProcess.js +2 -2
  968. package/PostProcesses/imageProcessingPostProcess.js +6 -6
  969. package/PostProcesses/index.js +33 -33
  970. package/PostProcesses/motionBlurPostProcess.js +11 -11
  971. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  972. package/PostProcesses/passPostProcess.js +7 -7
  973. package/PostProcesses/passPostProcess.js.map +1 -1
  974. package/PostProcesses/postProcess.js +11 -11
  975. package/PostProcesses/postProcess.js.map +1 -1
  976. package/PostProcesses/postProcessManager.js +1 -1
  977. package/PostProcesses/refractionPostProcess.js +6 -6
  978. package/PostProcesses/refractionPostProcess.js.map +1 -1
  979. package/PostProcesses/screenSpaceCurvaturePostProcess.js +8 -8
  980. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  981. package/PostProcesses/screenSpaceReflectionPostProcess.js +7 -7
  982. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  983. package/PostProcesses/sharpenPostProcess.js +5 -5
  984. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  985. package/PostProcesses/stereoscopicInterlacePostProcess.js +3 -3
  986. package/PostProcesses/subSurfaceScatteringPostProcess.js +6 -6
  987. package/PostProcesses/tonemapPostProcess.js +2 -2
  988. package/PostProcesses/volumetricLightScatteringPostProcess.js +23 -23
  989. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  990. package/PostProcesses/vrDistortionCorrectionPostProcess.js +4 -4
  991. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +4 -4
  992. package/Probes/index.js +1 -1
  993. package/Probes/reflectionProbe.js +4 -4
  994. package/Rendering/boundingBoxRenderer.js +15 -15
  995. package/Rendering/boundingBoxRenderer.js.map +1 -1
  996. package/Rendering/depthRenderer.js +11 -11
  997. package/Rendering/depthRenderer.js.map +1 -1
  998. package/Rendering/depthRendererSceneComponent.js +3 -3
  999. package/Rendering/edgesRenderer.js +11 -11
  1000. package/Rendering/geometryBufferRenderer.js +13 -13
  1001. package/Rendering/geometryBufferRenderer.js.map +1 -1
  1002. package/Rendering/geometryBufferRendererSceneComponent.js +3 -3
  1003. package/Rendering/index.js +13 -13
  1004. package/Rendering/motionBlurConfiguration.js.map +1 -1
  1005. package/Rendering/outlineRenderer.js +8 -8
  1006. package/Rendering/prePassRenderer.js +6 -6
  1007. package/Rendering/prePassRenderer.js.map +1 -1
  1008. package/Rendering/prePassRendererSceneComponent.js +4 -4
  1009. package/Rendering/renderingGroup.js +2 -2
  1010. package/Rendering/renderingManager.js +1 -1
  1011. package/Rendering/screenSpaceReflectionsConfiguration.js.map +1 -1
  1012. package/Rendering/ssao2Configuration.js.map +1 -1
  1013. package/Rendering/subSurfaceConfiguration.js +6 -6
  1014. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  1015. package/Rendering/subSurfaceSceneComponent.js +5 -5
  1016. package/Rendering/utilityLayerRenderer.js +8 -8
  1017. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +1 -1
  1018. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +2 -2
  1019. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +1 -1
  1020. package/Shaders/ShadersInclude/bayerDitherFunctions.js +1 -1
  1021. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  1022. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  1023. package/Shaders/ShadersInclude/bumpFragment.js +1 -1
  1024. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +2 -2
  1025. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +1 -1
  1026. package/Shaders/ShadersInclude/bumpVertex.js +1 -1
  1027. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
  1028. package/Shaders/ShadersInclude/clipPlaneFragment.js +1 -1
  1029. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
  1030. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +1 -1
  1031. package/Shaders/ShadersInclude/clipPlaneVertex.js +1 -1
  1032. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
  1033. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +1 -1
  1034. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  1035. package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -3
  1036. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  1037. package/Shaders/ShadersInclude/depthPrePass.js +1 -1
  1038. package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
  1039. package/Shaders/ShadersInclude/fibonacci.js +1 -1
  1040. package/Shaders/ShadersInclude/fogFragment.js +2 -2
  1041. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  1042. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +1 -1
  1043. package/Shaders/ShadersInclude/fogVertex.js +1 -1
  1044. package/Shaders/ShadersInclude/fogVertexDeclaration.js +1 -1
  1045. package/Shaders/ShadersInclude/fresnelFunction.js +1 -1
  1046. package/Shaders/ShadersInclude/geometryUboDeclaration.js +2 -2
  1047. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
  1048. package/Shaders/ShadersInclude/harmonicsFunctions.js +1 -1
  1049. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
  1050. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  1051. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +1 -1
  1052. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +1 -1
  1053. package/Shaders/ShadersInclude/imageProcessingFunctions.js +1 -1
  1054. package/Shaders/ShadersInclude/importanceSampling.js +1 -1
  1055. package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
  1056. package/Shaders/ShadersInclude/instancesVertex.js +1 -1
  1057. package/Shaders/ShadersInclude/kernelBlurFragment.js +1 -1
  1058. package/Shaders/ShadersInclude/kernelBlurFragment2.js +1 -1
  1059. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +1 -1
  1060. package/Shaders/ShadersInclude/kernelBlurVertex.js +1 -1
  1061. package/Shaders/ShadersInclude/lightFragment.js +1 -1
  1062. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +1 -1
  1063. package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
  1064. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
  1065. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
  1066. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
  1067. package/Shaders/ShadersInclude/logDepthDeclaration.js +1 -1
  1068. package/Shaders/ShadersInclude/logDepthFragment.js +1 -1
  1069. package/Shaders/ShadersInclude/logDepthVertex.js +1 -1
  1070. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +1 -1
  1071. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +1 -1
  1072. package/Shaders/ShadersInclude/meshUboDeclaration.js +1 -1
  1073. package/Shaders/ShadersInclude/meshVertexDeclaration.js +1 -1
  1074. package/Shaders/ShadersInclude/morphTargetsVertex.js +1 -1
  1075. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
  1076. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
  1077. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
  1078. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
  1079. package/Shaders/ShadersInclude/packingFunctions.js +1 -1
  1080. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  1081. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
  1082. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +1 -1
  1083. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +1 -1
  1084. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +1 -1
  1085. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +1 -1
  1086. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
  1087. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +1 -1
  1088. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +1 -1
  1089. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
  1090. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +1 -1
  1091. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  1092. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +1 -1
  1093. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +1 -1
  1094. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +1 -1
  1095. package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
  1096. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +1 -1
  1097. package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
  1098. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +1 -1
  1099. package/Shaders/ShadersInclude/pbrBlockSheen.js +1 -1
  1100. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
  1101. package/Shaders/ShadersInclude/pbrDebug.js +1 -1
  1102. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +1 -1
  1103. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  1104. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  1105. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  1106. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +2 -2
  1107. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -3
  1108. package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
  1109. package/Shaders/ShadersInclude/pbrIBLFunctions.js +1 -1
  1110. package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -3
  1111. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  1112. package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
  1113. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +1 -1
  1114. package/Shaders/ShadersInclude/prePassDeclaration.js +1 -1
  1115. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  1116. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +1 -1
  1117. package/Shaders/ShadersInclude/reflectionFunction.js +1 -1
  1118. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +1 -1
  1119. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +1 -1
  1120. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +1 -1
  1121. package/Shaders/ShadersInclude/samplerVertexImplementation.js +1 -1
  1122. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +1 -1
  1123. package/Shaders/ShadersInclude/sceneUboDeclaration.js +1 -1
  1124. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +1 -1
  1125. package/Shaders/ShadersInclude/shadowMapFragment.js +1 -1
  1126. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -3
  1127. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +1 -1
  1128. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -3
  1129. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -3
  1130. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +1 -1
  1131. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +1 -1
  1132. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +1 -1
  1133. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
  1134. package/Shaders/ShadersInclude/shadowsVertex.js +1 -1
  1135. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +1 -1
  1136. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +1 -1
  1137. package/Shaders/ShadersInclude/uvVariableDeclaration.js +1 -1
  1138. package/Shaders/anaglyph.fragment.js +1 -1
  1139. package/Shaders/background.fragment.js +16 -16
  1140. package/Shaders/background.vertex.js +15 -15
  1141. package/Shaders/blackAndWhite.fragment.js +1 -1
  1142. package/Shaders/bloomMerge.fragment.js +1 -1
  1143. package/Shaders/blur.fragment.js +1 -1
  1144. package/Shaders/chromaticAberration.fragment.js +1 -1
  1145. package/Shaders/circleOfConfusion.fragment.js +1 -1
  1146. package/Shaders/clearQuad.fragment.js +1 -1
  1147. package/Shaders/clearQuad.vertex.js +1 -1
  1148. package/Shaders/color.fragment.js +3 -3
  1149. package/Shaders/color.vertex.js +7 -7
  1150. package/Shaders/colorCorrection.fragment.js +1 -1
  1151. package/Shaders/convolution.fragment.js +1 -1
  1152. package/Shaders/default.fragment.js +26 -26
  1153. package/Shaders/default.vertex.js +31 -31
  1154. package/Shaders/depth.fragment.js +2 -2
  1155. package/Shaders/depth.vertex.js +9 -9
  1156. package/Shaders/depthBoxBlur.fragment.js +1 -1
  1157. package/Shaders/depthOfField.fragment.js +1 -1
  1158. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  1159. package/Shaders/displayPass.fragment.js +1 -1
  1160. package/Shaders/extractHighlights.fragment.js +2 -2
  1161. package/Shaders/filter.fragment.js +1 -1
  1162. package/Shaders/fxaa.fragment.js +1 -1
  1163. package/Shaders/fxaa.vertex.js +1 -1
  1164. package/Shaders/geometry.fragment.js +5 -5
  1165. package/Shaders/geometry.vertex.js +12 -12
  1166. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  1167. package/Shaders/glowMapGeneration.fragment.js +2 -2
  1168. package/Shaders/glowMapGeneration.vertex.js +9 -9
  1169. package/Shaders/glowMapMerge.fragment.js +1 -1
  1170. package/Shaders/glowMapMerge.vertex.js +1 -1
  1171. package/Shaders/gpuRenderParticles.fragment.js +6 -6
  1172. package/Shaders/gpuRenderParticles.vertex.js +3 -3
  1173. package/Shaders/gpuUpdateParticles.fragment.js +1 -1
  1174. package/Shaders/gpuUpdateParticles.vertex.js +1 -1
  1175. package/Shaders/grain.fragment.js +2 -2
  1176. package/Shaders/hdrFiltering.fragment.js +5 -5
  1177. package/Shaders/hdrFiltering.vertex.js +1 -1
  1178. package/Shaders/highlights.fragment.js +1 -1
  1179. package/Shaders/imageProcessing.fragment.js +4 -4
  1180. package/Shaders/kernelBlur.fragment.js +5 -5
  1181. package/Shaders/kernelBlur.vertex.js +3 -3
  1182. package/Shaders/layer.fragment.js +2 -2
  1183. package/Shaders/layer.vertex.js +1 -1
  1184. package/Shaders/lensFlare.fragment.js +1 -1
  1185. package/Shaders/lensFlare.vertex.js +1 -1
  1186. package/Shaders/lensHighlights.fragment.js +1 -1
  1187. package/Shaders/line.fragment.js +3 -3
  1188. package/Shaders/line.vertex.js +5 -5
  1189. package/Shaders/minmaxRedux.fragment.js +1 -1
  1190. package/Shaders/motionBlur.fragment.js +1 -1
  1191. package/Shaders/noise.fragment.js +1 -1
  1192. package/Shaders/outline.fragment.js +3 -3
  1193. package/Shaders/outline.vertex.js +11 -11
  1194. package/Shaders/particles.fragment.js +6 -6
  1195. package/Shaders/particles.vertex.js +3 -3
  1196. package/Shaders/pass.fragment.js +1 -1
  1197. package/Shaders/passCube.fragment.js +1 -1
  1198. package/Shaders/pbr.fragment.js +55 -55
  1199. package/Shaders/pbr.vertex.js +31 -31
  1200. package/Shaders/postprocess.vertex.js +1 -1
  1201. package/Shaders/procedural.vertex.js +1 -1
  1202. package/Shaders/refraction.fragment.js +1 -1
  1203. package/Shaders/rgbdDecode.fragment.js +2 -2
  1204. package/Shaders/rgbdEncode.fragment.js +2 -2
  1205. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  1206. package/Shaders/screenSpaceReflection.fragment.js +1 -1
  1207. package/Shaders/shadowMap.fragment.js +5 -5
  1208. package/Shaders/shadowMap.vertex.js +16 -16
  1209. package/Shaders/sharpen.fragment.js +1 -1
  1210. package/Shaders/spriteMap.fragment.js +1 -1
  1211. package/Shaders/spriteMap.vertex.js +1 -1
  1212. package/Shaders/sprites.fragment.js +4 -4
  1213. package/Shaders/sprites.vertex.js +2 -2
  1214. package/Shaders/ssao.fragment.js +1 -1
  1215. package/Shaders/ssao2.fragment.js +1 -1
  1216. package/Shaders/ssaoCombine.fragment.js +1 -1
  1217. package/Shaders/standard.fragment.js +2 -2
  1218. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  1219. package/Shaders/subSurfaceScattering.fragment.js +5 -5
  1220. package/Shaders/tonemap.fragment.js +1 -1
  1221. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  1222. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  1223. package/Shaders/volumetricLightScatteringPass.vertex.js +9 -9
  1224. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  1225. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  1226. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  1227. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  1228. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
  1229. package/ShadersWGSL/ShadersInclude/instancesVertex.js +1 -1
  1230. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
  1231. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +1 -1
  1232. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
  1233. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
  1234. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
  1235. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
  1236. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  1237. package/Sprites/index.js +6 -6
  1238. package/Sprites/sprite.js +4 -4
  1239. package/Sprites/spriteManager.js +11 -11
  1240. package/Sprites/spriteMap.js +11 -11
  1241. package/Sprites/spriteMap.js.map +1 -1
  1242. package/Sprites/spritePackedManager.js +2 -2
  1243. package/Sprites/spriteRenderer.js +6 -6
  1244. package/Sprites/spriteSceneComponent.js +6 -6
  1245. package/States/index.js +4 -4
  1246. package/XR/features/WebXRAnchorSystem.js +5 -5
  1247. package/XR/features/WebXRBackgroundRemover.js +3 -3
  1248. package/XR/features/WebXRControllerMovement.js +5 -5
  1249. package/XR/features/WebXRControllerPhysics.js +8 -8
  1250. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  1251. package/XR/features/WebXRControllerPointerSelection.js +19 -15
  1252. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  1253. package/XR/features/WebXRControllerTeleportation.js +24 -24
  1254. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  1255. package/XR/features/WebXRDOMOverlay.js +3 -3
  1256. package/XR/features/WebXREyeTracking.js +5 -5
  1257. package/XR/features/WebXRFeaturePointSystem.js +4 -4
  1258. package/XR/features/WebXRHandTracking.js +15 -15
  1259. package/XR/features/WebXRHandTracking.js.map +1 -1
  1260. package/XR/features/WebXRHitTest.js +5 -5
  1261. package/XR/features/WebXRHitTestLegacy.js +5 -5
  1262. package/XR/features/WebXRImageTracking.js +5 -5
  1263. package/XR/features/WebXRLightEstimation.js +12 -12
  1264. package/XR/features/WebXRMeshDetector.js +4 -4
  1265. package/XR/features/WebXRNearInteraction.js +14 -12
  1266. package/XR/features/WebXRNearInteraction.js.map +1 -1
  1267. package/XR/features/WebXRPlaneDetector.js +4 -4
  1268. package/XR/features/WebXRWalkingLocomotion.js +5 -5
  1269. package/XR/features/index.js +19 -19
  1270. package/XR/index.js +12 -12
  1271. package/XR/motionController/index.js +9 -9
  1272. package/XR/motionController/webXRAbstractMotionController.js +6 -6
  1273. package/XR/motionController/webXRControllerComponent.js +1 -1
  1274. package/XR/motionController/webXRGenericHandController.js +2 -2
  1275. package/XR/motionController/webXRGenericMotionController.js +3 -3
  1276. package/XR/motionController/webXRHTCViveMotionController.js +4 -4
  1277. package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
  1278. package/XR/motionController/webXRMotionControllerManager.js +3 -3
  1279. package/XR/motionController/webXROculusTouchMotionController.js +4 -4
  1280. package/XR/motionController/webXRProfiledMotionController.js +10 -10
  1281. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1282. package/XR/webXRCamera.js +7 -7
  1283. package/XR/webXRDefaultExperience.js +7 -7
  1284. package/XR/webXREnterExitUI.js +3 -3
  1285. package/XR/webXRExperienceHelper.js +8 -8
  1286. package/XR/webXRFeaturesManager.js +1 -1
  1287. package/XR/webXRInput.js +3 -3
  1288. package/XR/webXRInputSource.js +5 -5
  1289. package/XR/webXRManagedOutputCanvas.js +2 -2
  1290. package/XR/webXRSessionManager.js +5 -5
  1291. package/assetContainer.js +4 -4
  1292. package/index.d.ts +1 -0
  1293. package/index.js +44 -43
  1294. package/index.js.map +1 -1
  1295. package/license.md +12 -13
  1296. package/node.js +6 -6
  1297. package/node.js.map +1 -1
  1298. package/package.json +10 -1
  1299. package/readme.md +12 -13
  1300. package/scene.d.ts +5 -147
  1301. package/scene.js +46 -229
  1302. package/scene.js.map +1 -1
  1303. package/scene.lts.d.ts +165 -0
  1304. package/scene.lts.js +68 -0
  1305. package/scene.lts.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"depthRenderer.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/depthRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\nimport { Color4 } from \"../Maths/math.color\";\nimport { Mesh } from \"../Meshes/mesh\";\nimport { SubMesh } from \"../Meshes/subMesh\";\nimport { VertexBuffer } from \"../Buffers/buffer\";\nimport { SmartArray } from \"../Misc/smartArray\";\nimport { Scene } from \"../scene\";\nimport { Texture } from \"../Materials/Textures/texture\";\nimport { RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\nimport { MaterialHelper } from \"../Materials/materialHelper\";\nimport { Camera } from \"../Cameras/camera\";\n\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\n\nimport \"../Shaders/depth.fragment\";\nimport \"../Shaders/depth.vertex\";\nimport { _DevTools } from '../Misc/devTools';\n\n/**\n * This represents a depth renderer in Babylon.\n * A depth renderer will render to it's depth map every frame which can be displayed or used in post processing\n */\nexport class DepthRenderer {\n private static _Counter = 0;\n\n private _scene: Scene;\n private _depthMap: RenderTargetTexture;\n private _nameForDrawWrapper: string;\n private readonly _storeNonLinearDepth: boolean;\n private readonly _clearColor: Color4;\n\n /** Get if the depth renderer is using packed depth or not */\n public readonly isPacked: boolean;\n\n private _camera: Nullable<Camera>;\n\n /** Enable or disable the depth renderer. When disabled, the depth texture is not updated */\n public enabled = true;\n\n /** Force writing the transparent objects into the depth map */\n public forceDepthWriteTransparentMeshes = false;\n\n /**\n * Specifies that the depth renderer will only be used within\n * the camera it is created for.\n * This can help forcing its rendering during the camera processing.\n */\n public useOnlyInActiveCamera: boolean = false;\n\n /** @hidden */\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\n throw _DevTools.WarnImport(\"DepthRendererSceneComponent\");\n }\n\n /**\n * Instantiates a depth renderer\n * @param scene The scene the renderer belongs to\n * @param type The texture type of the depth map (default: Engine.TEXTURETYPE_FLOAT)\n * @param camera The camera to be used to render the depth map (default: scene's active camera)\n * @param storeNonLinearDepth Defines whether the depth is stored linearly like in Babylon Shadows or directly like glFragCoord.z\n * @param samplingMode The sampling mode to be used with the render target (Linear, Nearest...)\n */\n constructor(scene: Scene, type: number = 1, camera: Nullable<Camera> = null, storeNonLinearDepth = false, samplingMode = Texture.TRILINEAR_SAMPLINGMODE) {\n this._scene = scene;\n this._storeNonLinearDepth = storeNonLinearDepth;\n this.isPacked = type === 0;\n if (this.isPacked) {\n this._clearColor = new Color4(1.0, 1.0, 1.0, 1.0);\n }\n else {\n this._clearColor = new Color4(1.0, 0.0, 0.0, 1.0);\n }\n\n DepthRenderer._SceneComponentInitialization(this._scene);\n\n this._nameForDrawWrapper = `bjs_depthrenderer_` + DepthRenderer._Counter++;\n this._camera = camera;\n var engine = scene.getEngine();\n\n if (samplingMode !== Texture.NEAREST_SAMPLINGMODE) {\n if (type === 1 && !engine._caps.textureFloatLinearFiltering) {\n samplingMode = Texture.NEAREST_SAMPLINGMODE;\n }\n if (type === 2 && !engine._caps.textureHalfFloatLinearFiltering) {\n samplingMode = Texture.NEAREST_SAMPLINGMODE;\n }\n }\n\n // Render target\n var format = (this.isPacked || !engine._features.supportExtendedTextureFormats) ? 5 : 6;\n this._depthMap = new RenderTargetTexture(\"depthMap\", { width: engine.getRenderWidth(), height: engine.getRenderHeight() }, this._scene, false, true, type,\n false, samplingMode, undefined, undefined, undefined,\n format);\n this._depthMap.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._depthMap.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._depthMap.refreshRate = 1;\n this._depthMap.renderParticles = false;\n this._depthMap.renderList = null;\n\n // Camera to get depth map from to support multiple concurrent cameras\n this._depthMap.activeCamera = this._camera;\n this._depthMap.ignoreCameraViewport = true;\n this._depthMap.useCameraPostProcesses = false;\n\n // set default depth value to 1.0 (far away)\n this._depthMap.onClearObservable.add((engine) => {\n engine.clear(this._clearColor, true, true, true);\n });\n\n this._depthMap.onBeforeBindObservable.add(() => {\n engine._debugPushGroup?.(\"depth renderer\", 1);\n });\n\n this._depthMap.onAfterUnbindObservable.add(() => {\n engine._debugPopGroup?.(1);\n });\n\n // Custom render function\n var renderSubMesh = (subMesh: SubMesh): void => {\n var renderingMesh = subMesh.getRenderingMesh();\n var effectiveMesh = subMesh.getEffectiveMesh();\n var scene = this._scene;\n var engine = scene.getEngine();\n let material = subMesh.getMaterial();\n\n effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;\n\n if (!material || effectiveMesh.infiniteDistance || material.disableDepthWrite || subMesh.verticesCount === 0 || subMesh._renderId === scene.getRenderId()) {\n return;\n }\n\n // Culling\n const detNeg = effectiveMesh._getWorldMatrixDeterminant() < 0;\n let sideOrientation = renderingMesh.overrideMaterialSideOrientation ?? material.sideOrientation;\n if (scene.useRightHandedSystem && !detNeg || !scene.useRightHandedSystem && detNeg) {\n sideOrientation = sideOrientation === 0 ? 1 : 0;\n }\n let reverseSideOrientation = sideOrientation === 0;\n\n engine.setState(material.backFaceCulling, 0, false, reverseSideOrientation, material.cullBackFaces);\n\n // Managing instances\n var batch = renderingMesh._getInstancesRenderList(subMesh._id, !!subMesh.getReplacementMesh());\n\n if (batch.mustReturn) {\n return;\n }\n\n var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined || renderingMesh.hasThinInstances);\n\n let camera = this._camera || scene.activeCamera;\n if (this.isReady(subMesh, hardwareInstancedRendering) && camera) {\n subMesh._renderId = scene.getRenderId();\n\n const drawWrapper = subMesh._getDrawWrapper(this._nameForDrawWrapper)!;\n const effect = DrawWrapper.GetEffect(drawWrapper)!;\n const cameraIsOrtho = camera.mode === Camera.ORTHOGRAPHIC_CAMERA;\n\n engine.enableEffect(drawWrapper);\n\n if (!hardwareInstancedRendering) {\n renderingMesh._bind(subMesh, effect, material.fillMode);\n }\n\n effect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\n effect.setMatrix(\"world\", effectiveMesh.getWorldMatrix());\n\n let minZ: number, maxZ: number;\n\n if (cameraIsOrtho) {\n minZ = !engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : 1;\n maxZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : 1;\n } else {\n minZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? camera.minZ : engine.isNDCHalfZRange ? 0 : camera.minZ;\n maxZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : camera.maxZ;\n }\n\n effect.setFloat2(\"depthValues\", minZ, minZ + maxZ);\n\n // Alpha test\n if (material && material.needAlphaTesting()) {\n var alphaTexture = material.getAlphaTestTexture();\n\n if (alphaTexture) {\n effect.setTexture(\"diffuseSampler\", alphaTexture);\n effect.setMatrix(\"diffuseMatrix\", alphaTexture.getTextureMatrix());\n }\n }\n\n // Bones\n if (renderingMesh.useBones && renderingMesh.computeBonesUsingShaders && renderingMesh.skeleton) {\n const skeleton = renderingMesh.skeleton;\n\n if (skeleton.isUsingTextureForMatrices) {\n const boneTexture = skeleton.getTransformMatrixTexture(renderingMesh);\n if (!boneTexture) {\n return;\n }\n\n effect.setTexture(\"boneSampler\", boneTexture);\n effect.setFloat(\"boneTextureWidth\", 4.0 * (skeleton.bones.length + 1));\n } else {\n effect.setMatrices(\"mBones\", skeleton.getTransformMatrices((renderingMesh)));\n }\n }\n\n // Morph targets\n MaterialHelper.BindMorphTargetParameters(renderingMesh, effect);\n if (renderingMesh.morphTargetManager && renderingMesh.morphTargetManager.isUsingTextureForTargets) {\n renderingMesh.morphTargetManager._bind(effect);\n }\n\n // Draw\n renderingMesh._processRendering(effectiveMesh, subMesh, effect, material.fillMode, batch, hardwareInstancedRendering,\n (isInstance, world) => effect.setMatrix(\"world\", world));\n }\n };\n\n this._depthMap.customRenderFunction = (opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>): void => {\n var index;\n\n if (depthOnlySubMeshes.length) {\n for (index = 0; index < depthOnlySubMeshes.length; index++) {\n renderSubMesh(depthOnlySubMeshes.data[index]);\n }\n }\n\n for (index = 0; index < opaqueSubMeshes.length; index++) {\n renderSubMesh(opaqueSubMeshes.data[index]);\n }\n\n for (index = 0; index < alphaTestSubMeshes.length; index++) {\n renderSubMesh(alphaTestSubMeshes.data[index]);\n }\n\n if (this.forceDepthWriteTransparentMeshes) {\n for (index = 0; index < transparentSubMeshes.length; index++) {\n renderSubMesh(transparentSubMeshes.data[index]);\n }\n } else {\n for (index = 0; index < transparentSubMeshes.length; index++) {\n transparentSubMeshes.data[index].getEffectiveMesh()._internalAbstractMeshDataInfo._isActiveIntermediate = false;\n }\n }\n };\n }\n\n /**\n * Creates the depth rendering effect and checks if the effect is ready.\n * @param subMesh The submesh to be used to render the depth map of\n * @param useInstances If multiple world instances should be used\n * @returns if the depth renderer is ready to render the depth map\n */\n public isReady(subMesh: SubMesh, useInstances: boolean): boolean {\n var material: any = subMesh.getMaterial();\n if (material.disableDepthWrite) {\n return false;\n }\n\n var defines = [];\n\n const subMeshEffect = subMesh._getDrawWrapper(this._nameForDrawWrapper, true)!;\n const engine = this._scene.getEngine();\n\n let effect = subMeshEffect.effect!;\n let cachedDefines = subMeshEffect.defines;\n\n var attribs = [VertexBuffer.PositionKind];\n\n var mesh = subMesh.getMesh();\n\n // Alpha test\n if (material && material.needAlphaTesting() && material.getAlphaTestTexture()) {\n defines.push(\"#define ALPHATEST\");\n if (mesh.isVerticesDataPresent(VertexBuffer.UVKind)) {\n attribs.push(VertexBuffer.UVKind);\n defines.push(\"#define UV1\");\n }\n if (mesh.isVerticesDataPresent(VertexBuffer.UV2Kind)) {\n attribs.push(VertexBuffer.UV2Kind);\n defines.push(\"#define UV2\");\n }\n }\n\n // Bones\n if (mesh.useBones && mesh.computeBonesUsingShaders) {\n attribs.push(VertexBuffer.MatricesIndicesKind);\n attribs.push(VertexBuffer.MatricesWeightsKind);\n if (mesh.numBoneInfluencers > 4) {\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\n }\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\n defines.push(\"#define BonesPerMesh \" + (mesh.skeleton ? mesh.skeleton.bones.length + 1 : 0));\n\n const skeleton = subMesh.getRenderingMesh().skeleton;\n\n if (skeleton?.isUsingTextureForMatrices) {\n defines.push(\"#define BONETEXTURE\");\n }\n } else {\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\n }\n\n // Morph targets\n const morphTargetManager = (mesh as Mesh).morphTargetManager;\n let numMorphInfluencers = 0;\n if (morphTargetManager) {\n if (morphTargetManager.numInfluencers > 0) {\n numMorphInfluencers = morphTargetManager.numInfluencers;\n\n defines.push(\"#define MORPHTARGETS\");\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numMorphInfluencers);\n\n if (morphTargetManager.isUsingTextureForTargets) {\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\n }\n\n MaterialHelper.PrepareAttributesForMorphTargetsInfluencers(attribs, mesh, numMorphInfluencers);\n }\n }\n\n // Instances\n if (useInstances) {\n defines.push(\"#define INSTANCES\");\n MaterialHelper.PushAttributesForInstances(attribs);\n if (subMesh.getRenderingMesh().hasThinInstances) {\n defines.push(\"#define THIN_INSTANCES\");\n }\n }\n\n // None linear depth\n if (this._storeNonLinearDepth) {\n defines.push(\"#define NONLINEARDEPTH\");\n }\n\n // Float Mode\n if (this.isPacked) {\n defines.push(\"#define PACKED\");\n }\n\n // Get correct effect\n var join = defines.join(\"\\n\");\n if (cachedDefines !== join) {\n cachedDefines = join;\n effect = engine.createEffect(\"depth\",\n attribs,\n [\"world\", \"mBones\", \"boneTextureWidth\", \"viewProjection\", \"diffuseMatrix\", \"depthValues\", \"morphTargetInfluences\", \"morphTargetTextureInfo\", \"morphTargetTextureIndices\"],\n [\"diffuseSampler\", \"morphTargets\", \"boneSampler\"], join,\n undefined, undefined, undefined, { maxSimultaneousMorphTargets: numMorphInfluencers });\n }\n\n subMeshEffect.setEffect(effect, cachedDefines);\n\n return effect.isReady();\n }\n\n /**\n * Gets the texture which the depth map will be written to.\n * @returns The depth map texture\n */\n public getDepthMap(): RenderTargetTexture {\n return this._depthMap;\n }\n\n /**\n * Disposes of the depth renderer.\n */\n public dispose(): void {\n this._depthMap.dispose();\n }\n}\n"]}
1
+ {"version":3,"file":"depthRenderer.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/depthRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\nimport { Color4 } from \"../Maths/math.color\";\nimport { Mesh } from \"../Meshes/mesh\";\nimport { SubMesh } from \"../Meshes/subMesh\";\nimport { VertexBuffer } from \"../Buffers/buffer\";\nimport { SmartArray } from \"../Misc/smartArray\";\nimport { Scene } from \"../scene\";\nimport { Texture } from \"../Materials/Textures/texture\";\nimport { RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\nimport { MaterialHelper } from \"../Materials/materialHelper\";\nimport { Camera } from \"../Cameras/camera\";\n\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\n\nimport \"../Shaders/depth.fragment\";\nimport \"../Shaders/depth.vertex\";\nimport { _WarnImport } from '../Misc/devTools';\n\n/**\n * This represents a depth renderer in Babylon.\n * A depth renderer will render to it's depth map every frame which can be displayed or used in post processing\n */\nexport class DepthRenderer {\n private static _Counter = 0;\n\n private _scene: Scene;\n private _depthMap: RenderTargetTexture;\n private _nameForDrawWrapper: string;\n private readonly _storeNonLinearDepth: boolean;\n private readonly _clearColor: Color4;\n\n /** Get if the depth renderer is using packed depth or not */\n public readonly isPacked: boolean;\n\n private _camera: Nullable<Camera>;\n\n /** Enable or disable the depth renderer. When disabled, the depth texture is not updated */\n public enabled = true;\n\n /** Force writing the transparent objects into the depth map */\n public forceDepthWriteTransparentMeshes = false;\n\n /**\n * Specifies that the depth renderer will only be used within\n * the camera it is created for.\n * This can help forcing its rendering during the camera processing.\n */\n public useOnlyInActiveCamera: boolean = false;\n\n /** @hidden */\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\n throw _WarnImport(\"DepthRendererSceneComponent\");\n }\n\n /**\n * Instantiates a depth renderer\n * @param scene The scene the renderer belongs to\n * @param type The texture type of the depth map (default: Engine.TEXTURETYPE_FLOAT)\n * @param camera The camera to be used to render the depth map (default: scene's active camera)\n * @param storeNonLinearDepth Defines whether the depth is stored linearly like in Babylon Shadows or directly like glFragCoord.z\n * @param samplingMode The sampling mode to be used with the render target (Linear, Nearest...)\n */\n constructor(scene: Scene, type: number = 1, camera: Nullable<Camera> = null, storeNonLinearDepth = false, samplingMode = Texture.TRILINEAR_SAMPLINGMODE) {\n this._scene = scene;\n this._storeNonLinearDepth = storeNonLinearDepth;\n this.isPacked = type === 0;\n if (this.isPacked) {\n this._clearColor = new Color4(1.0, 1.0, 1.0, 1.0);\n }\n else {\n this._clearColor = new Color4(1.0, 0.0, 0.0, 1.0);\n }\n\n DepthRenderer._SceneComponentInitialization(this._scene);\n\n this._nameForDrawWrapper = `bjs_depthrenderer_` + DepthRenderer._Counter++;\n this._camera = camera;\n var engine = scene.getEngine();\n\n if (samplingMode !== Texture.NEAREST_SAMPLINGMODE) {\n if (type === 1 && !engine._caps.textureFloatLinearFiltering) {\n samplingMode = Texture.NEAREST_SAMPLINGMODE;\n }\n if (type === 2 && !engine._caps.textureHalfFloatLinearFiltering) {\n samplingMode = Texture.NEAREST_SAMPLINGMODE;\n }\n }\n\n // Render target\n var format = (this.isPacked || !engine._features.supportExtendedTextureFormats) ? 5 : 6;\n this._depthMap = new RenderTargetTexture(\"depthMap\", { width: engine.getRenderWidth(), height: engine.getRenderHeight() }, this._scene, false, true, type,\n false, samplingMode, undefined, undefined, undefined,\n format);\n this._depthMap.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._depthMap.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._depthMap.refreshRate = 1;\n this._depthMap.renderParticles = false;\n this._depthMap.renderList = null;\n\n // Camera to get depth map from to support multiple concurrent cameras\n this._depthMap.activeCamera = this._camera;\n this._depthMap.ignoreCameraViewport = true;\n this._depthMap.useCameraPostProcesses = false;\n\n // set default depth value to 1.0 (far away)\n this._depthMap.onClearObservable.add((engine) => {\n engine.clear(this._clearColor, true, true, true);\n });\n\n this._depthMap.onBeforeBindObservable.add(() => {\n engine._debugPushGroup?.(\"depth renderer\", 1);\n });\n\n this._depthMap.onAfterUnbindObservable.add(() => {\n engine._debugPopGroup?.(1);\n });\n\n // Custom render function\n var renderSubMesh = (subMesh: SubMesh): void => {\n var renderingMesh = subMesh.getRenderingMesh();\n var effectiveMesh = subMesh.getEffectiveMesh();\n var scene = this._scene;\n var engine = scene.getEngine();\n let material = subMesh.getMaterial();\n\n effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;\n\n if (!material || effectiveMesh.infiniteDistance || material.disableDepthWrite || subMesh.verticesCount === 0 || subMesh._renderId === scene.getRenderId()) {\n return;\n }\n\n // Culling\n const detNeg = effectiveMesh._getWorldMatrixDeterminant() < 0;\n let sideOrientation = renderingMesh.overrideMaterialSideOrientation ?? material.sideOrientation;\n if (scene.useRightHandedSystem && !detNeg || !scene.useRightHandedSystem && detNeg) {\n sideOrientation = sideOrientation === 0 ? 1 : 0;\n }\n let reverseSideOrientation = sideOrientation === 0;\n\n engine.setState(material.backFaceCulling, 0, false, reverseSideOrientation, material.cullBackFaces);\n\n // Managing instances\n var batch = renderingMesh._getInstancesRenderList(subMesh._id, !!subMesh.getReplacementMesh());\n\n if (batch.mustReturn) {\n return;\n }\n\n var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined || renderingMesh.hasThinInstances);\n\n let camera = this._camera || scene.activeCamera;\n if (this.isReady(subMesh, hardwareInstancedRendering) && camera) {\n subMesh._renderId = scene.getRenderId();\n\n const drawWrapper = subMesh._getDrawWrapper(this._nameForDrawWrapper)!;\n const effect = DrawWrapper.GetEffect(drawWrapper)!;\n const cameraIsOrtho = camera.mode === Camera.ORTHOGRAPHIC_CAMERA;\n\n engine.enableEffect(drawWrapper);\n\n if (!hardwareInstancedRendering) {\n renderingMesh._bind(subMesh, effect, material.fillMode);\n }\n\n effect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\n effect.setMatrix(\"world\", effectiveMesh.getWorldMatrix());\n\n let minZ: number, maxZ: number;\n\n if (cameraIsOrtho) {\n minZ = !engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : 1;\n maxZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : 1;\n } else {\n minZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? camera.minZ : engine.isNDCHalfZRange ? 0 : camera.minZ;\n maxZ = engine.useReverseDepthBuffer && engine.isNDCHalfZRange ? 0 : camera.maxZ;\n }\n\n effect.setFloat2(\"depthValues\", minZ, minZ + maxZ);\n\n // Alpha test\n if (material && material.needAlphaTesting()) {\n var alphaTexture = material.getAlphaTestTexture();\n\n if (alphaTexture) {\n effect.setTexture(\"diffuseSampler\", alphaTexture);\n effect.setMatrix(\"diffuseMatrix\", alphaTexture.getTextureMatrix());\n }\n }\n\n // Bones\n if (renderingMesh.useBones && renderingMesh.computeBonesUsingShaders && renderingMesh.skeleton) {\n const skeleton = renderingMesh.skeleton;\n\n if (skeleton.isUsingTextureForMatrices) {\n const boneTexture = skeleton.getTransformMatrixTexture(renderingMesh);\n if (!boneTexture) {\n return;\n }\n\n effect.setTexture(\"boneSampler\", boneTexture);\n effect.setFloat(\"boneTextureWidth\", 4.0 * (skeleton.bones.length + 1));\n } else {\n effect.setMatrices(\"mBones\", skeleton.getTransformMatrices((renderingMesh)));\n }\n }\n\n // Morph targets\n MaterialHelper.BindMorphTargetParameters(renderingMesh, effect);\n if (renderingMesh.morphTargetManager && renderingMesh.morphTargetManager.isUsingTextureForTargets) {\n renderingMesh.morphTargetManager._bind(effect);\n }\n\n // Draw\n renderingMesh._processRendering(effectiveMesh, subMesh, effect, material.fillMode, batch, hardwareInstancedRendering,\n (isInstance, world) => effect.setMatrix(\"world\", world));\n }\n };\n\n this._depthMap.customRenderFunction = (opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>): void => {\n var index;\n\n if (depthOnlySubMeshes.length) {\n for (index = 0; index < depthOnlySubMeshes.length; index++) {\n renderSubMesh(depthOnlySubMeshes.data[index]);\n }\n }\n\n for (index = 0; index < opaqueSubMeshes.length; index++) {\n renderSubMesh(opaqueSubMeshes.data[index]);\n }\n\n for (index = 0; index < alphaTestSubMeshes.length; index++) {\n renderSubMesh(alphaTestSubMeshes.data[index]);\n }\n\n if (this.forceDepthWriteTransparentMeshes) {\n for (index = 0; index < transparentSubMeshes.length; index++) {\n renderSubMesh(transparentSubMeshes.data[index]);\n }\n } else {\n for (index = 0; index < transparentSubMeshes.length; index++) {\n transparentSubMeshes.data[index].getEffectiveMesh()._internalAbstractMeshDataInfo._isActiveIntermediate = false;\n }\n }\n };\n }\n\n /**\n * Creates the depth rendering effect and checks if the effect is ready.\n * @param subMesh The submesh to be used to render the depth map of\n * @param useInstances If multiple world instances should be used\n * @returns if the depth renderer is ready to render the depth map\n */\n public isReady(subMesh: SubMesh, useInstances: boolean): boolean {\n var material: any = subMesh.getMaterial();\n if (material.disableDepthWrite) {\n return false;\n }\n\n var defines = [];\n\n const subMeshEffect = subMesh._getDrawWrapper(this._nameForDrawWrapper, true)!;\n const engine = this._scene.getEngine();\n\n let effect = subMeshEffect.effect!;\n let cachedDefines = subMeshEffect.defines;\n\n var attribs = [VertexBuffer.PositionKind];\n\n var mesh = subMesh.getMesh();\n\n // Alpha test\n if (material && material.needAlphaTesting() && material.getAlphaTestTexture()) {\n defines.push(\"#define ALPHATEST\");\n if (mesh.isVerticesDataPresent(VertexBuffer.UVKind)) {\n attribs.push(VertexBuffer.UVKind);\n defines.push(\"#define UV1\");\n }\n if (mesh.isVerticesDataPresent(VertexBuffer.UV2Kind)) {\n attribs.push(VertexBuffer.UV2Kind);\n defines.push(\"#define UV2\");\n }\n }\n\n // Bones\n if (mesh.useBones && mesh.computeBonesUsingShaders) {\n attribs.push(VertexBuffer.MatricesIndicesKind);\n attribs.push(VertexBuffer.MatricesWeightsKind);\n if (mesh.numBoneInfluencers > 4) {\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\n }\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\n defines.push(\"#define BonesPerMesh \" + (mesh.skeleton ? mesh.skeleton.bones.length + 1 : 0));\n\n const skeleton = subMesh.getRenderingMesh().skeleton;\n\n if (skeleton?.isUsingTextureForMatrices) {\n defines.push(\"#define BONETEXTURE\");\n }\n } else {\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\n }\n\n // Morph targets\n const morphTargetManager = (mesh as Mesh).morphTargetManager;\n let numMorphInfluencers = 0;\n if (morphTargetManager) {\n if (morphTargetManager.numInfluencers > 0) {\n numMorphInfluencers = morphTargetManager.numInfluencers;\n\n defines.push(\"#define MORPHTARGETS\");\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numMorphInfluencers);\n\n if (morphTargetManager.isUsingTextureForTargets) {\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\n }\n\n MaterialHelper.PrepareAttributesForMorphTargetsInfluencers(attribs, mesh, numMorphInfluencers);\n }\n }\n\n // Instances\n if (useInstances) {\n defines.push(\"#define INSTANCES\");\n MaterialHelper.PushAttributesForInstances(attribs);\n if (subMesh.getRenderingMesh().hasThinInstances) {\n defines.push(\"#define THIN_INSTANCES\");\n }\n }\n\n // None linear depth\n if (this._storeNonLinearDepth) {\n defines.push(\"#define NONLINEARDEPTH\");\n }\n\n // Float Mode\n if (this.isPacked) {\n defines.push(\"#define PACKED\");\n }\n\n // Get correct effect\n var join = defines.join(\"\\n\");\n if (cachedDefines !== join) {\n cachedDefines = join;\n effect = engine.createEffect(\"depth\",\n attribs,\n [\"world\", \"mBones\", \"boneTextureWidth\", \"viewProjection\", \"diffuseMatrix\", \"depthValues\", \"morphTargetInfluences\", \"morphTargetTextureInfo\", \"morphTargetTextureIndices\"],\n [\"diffuseSampler\", \"morphTargets\", \"boneSampler\"], join,\n undefined, undefined, undefined, { maxSimultaneousMorphTargets: numMorphInfluencers });\n }\n\n subMeshEffect.setEffect(effect, cachedDefines);\n\n return effect.isReady();\n }\n\n /**\n * Gets the texture which the depth map will be written to.\n * @returns The depth map texture\n */\n public getDepthMap(): RenderTargetTexture {\n return this._depthMap;\n }\n\n /**\n * Disposes of the depth renderer.\n */\n public dispose(): void {\n this._depthMap.dispose();\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { Scene } from "../scene";
2
- import { DepthRenderer } from "./depthRenderer";
3
- import { SceneComponentConstants } from "../sceneComponent";
1
+ import { Scene } from "../scene.js";
2
+ import { DepthRenderer } from "./depthRenderer.js";
3
+ import { SceneComponentConstants } from "../sceneComponent.js";
4
4
  Scene.prototype.enableDepthRenderer = function (camera, storeNonLinearDepth, force32bitsFloat) {
5
5
  if (storeNonLinearDepth === void 0) { storeNonLinearDepth = false; }
6
6
  if (force32bitsFloat === void 0) { force32bitsFloat = false; }
@@ -1,15 +1,15 @@
1
1
  import { __extends } from "tslib";
2
- import { VertexBuffer } from "../Buffers/buffer";
3
- import { AbstractMesh } from "../Meshes/abstractMesh";
4
- import { LinesMesh, InstancedLinesMesh } from "../Meshes/linesMesh";
5
- import { Vector3, TmpVectors } from "../Maths/math.vector";
6
- import { Material } from "../Materials/material";
7
- import { ShaderMaterial } from "../Materials/shaderMaterial";
8
- import { Camera } from "../Cameras/camera";
9
- import "../Shaders/line.fragment";
10
- import "../Shaders/line.vertex";
11
- import { SmartArray } from '../Misc/smartArray';
12
- import { Tools } from '../Misc/tools';
2
+ import { VertexBuffer } from "../Buffers/buffer.js";
3
+ import { AbstractMesh } from "../Meshes/abstractMesh.js";
4
+ import { LinesMesh, InstancedLinesMesh } from "../Meshes/linesMesh.js";
5
+ import { Vector3, TmpVectors } from "../Maths/math.vector.js";
6
+ import { Material } from "../Materials/material.js";
7
+ import { ShaderMaterial } from "../Materials/shaderMaterial.js";
8
+ import { Camera } from "../Cameras/camera.js";
9
+ import "../Shaders/line.fragment.js";
10
+ import "../Shaders/line.vertex.js";
11
+ import { SmartArray } from '../Misc/smartArray.js';
12
+ import { Tools } from '../Misc/tools.js';
13
13
  AbstractMesh.prototype.disableEdgesRendering = function () {
14
14
  if (this._edgesRenderer) {
15
15
  this._edgesRenderer.dispose();
@@ -1,15 +1,15 @@
1
- import { Matrix } from "../Maths/math.vector";
2
- import { VertexBuffer } from "../Buffers/buffer";
3
- import { Texture } from "../Materials/Textures/texture";
4
- import { MultiRenderTarget } from "../Materials/Textures/multiRenderTarget";
5
- import { DrawWrapper } from "../Materials/drawWrapper";
6
- import { MaterialHelper } from "../Materials/materialHelper";
7
- import { Color4 } from "../Maths/math.color";
8
- import { _DevTools } from "../Misc/devTools";
9
- import { Material } from "../Materials/material";
10
- import "../Shaders/geometry.fragment";
11
- import "../Shaders/geometry.vertex";
12
- import { MaterialFlags } from "../Materials/materialFlags";
1
+ import { Matrix } from "../Maths/math.vector.js";
2
+ import { VertexBuffer } from "../Buffers/buffer.js";
3
+ import { Texture } from "../Materials/Textures/texture.js";
4
+ import { MultiRenderTarget } from "../Materials/Textures/multiRenderTarget.js";
5
+ import { DrawWrapper } from "../Materials/drawWrapper.js";
6
+ import { MaterialHelper } from "../Materials/materialHelper.js";
7
+ import { Color4 } from "../Maths/math.color.js";
8
+ import { _WarnImport } from "../Misc/devTools.js";
9
+ import { Material } from "../Materials/material.js";
10
+ import "../Shaders/geometry.fragment.js";
11
+ import "../Shaders/geometry.vertex.js";
12
+ import { MaterialFlags } from "../Materials/materialFlags.js";
13
13
  /**
14
14
  * This renderer is helpful to fill one of the render target with a geometry buffer.
15
15
  */
@@ -691,7 +691,7 @@ var GeometryBufferRenderer = /** @class */ (function () {
691
691
  GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE = 4;
692
692
  /** @hidden */
693
693
  GeometryBufferRenderer._SceneComponentInitialization = function (_) {
694
- throw _DevTools.WarnImport("GeometryBufferRendererSceneComponent");
694
+ throw _WarnImport("GeometryBufferRendererSceneComponent");
695
695
  };
696
696
  return GeometryBufferRenderer;
697
697
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"geometryBufferRenderer.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/geometryBufferRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { SubMesh } from \"../Meshes/subMesh\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\n\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { InternalTexture } from \"../Materials/Textures/internalTexture\";\r\nimport { MultiRenderTarget } from \"../Materials/Textures/multiRenderTarget\";\r\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\r\nimport { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { MaterialHelper } from \"../Materials/materialHelper\";\r\nimport { Scene } from \"../scene\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { _DevTools } from \"../Misc/devTools\";\r\nimport { Observer } from \"../Misc/observable\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { Nullable } from \"../types\";\r\nimport { Material } from \"../Materials/material\";\r\n\r\nimport \"../Shaders/geometry.fragment\";\r\nimport \"../Shaders/geometry.vertex\";\r\nimport { MaterialFlags } from \"../Materials/materialFlags\";\r\n\r\n/** @hidden */\r\ninterface ISavedTransformationMatrix {\r\n world: Matrix;\r\n viewProjection: Matrix;\r\n}\r\n\r\n/**\r\n * This renderer is helpful to fill one of the render target with a geometry buffer.\r\n */\r\nexport class GeometryBufferRenderer {\r\n /**\r\n * Constant used to retrieve the depth texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.DEPTH_TEXTURE_INDEX)\r\n */\r\n public static readonly DEPTH_TEXTURE_TYPE = 0;\r\n /**\r\n * Constant used to retrieve the normal texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.NORMAL_TEXTURE_INDEX)\r\n */\r\n public static readonly NORMAL_TEXTURE_TYPE = 1;\r\n /**\r\n * Constant used to retrieve the position texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.POSITION_TEXTURE_INDEX)\r\n */\r\n public static readonly POSITION_TEXTURE_TYPE = 2;\r\n /**\r\n * Constant used to retrieve the velocity texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.VELOCITY_TEXTURE_INDEX)\r\n */\r\n public static readonly VELOCITY_TEXTURE_TYPE = 3;\r\n /**\r\n * Constant used to retrieve the reflectivity texture index in the G-Buffer textures array\r\n * using the getIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE)\r\n */\r\n public static readonly REFLECTIVITY_TEXTURE_TYPE = 4;\r\n\r\n /**\r\n * Dictionary used to store the previous transformation matrices of each rendered mesh\r\n * in order to compute objects velocities when enableVelocity is set to \"true\"\r\n * @hidden\r\n */\r\n public _previousTransformationMatrices: { [index: number]: ISavedTransformationMatrix } = {};\r\n /**\r\n * Dictionary used to store the previous bones transformation matrices of each rendered mesh\r\n * in order to compute objects velocities when enableVelocity is set to \"true\"\r\n * @hidden\r\n */\r\n public _previousBonesTransformationMatrices: { [index: number]: Float32Array } = {};\r\n /**\r\n * Array used to store the ignored skinned meshes while computing velocity map (typically used by the motion blur post-process).\r\n * Avoids computing bones velocities and computes only mesh's velocity itself (position, rotation, scaling).\r\n */\r\n public excludedSkinnedMeshesFromVelocity: AbstractMesh[] = [];\r\n\r\n /** Gets or sets a boolean indicating if transparent meshes should be rendered */\r\n public renderTransparentMeshes = true;\r\n\r\n private _scene: Scene;\r\n private _resizeObserver: Nullable<Observer<Engine>> = null;\r\n private _multiRenderTarget: MultiRenderTarget;\r\n private _ratio: number;\r\n private _enablePosition: boolean = false;\r\n private _enableVelocity: boolean = false;\r\n private _enableReflectivity: boolean = false;\r\n\r\n private _positionIndex: number = -1;\r\n private _velocityIndex: number = -1;\r\n private _reflectivityIndex: number = -1;\r\n private _depthIndex: number = -1;\r\n private _normalIndex: number = -1;\r\n\r\n private _linkedWithPrePass: boolean = false;\r\n private _prePassRenderer: PrePassRenderer;\r\n private _attachments: number[];\r\n private _useUbo: boolean;\r\n\r\n protected _drawWrapper: DrawWrapper;\r\n protected _cachedDefines: string;\r\n\r\n /**\r\n * @hidden\r\n * Sets up internal structures to share outputs with PrePassRenderer\r\n * This method should only be called by the PrePassRenderer itself\r\n */\r\n public _linkPrePassRenderer(prePassRenderer: PrePassRenderer) {\r\n this._linkedWithPrePass = true;\r\n this._prePassRenderer = prePassRenderer;\r\n\r\n if (this._multiRenderTarget) {\r\n // prevents clearing of the RT since it's done by prepass\r\n this._multiRenderTarget.onClearObservable.clear();\r\n this._multiRenderTarget.onClearObservable.add((engine) => {\r\n // pass\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Separates internal structures from PrePassRenderer so the geometry buffer can now operate by itself.\r\n * This method should only be called by the PrePassRenderer itself\r\n */\r\n public _unlinkPrePassRenderer() {\r\n this._linkedWithPrePass = false;\r\n this._createRenderTargets();\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Resets the geometry buffer layout\r\n */\r\n public _resetLayout() {\r\n this._enablePosition = false;\r\n this._enableReflectivity = false;\r\n this._enableVelocity = false;\r\n this._attachments = [];\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Replaces a texture in the geometry buffer renderer\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _forceTextureType(geometryBufferType: number, index: number) {\r\n if (geometryBufferType === GeometryBufferRenderer.POSITION_TEXTURE_TYPE) {\r\n this._positionIndex = index;\r\n this._enablePosition = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE) {\r\n this._velocityIndex = index;\r\n this._enableVelocity = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE) {\r\n this._reflectivityIndex = index;\r\n this._enableReflectivity = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.DEPTH_TEXTURE_TYPE) {\r\n this._depthIndex = index;\r\n } else if (geometryBufferType === GeometryBufferRenderer.NORMAL_TEXTURE_TYPE) {\r\n this._normalIndex = index;\r\n }\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Sets texture attachments\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _setAttachments(attachments: number[]) {\r\n this._attachments = attachments;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Replaces the first texture which is hard coded as a depth texture in the geometry buffer\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _linkInternalTexture(internalTexture: InternalTexture) {\r\n this._multiRenderTarget._texture = internalTexture;\r\n }\r\n\r\n /**\r\n * Gets the render list (meshes to be rendered) used in the G buffer.\r\n */\r\n public get renderList() {\r\n return this._multiRenderTarget.renderList;\r\n }\r\n\r\n /**\r\n * Set the render list (meshes to be rendered) used in the G buffer.\r\n */\r\n public set renderList(meshes: Nullable<AbstractMesh[]>) {\r\n this._multiRenderTarget.renderList = meshes;\r\n }\r\n\r\n /**\r\n * Gets whether or not G buffer are supported by the running hardware.\r\n * This requires draw buffer supports\r\n */\r\n public get isSupported(): boolean {\r\n return this._multiRenderTarget.isSupported;\r\n }\r\n\r\n /**\r\n * Returns the index of the given texture type in the G-Buffer textures array\r\n * @param textureType The texture type constant. For example GeometryBufferRenderer.POSITION_TEXTURE_INDEX\r\n * @returns the index of the given texture type in the G-Buffer textures array\r\n */\r\n public getTextureIndex(textureType: number): number {\r\n switch (textureType) {\r\n case GeometryBufferRenderer.POSITION_TEXTURE_TYPE:\r\n return this._positionIndex;\r\n case GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE:\r\n return this._velocityIndex;\r\n case GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE:\r\n return this._reflectivityIndex;\r\n default:\r\n return -1;\r\n }\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects positions are enabled for the G buffer.\r\n */\r\n public get enablePosition(): boolean {\r\n return this._enablePosition;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects positions are enabled for the G buffer.\r\n */\r\n public set enablePosition(enable: boolean) {\r\n this._enablePosition = enable;\r\n\r\n // PrePass handles index and texture links\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects velocities are enabled for the G buffer.\r\n */\r\n public get enableVelocity(): boolean {\r\n return this._enableVelocity;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects velocities are enabled for the G buffer.\r\n */\r\n public set enableVelocity(enable: boolean) {\r\n this._enableVelocity = enable;\r\n\r\n if (!enable) {\r\n this._previousTransformationMatrices = {};\r\n }\r\n\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n\r\n this._scene.needsPreviousWorldMatrices = enable;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects roughness are enabled in the G buffer.\r\n */\r\n public get enableReflectivity(): boolean {\r\n return this._enableReflectivity;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects roughness are enabled for the G buffer.\r\n */\r\n public set enableReflectivity(enable: boolean) {\r\n this._enableReflectivity = enable;\r\n\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the scene associated with the buffer.\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Gets the ratio used by the buffer during its creation.\r\n * How big is the buffer related to the main canvas.\r\n */\r\n public get ratio(): number {\r\n return this._ratio;\r\n }\r\n\r\n /** @hidden */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _DevTools.WarnImport(\"GeometryBufferRendererSceneComponent\");\r\n };\r\n\r\n /**\r\n * Creates a new G Buffer for the scene\r\n * @param scene The scene the buffer belongs to\r\n * @param ratio How big is the buffer related to the main canvas.\r\n */\r\n constructor(scene: Scene, ratio: number = 1) {\r\n this._scene = scene;\r\n this._ratio = ratio;\r\n this._useUbo = scene.getEngine().supportsUniformBuffers;\r\n this._drawWrapper = new DrawWrapper(scene.getEngine());\r\n\r\n GeometryBufferRenderer._SceneComponentInitialization(this._scene);\r\n\r\n // Render target\r\n this._createRenderTargets();\r\n }\r\n\r\n /**\r\n * Checks whether everything is ready to render a submesh to the G buffer.\r\n * @param subMesh the submesh to check readiness for\r\n * @param useInstances is the mesh drawn using instance or not\r\n * @returns true if ready otherwise false\r\n */\r\n public isReady(subMesh: SubMesh, useInstances: boolean): boolean {\r\n var material = <any>subMesh.getMaterial();\r\n\r\n if (material && material.disableDepthWrite) {\r\n return false;\r\n }\r\n\r\n var defines = [];\r\n var attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n var mesh = subMesh.getMesh();\r\n\r\n // Alpha test\r\n if (material) {\r\n let needUv = false;\r\n if (material.needAlphaTesting() && material.getAlphaTestTexture()) {\r\n defines.push(\"#define ALPHATEST\");\r\n defines.push(`#define ALPHATEST_UV${material.getAlphaTestTexture().coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n\r\n if (material.bumpTexture && MaterialFlags.BumpTextureEnabled) {\r\n defines.push(\"#define BUMP\");\r\n defines.push(`#define BUMP_UV${material.bumpTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n if (material.specularTexture) {\r\n defines.push(\"#define HAS_SPECULAR\");\r\n defines.push(`#define REFLECTIVITY_UV${material.specularTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n } else if (material.reflectivityTexture) {\r\n defines.push(\"#define HAS_REFLECTIVITY\");\r\n defines.push(`#define REFLECTIVITY_UV${material.reflectivityTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n }\r\n\r\n if (needUv) {\r\n defines.push(\"#define NEED_UV\");\r\n if (mesh.isVerticesDataPresent(VertexBuffer.UVKind)) {\r\n attribs.push(VertexBuffer.UVKind);\r\n defines.push(\"#define UV1\");\r\n }\r\n if (mesh.isVerticesDataPresent(VertexBuffer.UV2Kind)) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n defines.push(\"#define UV2\");\r\n }\r\n }\r\n }\r\n\r\n // PrePass\r\n if (this._linkedWithPrePass) {\r\n defines.push(\"#define PREPASS\");\r\n if (this._depthIndex !== -1) {\r\n defines.push(\"#define DEPTH_INDEX \" + this._depthIndex);\r\n defines.push(\"#define PREPASS_DEPTH\");\r\n }\r\n if (this._normalIndex !== -1) {\r\n defines.push(\"#define NORMAL_INDEX \" + this._normalIndex);\r\n defines.push(\"#define PREPASS_NORMAL\");\r\n }\r\n }\r\n\r\n // Buffers\r\n if (this._enablePosition) {\r\n defines.push(\"#define POSITION\");\r\n defines.push(\"#define POSITION_INDEX \" + this._positionIndex);\r\n }\r\n\r\n if (this._enableVelocity) {\r\n defines.push(\"#define VELOCITY\");\r\n defines.push(\"#define VELOCITY_INDEX \" + this._velocityIndex);\r\n if (this.excludedSkinnedMeshesFromVelocity.indexOf(mesh) === -1) {\r\n defines.push(\"#define BONES_VELOCITY_ENABLED\");\r\n }\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n defines.push(\"#define REFLECTIVITY\");\r\n defines.push(\"#define REFLECTIVITY_INDEX \" + this._reflectivityIndex);\r\n }\r\n\r\n // Bones\r\n if (mesh.useBones && mesh.computeBonesUsingShaders) {\r\n attribs.push(VertexBuffer.MatricesIndicesKind);\r\n attribs.push(VertexBuffer.MatricesWeightsKind);\r\n if (mesh.numBoneInfluencers > 4) {\r\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\r\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\r\n }\r\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\r\n defines.push(\"#define BonesPerMesh \" + (mesh.skeleton ? mesh.skeleton.bones.length + 1 : 0));\r\n } else {\r\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\r\n }\r\n\r\n // Morph targets\r\n const morphTargetManager = (mesh as Mesh).morphTargetManager;\r\n let numMorphInfluencers = 0;\r\n if (morphTargetManager) {\r\n if (morphTargetManager.numInfluencers > 0) {\r\n numMorphInfluencers = morphTargetManager.numInfluencers;\r\n\r\n defines.push(\"#define MORPHTARGETS\");\r\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numMorphInfluencers);\r\n if (morphTargetManager.isUsingTextureForTargets) {\r\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\r\n }\r\n MaterialHelper.PrepareAttributesForMorphTargetsInfluencers(attribs, mesh, numMorphInfluencers);\r\n }\r\n }\r\n\r\n // Instances\r\n if (useInstances) {\r\n defines.push(\"#define INSTANCES\");\r\n MaterialHelper.PushAttributesForInstances(attribs, this._enableVelocity);\r\n if (subMesh.getRenderingMesh().hasThinInstances) {\r\n defines.push(\"#define THIN_INSTANCES\");\r\n }\r\n }\r\n\r\n // Setup textures count\r\n if (this._linkedWithPrePass) {\r\n defines.push(\"#define RENDER_TARGET_COUNT \" + this._attachments.length);\r\n } else {\r\n defines.push(\"#define RENDER_TARGET_COUNT \" + this._multiRenderTarget.textures.length);\r\n }\r\n\r\n // Get correct effect\r\n var join = defines.join(\"\\n\");\r\n if (this._cachedDefines !== join) {\r\n this._cachedDefines = join;\r\n this._drawWrapper.effect = this._scene.getEngine().createEffect(\r\n \"geometry\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: [\r\n \"world\",\r\n \"mBones\",\r\n \"viewProjection\",\r\n \"diffuseMatrix\",\r\n \"view\",\r\n \"previousWorld\",\r\n \"previousViewProjection\",\r\n \"mPreviousBones\",\r\n \"bumpMatrix\",\r\n \"reflectivityMatrix\",\r\n \"vTangentSpaceParams\",\r\n \"vBumpInfos\",\r\n \"morphTargetInfluences\",\r\n \"morphTargetTextureInfo\",\r\n \"morphTargetTextureIndices\",\r\n ],\r\n samplers: [\"diffuseSampler\", \"bumpSampler\", \"reflectivitySampler\", \"morphTargets\"],\r\n defines: join,\r\n onCompiled: null,\r\n fallbacks: null,\r\n onError: null,\r\n uniformBuffersNames: [\"Scene\"],\r\n indexParameters: { buffersCount: this._multiRenderTarget.textures.length - 1, maxSimultaneousMorphTargets: numMorphInfluencers },\r\n },\r\n this._scene.getEngine()\r\n );\r\n }\r\n\r\n return this._drawWrapper.effect!.isReady();\r\n }\r\n\r\n /**\r\n * Gets the current underlying G Buffer.\r\n * @returns the buffer\r\n */\r\n public getGBuffer(): MultiRenderTarget {\r\n return this._multiRenderTarget;\r\n }\r\n\r\n /**\r\n * Gets the number of samples used to render the buffer (anti aliasing).\r\n */\r\n public get samples(): number {\r\n return this._multiRenderTarget.samples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples used to render the buffer (anti aliasing).\r\n */\r\n public set samples(value: number) {\r\n this._multiRenderTarget.samples = value;\r\n }\r\n\r\n /**\r\n * Disposes the renderer and frees up associated resources.\r\n */\r\n public dispose(): void {\r\n if (this._resizeObserver) {\r\n const engine = this._scene.getEngine();\r\n engine.onResizeObservable.remove(this._resizeObserver);\r\n this._resizeObserver = null;\r\n }\r\n this.getGBuffer().dispose();\r\n }\r\n\r\n private _assignRenderTargetIndices(): [number, string[]] {\r\n const textureNames: string[] = [];\r\n let count = 2;\r\n\r\n textureNames.push(\"gBuffer_Depth\", \"gBuffer_Normal\");\r\n\r\n if (this._enablePosition) {\r\n this._positionIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Position\");\r\n }\r\n\r\n if (this._enableVelocity) {\r\n this._velocityIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Velocity\");\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n this._reflectivityIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Reflectivity\");\r\n }\r\n\r\n return [count, textureNames];\r\n }\r\n\r\n protected _createRenderTargets(): void {\r\n var engine = this._scene.getEngine();\r\n const [count, textureNames] = this._assignRenderTargetIndices();\r\n\r\n let type = 0;\r\n if (engine._caps.textureFloat && engine._caps.textureFloatLinearFiltering) {\r\n type = 1;\r\n } else if (engine._caps.textureHalfFloat && engine._caps.textureHalfFloatLinearFiltering) {\r\n type = 2;\r\n }\r\n\r\n this._multiRenderTarget = new MultiRenderTarget(\"gBuffer\", { width: engine.getRenderWidth() * this._ratio, height: engine.getRenderHeight() * this._ratio }, count, this._scene, { generateMipMaps: false, generateDepthTexture: true, defaultType: type }, textureNames.concat(\"gBuffer_DepthBuffer\"));\r\n if (!this.isSupported) {\r\n return;\r\n }\r\n this._multiRenderTarget.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._multiRenderTarget.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n this._multiRenderTarget.refreshRate = 1;\r\n this._multiRenderTarget.renderParticles = false;\r\n this._multiRenderTarget.renderList = null;\r\n\r\n // set default depth value to 1.0 (far away)\r\n this._multiRenderTarget.onClearObservable.add((engine) => {\r\n engine.clear(new Color4(0.0, 0.0, 0.0, 0.0), true, true, true);\r\n });\r\n\r\n this._resizeObserver = engine.onResizeObservable.add(() => {\r\n if (this._multiRenderTarget) {\r\n this._multiRenderTarget.resize({ width: engine.getRenderWidth() * this._ratio, height: engine.getRenderHeight() * this._ratio });\r\n }\r\n });\r\n\r\n // Custom render function\r\n var renderSubMesh = (subMesh: SubMesh): void => {\r\n var renderingMesh = subMesh.getRenderingMesh();\r\n var effectiveMesh = subMesh.getEffectiveMesh();\r\n var scene = this._scene;\r\n var engine = scene.getEngine();\r\n let material = <any>subMesh.getMaterial();\r\n\r\n if (!material) {\r\n return;\r\n }\r\n\r\n effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;\r\n\r\n // Velocity\r\n if (this._enableVelocity && !this._previousTransformationMatrices[effectiveMesh.uniqueId]) {\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId] = {\r\n world: Matrix.Identity(),\r\n viewProjection: scene.getTransformMatrix(),\r\n };\r\n\r\n if (renderingMesh.skeleton) {\r\n const bonesTransformations = renderingMesh.skeleton.getTransformMatrices(renderingMesh);\r\n this._previousBonesTransformationMatrices[renderingMesh.uniqueId] = this._copyBonesTransformationMatrices(bonesTransformations, new Float32Array(bonesTransformations.length));\r\n }\r\n }\r\n\r\n // Managing instances\r\n var batch = renderingMesh._getInstancesRenderList(subMesh._id, !!subMesh.getReplacementMesh());\r\n\r\n if (batch.mustReturn) {\r\n return;\r\n }\r\n\r\n var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null || renderingMesh.hasThinInstances);\r\n var world = effectiveMesh.getWorldMatrix();\r\n\r\n if (this.isReady(subMesh, hardwareInstancedRendering)) {\r\n const effect = this._drawWrapper.effect!;\r\n\r\n engine.enableEffect(this._drawWrapper);\r\n if (!hardwareInstancedRendering) {\r\n renderingMesh._bind(subMesh, effect, material.fillMode);\r\n }\r\n\r\n if (!this._useUbo) {\r\n effect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n effect.setMatrix(\"view\", scene.getViewMatrix());\r\n } else {\r\n this._scene.finalizeSceneUbo();\r\n MaterialHelper.BindSceneUniformBuffer(effect, this._scene.getSceneUniformBuffer());\r\n }\r\n\r\n if (material) {\r\n var sideOrientation: Nullable<number>;\r\n let instanceDataStorage = (renderingMesh as Mesh)._instanceDataStorage;\r\n\r\n if (!instanceDataStorage.isFrozen && (material.backFaceCulling || material.overrideMaterialSideOrientation !== null)) {\r\n let mainDeterminant = effectiveMesh._getWorldMatrixDeterminant();\r\n sideOrientation = material.overrideMaterialSideOrientation;\r\n if (sideOrientation == null) {\r\n sideOrientation = material.sideOrientation;\r\n }\r\n if (mainDeterminant < 0) {\r\n sideOrientation = sideOrientation === Material.ClockWiseSideOrientation ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;\r\n }\r\n } else {\r\n sideOrientation = instanceDataStorage.sideOrientation;\r\n }\r\n\r\n material._preBind(this._drawWrapper, sideOrientation);\r\n\r\n // Alpha test\r\n if (material.needAlphaTesting()) {\r\n var alphaTexture = material.getAlphaTestTexture();\r\n if (alphaTexture) {\r\n effect.setTexture(\"diffuseSampler\", alphaTexture);\r\n effect.setMatrix(\"diffuseMatrix\", alphaTexture.getTextureMatrix());\r\n }\r\n }\r\n\r\n // Bump\r\n if (material.bumpTexture && scene.getEngine().getCaps().standardDerivatives && MaterialFlags.BumpTextureEnabled) {\r\n effect.setFloat3(\"vBumpInfos\", material.bumpTexture.coordinatesIndex, 1.0 / material.bumpTexture.level, material.parallaxScaleBias);\r\n effect.setMatrix(\"bumpMatrix\", material.bumpTexture.getTextureMatrix());\r\n effect.setTexture(\"bumpSampler\", material.bumpTexture);\r\n effect.setFloat2(\"vTangentSpaceParams\", material.invertNormalMapX ? -1.0 : 1.0, material.invertNormalMapY ? -1.0 : 1.0);\r\n }\r\n\r\n // Roughness\r\n if (this._enableReflectivity) {\r\n if (material.specularTexture) {\r\n effect.setMatrix(\"reflectivityMatrix\", material.specularTexture.getTextureMatrix());\r\n effect.setTexture(\"reflectivitySampler\", material.specularTexture);\r\n } else if (material.reflectivityTexture) {\r\n effect.setMatrix(\"reflectivityMatrix\", material.reflectivityTexture.getTextureMatrix());\r\n effect.setTexture(\"reflectivitySampler\", material.reflectivityTexture);\r\n }\r\n }\r\n }\r\n\r\n // Bones\r\n if (renderingMesh.useBones && renderingMesh.computeBonesUsingShaders && renderingMesh.skeleton) {\r\n effect.setMatrices(\"mBones\", renderingMesh.skeleton.getTransformMatrices(renderingMesh));\r\n if (this._enableVelocity) {\r\n effect.setMatrices(\"mPreviousBones\", this._previousBonesTransformationMatrices[renderingMesh.uniqueId]);\r\n }\r\n }\r\n\r\n // Morph targets\r\n MaterialHelper.BindMorphTargetParameters(renderingMesh, effect);\r\n if (renderingMesh.morphTargetManager && renderingMesh.morphTargetManager.isUsingTextureForTargets) {\r\n renderingMesh.morphTargetManager._bind(effect);\r\n }\r\n\r\n // Velocity\r\n if (this._enableVelocity) {\r\n effect.setMatrix(\"previousWorld\", this._previousTransformationMatrices[effectiveMesh.uniqueId].world);\r\n effect.setMatrix(\"previousViewProjection\", this._previousTransformationMatrices[effectiveMesh.uniqueId].viewProjection);\r\n if (hardwareInstancedRendering && renderingMesh.hasThinInstances) {\r\n effect.setMatrix(\"world\", world);\r\n }\r\n }\r\n\r\n // Draw\r\n renderingMesh._processRendering(effectiveMesh, subMesh, effect, material.fillMode, batch, hardwareInstancedRendering, (isInstance, w) => {\r\n if (!isInstance) {\r\n effect.setMatrix(\"world\", w);\r\n }\r\n });\r\n }\r\n\r\n // Velocity\r\n if (this._enableVelocity) {\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId].world = world.clone();\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId].viewProjection = this._scene.getTransformMatrix().clone();\r\n if (renderingMesh.skeleton) {\r\n this._copyBonesTransformationMatrices(renderingMesh.skeleton.getTransformMatrices(renderingMesh), this._previousBonesTransformationMatrices[effectiveMesh.uniqueId]);\r\n }\r\n }\r\n };\r\n\r\n this._multiRenderTarget.customRenderFunction = (opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>): void => {\r\n var index;\r\n\r\n if (this._linkedWithPrePass) {\r\n if (!this._prePassRenderer.enabled) {\r\n return;\r\n }\r\n this._scene.getEngine().bindAttachments(this._attachments);\r\n }\r\n\r\n if (depthOnlySubMeshes.length) {\r\n engine.setColorWrite(false);\r\n for (index = 0; index < depthOnlySubMeshes.length; index++) {\r\n renderSubMesh(depthOnlySubMeshes.data[index]);\r\n }\r\n engine.setColorWrite(true);\r\n }\r\n\r\n for (index = 0; index < opaqueSubMeshes.length; index++) {\r\n renderSubMesh(opaqueSubMeshes.data[index]);\r\n }\r\n\r\n engine.setDepthWrite(false);\r\n for (index = 0; index < alphaTestSubMeshes.length; index++) {\r\n renderSubMesh(alphaTestSubMeshes.data[index]);\r\n }\r\n\r\n if (this.renderTransparentMeshes) {\r\n for (index = 0; index < transparentSubMeshes.length; index++) {\r\n renderSubMesh(transparentSubMeshes.data[index]);\r\n }\r\n }\r\n engine.setDepthWrite(true);\r\n };\r\n }\r\n\r\n // Copies the bones transformation matrices into the target array and returns the target's reference\r\n private _copyBonesTransformationMatrices(source: Float32Array, target: Float32Array): Float32Array {\r\n for (let i = 0; i < source.length; i++) {\r\n target[i] = source[i];\r\n }\r\n\r\n return target;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"geometryBufferRenderer.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/geometryBufferRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D;;GAEG;AACH;IAiRI;;;;OAIG;IACH,gCAAY,KAAY,EAAE,KAAiB;QAAjB,sBAAA,EAAA,SAAiB;QA3P3C;;;;WAIG;QACI,oCAA+B,GAAoD,EAAE,CAAC;QAC7F;;;;WAIG;QACI,yCAAoC,GAAsC,EAAE,CAAC;QACpF;;;WAGG;QACI,sCAAiC,GAAmB,EAAE,CAAC;QAE9D,iFAAiF;QAC1E,4BAAuB,GAAG,IAAI,CAAC;QAG9B,oBAAe,GAA+B,IAAI,CAAC;QAGnD,oBAAe,GAAY,KAAK,CAAC;QACjC,oBAAe,GAAY,KAAK,CAAC;QACjC,wBAAmB,GAAY,KAAK,CAAC;QAErC,mBAAc,GAAW,CAAC,CAAC,CAAC;QAC5B,mBAAc,GAAW,CAAC,CAAC,CAAC;QAC5B,uBAAkB,GAAW,CAAC,CAAC,CAAC;QAChC,gBAAW,GAAW,CAAC,CAAC,CAAC;QACzB,iBAAY,GAAW,CAAC,CAAC,CAAC;QAE1B,uBAAkB,GAAY,KAAK,CAAC;QAyNxC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,sBAAsB,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAEvD,sBAAsB,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElE,gBAAgB;QAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IA1ND;;;;OAIG;IACI,qDAAoB,GAA3B,UAA4B,eAAgC;QACxD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QAExC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,yDAAyD;YACzD,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,MAAM;gBACjD,OAAO;YACX,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED;;;;OAIG;IACI,uDAAsB,GAA7B;QACI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,6CAAY,GAAnB;QACI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,kDAAiB,GAAxB,UAAyB,kBAA0B,EAAE,KAAa;QAC9D,IAAI,kBAAkB,KAAK,sBAAsB,CAAC,qBAAqB,EAAE;YACrE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;aAAM,IAAI,kBAAkB,KAAK,sBAAsB,CAAC,qBAAqB,EAAE;YAC5E,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;aAAM,IAAI,kBAAkB,KAAK,sBAAsB,CAAC,yBAAyB,EAAE;YAChF,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;aAAM,IAAI,kBAAkB,KAAK,sBAAsB,CAAC,kBAAkB,EAAE;YACzE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;aAAM,IAAI,kBAAkB,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;YAC1E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC7B;IACL,CAAC;IAED;;;;OAIG;IACI,gDAAe,GAAtB,UAAuB,WAAqB;QACxC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,qDAAoB,GAA3B,UAA4B,eAAgC;QACxD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,eAAe,CAAC;IACvD,CAAC;IAKD,sBAAW,8CAAU;QAHrB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAC9C,CAAC;QAED;;WAEG;aACH,UAAsB,MAAgC;YAClD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,MAAM,CAAC;QAChD,CAAC;;;OAPA;IAaD,sBAAW,+CAAW;QAJtB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;QAC/C,CAAC;;;OAAA;IAED;;;;OAIG;IACI,gDAAe,GAAtB,UAAuB,WAAmB;QACtC,QAAQ,WAAW,EAAE;YACjB,KAAK,sBAAsB,CAAC,qBAAqB;gBAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;YAC/B,KAAK,sBAAsB,CAAC,qBAAqB;gBAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;YAC/B,KAAK,sBAAsB,CAAC,yBAAyB;gBACjD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YACnC;gBACI,OAAO,CAAC,CAAC,CAAC;SACjB;IACL,CAAC;IAKD,sBAAW,kDAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED;;WAEG;aACH,UAA0B,MAAe;YACrC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAE9B,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;QACL,CAAC;;;OAbA;IAkBD,sBAAW,kDAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED;;WAEG;aACH,UAA0B,MAAe;YACrC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAE9B,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC;aAC7C;YAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;YAED,IAAI,CAAC,MAAM,CAAC,0BAA0B,GAAG,MAAM,CAAC;QACpD,CAAC;;;OAlBA;IAuBD,sBAAW,sDAAkB;QAH7B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,mBAAmB,CAAC;QACpC,CAAC;QAED;;WAEG;aACH,UAA8B,MAAe;YACzC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;YAElC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;QACL,CAAC;;;OAZA;IAiBD,sBAAW,yCAAK;QAHhB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAMD,sBAAW,yCAAK;QAJhB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAwBD;;;;;OAKG;IACI,wCAAO,GAAd,UAAe,OAAgB,EAAE,YAAqB;QAClD,IAAI,QAAQ,GAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;QAE1C,IAAI,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YACxC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE7B,aAAa;QACb,IAAI,QAAQ,EAAE;YACV,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE;gBAC/D,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,0BAAuB,QAAQ,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAE,CAAC,CAAC;gBAC3F,MAAM,GAAG,IAAI,CAAC;aACjB;YAED,IAAI,QAAQ,CAAC,WAAW,IAAI,aAAa,CAAC,kBAAkB,EAAE;gBAC1D,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,qBAAkB,QAAQ,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAE,CAAC,CAAC;gBAC5E,MAAM,GAAG,IAAI,CAAC;aACjB;YAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,QAAQ,CAAC,eAAe,EAAE;oBAC1B,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,6BAA0B,QAAQ,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC,CAAE,CAAC,CAAC;oBACxF,MAAM,GAAG,IAAI,CAAC;iBACjB;qBAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE;oBACrC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,6BAA0B,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,GAAG,CAAC,CAAE,CAAC,CAAC;oBAC5F,MAAM,GAAG,IAAI,CAAC;iBACjB;aACJ;YAED,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChC,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;oBACjD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC/B;gBACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBAClD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC/B;aACJ;SACJ;QAED,UAAU;QACV,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAE;gBACzB,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;aACzC;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;aAC1C;SACJ;QAED,UAAU;QACV,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;SACjE;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;aAClD;SACJ;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACzE;QAED,QAAQ;QACR,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAChD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;aACvD;YACD,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChG;aAAM;YACH,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;SAClD;QAED,gBAAgB;QAChB,IAAM,kBAAkB,GAAI,IAAa,CAAC,kBAAkB,CAAC;QAC7D,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,kBAAkB,EAAE;YACpB,IAAI,kBAAkB,CAAC,cAAc,GAAG,CAAC,EAAE;gBACvC,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,CAAC;gBAExD,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,mBAAmB,CAAC,CAAC;gBACrE,IAAI,kBAAkB,CAAC,wBAAwB,EAAE;oBAC7C,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;iBAChD;gBACD,cAAc,CAAC,2CAA2C,CAAC,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;aAClG;SACJ;QAED,YAAY;QACZ,IAAI,YAAY,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,EAAE;gBAC7C,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;aAC1C;SACJ;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3E;aAAM;YACH,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC1F;QAED,qBAAqB;QACrB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,CAC3D,UAAU,EACV;gBACI,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE;oBACX,OAAO;oBACP,QAAQ;oBACR,gBAAgB;oBAChB,eAAe;oBACf,MAAM;oBACN,eAAe;oBACf,wBAAwB;oBACxB,gBAAgB;oBAChB,YAAY;oBACZ,oBAAoB;oBACpB,qBAAqB;oBACrB,YAAY;oBACZ,uBAAuB;oBACvB,wBAAwB;oBACxB,2BAA2B;iBAC9B;gBACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,cAAc,CAAC;gBAClF,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,mBAAmB,EAAE,CAAC,OAAO,CAAC;gBAC9B,eAAe,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,2BAA2B,EAAE,mBAAmB,EAAE;aACnI,EACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAC1B,CAAC;SACL;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,2CAAU,GAAjB;QACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAKD,sBAAW,2CAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAC3C,CAAC;QAED;;WAEG;aACH,UAAmB,KAAa;YAC5B,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5C,CAAC;;;OAPA;IASD;;OAEG;IACI,wCAAO,GAAd;QACI,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEO,2DAA0B,GAAlC;QACI,IAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,KAAK,EAAE,CAAC;YACR,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,KAAK,EAAE,CAAC;YACR,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,KAAK,EAAE,CAAC;YACR,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SAC7C;QAED,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACjC,CAAC;IAES,qDAAoB,GAA9B;QAAA,iBAgNC;QA/MG,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAA,KAAwB,IAAI,CAAC,0BAA0B,EAAE,EAAxD,KAAK,QAAA,EAAE,YAAY,QAAqC,CAAC;QAEhE,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACvE,IAAI,GAAG,CAAC,CAAC;SACZ;aAAM,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;YACtF,IAAI,GAAG,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACxS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,OAAO;SACV;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,eAAe,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;QAE1C,4CAA4C;QAC5C,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,MAAM;YACjD,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC;YACjD,IAAI,KAAI,CAAC,kBAAkB,EAAE;gBACzB,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,KAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACpI;QACL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,aAAa,GAAG,UAAC,OAAgB;YACjC,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAI,KAAK,GAAG,KAAI,CAAC,MAAM,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,QAAQ,GAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;YAE1C,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO;aACV;YAED,aAAa,CAAC,6BAA6B,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAE1E,WAAW;YACX,IAAI,KAAI,CAAC,eAAe,IAAI,CAAC,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACvF,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG;oBAC3D,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;oBACxB,cAAc,EAAE,KAAK,CAAC,kBAAkB,EAAE;iBAC7C,CAAC;gBAEF,IAAI,aAAa,CAAC,QAAQ,EAAE;oBACxB,IAAM,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;oBACxF,KAAI,CAAC,oCAAoC,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAI,CAAC,gCAAgC,CAAC,oBAAoB,EAAE,IAAI,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClL;aACJ;YAED,qBAAqB;YACrB,IAAI,KAAK,GAAG,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE/F,IAAI,KAAK,CAAC,UAAU,EAAE;gBAClB,OAAO;aACV;YAED,IAAI,0BAA0B,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACtJ,IAAI,KAAK,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YAE3C,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,EAAE,0BAA0B,CAAC,EAAE;gBACnD,IAAM,QAAM,GAAG,KAAI,CAAC,YAAY,CAAC,MAAO,CAAC;gBAEzC,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;gBACvC,IAAI,CAAC,0BAA0B,EAAE;oBAC7B,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,QAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBAC3D;gBAED,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE;oBACf,QAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;oBAC/D,QAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;iBACnD;qBAAM;oBACH,KAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC/B,cAAc,CAAC,sBAAsB,CAAC,QAAM,EAAE,KAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;iBACtF;gBAED,IAAI,QAAQ,EAAE;oBACV,IAAI,eAAiC,CAAC;oBACtC,IAAI,mBAAmB,GAAI,aAAsB,CAAC,oBAAoB,CAAC;oBAEvE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,+BAA+B,KAAK,IAAI,CAAC,EAAE;wBAClH,IAAI,eAAe,GAAG,aAAa,CAAC,0BAA0B,EAAE,CAAC;wBACjE,eAAe,GAAG,QAAQ,CAAC,+BAA+B,CAAC;wBAC3D,IAAI,eAAe,IAAI,IAAI,EAAE;4BACzB,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;yBAC9C;wBACD,IAAI,eAAe,GAAG,CAAC,EAAE;4BACrB,eAAe,GAAG,eAAe,KAAK,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;yBAC1J;qBACJ;yBAAM;wBACH,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;qBACzD;oBAED,QAAQ,CAAC,QAAQ,CAAC,KAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;oBAEtD,aAAa;oBACb,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE;wBAC7B,IAAI,YAAY,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;wBAClD,IAAI,YAAY,EAAE;4BACd,QAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;4BAClD,QAAM,CAAC,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;yBACtE;qBACJ;oBAED,OAAO;oBACP,IAAI,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,mBAAmB,IAAI,aAAa,CAAC,kBAAkB,EAAE;wBAC7G,QAAM,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;wBACpI,QAAM,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;wBACxE,QAAM,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;wBACvD,QAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBAC3H;oBAED,YAAY;oBACZ,IAAI,KAAI,CAAC,mBAAmB,EAAE;wBAC1B,IAAI,QAAQ,CAAC,eAAe,EAAE;4BAC1B,QAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;4BACpF,QAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;yBACtE;6BAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE;4BACrC,QAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;4BACxF,QAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;yBAC1E;qBACJ;iBACJ;gBAED,QAAQ;gBACR,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,wBAAwB,IAAI,aAAa,CAAC,QAAQ,EAAE;oBAC5F,QAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;oBACzF,IAAI,KAAI,CAAC,eAAe,EAAE;wBACtB,QAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAI,CAAC,oCAAoC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;qBAC3G;iBACJ;gBAED,gBAAgB;gBAChB,cAAc,CAAC,yBAAyB,CAAC,aAAa,EAAE,QAAM,CAAC,CAAC;gBAChE,IAAI,aAAa,CAAC,kBAAkB,IAAI,aAAa,CAAC,kBAAkB,CAAC,wBAAwB,EAAE;oBAC/F,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAM,CAAC,CAAC;iBAClD;gBAED,WAAW;gBACX,IAAI,KAAI,CAAC,eAAe,EAAE;oBACtB,QAAM,CAAC,SAAS,CAAC,eAAe,EAAE,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;oBACtG,QAAM,CAAC,SAAS,CAAC,wBAAwB,EAAE,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;oBACxH,IAAI,0BAA0B,IAAI,aAAa,CAAC,gBAAgB,EAAE;wBAC9D,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;qBACpC;iBACJ;gBAED,OAAO;gBACP,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,EAAE,QAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,UAAC,UAAU,EAAE,CAAC;oBAChI,IAAI,CAAC,UAAU,EAAE;wBACb,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;qBAChC;gBACL,CAAC,CAAC,CAAC;aACN;YAED,WAAW;YACX,IAAI,KAAI,CAAC,eAAe,EAAE;gBACtB,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnF,KAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,KAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC;gBACvH,IAAI,aAAa,CAAC,QAAQ,EAAE;oBACxB,KAAI,CAAC,gCAAgC,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,KAAI,CAAC,oCAAoC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACxK;aACJ;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,UAAC,eAAoC,EAAE,kBAAuC,EAAE,oBAAyC,EAAE,kBAAuC;YAC7M,IAAI,KAAK,CAAC;YAEV,IAAI,KAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;oBAChC,OAAO;iBACV;gBACD,KAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;aAC9D;YAED,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBAC3B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACxD,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACjD;gBACD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC9B;YAED,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACrD,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9C;YAED,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACxD,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,KAAI,CAAC,uBAAuB,EAAE;gBAC9B,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC1D,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACnD;aACJ;YACD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;IACN,CAAC;IAED,oGAAoG;IAC5F,iEAAgC,GAAxC,UAAyC,MAAoB,EAAE,MAAoB;QAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACzB;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAtuBD;;;OAGG;IACoB,yCAAkB,GAAG,CAAC,CAAC;IAC9C;;;OAGG;IACoB,0CAAmB,GAAG,CAAC,CAAC;IAC/C;;;OAGG;IACoB,4CAAqB,GAAG,CAAC,CAAC;IACjD;;;OAGG;IACoB,4CAAqB,GAAG,CAAC,CAAC;IACjD;;;OAGG;IACoB,gDAAyB,GAAG,CAAC,CAAC;IAmPrD,cAAc;IACA,oDAA6B,GAA2B,UAAC,CAAC;QACpE,MAAM,WAAW,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC,CAAC;IAydN,6BAAC;CAAA,AAxuBD,IAwuBC;SAxuBY,sBAAsB","sourcesContent":["import { Matrix } from \"../Maths/math.vector\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { SubMesh } from \"../Meshes/subMesh\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\n\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { InternalTexture } from \"../Materials/Textures/internalTexture\";\r\nimport { MultiRenderTarget } from \"../Materials/Textures/multiRenderTarget\";\r\nimport { DrawWrapper } from \"../Materials/drawWrapper\";\r\nimport { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { MaterialHelper } from \"../Materials/materialHelper\";\r\nimport { Scene } from \"../scene\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { Observer } from \"../Misc/observable\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { Nullable } from \"../types\";\r\nimport { Material } from \"../Materials/material\";\r\n\r\nimport \"../Shaders/geometry.fragment\";\r\nimport \"../Shaders/geometry.vertex\";\r\nimport { MaterialFlags } from \"../Materials/materialFlags\";\r\n\r\n/** @hidden */\r\ninterface ISavedTransformationMatrix {\r\n world: Matrix;\r\n viewProjection: Matrix;\r\n}\r\n\r\n/**\r\n * This renderer is helpful to fill one of the render target with a geometry buffer.\r\n */\r\nexport class GeometryBufferRenderer {\r\n /**\r\n * Constant used to retrieve the depth texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.DEPTH_TEXTURE_INDEX)\r\n */\r\n public static readonly DEPTH_TEXTURE_TYPE = 0;\r\n /**\r\n * Constant used to retrieve the normal texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.NORMAL_TEXTURE_INDEX)\r\n */\r\n public static readonly NORMAL_TEXTURE_TYPE = 1;\r\n /**\r\n * Constant used to retrieve the position texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.POSITION_TEXTURE_INDEX)\r\n */\r\n public static readonly POSITION_TEXTURE_TYPE = 2;\r\n /**\r\n * Constant used to retrieve the velocity texture index in the G-Buffer textures array\r\n * using getIndex(GeometryBufferRenderer.VELOCITY_TEXTURE_INDEX)\r\n */\r\n public static readonly VELOCITY_TEXTURE_TYPE = 3;\r\n /**\r\n * Constant used to retrieve the reflectivity texture index in the G-Buffer textures array\r\n * using the getIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE)\r\n */\r\n public static readonly REFLECTIVITY_TEXTURE_TYPE = 4;\r\n\r\n /**\r\n * Dictionary used to store the previous transformation matrices of each rendered mesh\r\n * in order to compute objects velocities when enableVelocity is set to \"true\"\r\n * @hidden\r\n */\r\n public _previousTransformationMatrices: { [index: number]: ISavedTransformationMatrix } = {};\r\n /**\r\n * Dictionary used to store the previous bones transformation matrices of each rendered mesh\r\n * in order to compute objects velocities when enableVelocity is set to \"true\"\r\n * @hidden\r\n */\r\n public _previousBonesTransformationMatrices: { [index: number]: Float32Array } = {};\r\n /**\r\n * Array used to store the ignored skinned meshes while computing velocity map (typically used by the motion blur post-process).\r\n * Avoids computing bones velocities and computes only mesh's velocity itself (position, rotation, scaling).\r\n */\r\n public excludedSkinnedMeshesFromVelocity: AbstractMesh[] = [];\r\n\r\n /** Gets or sets a boolean indicating if transparent meshes should be rendered */\r\n public renderTransparentMeshes = true;\r\n\r\n private _scene: Scene;\r\n private _resizeObserver: Nullable<Observer<Engine>> = null;\r\n private _multiRenderTarget: MultiRenderTarget;\r\n private _ratio: number;\r\n private _enablePosition: boolean = false;\r\n private _enableVelocity: boolean = false;\r\n private _enableReflectivity: boolean = false;\r\n\r\n private _positionIndex: number = -1;\r\n private _velocityIndex: number = -1;\r\n private _reflectivityIndex: number = -1;\r\n private _depthIndex: number = -1;\r\n private _normalIndex: number = -1;\r\n\r\n private _linkedWithPrePass: boolean = false;\r\n private _prePassRenderer: PrePassRenderer;\r\n private _attachments: number[];\r\n private _useUbo: boolean;\r\n\r\n protected _drawWrapper: DrawWrapper;\r\n protected _cachedDefines: string;\r\n\r\n /**\r\n * @hidden\r\n * Sets up internal structures to share outputs with PrePassRenderer\r\n * This method should only be called by the PrePassRenderer itself\r\n */\r\n public _linkPrePassRenderer(prePassRenderer: PrePassRenderer) {\r\n this._linkedWithPrePass = true;\r\n this._prePassRenderer = prePassRenderer;\r\n\r\n if (this._multiRenderTarget) {\r\n // prevents clearing of the RT since it's done by prepass\r\n this._multiRenderTarget.onClearObservable.clear();\r\n this._multiRenderTarget.onClearObservable.add((engine) => {\r\n // pass\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Separates internal structures from PrePassRenderer so the geometry buffer can now operate by itself.\r\n * This method should only be called by the PrePassRenderer itself\r\n */\r\n public _unlinkPrePassRenderer() {\r\n this._linkedWithPrePass = false;\r\n this._createRenderTargets();\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Resets the geometry buffer layout\r\n */\r\n public _resetLayout() {\r\n this._enablePosition = false;\r\n this._enableReflectivity = false;\r\n this._enableVelocity = false;\r\n this._attachments = [];\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Replaces a texture in the geometry buffer renderer\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _forceTextureType(geometryBufferType: number, index: number) {\r\n if (geometryBufferType === GeometryBufferRenderer.POSITION_TEXTURE_TYPE) {\r\n this._positionIndex = index;\r\n this._enablePosition = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE) {\r\n this._velocityIndex = index;\r\n this._enableVelocity = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE) {\r\n this._reflectivityIndex = index;\r\n this._enableReflectivity = true;\r\n } else if (geometryBufferType === GeometryBufferRenderer.DEPTH_TEXTURE_TYPE) {\r\n this._depthIndex = index;\r\n } else if (geometryBufferType === GeometryBufferRenderer.NORMAL_TEXTURE_TYPE) {\r\n this._normalIndex = index;\r\n }\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Sets texture attachments\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _setAttachments(attachments: number[]) {\r\n this._attachments = attachments;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Replaces the first texture which is hard coded as a depth texture in the geometry buffer\r\n * Useful when linking textures of the prepass renderer\r\n */\r\n public _linkInternalTexture(internalTexture: InternalTexture) {\r\n this._multiRenderTarget._texture = internalTexture;\r\n }\r\n\r\n /**\r\n * Gets the render list (meshes to be rendered) used in the G buffer.\r\n */\r\n public get renderList() {\r\n return this._multiRenderTarget.renderList;\r\n }\r\n\r\n /**\r\n * Set the render list (meshes to be rendered) used in the G buffer.\r\n */\r\n public set renderList(meshes: Nullable<AbstractMesh[]>) {\r\n this._multiRenderTarget.renderList = meshes;\r\n }\r\n\r\n /**\r\n * Gets whether or not G buffer are supported by the running hardware.\r\n * This requires draw buffer supports\r\n */\r\n public get isSupported(): boolean {\r\n return this._multiRenderTarget.isSupported;\r\n }\r\n\r\n /**\r\n * Returns the index of the given texture type in the G-Buffer textures array\r\n * @param textureType The texture type constant. For example GeometryBufferRenderer.POSITION_TEXTURE_INDEX\r\n * @returns the index of the given texture type in the G-Buffer textures array\r\n */\r\n public getTextureIndex(textureType: number): number {\r\n switch (textureType) {\r\n case GeometryBufferRenderer.POSITION_TEXTURE_TYPE:\r\n return this._positionIndex;\r\n case GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE:\r\n return this._velocityIndex;\r\n case GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE:\r\n return this._reflectivityIndex;\r\n default:\r\n return -1;\r\n }\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects positions are enabled for the G buffer.\r\n */\r\n public get enablePosition(): boolean {\r\n return this._enablePosition;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects positions are enabled for the G buffer.\r\n */\r\n public set enablePosition(enable: boolean) {\r\n this._enablePosition = enable;\r\n\r\n // PrePass handles index and texture links\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects velocities are enabled for the G buffer.\r\n */\r\n public get enableVelocity(): boolean {\r\n return this._enableVelocity;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects velocities are enabled for the G buffer.\r\n */\r\n public set enableVelocity(enable: boolean) {\r\n this._enableVelocity = enable;\r\n\r\n if (!enable) {\r\n this._previousTransformationMatrices = {};\r\n }\r\n\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n\r\n this._scene.needsPreviousWorldMatrices = enable;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if objects roughness are enabled in the G buffer.\r\n */\r\n public get enableReflectivity(): boolean {\r\n return this._enableReflectivity;\r\n }\r\n\r\n /**\r\n * Sets whether or not objects roughness are enabled for the G buffer.\r\n */\r\n public set enableReflectivity(enable: boolean) {\r\n this._enableReflectivity = enable;\r\n\r\n if (!this._linkedWithPrePass) {\r\n this.dispose();\r\n this._createRenderTargets();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the scene associated with the buffer.\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Gets the ratio used by the buffer during its creation.\r\n * How big is the buffer related to the main canvas.\r\n */\r\n public get ratio(): number {\r\n return this._ratio;\r\n }\r\n\r\n /** @hidden */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"GeometryBufferRendererSceneComponent\");\r\n };\r\n\r\n /**\r\n * Creates a new G Buffer for the scene\r\n * @param scene The scene the buffer belongs to\r\n * @param ratio How big is the buffer related to the main canvas.\r\n */\r\n constructor(scene: Scene, ratio: number = 1) {\r\n this._scene = scene;\r\n this._ratio = ratio;\r\n this._useUbo = scene.getEngine().supportsUniformBuffers;\r\n this._drawWrapper = new DrawWrapper(scene.getEngine());\r\n\r\n GeometryBufferRenderer._SceneComponentInitialization(this._scene);\r\n\r\n // Render target\r\n this._createRenderTargets();\r\n }\r\n\r\n /**\r\n * Checks whether everything is ready to render a submesh to the G buffer.\r\n * @param subMesh the submesh to check readiness for\r\n * @param useInstances is the mesh drawn using instance or not\r\n * @returns true if ready otherwise false\r\n */\r\n public isReady(subMesh: SubMesh, useInstances: boolean): boolean {\r\n var material = <any>subMesh.getMaterial();\r\n\r\n if (material && material.disableDepthWrite) {\r\n return false;\r\n }\r\n\r\n var defines = [];\r\n var attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n var mesh = subMesh.getMesh();\r\n\r\n // Alpha test\r\n if (material) {\r\n let needUv = false;\r\n if (material.needAlphaTesting() && material.getAlphaTestTexture()) {\r\n defines.push(\"#define ALPHATEST\");\r\n defines.push(`#define ALPHATEST_UV${material.getAlphaTestTexture().coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n\r\n if (material.bumpTexture && MaterialFlags.BumpTextureEnabled) {\r\n defines.push(\"#define BUMP\");\r\n defines.push(`#define BUMP_UV${material.bumpTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n if (material.specularTexture) {\r\n defines.push(\"#define HAS_SPECULAR\");\r\n defines.push(`#define REFLECTIVITY_UV${material.specularTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n } else if (material.reflectivityTexture) {\r\n defines.push(\"#define HAS_REFLECTIVITY\");\r\n defines.push(`#define REFLECTIVITY_UV${material.reflectivityTexture.coordinatesIndex + 1}`);\r\n needUv = true;\r\n }\r\n }\r\n\r\n if (needUv) {\r\n defines.push(\"#define NEED_UV\");\r\n if (mesh.isVerticesDataPresent(VertexBuffer.UVKind)) {\r\n attribs.push(VertexBuffer.UVKind);\r\n defines.push(\"#define UV1\");\r\n }\r\n if (mesh.isVerticesDataPresent(VertexBuffer.UV2Kind)) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n defines.push(\"#define UV2\");\r\n }\r\n }\r\n }\r\n\r\n // PrePass\r\n if (this._linkedWithPrePass) {\r\n defines.push(\"#define PREPASS\");\r\n if (this._depthIndex !== -1) {\r\n defines.push(\"#define DEPTH_INDEX \" + this._depthIndex);\r\n defines.push(\"#define PREPASS_DEPTH\");\r\n }\r\n if (this._normalIndex !== -1) {\r\n defines.push(\"#define NORMAL_INDEX \" + this._normalIndex);\r\n defines.push(\"#define PREPASS_NORMAL\");\r\n }\r\n }\r\n\r\n // Buffers\r\n if (this._enablePosition) {\r\n defines.push(\"#define POSITION\");\r\n defines.push(\"#define POSITION_INDEX \" + this._positionIndex);\r\n }\r\n\r\n if (this._enableVelocity) {\r\n defines.push(\"#define VELOCITY\");\r\n defines.push(\"#define VELOCITY_INDEX \" + this._velocityIndex);\r\n if (this.excludedSkinnedMeshesFromVelocity.indexOf(mesh) === -1) {\r\n defines.push(\"#define BONES_VELOCITY_ENABLED\");\r\n }\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n defines.push(\"#define REFLECTIVITY\");\r\n defines.push(\"#define REFLECTIVITY_INDEX \" + this._reflectivityIndex);\r\n }\r\n\r\n // Bones\r\n if (mesh.useBones && mesh.computeBonesUsingShaders) {\r\n attribs.push(VertexBuffer.MatricesIndicesKind);\r\n attribs.push(VertexBuffer.MatricesWeightsKind);\r\n if (mesh.numBoneInfluencers > 4) {\r\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\r\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\r\n }\r\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\r\n defines.push(\"#define BonesPerMesh \" + (mesh.skeleton ? mesh.skeleton.bones.length + 1 : 0));\r\n } else {\r\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\r\n }\r\n\r\n // Morph targets\r\n const morphTargetManager = (mesh as Mesh).morphTargetManager;\r\n let numMorphInfluencers = 0;\r\n if (morphTargetManager) {\r\n if (morphTargetManager.numInfluencers > 0) {\r\n numMorphInfluencers = morphTargetManager.numInfluencers;\r\n\r\n defines.push(\"#define MORPHTARGETS\");\r\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numMorphInfluencers);\r\n if (morphTargetManager.isUsingTextureForTargets) {\r\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\r\n }\r\n MaterialHelper.PrepareAttributesForMorphTargetsInfluencers(attribs, mesh, numMorphInfluencers);\r\n }\r\n }\r\n\r\n // Instances\r\n if (useInstances) {\r\n defines.push(\"#define INSTANCES\");\r\n MaterialHelper.PushAttributesForInstances(attribs, this._enableVelocity);\r\n if (subMesh.getRenderingMesh().hasThinInstances) {\r\n defines.push(\"#define THIN_INSTANCES\");\r\n }\r\n }\r\n\r\n // Setup textures count\r\n if (this._linkedWithPrePass) {\r\n defines.push(\"#define RENDER_TARGET_COUNT \" + this._attachments.length);\r\n } else {\r\n defines.push(\"#define RENDER_TARGET_COUNT \" + this._multiRenderTarget.textures.length);\r\n }\r\n\r\n // Get correct effect\r\n var join = defines.join(\"\\n\");\r\n if (this._cachedDefines !== join) {\r\n this._cachedDefines = join;\r\n this._drawWrapper.effect = this._scene.getEngine().createEffect(\r\n \"geometry\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: [\r\n \"world\",\r\n \"mBones\",\r\n \"viewProjection\",\r\n \"diffuseMatrix\",\r\n \"view\",\r\n \"previousWorld\",\r\n \"previousViewProjection\",\r\n \"mPreviousBones\",\r\n \"bumpMatrix\",\r\n \"reflectivityMatrix\",\r\n \"vTangentSpaceParams\",\r\n \"vBumpInfos\",\r\n \"morphTargetInfluences\",\r\n \"morphTargetTextureInfo\",\r\n \"morphTargetTextureIndices\",\r\n ],\r\n samplers: [\"diffuseSampler\", \"bumpSampler\", \"reflectivitySampler\", \"morphTargets\"],\r\n defines: join,\r\n onCompiled: null,\r\n fallbacks: null,\r\n onError: null,\r\n uniformBuffersNames: [\"Scene\"],\r\n indexParameters: { buffersCount: this._multiRenderTarget.textures.length - 1, maxSimultaneousMorphTargets: numMorphInfluencers },\r\n },\r\n this._scene.getEngine()\r\n );\r\n }\r\n\r\n return this._drawWrapper.effect!.isReady();\r\n }\r\n\r\n /**\r\n * Gets the current underlying G Buffer.\r\n * @returns the buffer\r\n */\r\n public getGBuffer(): MultiRenderTarget {\r\n return this._multiRenderTarget;\r\n }\r\n\r\n /**\r\n * Gets the number of samples used to render the buffer (anti aliasing).\r\n */\r\n public get samples(): number {\r\n return this._multiRenderTarget.samples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples used to render the buffer (anti aliasing).\r\n */\r\n public set samples(value: number) {\r\n this._multiRenderTarget.samples = value;\r\n }\r\n\r\n /**\r\n * Disposes the renderer and frees up associated resources.\r\n */\r\n public dispose(): void {\r\n if (this._resizeObserver) {\r\n const engine = this._scene.getEngine();\r\n engine.onResizeObservable.remove(this._resizeObserver);\r\n this._resizeObserver = null;\r\n }\r\n this.getGBuffer().dispose();\r\n }\r\n\r\n private _assignRenderTargetIndices(): [number, string[]] {\r\n const textureNames: string[] = [];\r\n let count = 2;\r\n\r\n textureNames.push(\"gBuffer_Depth\", \"gBuffer_Normal\");\r\n\r\n if (this._enablePosition) {\r\n this._positionIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Position\");\r\n }\r\n\r\n if (this._enableVelocity) {\r\n this._velocityIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Velocity\");\r\n }\r\n\r\n if (this._enableReflectivity) {\r\n this._reflectivityIndex = count;\r\n count++;\r\n textureNames.push(\"gBuffer_Reflectivity\");\r\n }\r\n\r\n return [count, textureNames];\r\n }\r\n\r\n protected _createRenderTargets(): void {\r\n var engine = this._scene.getEngine();\r\n const [count, textureNames] = this._assignRenderTargetIndices();\r\n\r\n let type = 0;\r\n if (engine._caps.textureFloat && engine._caps.textureFloatLinearFiltering) {\r\n type = 1;\r\n } else if (engine._caps.textureHalfFloat && engine._caps.textureHalfFloatLinearFiltering) {\r\n type = 2;\r\n }\r\n\r\n this._multiRenderTarget = new MultiRenderTarget(\"gBuffer\", { width: engine.getRenderWidth() * this._ratio, height: engine.getRenderHeight() * this._ratio }, count, this._scene, { generateMipMaps: false, generateDepthTexture: true, defaultType: type }, textureNames.concat(\"gBuffer_DepthBuffer\"));\r\n if (!this.isSupported) {\r\n return;\r\n }\r\n this._multiRenderTarget.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._multiRenderTarget.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n this._multiRenderTarget.refreshRate = 1;\r\n this._multiRenderTarget.renderParticles = false;\r\n this._multiRenderTarget.renderList = null;\r\n\r\n // set default depth value to 1.0 (far away)\r\n this._multiRenderTarget.onClearObservable.add((engine) => {\r\n engine.clear(new Color4(0.0, 0.0, 0.0, 0.0), true, true, true);\r\n });\r\n\r\n this._resizeObserver = engine.onResizeObservable.add(() => {\r\n if (this._multiRenderTarget) {\r\n this._multiRenderTarget.resize({ width: engine.getRenderWidth() * this._ratio, height: engine.getRenderHeight() * this._ratio });\r\n }\r\n });\r\n\r\n // Custom render function\r\n var renderSubMesh = (subMesh: SubMesh): void => {\r\n var renderingMesh = subMesh.getRenderingMesh();\r\n var effectiveMesh = subMesh.getEffectiveMesh();\r\n var scene = this._scene;\r\n var engine = scene.getEngine();\r\n let material = <any>subMesh.getMaterial();\r\n\r\n if (!material) {\r\n return;\r\n }\r\n\r\n effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;\r\n\r\n // Velocity\r\n if (this._enableVelocity && !this._previousTransformationMatrices[effectiveMesh.uniqueId]) {\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId] = {\r\n world: Matrix.Identity(),\r\n viewProjection: scene.getTransformMatrix(),\r\n };\r\n\r\n if (renderingMesh.skeleton) {\r\n const bonesTransformations = renderingMesh.skeleton.getTransformMatrices(renderingMesh);\r\n this._previousBonesTransformationMatrices[renderingMesh.uniqueId] = this._copyBonesTransformationMatrices(bonesTransformations, new Float32Array(bonesTransformations.length));\r\n }\r\n }\r\n\r\n // Managing instances\r\n var batch = renderingMesh._getInstancesRenderList(subMesh._id, !!subMesh.getReplacementMesh());\r\n\r\n if (batch.mustReturn) {\r\n return;\r\n }\r\n\r\n var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null || renderingMesh.hasThinInstances);\r\n var world = effectiveMesh.getWorldMatrix();\r\n\r\n if (this.isReady(subMesh, hardwareInstancedRendering)) {\r\n const effect = this._drawWrapper.effect!;\r\n\r\n engine.enableEffect(this._drawWrapper);\r\n if (!hardwareInstancedRendering) {\r\n renderingMesh._bind(subMesh, effect, material.fillMode);\r\n }\r\n\r\n if (!this._useUbo) {\r\n effect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n effect.setMatrix(\"view\", scene.getViewMatrix());\r\n } else {\r\n this._scene.finalizeSceneUbo();\r\n MaterialHelper.BindSceneUniformBuffer(effect, this._scene.getSceneUniformBuffer());\r\n }\r\n\r\n if (material) {\r\n var sideOrientation: Nullable<number>;\r\n let instanceDataStorage = (renderingMesh as Mesh)._instanceDataStorage;\r\n\r\n if (!instanceDataStorage.isFrozen && (material.backFaceCulling || material.overrideMaterialSideOrientation !== null)) {\r\n let mainDeterminant = effectiveMesh._getWorldMatrixDeterminant();\r\n sideOrientation = material.overrideMaterialSideOrientation;\r\n if (sideOrientation == null) {\r\n sideOrientation = material.sideOrientation;\r\n }\r\n if (mainDeterminant < 0) {\r\n sideOrientation = sideOrientation === Material.ClockWiseSideOrientation ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;\r\n }\r\n } else {\r\n sideOrientation = instanceDataStorage.sideOrientation;\r\n }\r\n\r\n material._preBind(this._drawWrapper, sideOrientation);\r\n\r\n // Alpha test\r\n if (material.needAlphaTesting()) {\r\n var alphaTexture = material.getAlphaTestTexture();\r\n if (alphaTexture) {\r\n effect.setTexture(\"diffuseSampler\", alphaTexture);\r\n effect.setMatrix(\"diffuseMatrix\", alphaTexture.getTextureMatrix());\r\n }\r\n }\r\n\r\n // Bump\r\n if (material.bumpTexture && scene.getEngine().getCaps().standardDerivatives && MaterialFlags.BumpTextureEnabled) {\r\n effect.setFloat3(\"vBumpInfos\", material.bumpTexture.coordinatesIndex, 1.0 / material.bumpTexture.level, material.parallaxScaleBias);\r\n effect.setMatrix(\"bumpMatrix\", material.bumpTexture.getTextureMatrix());\r\n effect.setTexture(\"bumpSampler\", material.bumpTexture);\r\n effect.setFloat2(\"vTangentSpaceParams\", material.invertNormalMapX ? -1.0 : 1.0, material.invertNormalMapY ? -1.0 : 1.0);\r\n }\r\n\r\n // Roughness\r\n if (this._enableReflectivity) {\r\n if (material.specularTexture) {\r\n effect.setMatrix(\"reflectivityMatrix\", material.specularTexture.getTextureMatrix());\r\n effect.setTexture(\"reflectivitySampler\", material.specularTexture);\r\n } else if (material.reflectivityTexture) {\r\n effect.setMatrix(\"reflectivityMatrix\", material.reflectivityTexture.getTextureMatrix());\r\n effect.setTexture(\"reflectivitySampler\", material.reflectivityTexture);\r\n }\r\n }\r\n }\r\n\r\n // Bones\r\n if (renderingMesh.useBones && renderingMesh.computeBonesUsingShaders && renderingMesh.skeleton) {\r\n effect.setMatrices(\"mBones\", renderingMesh.skeleton.getTransformMatrices(renderingMesh));\r\n if (this._enableVelocity) {\r\n effect.setMatrices(\"mPreviousBones\", this._previousBonesTransformationMatrices[renderingMesh.uniqueId]);\r\n }\r\n }\r\n\r\n // Morph targets\r\n MaterialHelper.BindMorphTargetParameters(renderingMesh, effect);\r\n if (renderingMesh.morphTargetManager && renderingMesh.morphTargetManager.isUsingTextureForTargets) {\r\n renderingMesh.morphTargetManager._bind(effect);\r\n }\r\n\r\n // Velocity\r\n if (this._enableVelocity) {\r\n effect.setMatrix(\"previousWorld\", this._previousTransformationMatrices[effectiveMesh.uniqueId].world);\r\n effect.setMatrix(\"previousViewProjection\", this._previousTransformationMatrices[effectiveMesh.uniqueId].viewProjection);\r\n if (hardwareInstancedRendering && renderingMesh.hasThinInstances) {\r\n effect.setMatrix(\"world\", world);\r\n }\r\n }\r\n\r\n // Draw\r\n renderingMesh._processRendering(effectiveMesh, subMesh, effect, material.fillMode, batch, hardwareInstancedRendering, (isInstance, w) => {\r\n if (!isInstance) {\r\n effect.setMatrix(\"world\", w);\r\n }\r\n });\r\n }\r\n\r\n // Velocity\r\n if (this._enableVelocity) {\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId].world = world.clone();\r\n this._previousTransformationMatrices[effectiveMesh.uniqueId].viewProjection = this._scene.getTransformMatrix().clone();\r\n if (renderingMesh.skeleton) {\r\n this._copyBonesTransformationMatrices(renderingMesh.skeleton.getTransformMatrices(renderingMesh), this._previousBonesTransformationMatrices[effectiveMesh.uniqueId]);\r\n }\r\n }\r\n };\r\n\r\n this._multiRenderTarget.customRenderFunction = (opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>): void => {\r\n var index;\r\n\r\n if (this._linkedWithPrePass) {\r\n if (!this._prePassRenderer.enabled) {\r\n return;\r\n }\r\n this._scene.getEngine().bindAttachments(this._attachments);\r\n }\r\n\r\n if (depthOnlySubMeshes.length) {\r\n engine.setColorWrite(false);\r\n for (index = 0; index < depthOnlySubMeshes.length; index++) {\r\n renderSubMesh(depthOnlySubMeshes.data[index]);\r\n }\r\n engine.setColorWrite(true);\r\n }\r\n\r\n for (index = 0; index < opaqueSubMeshes.length; index++) {\r\n renderSubMesh(opaqueSubMeshes.data[index]);\r\n }\r\n\r\n engine.setDepthWrite(false);\r\n for (index = 0; index < alphaTestSubMeshes.length; index++) {\r\n renderSubMesh(alphaTestSubMeshes.data[index]);\r\n }\r\n\r\n if (this.renderTransparentMeshes) {\r\n for (index = 0; index < transparentSubMeshes.length; index++) {\r\n renderSubMesh(transparentSubMeshes.data[index]);\r\n }\r\n }\r\n engine.setDepthWrite(true);\r\n };\r\n }\r\n\r\n // Copies the bones transformation matrices into the target array and returns the target's reference\r\n private _copyBonesTransformationMatrices(source: Float32Array, target: Float32Array): Float32Array {\r\n for (let i = 0; i < source.length; i++) {\r\n target[i] = source[i];\r\n }\r\n\r\n return target;\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
- import { Scene } from "../scene";
2
- import { SceneComponentConstants } from "../sceneComponent";
3
- import { GeometryBufferRenderer } from "./geometryBufferRenderer";
1
+ import { Scene } from "../scene.js";
2
+ import { SceneComponentConstants } from "../sceneComponent.js";
3
+ import { GeometryBufferRenderer } from "./geometryBufferRenderer.js";
4
4
  Object.defineProperty(Scene.prototype, "geometryBufferRenderer", {
5
5
  get: function () {
6
6
  return this._geometryBufferRenderer;
@@ -1,14 +1,14 @@
1
- export * from "./boundingBoxRenderer";
2
- export * from "./depthRenderer";
3
- export * from "./depthRendererSceneComponent";
4
- export * from "./edgesRenderer";
5
- export * from "./geometryBufferRenderer";
6
- export * from "./geometryBufferRendererSceneComponent";
7
- export * from "./prePassRenderer";
8
- export * from "./prePassRendererSceneComponent";
9
- export * from "./subSurfaceSceneComponent";
10
- export * from "./outlineRenderer";
11
- export * from "./renderingGroup";
12
- export * from "./renderingManager";
13
- export * from "./utilityLayerRenderer";
1
+ export * from "./boundingBoxRenderer.js";
2
+ export * from "./depthRenderer.js";
3
+ export * from "./depthRendererSceneComponent.js";
4
+ export * from "./edgesRenderer.js";
5
+ export * from "./geometryBufferRenderer.js";
6
+ export * from "./geometryBufferRendererSceneComponent.js";
7
+ export * from "./prePassRenderer.js";
8
+ export * from "./prePassRendererSceneComponent.js";
9
+ export * from "./subSurfaceSceneComponent.js";
10
+ export * from "./outlineRenderer.js";
11
+ export * from "./renderingGroup.js";
12
+ export * from "./renderingManager.js";
13
+ export * from "./utilityLayerRenderer.js";
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"motionBlurConfiguration.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/motionBlurConfiguration.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH;IAAA;QACI;;WAEG;QACI,YAAO,GAAG,KAAK,CAAC;QAEvB;;WAEG;QACI,SAAI,GAAG,YAAY,CAAC;QAE3B;;WAEG;QACa,qBAAgB,GAAa;YACzC,CAAC;SACJ,CAAC;IACN,CAAC;IAAD,8BAAC;AAAD,CAAC,AAjBD,IAiBC","sourcesContent":["\r\nimport { PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _DevTools } from '../Misc/devTools';\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * motion blur\r\n */\r\nexport class MotionBlurConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * Is motion blur enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = \"motionBlur\";\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n 2\r\n ];\r\n}"]}
1
+ {"version":3,"file":"motionBlurConfiguration.js","sourceRoot":"","sources":["../../../sourceES6/core/Rendering/motionBlurConfiguration.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH;IAAA;QACI;;WAEG;QACI,YAAO,GAAG,KAAK,CAAC;QAEvB;;WAEG;QACI,SAAI,GAAG,YAAY,CAAC;QAE3B;;WAEG;QACa,qBAAgB,GAAa;YACzC,CAAC;SACJ,CAAC;IACN,CAAC;IAAD,8BAAC;AAAD,CAAC,AAjBD,IAiBC","sourcesContent":["\r\nimport { PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _WarnImport } from '../Misc/devTools';\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * motion blur\r\n */\r\nexport class MotionBlurConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * Is motion blur enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = \"motionBlur\";\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n 2\r\n ];\r\n}"]}
@@ -1,11 +1,11 @@
1
- import { VertexBuffer } from "../Buffers/buffer";
2
- import { Mesh } from "../Meshes/mesh";
3
- import { Scene } from "../scene";
4
- import { SceneComponentConstants } from "../sceneComponent";
5
- import { DrawWrapper } from "../Materials/drawWrapper";
6
- import { MaterialHelper } from "../Materials/materialHelper";
7
- import "../Shaders/outline.fragment";
8
- import "../Shaders/outline.vertex";
1
+ import { VertexBuffer } from "../Buffers/buffer.js";
2
+ import { Mesh } from "../Meshes/mesh.js";
3
+ import { Scene } from "../scene.js";
4
+ import { SceneComponentConstants } from "../sceneComponent.js";
5
+ import { DrawWrapper } from "../Materials/drawWrapper.js";
6
+ import { MaterialHelper } from "../Materials/materialHelper.js";
7
+ import "../Shaders/outline.fragment.js";
8
+ import "../Shaders/outline.vertex.js";
9
9
  /**
10
10
  * Gets the outline renderer associated with the scene
11
11
  * @returns a OutlineRenderer
@@ -1,8 +1,8 @@
1
- import { PrePassRenderTarget } from "../Materials/Textures/prePassRenderTarget";
2
- import { _DevTools } from "../Misc/devTools";
3
- import { Color4 } from "../Maths/math.color";
4
- import { Material } from "../Materials/material";
5
- import { GeometryBufferRenderer } from "../Rendering/geometryBufferRenderer";
1
+ import { PrePassRenderTarget } from "../Materials/Textures/prePassRenderTarget.js";
2
+ import { _WarnImport } from "../Misc/devTools.js";
3
+ import { Color4 } from "../Maths/math.color.js";
4
+ import { Material } from "../Materials/material.js";
5
+ import { GeometryBufferRenderer } from "../Rendering/geometryBufferRenderer.js";
6
6
  /**
7
7
  * Renders a pre pass of the scene
8
8
  * This means every mesh in the scene will be rendered to a render target texture
@@ -611,7 +611,7 @@ var PrePassRenderer = /** @class */ (function () {
611
611
  };
612
612
  /** @hidden */
613
613
  PrePassRenderer._SceneComponentInitialization = function (_) {
614
- throw _DevTools.WarnImport("PrePassRendererSceneComponent");
614
+ throw _WarnImport("PrePassRendererSceneComponent");
615
615
  };
616
616
  PrePassRenderer._textureFormats = [
617
617
  {