github BabylonJS/Babylon.js v3.2.0
on GitHub


Major updates


  • Tons of functions and classes received the code comments they deserved (All the community with a special thanks to John King)
  • Moved the class API documentation to Typedoc (deltakosh)


  • Improved animation blending (deltakosh)
  • New particle system emitter shapes: cone and sphere (IbraheemOsama)
  • Added support for 16bits TGA (deltakosh)
  • New AnimationPropertiesOverride class used to simplify setting animation properties on child animations. Documentation (deltakosh)
  • New Texture.UseSerializedUrlIfAny static property to let textures serialize complete URL instead of using side by side loading (deltakosh)
  • Added particleSystem.reset() to clear a particle system (deltakosh)
  • Added support for all RGBA orders (BGR, RGB, etc..) for the DDS loader (deltakosh)
  • Improved SceneOptimizer to provide better adaptability (deltakosh)
  • Improved scene.isReady() function which now takes in account shadows and LOD (deltakosh)
  • Added new draw modes to engine (points, lines, linesloop, linestrip, trianglestrip, trianglefan) (benaadams)
  • Added GUI Textblock.lineSpacing setter and getter to configure vertical space between lines in pixels or percentage values when working with text wrapping (carloslanderas)
  • WebVR:
    • VRExperienceHelper will create an empty controller model so that controller interactions can be used while the actual model is still loading (trevordev)
    • VRHelper now has onSelectedMeshUnselected observable that will notify observers when the current selected mesh gets unselected
    • VRHelper now has onBeforeCameraTeleport and onAfterCameraTeleport observables that will be notified before and after camera teleportation is triggered.
    • VRHelper now has the public property teleportationEnabled to enable / disable camera teleportation.
    • VRHelper now exposes onNewMeshPicked observable that will notify a PickingInfo object after meshSelectionPredicate evaluation
    • VRHelper will notify now onSelectedMeshUnselected observable to subscribers when the applied ray selection predicate does not produce a hit and a mesh compliant with the meshSelectionPredicate was previously selected (carloslanderas)
    • Support multiple simultaneous WebVR controller gui interactions in VRExperienceHelper (trevordev)
    • Ability to set a mesh to customize the WebVR gaze tracker (trevordev)
  • AssetsManager will now clear its tasks list from all successfully loaded tasks (deltakosh)
  • Added documentation to WebVRCamera and VRExperienceHelper (trevordev)
  • Introduced isStroke on HighlightLayerOptions which makes the highlight solid (PixelsCommander)
  • The observables can now notify observers using promise-based callback chain (RaananW)
  • Added base64 helper functions to Tools (bghgary)
  • Added createDefaultCamera and createDefaultLight functions to Scene (bghgary)
  • Viewer:
    • initScene and initEngine can now be extended. onProgress during model loading is implemented as observable (RaananW)
    • There is now an option to paste payload instead of a URL for configuration (RaananW)
    • Models can be loaded asynchronously using JavaScript (RaananW)
    • Scene Optimizer integrated in viewer (RaananW)
    • The viewer supports custom shaders in the configuration (RaananW)
    • Introducing the viewer labs - testing new features (RaananW)
    • Model can be normalized using configuration, camera is dynamically configured (RaananW)
    • It is now possible to update parts of the configuration without recreating the objects (RaananW)
    • Viewer supports model animations and multi-model loading (RaananW)
    • Viewer’s declaration file automatically generated (RaananW)
  • Build process:
    • New watcher configuration for VSCode. Now the task only compiles changed files (sebavan)
    • Gulp process now supports multiple outputs when using webpack. (RaananW)
    • Extra/external declarations can be prepended to final declarations during build. (RaananW)
    • Extra/external declarations can be prepended to final NPM declarations during build. (RaananW)
    • NPM package now has a dependency system, updated during build. (RaananW)
  • SPS internal storage of each solid particle rotation matrix (jbousquie)
  • SPS particle parenting feature (jbousquie)
  • KeepAssets class and AssetContainer.moveAllFromScene (HoloLite trevordev)
  • GUI.Line can have its world position set from one end or the other (SvenFrankson)
  • Added FOV system to background material for zoom effects in skyboxes without adjusting camera FOV (DavidHGillen)
  • glTF loader:
    • glTF loader now supports the KHR_lights extension (MiiBond)
    • Improved glTF loader by using promises for asynchronous operations (bghgary]
    • Improved glTF loader performance by compiling materials in parallel with downloading external resources (bghgary]
    • Added unit tests for the glTF 2.0 loader (bghgary]
    • Added support for primitive modes to glTF 2.0 loader (bghgary]
    • Add support for sparse accessors to glTF 2.0 loader (bghgary)
    • Add support for cameras to glTF 2.0 loader (bghgary]
    • Add support for preprocessing urls to glTF 2.0 loader (bghgary]
    • Added Draco mesh compression support to glTF 2.0 loader. (bghgary)
    • Added unlit material extension support to glTF 2.0 loader. (bghgary)
  • Added promise-based async functions to the SceneLoader, Scene.whenReadyAsync, and material.forceCompilationAsync. (bghgary]
  • Added checks to VertexData.merge to ensure data is valid before merging. (bghgary]
  • Added promise-based async functions for initWebVRAsync and useStandingMatrixAsync (trevordev)
  • Add stroke (outline) options on GUI text control (SvenFrankson)
  • Add isThumbClamped option on GUI slider control (JeanPhilippeKernel)
  • Add floating point texture support for RenderTargetCubeTexture (PeapBoy)
  • Support for mutli-touch when interacting with multiple gui elements simultaneously (trevordev)
  • Added Tools.WorkerPool class for web worker management. (bghgary)
  • Support depth maps for multiple active cameras for post processes like depth of field (trevordev)
  • Integrates depth texture support in the engine (sebavan)
  • Default fragment shader will clamp negative values to avoid underflow, webVR post processing will render to eye texture size (trevordev)
  • Supports Environment Drag and Drop in Sandbox (sebavan)
  • EnvironmentHelper has no an onError observable to handle errors when loading the textures (RaananW)
  • Tests for sharpen, chromatic aberration, default pipeline and enable/disable post processes (trevordev)
  • onPointer* callbacks have now the event type as a 3rd variable (RaananW)
  • Lightmap texture in PBR material follow the gammaSpace Flag of the texture (sebavan)
  • Added setTextureFromPostProcessOutput to bind the output of a postprocess into an effect (trevordev)
  • Updated bloom effect to only bloom areas of the image above a luminance threshold (trevordev)
  • Cannon and Oimo are optional dependencies (RaananW)
  • Shadows - Introduces Normal Bias (sebavan))
  • Earcut is an external, optional dependency. (RaananW)
  • Return animation groups when calling SceneLoader.ImportMesh. (bghgary]
  • Add support for normalized and non-float data to Buffer and VertexBuffer. (bghgary]
  • New serialize and parse functions for effect layers (Highlight and Glow layers) (julien-moreau)
  • GUI: Introduced MultiLine which will draw lines between any number of meshes, controls and points. Documentation (royibernthal)
  • Added alphaCutOff support for StandardMaterial (deltakosh)
  • New serialize and Parse functions for SSAO2 Rendering Pipeline (julien-moreau)
  • Added furOcclusion property to FurMaterial to control the occlusion strength (julien-moreau)

