what's new.md 13 KB

3.2.0

Major updates

  • Support for GPU particles (deltakosh)
  • Improved building process: We now run a full visual validation test for each pull request. Furthermore, code comments and what's new updates are now mandatory (sebavan)
  • Introduced texture binding atlas. This optimization allows the engine to reuse texture bindings instead of rebinding textures when they are not on constant sampler indexes (deltakosh)
  • New AnimationGroup class to control simultaneously multiple animations with different targets (deltakosh)
  • WebVRCamera add basic support for Daydream and Gear VR (brianzinn)
  • New glTF serializer. You can now export glTF or glb files directly from a Babylon scene (kcoley)
  • Babylon.js now uses Promises in addition to callbacks. We created several xxxAsync functions all over the framework (SceneLoader.AppendAsync for instance, which returns a Promise). A polyfill is also integrated to support older browsers (deltakosh)
  • Introduced Projection Texture on SpotLight (lostink)
  • Introduced support for local cubemaps (deltakosh)
  • Added VideoDome class to easily support 360 videos (DavidHGillen)
  • Added GlowLayer to easily support glow from emissive materials (sebavan)
  • New AssetContainer Class and loading methods (trevordev)
  • Added depth of field, MSAA, sharpening, grain and chromatic aberration effect to the default pipeline (trevordev)

Updates

  • Tons of functions and classes received the code comments they deserved (All the community)
  • 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)
  • New watcher configuration for VSCode. Now the task only compiles changed files (sebavan)
  • 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)
  • VRHelper now has onSelectedMeshUnselected observable that will notify observers when the current selected mesh gets unselected (carloslanderas)
  • VRHelper now has onBeforeCameraTeleport and onAfterCameraTeleport observables that will be notified before and after camera teleportation is triggered. (carloslanderas)
  • VRHelper now has the public property teleportationEnabled to enable / disable camera teleportation. (carloslanderas)
  • VRHelper now exposes onNewMeshPicked observable that will notify a PickingInfo object after meshSelectionPredicate evaluation (carloslanderas)
  • AssetsManager will now clear its tasks lsit from all successfully loaded tasks (deltakosh)
  • Added documentation to WebVRCamera and VRExperienceHelper (trevordev)
  • Introduced isStroke on HighlightLayerOptions which makes the highlight solid (PixelsCommander)
  • (Viewer) There is now an option to paste payload instead of a URL for configuration (RaananW)
  • (Viewer) Models can be loaded async using JavaScript (RaananW)
  • 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)
  • (Viewer) initScene and initEngine can now be extended. onProgress during model loading is implemented as observable. (RaananW)
  • glTF loader now supports the KHR_lights extension (MiiBond)
  • The observable 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)
  • Gulp process now supports multiple outputs when using webpack. (RaananW)
  • (Viewer) Scene Optimizer intergrated in viewer. (RaananW)
  • (Viewer) The viewer supports custom shaders in the configuration. (RaananW)
  • Documented PostProcessRenderEffect, DefaultRenderingPipeline, BlurPostProcess, DepthOfFieldEffect, PostProcess, PostProcessManager, Effect classes (trevordev)
  • SPS internal storage of each solid particle rotation matrix (jbousquie)
  • SPS particle parenting feature (jbousquie)
  • (Viewer) Introducing the viewer labs - testing new features. (RaananW)
  • KeepAssets class and AssetContainer.moveAllFromScene (HoloLite trevordev)
  • (Viewer) It is now possible to update parts of the configuration without rcreating the objects. Extra configuration can be loaded sync (if provided) (RaananW)
  • (Gulp) extra/external declarations can be prepended to final declarations during build. (RaananW)
  • (Viewer) Model can be normalized using configuration, camera is dynamically configured. (RaananW)
  • (Gulp) extra/external declarations can be prepended to final NPM declarations during build. (RaananW)
  • 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)
  • 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 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]
  • Ability to set a mesh to customize the webVR gaze tracker (trevordev)
  • 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)
  • (Viewer) Declaration file published, ready for npm. (RaananW)
  • Added Draco mesh compression support to glTF 2.0 loader. (bghgary)
  • Support multiple simultaneous webVR controller gui interactions in WebVRExperienceHelper (trevordev)
  • (Viewer) XHR requests not use Tools.LoadFile and are disposed correctly - #3671 (RaananW)
  • 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)
  • NPM package now has a dependency system, updated during build. (RaananW)
  • WebVRExperienceHelper will create an empty controller model so that controller interactions can be used while the actual model is still loading (trevordev)
  • 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)

Bug fixes

  • setPivotMatrix ws 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 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)
  • Scale vr controllers by deviceScale when it is set in VRExperienceHelper (trevordev)
  • (Viewer) Disabling templates now work correctly (RaananW)
  • 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)

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 will now create a mesh for each primitive instead of merging the primitives together into one mesh. (bghgary]
  • Engine's onCanvasPointerOutObservable will now return a PointerEvent instead of the Engine. (trevordev)