control.useBitmapCache to optimize re-rendering of complex controls by keeping a cached version (Deltakosh)cut, copy and paste events (Saket Saurabh)inputText.onKeyboardEventProcessedObservable (Deltakosh)button.image and button.textBlock to simplify access to button internal parts (Deltakosh)sldier.displayThumb to show/hide slider's thumb (Deltakosh)grid.rowCount, grid.columnCount and grid.getChildrenAt() (Deltakosh)Control.AllowAlphaInheritance to let users control the way alpha is used (inherited or not) (Deltakosh)inputText (Saket Saurabh)inputText.onTextCopyObservable, inputText.onTextCutObservable and inputText.onTextPasteObservable to inputText (Saket Saurabh)AdvancedDynamicTexture.onClipboardObservable to observe for clipboard events in AdvancedDynamicTexture(Saket Saurabh)inputText.onFocusSelectAll to allow complete selection of text on focus event.(Saket Saurabh)animatable.onAnimationLoopObservable (Deltakosh)animationGroup.onAnimationLoopObservable (Deltakosh)Engine.onNewSceneAddedObservable (Deltakosh)PassCubePostProcess to render cube map content (Deltakosh)Tools.BuildArray for array initialisation (barroij)IOfflineSupport interface to hide IndexedDB (Deltakosh)PBRMaterial and StandardMaterial now use hot swapping feature for shaders. This means they can keep using a previous shader while a new one is being compiled (Deltakosh)transformNodes array and materials array of the Scene. As a consequence, the order of the element within these arrays might change during a removalinstances array of a Mesh. As a consequence, the order of the element within this array might change during a removalArray.splice on the scene.meshes array and on the engine._uniformBuffer when removing an element. As a consequence, the order of the element within these arrays might change during a removaluseGeometryUniqueIdsMap in the Scene constructor options. When set to true, each Scene isntance will have and will keep up-to-date a map of geometry per uniqueId. This is to avoid browsing all the geometries of the scene when a new one is being pushed. It also enables a removal of geometry in O(1). Disabled by defaultuseMaterialMeshMap in the Scene constructor options. When set to true, each Material isntance will have and will keep up-to-date a map of its bound meshes. This is to avoid browsing all the meshes of the scene to retrieve the ones bound to the current material when disposing the Material. Disabled by defaultuseClonedMeshhMap in the Scene constructor options. When set to true, each Mesh will have and will keep up-to-date a map of cloned meshes. This is to avoid browsing all the meshes of the scene to retrieve the ones that have the current mesh as source mesh. Disabled by defaultblockfreeActiveMeshesAndRenderingGroups property in the Scene, following the same model as blockMaterialDirtyMechanism. This is to avoid calling Scene.freeActiveMeshes and Scene.freeRenderingGroups for each disposed mesh when we dispose several meshes in a row. One have to set blockfreeActiveMeshesAndRenderingGroups to true just before disposing the meshes, and set it back to false just afterShaderMaterial of a LinesMeshisIdentity cached value wihtin a MatrixMaterial.markAsDirty functionVector3.UnprojectRayToRef static function to avoid computing and inverting the projection matrix twice when updating a Ray.BoundingBox and BoundingSphere API and behavior for clarity and simplicity. As a consequence, the BoundingBox's method setWorldMatrix has been removed and the underlying world matrix cannot be modified but by calling reConstruct or update. (barroij)Material.markAsDirty and all the markXXXDirty methods early out when scene.blockMaterialDirtyMechanism is true. (barroij)GridMaterial (Deltakosh)Layer are now supported in RenderTargetTexture (Sebavan)Tools.CustomRequestHeaders, Tools.UseCustomRequestHeaders, Tools.InjectCustomRequestHeaders to send Custom Request Headers alongside XMLHttpRequest's i.e. when loading files (Tools.Loadfile) from resources requiring special headers like 'Authorization' (susares).serialize and .Parse functions in ReflectionProbe to retrieve reflection probes when parsing a previously serialized material (julien-moreau)setDirection function from lookAt for transform node (bghgary)AxesViewer (bghgary)solidParticle.isInFrustum() (jerome)GlowLayer (Sebavan)forceDisposeChildren to multiMaterial.dispose (danjpar)TransformNode objects instead of Mesh objects for glTF nodes without geometry (bghgary)__root__ transform nodecameraOffset vector property in the SkyMaterial to get an offset according to the horizon (julien-moreau)GradientMaterial to consider disableLighting working as emissive (julien-moreau)WaterMaterial (julien-moreau)mesh.alwaysSelectAsActiveMesh preventing layerMask to be taken in account (Deltakosh)LinesMesh intersectionThreshold by using its value directly when the intersection against a Ray is checked, instead of extending the BoundingInfo accordingly + Addded an InstancesLinesMesh class used to create instance of LinesMesh so that each instance can have its own intersectionThreshold value (barroij)LineEdgesRenderer used for edge rendering of LinesMesh handle properly LinesMesh made of disconnected lines + Make it work for instance of LinesMesh (barroij)Matrix.toNormalMatrixfunction (barroij)DeepImmutable<T> type to specifiy that a referenced object should be considered recursively immutable, meaning that all its properties are readonly and that if a property is a reference to an object, this object is also recursively immutable. (barroij)VideoTexture poster property when autoplay is turned off.faceId property of the PickingInfo, as we do with face index the picked Mesh is made of triangle faces (barroij)updateIndices leads to changing the size of the index buffer by recreating the subMeshes in that case (barroij)loadedAnimationGroups to MeshAssetTask (bghgary)Database.IDBStorageEnabled is now false by default (Deltakosh)Database.openAsync was renamed by Database.open (Deltakosh)scene.database was renamed to scene.offlineProvider (Deltakosh)BoundingBox.setWorldMatrix was removed. BoundingBox.getWorldMatrix now returns a DeepImmutable<Matrix> (barroij)Matrix's accessor m and method toArray and asArray now returns a DeepImmutable<Float32Array> as the matrix underlying array is not supposed to be modified manually from the outside of the class (barroij)scene.getInterFramePerfCounter(): use SceneInstrumentation class insteadscene.interFramePerfCounter: use SceneInstrumentation class insteadscene.getLastFrameDuration(): use SceneInstrumentation class insteadscene.lastFramePerfCounter: use SceneInstrumentation class insteadscene.getEvaluateActiveMeshesDuration(): use SceneInstrumentation class insteadscene.evaluateActiveMeshesDurationPerfCounter: use SceneInstrumentation class insteadscene.getRenderTargetsDuration(): use SceneInstrumentation class insteadscene.getRenderDuration(): use SceneInstrumentation class insteadscene.renderDurationPerfCounter: use SceneInstrumentation class insteadscene.getParticlesDuration(): use SceneInstrumentation class insteadscene.particlesDurationPerfCounter: use SceneInstrumentation class insteadscene.getSpritesDuration(): use SceneInstrumentation class insteadscene.spriteDuractionPerfCounter: use SceneInstrumentation class insteadengine.drawCalls: use SceneInstrumentation class insteadengine.drawCallsPerfCounter: use SceneInstrumentation class insteadshadowGenerator.useVarianceShadowMap: use useExponentialShadowMap insteadshadowGenerator.useBlurVarianceShadowMap: use useBlurExponentialShadowMap insteadInstancedMesh objects when two nodes point to the same mesh (bghgary)TransformNode objects instead of Mesh objects for glTF nodes without geometry (bghgary)
Mesh object and is still the first in the returned list of meshesTransformNode objects are excluded from the returned list of meshes when importing meshTransformNode objects do not raise onMeshLoaded eventsxAxisMesh, yAxisMesh, and zAxisMesh of AxesViewer was renamed to xAxis, yAxis, and zAxis respectively and now return a TransformNode to represent the parent node of the cylinder and line of the arrow (bghgary)Viewport.toglobal does not allow passing engine in to prevent circular dependency (Sebavan)Vector3.UnprojectRayToRef has been moved to Ray.unprojectRayToRef instance method to decrease class coupling (Sebavan)Material.ParseMultiMaterial has been moved to MultiMaterial.ParseMultiMaterial to decrease class coupling (Sebavan)babylon.no-module.max.js javascript version has the Webpack UMD bundle covers both (Sebavan)es6.js javascript as it is now available as a true es6 npm package (Sebavan)babylon.worker.js javascript following the lack of usage from the feature (Sebavan)