Bug fixes

  • setPivotMatrix was not setting pivot correctly. This is now fixed. We also introduced a new setPreTransformMatrix to reproduce the sometimes needed behavior of the previous setPivotMatrix function (deltakosh)
  • SPS solid particle .pivot property now also behaves like the standard mesh pivot. Former behavior (particle translation) can be kept with the particle property .translateFromPivot set to true (jbousquie)
  • Texture extension detection in Engine.CreateTexture (sebavan)
  • SPS uses internal temporary Vector3 instead of Tmp.Vector3 to avoid possible concurrent uses (jbousquie)
  • Fixed a bug when calling load on an empty assets manager - #3739 (RaananW)
  • Enabling teleportation in the vr helper class caused a redundant post process to be added (trevordev)
  • (Viewer) Fixed a bug where loading another mesh positioned it incorrectly (RaananW)
  • (Viewer) Disabling templates now work correctly (RaananW)
  • Scale vr controllers by deviceScale when it is set in VRExperienceHelper (trevordev)
  • AMD “define” declaration is no longer anonymous (RaananW)
  • Collision worker didn’t initialize instanced meshes correctly - #3819 (RaananW)
  • postMessage calls in webworkers were fixed (RaananW)
  • Fixed WebCam Texture on Firefox and Edge - #3825 (sebavan)
  • Add onLoadObservable on VideoTexture - #3845 (sebavan)
  • beforeRender is now triggered after the camera updated its state - #3873 (RaananW)
  • Reflection and refraction no longer apply a toLinear conversion twice when applying image processing as a post process - #4060 (trevordev)
  • Fix ember.js compatibility in PostProcessRenderEffect (sebavan)
  • Fix ember.js compatibility in BloomEffect and Camera (kaysabelle)
  • Fix bug with glTF animation when animating bone scale. (bghgary]

Breaking changes

  • Removed the unused PostProcessRenderPass class and extended postProcessingRenderingEffect to support multiple PostProcesses (trevordev)
  • VertexData.merge no longer supports merging of data that do not have the same set of attributes. (bghgary]
  • glTF 2.0 loader now creates a mesh for each primitive instead of merging the primitives together into one mesh. If a mesh only has one primitive, the behavior is the same as before. This change only affects meshes that have multiple primitives. (bghgary]
  • Engine’s onCanvasPointerOutObservable will now return a PointerEvent instead of the Engine. (trevordev)
  • Removed public references to default rendering pipeline’s internal post process (trevordev)
  • Bone.setScale does not support scaleChildren property anymore. You can use Bone.scale to achieve the same effect (deltakosh)
  • Vector3 & Vector4:
    • MinimizeInPlace has been renamed to minimizeInPlace
    • MaximizeInPlace has been renamed to maximizeInPlace
2 years ago