control.useBitmapCache
to optimize re-rendering of complex controls by keeping a cached version (Deltakosh)cut
, copy
and paste
events (Saket Saurabh)TrailMesh
class. Credit to furcatomasz (danjpar) **** NEED DEMO or DOC LINK)solidParticle.isInFrustum()
(jerome)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 LinesMesh
isIdentity
cached value wihtin a Matrix
Material.markAsDirty
functionVector3.UnprojectRayToRef
static function to avoid computing and inverting the projection matrix twice when updating a Ray.inputText.onKeyboardEventProcessedObservable
(Deltakosh)button.image
and button.textBlock
to simplify access to button internal parts (Deltakosh)slider.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)WebRequest
class to centralize all network requests. Can be used to configure headers of all network requests (Deltakosh)WebRequest.CustomRequestHeaders
, WebRequest.UseCustomRequestHeaders
to send Custom Request Headers alongside XMLHttpRequest's i.e. when loading files (Tools.Loadfile) from resources requiring special headers like 'Authorization' (susares)shadowGenerator.onBeforeShadowMapRenderMeshObservable
(Deltakosh)scene.customLODSelector
to let users define their own LOD rules (Deltakosh)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)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).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)GlowLayer
(Sebavan)forceDisposeChildren
to multiMaterial.dispose (danjpar)multiMultiMaterials
to mesh.mergeMeshes (danjpar)MeshExploder
class (danjpar)TransformNode
objects instead of Mesh
objects for glTF nodes without geometry (bghgary)__root__
transform nodeEquiRectangularCubeTexture
class to enable the usage of browser-canvas supported images as CubeTexture
's (Dennis Dervisis)KHR_lights_punctual
cameraOffset
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)TerrainMaterial.isReadyForSubMesh
to remove WebGL warnings (julien-moreau)MixMaterial.isReadyForSubMesh
to remove WebGL warnings (dad72)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.toNormalMatrix
function (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)WebRequest
(which provides the same signatures) (Deltakosh)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)Primitive Geometries
as they were not in use since 2.0 (Sebavan)shouldExportTransformNode
callback in glTF serializer options to shouldExportNode
(kcoley)PhysicsHelper
method parameters for event calls (bobalazek)