- Major updates
- New refraction channel for Standard material (including fresnel support). Refraction texture can be provided by a reflection probe or a refraction texture. See demo here (deltakosh)
- Added support for HDR cubemaps (sebavan)
- Support for shaders includes (deltakosh)
- new mesh type :
LineSystem
(jerome)
- SerializationHelper for complex classes using TypeScript decorators (deltakosh)
- StandardMaterial now supports Parallax and Parallax Occlusion Mapping (nockawa)
- Animations blending. See demo here. More info here (deltakosh)
- New debuger tool: SkeletonViewer. See demo here (Adam & deltakosh)
- Added Camera Inputs Manager to manage camera inputs (mouse, touch, keyboard, gamepad, ...) in a composable way, without relying on class inheritance gleborgne
- Introduced new observable system to handle events (nockawa, deltakosh)
- Added a new VR camera : VRDeviceOrientationArcRotateCamera temechon
- Unity3D exporter: Added support for lightmaps (davrous, deltakosh)
- Unity3D exporter: Added support for export and run (local webserver) (davrous, deltakosh)
- Moved PBR Material to core (deltakosh)
- Introduced Canvas2D feature: a 2D engine to render primitives, sprites in 2D, text. Canvas2D can be displayed in Screen Space (above the 3D scene) or in World Space (will come soon) to be a part of the Scene. (nockawa)
- Updates
- Added postprocess.enablePixelPerfectMode to avoid texture scaling/stretching when dealing with non-power of 2 resolutions. cannot be used on post-processes chain (deltakosh)
- Added skeleton.getBoneIndexByName(boneName: string) dad72
- Added node._children to track children hierarchy (deltakosh)
- Added Camera.ForceAttachControlToAlwaysPreventDefault to help embedding Babylon.js in iFrames (deltakosh)
- Support for Layer.alphaTest (deltakosh)
- New scene.pointerDownPredicate, scene.pointerMovePredicate, scene.pointerUpPredicate to define your own predicates for meshes picking selection (deltakosh)
- New OnPickTrigger support for spritesManager (deltakosh)
- New SPS method
digest()
(jerome)
- New SPS property
computeBoundingBox
(jerome)
- Added a new OnPickOut trigger fired when you release the pointer button outside of a mesh or sprite. (deltakosh)
- Added support for OnPointerOver and OnPointerOut for sprites. (deltakosh)
- Added an optional predicate on Node.getDescendants, Node.getChildren to filter out Nodes based on a callback execution. (nockawa)
- Added Ray.intersectionPlane & intersectionSegment. (nockawa)
- LinesMesh class now supports Intersection. Added the intersectionThreshold property to set a tolerance margin during intersection with wire lines. (nockawa)
- Geometry.boundingBias property to enlarge the boundingInfo objects (nockawa)
- Tools.ExtractMinAndMax & ExtractMinAndMaxIndexed now supports an optional Bias for Extent computation.
- Added StringDictionary class to implement an efficient generic typed string dictionary based on Javascript associative array. (nockawa)
- Added RectanglePackingMap class to fix several rectangles in a big map in the most optimal way. (nockawa)
- Added DynamicFloatArray class to store float32 based elements of a given size (stride) into one big Float32Array, with allocation/free/pack operations to then access an optimal buffer that can be used to update a WebGLBuffer dynamically. (nockawa)
Scene.onPointerObservable property added to enable a unique Observable event for user input (see ArcRotateCamera inputs for examples) (nockawa)
API doc
class SolidParticleSystem
documented (jerome)
class MeshBuilder
documented (jerome)
class Mesh
documented (jerome)
Bug fixes
Fixed bug with billboards and parenting (deltakosh)
Fixed bug with ArcRotateCamera.setTarget (deltakosh)
Fixed bug with OBJ Loader - All meshes were concatenated with the previous one (Temechon)
Breaking changes
VertexData.CreateLines()
removed as MeshBuilder.CreateLines()
now calls MeshBuilder.CreateLineSystem()
scene.onNewXXXAdded
and scene.onXXXRemoved' callbacks were removed and replaced by
scene.onNewXXXAddedObservableand
scene.onXXXRemovedObservable`
Material.dispose
does not dispose textures by default. You have to call material.dispose(false, true)
to get the previous behavior.