- Support for GPU particles. Demo here (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)
- 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 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
: added basic support for Daydream and Gear VR (brianzinn)- Introduced Projection Texture on SpotLight. Demo here (lostink)
- Introduced support for local cubemaps. Demo here (deltakosh)
- Added VideoDome class to easily support 360 videos. Demo here (DavidHGillen)
- Added GlowLayer to easily support glow from emissive materials. Demo here (sebavan)
- New AssetContainer class and loading methods (trevordev)
- Added depth of field, MSAA, sharpening, chromatic aberration and grain effect to the default pipeline (trevordev)
- Added support for animation weights. Demo here (deltakosh)
- Added sub emitters for particle system which will spawn new particle systems when particles die. Demo here (IbraheemOsama)
- New Babylon.js and glTF exporter for Autodesk Maya (Noalak)
- New glTF exporter for Autodesk 3dsmax (Noalak)
- New glTF serializer. You can now export glTF or glb files directly from a Babylon scene (kcoley)
- Physics - Latest production version of Oimo.js is being used - 1.0.9 (RaananW)
- Introduces PCF and PCSS shadow support in Webgl 2 (sebavan))
- Introduces PBR Specular Anti Aliasing support. Demoo here (sebavan))
- 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 (carloslanderas) - VRHelper now has
onBeforeCameraTeleport
andonAfterCameraTelepor
t 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)
- 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 itstasks
list from all successfully loaded tasks (deltakosh)- Added documentation to
WebVRCamera
andVRExperienceHelper
(trevordev) - Introduced
isStroke
onHighlightLayerOptions
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
andcreateDefaultLight
functions toScene
(bghgary) - Viewer:
initScene
andinitEngine
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
anduseStandingMatrixAsync
(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
andVertexBuffer
. (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
andParse
functions for SSAO2 Rendering Pipeline (julien-moreau) - Added
furOcclusion
property to FurMaterial to control the occlusion strength (julien-moreau)
setPivotMatrix
was not setting pivot correctly. This is now fixed. We also introduced a newsetPreTransformMatrix
to reproduce the sometimes needed behavior of the previoussetPivotMatrix
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
andCamera
(kaysabelle) - Fix bug with glTF animation when animating bone scale. (bghgary]
- Removed the unused
PostProcessRenderPass
class and extendedpostProcessingRenderingEffect
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 useBone.scale
to achieve the same effect (deltakosh)- Vector3 & Vector4:
MinimizeInPlace
has been renamed tominimizeInPlace
MaximizeInPlace
has been renamed tomaximizeInPlace