Releases: BabylonJS/Babylon.js
Releases · BabylonJS/Babylon.js
3.3.0-beta.3
Merge pull request #4969 from sebavan/master 3.3.0-beta.3 Former-commit-id: 915e46f40c6b1bb07fdca5cb2f4a32040e451fe2
3.3.0-beta.2
Merge pull request #4944 from sebavan/master Release 3.3.0-beta.2 Former-commit-id: df34c13ef7ef8a2cb9260014d8d849ca9b791984
v3.2.0
3.2.0
Major updates
- 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))
Documentation
- 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)
Updates
- 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](https://github.c...
v3.1.0
Major updates
- Added VRExperienceHelper to create WebVR experience with 2 lines of code. Documentation (davrous, TrevorDev)
- Added BackgroundMaterial. Documentation (sebavan)
- Added EnvironmentHelper. Documentation (sebavan)
- Added support for webgl context lost and restored events. Documentation (deltakosh)
- Added support for non-pow2 textures when in WebGL2 mode (deltakosh)
- Engine can now be initialized with an existing webgl context (deltakosh)
- Introduced behaviors. Documentation (deltakosh)
- Added support for WebGL Occlusion queries. Documentation (Ibraheem Osama)
- New behaviors for ArcRotateCamera. Documentation
- New InputText for Babylon.GUI. Documentation (deltakosh)
- New VirtualKeyboard for Babylon.GUI. Documentation (deltakosh / adam)
- Added support for depth pre-pass rendering. Documentation (deltakosh)
- Added support for
material.separateCullingPass
. Documentation (sebavan) - Added support for Windows Motion Controllers (Lewis Weaver)
- Added support for Particle animation in ParticleSystem. Documentation (Ibraheem Osama)
- More robust TypeScript code with strictNullChecks, noImplicitAny, noImplicitThis and noImplicitReturns compiler options (deltakosh and RaananW)
- Introduced
NullEngine
which can be used to use Babylon.js in headless mode. Documentation (deltakosh) - New instrumentations tools. Documentation (deltakosh)
- Complete rework of Unity3D exporter. Documentation (MackeyK24)
- Introducing the BabylonJS viewer, an HTML-based 3D/model viewer, with Babylon at its core. Documentation (RaananW)
- Full NPM support for BabylonJS and its modules, based on UMD and including Typings. BabylonJS on npm (RaananW)
Updates
- Introduced
TransformNode
class as a parent ofAbstractMesh
. This class was extensively asked by the community to hold only tranformation for a node (deltakosh) - Collider object is now exposed on meshes. It can be used to get precise information about mesh to mesh collisions (used with mesh.moveWithCollisions function) (deltakosh)
- Added
boundingInfo.centerOn
to recreate the bounding info to be centered around a specific point given a specific extend (deltakosh) - Added
mesh.normalizeToUnitCube
to uniformly scales the mesh to fit inside of a unit cube (1 X 1 X 1 units) (deltakosh) - Added
scene.onDataLoadedObservable
which is raised when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed (deltakosh) - Support for adaptiveKernelBlur on MirrorTexture (deltakosh)
- Support for non uniform scaling. Normals are now correctly computed (deltakosh)
- Added
MultiObserver
. Documentation (deltakosh) - Added
shadowGenerator.addShadowCaster
andshadowGenerator.removeShadowCaster
helper functions (deltakosh) - Several inspector improvements (temechon)
- New observables for actions:
onBeforeExecuteObservable
for all actions andonInterpolationDoneObservable
forInterpolateValueAction
(deltakosh) - New observables for gamepads:
onButtonDownObservable
,onButtonUpObservable
,onPadDownObservable
,onPadUpObservable
(deltakosh) - New
camera.storeState()
andcamera.restoreState()
functions to store / restore cameras position / rotation / fov. Documentation (deltakosh) - POW2 textures rescale is now done by shaders (It was previously done using canvas) (deltakosh)
- Added
SceneLoader.CleanBoneMatrixWeights
to force the loader to normalize matrix weights when loading bones (off by default) (deltakosh) - Added
camera.onViewMatrixChangedObservable
andcamera.onProjectionMatrixChangedObservable
(deltakosh) - Added support for folders when drag'n'dropping into the sandbox (deltakosh)
- Better serialization support (deltakosh)
- Introduced
performanceMonitor
class to get better FPS analysis (deltakosh) - GUI: Added support for pointer move events on projected UI (deltakosh)
- Normals are generated automatically by StandardMaterial if meshes do not have normals (deltakosh)
- Added
mesh.onMaterialChangedObservable
to notify when a new material is set (deltakosh) - Improved the SPS perfs for dead or invisible solid particles (jerome)
- Added
enableDepthSort
parameter to the SPS in order to sort the particles from the camera position (jerome) - Added
pivot
property to the SPS solid particles (jerome) - Added the mesh facet depth sort to FacetData (jerome)
- Added
LineSystem
andLineMesh
per point colors (jerome) - Added
AdvancedDynamicTexture.renderScale
to allow users to render at higher DPI (deltakosh) - WaterMaterial works on VR (RaananW)
- Playground has an optional createEngine function to replace the default engine. Example (RaananW)
- Error handling in the Assets Manager was revamped and now also includes a message and an exception (if provided). Documentation (RaananW)
- Asset Task has a state (INIT, RUNNING, DONE and ERROR). Documentation (RaananW)
- Added new options to the physics impostor constructor - ignoreParent and diableBidirectionalTransformation. Documentation (RaananW)
- It is now possible to define which loader to use when loading assets using the SceneLoader. Commit (RaananW)
- Added scope option to Observerable (adam)
- Added shadowBlur, shadowOffsetX, shadowOffsetY, shadowColor to GUI Controls (adam)
- Added alignWithNormal to AbstractMesh (adam)
Bug fixes
- Fixed a bug with ellipsoid offset not being taking in account on cameras (deltakosh)
- Fixed a bug with ellipsoid offset badly taking in account on meshes (deltakosh)
- Fixed a bug with PBR on iOS (sebavan)
- MTLLoader didn't parse values correctly (RaananW)
- Fixed an error with child positions of parents in the physics engine (RaananW)
- Fixed a bug with error while executing onSuccess callbacks in the Assets manager. (RaananW)
- Fixed a bug with the Heightmap impostor when the heightmap is scaled or rotated. Commit (RaananW)
- Fixed an error with deterministic step. (RaananW)
- Fixed a bug with controller jitter when in VR. ([RaananW](https://github...
v3.0.0
Major updates
- WebGL2 context support. WebGL2 is now used instead of WebGL 1 when available. More info here (deltakosh)
- Complete WebVR 1.1 support including controllers for HTC Vive and Occulus. More info here (raanan & davrous)
- Complete rewrite of PBRMaterial. Introduced two new helper materials:
pbrMetallicRoughnessMaterial
andpbrSpecularGlossinessMaterial
. Demo - More info here (Sebastien Vandenberghe) - Support for Morph Targets. More info here (deltakosh)
- New Babylon.GUI to create user interface (compatible with WebVR). More info here (deltakosh)
- Added support for Exponential Shadow maps to replace Variance Shadow maps. more info here Demo#1 Demo#2 (deltakosh)
- Support for Vertex Array Objects (deltakosh)
- Support for Uniform Buffer Objects (CraigFeldspar)
- New SSAO technique, using MultiRenderTargets (CraigFeldspar)
- Support for multisample render targets. Demo (deltakosh)
- New DebugLayer. Doc (temechon)
- New
VideoTexture.CreateFromWebCam
to generate video texture using WebRTC. Demo (Sebastien Vandenberghe) / (deltakosh) - New Facet Data feature (jerome)
- babylon.fontTexture.ts was moved from babylon.js to canvas2D (nockawa)
- Multi-platform Compressed Textures for Desktops & Mobile Devices with fall back. Batch (dos) scripts to convert entire directories of .jpg's & .png's Doc (jcpalmer)
- All deprecated functions and properties were removed (deltakosh)
- New build system based on workloads. More info here (deltakosh)
- New
Cell Shading
material added intoMaterials Library
Demo (Julien Moreau-Mathis) - New kernel based blur. Demo (deltakosh)
- New highlights postprocess (deltakosh)
- New DefaultRenderingPipeline to enable image processing effect. Demo (deltakosh)
- New image processing postprocess. Doc here (deltakosh)
- Spector.js New WebGL debugger: more info here (Sebastien Vandenberghe)
- New blur mode for mirrors. Demo (deltakosh)
Updates
- Added
syncBoneWithImpostor()
andsyncImpostorWithBone()
to PhysicsImpostor to help with creating ragdoll effects. Demo (abow) - New automatic creation mode for skybox. Doc here (deltakosh)
- New way to force compilation of materials. Doc here (deltakosh)
- Added a Physics tab to the inspector (abow)
- New Debug.PhysicsViewer class for viewing PhysicsImpostors. Demo (abow)
- New ColorPicker for GUI. Demo (abow)
- Added slerp and limits to BoneLookController. Demo (abow)
- new
Texture.readPixels()
function to read texture content (deltakosh) - New helpers to use ExtrudePolygon. Demo (Cubees)
- PostProcess can now use alpha blending and share outputs (deltakosh)
- Added
ArcRotateCamera.panningInertia
to decouple inertia from panning inertia (deltakosh) - Added
FIXED_EQUIRECTANGULAR_MIRRORED_MODE
mode for reflection texture. Demo here (deltakosh) - Introduced
boundingBox.centerWorld
andboundingBox.extendSizeWorld
(deltakosh) - Improved FXAA post-process (deltakosh)
- Added
Light.customProjectionMatrixBuilder
to allow developers to define their own projection matrix for shadows (deltakosh) - Added
set()
function to all basic types (deltakosh) - Added
HDRCubeTextureAssetTask
to AssetManager (deltakosh) - Engine now uses range based fog (deltakosh)
VertexBuffer.updatable
is now serialized (deltakosh)- Added
intersectsMeshes()
to Ray (abow) - New RayHelper class for easily viewing and attaching a ray to a mesh. Demo abow)
Mesh.applyDisplacementMap
now accepts uvScale and uvOffset parameter (deltakosh)- Added
addChild()
,removeChild()
,setParent()
to AbstractMesh (abow) Effect.getVertexShaderSource()
andEffect.getFragmentShaderSource()
now returns the effective shader code (including evaluation of #define) (deltakosh)- GroundMesh :
getHeightAtCoordinates()
,getNormalAtCoordinates()
andgetNormalAtCoordinatesToRef()
can now work with rotated grounds (jerome) GroundMesh
,facetData
andSolidParticleSystem
improvement in normal computations (jerome)- Added
AbstractMesh.addRotation()
(jerome) - Added
Quaternion.RotationQuaternionFromAxis()
andQuaternion.RotationQuaternionFromAxisToRef()
(jerome, thanks to abow) - Added parameters
uvs
andcolors
toMeshBuilder.CreateRibbon()
(jerome) - Added parameters
frontUVs
andbackUVs
to all the methodsMeshBuilder.CreateXXX()
supportingsideOrientation
(jerome) - Added
Curve3.CreateCatmullRomSpline()
(jerome and BitOfGold) - Added the optional parameter
colorFilter
toCreateGroundFromHeightMap()
(jerome) - Improved the internal code of
Vector3.RotationFromAxisToRef()
(jerome, thanks to abow) - GroundMeshes are now serialized correctly (deltakosh)
- Added
mesh.markVerticesDataAsUpdatable()
to allow a specific vertexbuffer to become updatable (deltakosh) - Added
POINTERTAP
andPOINTERDOUBLETAP
PointerEventTypes to register new Observer mask. (Demo here)[http://www.babylonjs-playground.com/?30] (yuccai) - Added OnDoublePickTrigger for ActionManager (yuccai)
- Added Scene.DoubleClickDelay to set the timing within a double click event like PointerEventTypes.POINTERDOUBLETAP or ActionManager.OnDoublePickTrigger has to be processed (yuccai)
- New material:
ShadowOnlyMaterial
to display shadows on transparent surfaces (deltakosh) - Added
VertexBuffer.TangentKind
to specify tangents in place of shader-calculated tangents (dewadswo, bghgary) - Added
material.twoSidedLighting
to PBRMaterial and StandardMaterial to enable flipping normals when backfaceCulling is false (BeardedGnome, bghgary) - Added a HTML page with embedded directions to improve the custom build process. (jcpalmer)
- Added glTF 2.0 loader with versioning support (bghgary, thanks to BeardedGnome for ...
v2.5.0: Dist 2.5 Files moved
Major updates
- New
StandardRenderingPipeline
effect to support screen space lens flare and depth of field. Demo - (Julien Moreau-Mathis) - New
HighlightLayer
object to enable highlights rendering. Demo - (sebavan) - Babylon.js now supports right handed system with
scene.useRightHandedSystem = true
(deltakosh) - Babylon.js is now compiled with optimize-js to get faster initial load (deltakosh)
- New BoneIKController Demo (abow)
- New BoneLookController Demo (abow)
- You can now build your own version of babylon.js with
gulp build-custom
Doc - (deltakosh)
Updates
- Added
node.doNotSerialize
to prevent specific nodes to be serialized bySceneSerializer
(deltakosh) - Added
scene.multiPick
andscene.multiPickWithRay
to return an array of pickedMesh objects (deltakosh) - Added
Effect.GetVertexShaderSource()
andEffect.GetFragmentShaderSource()
(deltakosh) - New
Texture.LoadFromDataString()
to help loading base64 encoded textures (deltakosh) - Added Engine detection of the compresed texture formats supported by Hw / browser. You can specify those formats you have files for using
Engine.setTextureFormatToUse()
, and an appropriate one will be chosen. (Palmer-JC) - Added Ray.intersectsMesh, Ray.show, Ray.hide (abow)
- Added AbstractMesh.setPivotPoint, AbstractMesh.getPivotPoint, AbstractMesh.getAbsolutePivotPoint (abow)
- Added Debug.AxesViewer and Debug.BoneAxesViewer (abow)
- Added Bone.getAbsolutePositionFromLocal and getLocalPositionFromAbsolute (abow)
- Added Bone.setRotation, Bone.getRotation, Bone.setRotationQuaternion, Bone.getRotationQuaternion (abow)
- Added Bone.getAbsolutePosition and Bone.getAbsolutePositionToRef (abow)
- Added Bone.translate, Bone.setPosition, Bone.setAbsolutePosition (abow)
- Added Bone.setYawPitchRoll, Bone.setRotationMatrix, Bone.setScale, Bone.setAxisAngle (abow)
- Added Bone.rotate (abow)
- Added Bone.scale (abow)
- Added Camera.getDirection, AbstractMesh.getDirection, Bone.getDirection (abow)
- Added subdivisionsX, subdivisionsY option to GroundMesh (abow)
- New
Tools.CreateScreenshot
function will capture all canvas data. Previous implementation is now calledCreateScreenshotUsingRenderTarget
(deltakosh) - Cube textures are now cached by texture cache (deltakosh)
- Added onAnimationEnd callback for
sprite.playAnimation
(deltakosh) - Added support for non square textures for sprites (deltakosh)
- Added support for texture arrays (deltakosh)
- Added
camera.isInFrustum
andcamera.isCompletelyInFrustum
. Can be used with meshes, submeshes and boundingInfo (deltakosh) - Several memory allocation reduction (benaadams)
- Several GPU state change reduction (benaadams)
- MapTexture: add
supersample
mode to double font quality. (nockawa) - New SPS feature : solid particle intersection with other solid particle or with any mesh
particle.intersectsMesh()
(jerome) - New
invertUV
parameter an all ribbon based shapes : ribbon, tube, lathe, basic and custom extrusion (jerome) - Text2D: new
fontSuperSample
setting to use high quality font (nockawa) - PerfCounter class added to monitor time/counter and expose min/max/average/lastSecondAverage/current metrics. Updated engine/scene current counter to use this class, exposing new properties as well to access the PerfCounter object (nockawa)
- Better keyboard event handling which is now done at canvas level and not at window level (deltakosh)
- New
scene.hoverCursor
property to define a custom cursor when moving mouse over meshes (deltakosh) - WebVR Camera was updated to be conform with the current specs. (RaananW)
- New "CubeTextureTask" function will allow you to load a CubeTexture in the assetsManager. (agallouin)
- Scene.stopAnimation has now an optional second parameter, the name of the animation to kill. Usefull if a mesh has multiple animations. (agallouin)
Bug fixes
- Fixed issue with SkeletonViewer not displaying correctly with meshes that have a PoseMatrix (abow)
- Fixed issue with Quaternion.toEulerAnglesToRef (abow)
- Fixed issue with Animatable.goToFrame (abow)
- Fixed issue with instancse and viewports (deltakosh)
- Fixed issue with FreeCamera not working in fullscreen or when pointer locked (abow)
- MapTexture: Font Characters are now correctly aligned on Chrome (nockawa)
- Fixed some missing parameter default values in
MeshBuilder.CreateGroundFromHeightMap()
andMeshBuilder.CreateTiledGround()
(jerome) - Fixed cross vector calculation in
_computeHeightQuads()
that affected all theGroundMesh.getHeightAtCoordinates()
andGroundMesh.getNormalAtCoordinates()
methods (jerome) - Fixed
Mesh.CreateDashedLines()
missinginstance
parameter on update (jerome) - Added BBox update on each ribbon based shape (ribbon, tube, extrusion, etc) on dynamic updates (jerome)
- Fixed model shape initial red vertex color set to zero not formerly being taken in account in the
SolidParticleSystem
(jerome) - Fixed billboard when the SPS mesh is parented in the
SolidParticleSystem
(jerome) - Fixed RenderTargetTexture meshes selection (deltakosh)
- Fixed camera speed computation (deltakosh)
- Fixed bug with instances, LOD and edgesRendering (deltakosh)
Breaking changes
v2.4.0
- 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. demo here (sebavan)
- Support for shaders includes (deltakosh)
- New mesh type :
LineSystem
. Demo here (jerome) - SerializationHelper for complex classes using TypeScript decorators (deltakosh)
- StandardMaterial now supports Parallax and Parallax Occlusion Mapping (tutorial) (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. Documentation here (gleborgne)
- Introduced new observable system to handle events. Documentation here (nockawa, deltakosh)
- Added a new VR camera : VRDeviceOrientationArcRotateCamera (temechon)
- Moved PBR Material to core (deltakosh)
- StandardMaterial.maxSimultaneousLights can define how many dynamic lights the material can handle. Demo here (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 to be a part of the Scene. overview, tutorial (nockawa)
- Added two new types of Texture: FontTexture and MapTexture (quick doc) (nockawa)
- Added a dynamic 2D Bin Packing Algorithm, (more info here) (nockawa)
- Physics engine was completely rewritten, including both plugins for Oimo.js and Cannon.js. overview (RaananW)
- Interleaved buffers are now directly supported. Create a
Buffer
object and then usebuffer.createVertexBuffer
to specify the vertex buffers (benaadams) - Vertex buffers can be marked as instanced to allow custom instancing attributes (benaadams)
- Mesh can have
overridenInstanceCount
set to specify the number of meshes to draw when custom instancing is used (benaadams) - Now supporting the Earcut polygon triangulation library as part of babylon.js library. (Look for the
Earcut
module). ThePolygonMeshBuilder
class now relies on Earcut. (nockawa)
- Updates
- Added
renderTargetTexture.useCameraPostProcesses
to control postprocesses for render targets (deltakosh) - Added
mesh.toLefthanded()
to convert a mesh from right handed system (kesshi) - Renderlists can now also be defined using predicates (deltakosh)
- Added support for various normal maps conventions (deltakosh)
- Added postprocess.enablePixelPerfectMode to avoid texture scaling/stretching when dealing with non-power of 2 resolutions. cannot be used on post-processes chain (deltakosh)
- Enabled other post processes to be used when also using a 3D Rig (jcpalmer)
- Got Skeleton.copyAminationRange scaling better for different bone lengths (jcpalmer)
- 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) - New SPS particle property
isVisible
(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. (quick doc) (nockawa)
- Added RectanglePackingMap class to fit several rectangles in a big map in the most optimal way, dynamically. (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.(quick doc) (nockawa)
- Scene.onPointerObservable property added to enable a unique Observable event for user input (see ArcRotateCamera inputs for examples) (nockawa)
- Oimo.js updated to the latest version (RaananW)
- Added PhysicsImpostor and PhysicsJoint classes (RaananW)
- LensFlareSystem now has both ID and name (RaananW)
- TargetCamera has now a rotationQuaternion variable to can be used to set the camera's rotation (RaananW)
- SSAORenderingPipeline now uses bilateral blur post-processes instead of standard blur post-process, in order to remove more efficiently the "textile effect"
Engine.updateDynamicVertexBuffer
now has optional count as well as offset to allow partial updates (benaadams)- vertex attributes are only disabled if they aren't going to be reeabled by the next draw, to reduce gpu state changes (benaadams)
- Added
- Exporters
- Unity3D exporter: Added support for lightmaps (davrous, deltakosh)
- Unity3D exporter: Added support for export and run (local webserver) (davrous, deltakosh)
- Unity exporter now support skeletons (sebavan)
- Support for 3dsmax 2017 (deltakosh)
- Added support for up to 8 bones influences per vertex for 3dsmax exporter (deltakosh)
- Added console logging for .babylon file loading & depreciated SceneLoader.Load() in favor of Append() (jcpalmer)
- API doc
- 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](https://github.c...
v2.3.0
- Major updates
- Sponza demo
- Support for procedural cube textures Demo here (deltakosh)
- New UniversalCamera which support keyboard, mouse, touch and gamepad (davrous)
- Point lights shadow mapping. Demo here (deltakosh)
- Introducing Materials Library (deltakosh)
- Water material: http://doc.babylonjs.com/extensions/Water. Demo here (julien-moreau)
- Fire material: http://doc.babylonjs.com/extensions/fire. Demo here (julien-moreau)
- Normal material: http://doc.babylonjs.com/extensions/normal (temechon)
- Lava Material: http://doc.babylonjs.com/extensions/lava (temechon)
- PBR Material: http://doc.babylonjs.com/extensions/pbr (deltakosh)
- Fur Material: http://doc.babylonjs.com/extensions/Fur. Demo here (julien-moreau)
- Introducing Procedural textures Library (meulta
- New cache mechanism for StandardMaterial (deltakosh)
- New Solid Particle System Demo here (jerome)
- New
StandardMaterial.lightmapTexture
which can be controlled withStandardMaterial.useLightmapAsShadowMap
(deltakosh) - Support for reflection probes. See documentation here (deltakosh)
- New serializers folder to host .babylon serializers (deltakosh)
- New .obj serializer (BitOfGold)
- Sprites now can be picked and can use actions (deltakosh)
- New
Mesh.CreatePolyhedron()
method (jerome) - New
Mesh.CreateIcoSphere()
method Demo here (G'kar) - Introducing babylon.core.js (deltakosh)
- Introducing AnimationRanges for Skeletons and Animations (deltakosh)
- Support for glTF files loader (julien-moreau)
- Updates
- Audio files are now saved for offline access (davrous)
- New
CubeTexture.CreateFromImages()
(deltakosh) - Bounding info can be locked and updated (
bb.isLocked
andbb.update()
) (deltakosh) - 2D layers now have a scale and offset properties (deltakosh)
- TouchCamera can now fallback to regular mouse/keyboard controls (deltakosh)
- Added ability to skip current prepared Action to next active Action (chained by Action.then(Action)) (vouskprod)
- Added new event triggers
ActionManager.OnLongPressTrigger
andActionManager.OnPickDownTrigger
(vouskprod) - new
Mesh.convertToUnIndexedMesh()
to create meshes with no indices (which could be faster when vertex reuse is low and vertex structure is small) (deltakosh) - Unity3D exporter will recognise instances of prefabs (ozRocker)
- New parse mechanism (for loading .babylon file) (deltakosh)
- New button to log the camera position in the debug layer (temechon)
- Shader files (fragment and vertex) can now be specified via direct URL (vouskprod)
- Added
Animatable.goToFrame()
(deltakosh) - Fixed behavior or
Animation.CreateAndStartAnimation
and addedAnimation.CreateMergeAndStartAnimation
to reproduce previous behavior (deltakosh) - Adding
StandardMaterial.linkEmissiveWithDiffuse
to, well, link emissive with diffuse value. (With)[http://www.babylonjs-playground.com/#2FPUCS#2] and (without)http://www.babylonjs-playground.com/#2FPUCS#1 - Adding support for equi-rectangular mapping. See demo here (deltakosh)
- Sprites and particles scheduler updated to be resolved before transparent objects (deltakosh)
- Added ability to deactivate ArcRotateCamera panning mechanism (by setting panningSensibility to 0) (vouskprod)
- Added
DirectionalLight.autoUpdateExtends
to prevent directional lights to adapt to scene extends (deltakosh) - Added a new parameter to
debugLayer.show()
to define root element to use (deltakosh) - New
MeshBuilder
class used to create all kind of mesh shapes (deltakosh) - Added
Scene.constantlyUpdateMeshUnderPointer
to improve performance when moving mouse (deltakosh) - Added
StandardMaterial.disableLighting
(deltakosh) - Improved reflection shader performance (deltakosh)
- New
Material.sideOrientation
property to define clockwise or counter-clockwise faces selection. Demo here (deltakosh) - It is now possible to create a custom loading screen. PR (RaananW)
- Per face color and texture feature in
MeshBuilder.CreateCylinder()
(jerome) - Arc feature in
CreateCylinder
,CreateSphere
,CreateTube
,CreateDisc
andCreateLathe
(jerome) - Slice feature in
MeshBuilder.CreateSphere()
(jerome) closed
parameter inMeshBuilder.CreateLathe()
(jerome)cap
parameter inMeshBuilder.CreateLathe()
(jerome)diameter
,hasRings
,enclose
parameters inMeshBuilder.CreateCreateCylinder()
(jerome)- added
getNormalAtCoordinates()
andgetNormalAtCoordinatesToRef()
methods inMeshBuilder.CreateLathe()
(jerome) Material.dispose()
now removes disposed material from meshes (deltakosh)- New
Material.getBindedMeshes()
function (deltakosh) - OimoJS Plugin now uses Quaternions exclusively and calculates body rotations correctly. PR (RaananW)
- It is now possible to get the physics engine's body and wolrd objects using the physics engine. PR (RaananW)
- new Heightmap Impostor for Cannon.js physics engine. PR, Demo (RaananW)
- A plane mesh can be created with a source plane (math). PR (RaananW)
- AbstractMesh.onPhysicsCollide will be triggered when a physics-enabled mesh collides against another. PR (RaananW)
- Added scene onPointerMove public callback. PR (RaananW)
- Added streaming support for BABYLON.Sound (davrous)
- Added collisionsEnabled and workerCollisions for serialization PR (Dad72)
- Changed from a fixed maximum of bone influencers, 4, to variable, 1-8 (Palmer-JC)
- Support for added to Blender Exporter (Palmer-JC)
- Float32Arrays can now directly be specified for vertex data attributes,
Mesh.updateVerticesDataDirectly
deprecated (Palmer-JC) - Added panning axis to the ArcRotateCamera PR (mstdokumaci, RaananW)
- Added
Tmp
class for internal use in order to improvement the memory management, jerome) - Added `Scene.swithActiveCamera(newCamera, attachContro...
v2.2.0
- Major updates
- Blender can now bake Procedural textures & Cycles materials. Plus more. See documentation here (Palmer-JC)
- Meshes can now be attached to bones. See documentation here and sample here (deltakosh)
- HDR Rendering pipeline. See demo here (julien-moreau)
- New rewored StandardMaterial.isReady for better memory usage and performance (deltakosh)
- Revamping of FBX exporter. Now supports animations and bones (simonferquel, deltakosh)
- StandardMaterial.useGlossinessFromSpecularMapAlpha to use specular map alpha as glossiness level (deltakosh)
- Added support for StandardMaterial.roughness. See demo here (deltakosh)
- OBJ loader. See demo here (Temechon)
- EdgesRenderer. See demo here (deltakosh)
- Actions Builder tool for 3dsmax exporter. More info here (julien-moreau)
- Updates
- Adding layerMask to lensFlareSystem, spritesManager, particleSystem (deltakosh)
- Adding emissiveAsIllumination and reflectionFresnelFromSpecular for StandardMaterial (deltakosh)
- Adding isEnabled for ProceduralTexture (deltakosh)
- Compression supported for raw textures (deltakosh)
- New TonemapPostProcess. See demo here (deltakosh)
- New options parameters for Box, Sphere, Plane and Ground. See demo here (deltakosh)
- Added per face UV and Colors options for
CreateBox
(jerome) - Added darkness support for soft shadows (deltakosh)
- Added scene.getLensFlareSystemByName() (deltakosh)
- Added LensFlareSystem.setEmitter() (deltakosh)
- Added Color3.FromHexString() and Color3.toHexString() (deltakosh)
- Added Color4.FromHexString() and Color4.toHexString() (deltakosh)
- Added mesh.computeBonesUsingShaders to allow developers to disable HW skinning for low end devices (deltakosh)
- Added material.disableDepthWrite (default is off) (deltakosh)
- Added material.alphaMode (default is BABYLON.Engine.ALPHA_COMBINE, can be set to BABYLON.Engine.ALPHA_ADD, *_SUBTRACT, *_MULTIPLY or *_MAXIMIZED ) (deltakosh, jahow)
- Added Animatable.reset() function (deltakosh)
- New parameter for ArcRotateCamera.zoomOn to preserve maxZ (deltakosh)
- PickingInfo.getNormal can now use either vertices normals or vertices positions (deltakosh)
- Meshes can now support uv2, uv4, uv5 and uv6 for ShaderMaterials (deltakosh)
- Panning support for ArcRotateCamera (julien-moreau)
- Vertex color and diffuse color can now be mixed (deltakosh)
- Depth-of-field improvements PR (jahow)
- Engine now initialize WebGL with preserveDrawingBuffer = false by default (deltakosh)
- withEpsilon with a user defined epsilon PR (RaananW)
- Adding onAfterRender function in BABYLON.PostProcess PR (julien-moreau)
- Improved shaders optimizer to remove specular code when not needed (deltakosh)
- Added some utility functions to Vector2/3/4 PR (jahow)
- Added split angularSensibiliy into X and Y for arcRotateCamera PR (Remwrath)
- Added function getFrontPosition(distance) for Camera PR (dad72)
- New rawTexture.update function (robgdl)
- Changes to meshes transform baking and added flipFaces PR (jahow)
- SerializeMesh serializes a mesh or array of meshes to be imported with the loader's ImportMesh optionally including their children and/or parents. PR PR2 (RaananW)
- onCollide callback for meshes calling moveWithCollisions. PR (RaananW)
- Unity Exporter now uses game object name as the Babylon.js mesh name, instead of mesh name which is not unique when dealing with primitive objects (cubes, spheres, planes, etc..) (ozRocker)
- Path3D construction : new raw parameter, if true returns a non-normalized Path3D object (jerome)
- Bug fixes
- Fixing bug with rig cameras positioning (deltakosh)
- Instance meshes' geometry ID is now serialized correctly. PR (RaananW)
- Bug fix at set numberOfBricksWidth PR (Polatouche)
- Breaking changes
- In LensRenderingPipeline: parameter
dof_focus_depth
(range 0..1) is deprecated, usedof_focus_distance
(range 0..infinity) instead (jahow) - Cylinder Mesh complete reimplementation for better normals (jerome)
RotationFromAxis()
: fixed the dot product case outside the range -1, 1- Path3D : fix wrong normal/binormal due to normalization approximations (jerome)
- In LensRenderingPipeline: parameter
v2.1
- Major updates
- Collisions can now be offloaded on webworkers (raananw)
- SIMD.js support for math library. See demo (deltakosh)
- Unity 5 scene exporter. More info here (davrous, deltakosh)
- New
Mesh.CreateDecal()
function to create decals. See demo. More info here (deltakosh) - New tool for debugLayer: You can now dump renderTargets to see their content (deltakosh)
- Complete shadows code rework: New bias property for ShadowGenerator, new orthogonal shadows for directional shadows, automatic projection size for directional lights, new BlurVarianceShadowMap filter. See demo. Documentation updated here (deltakosh)
- New lens effects rendering pipeline. More info here (jahow)
- New basic mesh type: Ribbons. See demo. More info here (jbousquie)
- New
BABYLON.Mesh.ExtrudeShape
andBABYLON.Mesh.ExtrudeShapeCustom
. More info here (jbousquie) - New Loaders folder with a first additionnal plugin: STL (raananw, deltakosh)
- Gulp building process revamped, updated and simplified and now includes a config.json (raananw)
- Updates
- Better beta angle support for ArcRotateCamera (raananw)
- Better video textures support (deltakosh)
- Cameras hierarchy rework (deltakosh)
- New
Camera.setCameraRigMode
to control 3D rendering of any camera (Anaglyph, Stereo, VR) (Palmer-JC) - VR cameras can disable distortion postprocess to get more performance (deltakosh)
- New cameras: AnaglyphGamepadCamera, StereoscopicFreeCamera, StereoscopicArcRotateCamera, StereoscopicGamepadCamera (deltakosh)
- New
MultiMaterial.clone()
function (deltakosh) - Faster
mesh.computeNormals()
function (jbousquie) - Added the ability to dynamically update or to morph an mesh instance (jbousquie)
- Allow static Mesh.MergeMeshes to work with clones & Mesh subclasses (Palmer-JC)
- Added mesh.freezeWorldMatrix() for static meshes (deltakosh)
- Added mesh.freezeNormals() for parametric mesh updates (jbousquie)
- Added Vector3.RotationFromAxis() to get Euler rotation angles from a target system (jbousquie)
- Added mesh.alwaysSelectAsActiveMesh to disable frustum clipping for a specific mesh (deltakosh)
- Added updateMeshPositions method (jbousquie)
- Callbacks for geometry changes (raananw)
- Allow Engine to run for CocoonJS with standard html, including devices where the hardware scaling != 1 (Palmer-JC)
- Material onBind callback improvement (jahow)
- New front/back/double side feature for meshes (jbousquie)
- New basic mesh type: Disc (jbousquie)
- New basic mesh type : Dashed Lines (jbousquie)
- New basic mesh type : Lathe (jbousquie)
- New basic mesh type: Tube. More info here (jbousquie)
- Allow ComputeNormals to work with Typed Arrays & the Typescript Level (Palmer-JC)
- Added uniqueId for nodes (raananw)
- Added
Mesh.onLODLevelSelection(distance: number, mesh: Mesh, selectedLevel: Mesh)
callback (deltakosh) - Added
Material.zOffset
to help reducing z-fighting (deltakosh) - Added excludeWithLayerMask to lights (Palmer-JC)
- Added includeOnlyWithLayerMask for filtering meshes (Palmer-JC)
- Mesh Default layerMask changed to allow more "special cameras filtering" (Palmer-JC)
- Sprite can now have .width and .height properties (deltakosh)
- Ability to register events based on mesh/camera/light addition and deletion (raananw)
- New
Curve
object (jbousquie) More info here - New
Path3D
object (jbousquie) More info here - New 'color correction' post process (jahow)
- Added sampling mode as a parameter for SpriteManager (jahow)
- RenderTexture can now be saved to a file (deltakosh)
- Better attributes management (deltakosh)
- Source conform to typescript 1.4 (raananw)
- Adding subMeshId property in PickingInfo structure (deltakosh)
- No more error when a manifest is not found (deltakosh)
- Bug fixes
- Initial quaternion fix for OIMO plugin (raananw)
- ArcRotateCamera pinch zoom debug (vousk)
- Fixing animatable bug when animation is over (temechon)
- useCameraPostProcess whenever there is a special camera in use (m0ppers)
- delta in BoundingBox's intersectsPoint is now calculated correctly (raananw)
- textures cache fixed (deltakosh)
- ImportMesh now imports referenced geometries of selected meshes (raananw)
- CSG toMesh() and FromMesh() now support meshes without quaternion (raananw)
- Breaking changes
- OculusCamera was removed (deltakosh)
- VRDeviceOrientationCamera was renamed to VRDeviceOrientationFreeCamera (deltakosh)
- WebVRCamera was renamed to WebVRFreeCamera (deltakosh)
- VideoTexture does not require a size parameter anymore. The new constructor is:
constructor(name: string, urls: string[], scene: Scene, generateMipMaps = false, invertY = false, samplingMode: number = Texture.TRILINEAR_SAMPLINGMODE)
(deltakosh)