what's new.md 12 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 effect to the default pipeline (trevordev)

Updates

  • Tons of functions and classes received the code comments they deserved (All the community)
  • 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)
  • Default pipeline will use webGL 2.0 anti aliasing by default if supported, default fragment shader will clamp negative values to avoid underflow, webVR post processing will render to eye texture size (trevordev)

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)
  • (Viewer) Disabling templates now work correctly (RaananW)
  • AMD "define" declaration is no longer anonymous (RaananW)

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)