The HTML5 powered Babylon.js 3D game engine just released version 2.5 today. BabylonJS is open source (Apache License) and one of the best available native HTML5 3D game engines available. I previously featured it in the Closer Look game engine series if you want more details on the engine. We are also currently producing an in-depth BabylonJS tutorial series if you want to learn how to use this powerful engine.
The 2.5 release is packed full of new features, updates and fixes from the release notes:
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)
- Canvas2D moved to a separate folder in main repo. Now you need to also include babylon.cavans2d.js to get [email protected] feature (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)- Canvas2D: (nockawa)
- Performance metrics added
- Text2D super sampling to enhance quality in World Space Canvas
- World Space Canvas is now rendering in an adaptive way for its resolution to fit the on screen projected one to achieve a good rendering quality
- Transparent Primitives are now drawn with Instanced Array when supported
- New property in Canvas2D (instances) that contains all instances of canvas2d Temechon
- 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)
- Canvas2D: (nockawa)
WorldSpaceCanvas2D
:
- Intersection/interaction now works on non squared canvas
- Primitive:
ZOrder
fixed in Primitives created inline- Z-Order is now correctly distributed along the whole canvas object graph
Sprite2D
:
- texture size is now set by default as expected
- can have no
id
setText2D
:
- Fix bad rendering quality on Chrome
- Rendering above transparent surface is now blending correctly
Breaking changes