what's new.md 10 KB

3.0.0:

Core engine

Major updates

Updates

  • Introduced boundingBox.centerWorld and boundingBox.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() and Effect.getFragmentShaderSource() now returns the effective shader code (including evaluation of #define) (deltakosh)
  • GroundMesh : getHeightAtCoordinates(), getNormalAtCoordinates() and getNormalAtCoordinatesToRef() can now work with rotated grounds (jerome)
  • GroundMesh, facetData and SolidParticleSystem improvement in normal computations (jerome)
  • Added AbstractMesh.addRotation() (jerome)
  • Added Quaternion.RotationQuaternionFromAxis() and Quaternion.RotationQuaternionFromAxisToRef() (jerome, thanks to abow)
  • Added parameters uvs and colors to MeshBuilder.CreateRibbon() (jerome)
  • Added Curve3.CreateCatmullRomSpline() (jerome and BitOfGold)
  • Added the optional parametercolorFilter to CreateGroundFromHeightMap() (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 and POINTERDOUBLETAP PointerEventTypes to register new Observer mask. (Demo here)http://www.babylonjs-playground.com/?30
  • 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)

Bug fixes

  • Fixed a bug with spotlight direction (deltakosh)
  • Fixed an issue with Mesh.attachToBone when a mesh is moving and an animation is changed (abow)
  • Fixed an issue withaspect ratio when using CreateScreenshot (deltakosh)
  • Fixed SPS particle initial status when used as updatable with a positionFunction in addShape() (jerome)
  • Fixed SPS particle access start index when used with setParticles(start, end) (jerome)

API Documentation

- FileabstractMesh.ts` documented (jerome)

  • File mesh.ts documented (jerome)
  • File groundMesh.ts documented (jerome)
  • File instancedMesh.ts documented (jerome)
  • File lineMesh.ts documented (jerome)
  • File vertexData.ts documented (jerome)
  • File subMesh.ts documented (jerome)
  • File vertexBuffer.ts documented (jerome)
  • File math.ts documented (jerome)
  • File light.ts documented (jerome)
  • File directionalLight.ts documented (jerome)
  • File hemisphericLight.ts documented (jerome)
  • File pointLight.ts documented (jerome)
  • File spotLight.ts documented (jerome)
  • File shadowGenerator.ts documented (jerome)

Breaking changes

  • WebVRCamera:
    • requestVRFullscreen has been removed. Call attachControl() inside a user-interaction callback to start sending frames to the VR display
    • setPositionOffset has been used to change the position offset. it is now done using camera.position
  • Ray :
    • show has been removed. Use new RayHelper.show() instead
    • hide has been removed. Use new RayHelper.hide() instead
  • AbstractMesh:
    • onPhysicsCollide has been removed. Use mesh.physicsImpostor.registerOnPhysicsCollide() instead
    • setPhysicsState has been removed. Use new PhysicsImpostor() instead
    • getPhysicsMass has been removed. Use mesh.physicsImpostor.getParam("mass") instead
    • getPhysicsFriction has been removed. Use mesh.physicsImpostor.getParam("friction") instead
    • getPhysicsRestitution has been removed. Use mesh.physicsImpostor.getParam("restitution") instead
    • updatePhysicsBodyPosition has been removed. Changes are synchronized automatically now
  • Mesh:
    • updateVerticesDataDirectly has been removed. Use mesh.updateVerticesData() instead
  • SsaoRenderingPipeline:
    • getBlurHPostProcess has been removed. Blur post-process is no more required
    • getBlurVPostProcess has been removed. Blur post-process is no more required
  • Scene:
    • setGravity has been removed. Use scene.getPhysicsEngine().setGravity() instead
    • createCompoundImpostor has been removed. Use PhysicsImpostor parent/child instead
  • ActionManager:
    • LongPressDelay and DragMovementThreshold are now respectively Scene.LongPressDelay and Scene.DragMovementThreshold

Canvas2D

Major Updates

  • Added text alignment and word wrap to Text2D (abow)
  • Support of Scale9Sprite feature in Sprite2D (nockawa)
  • Support of AtlasPicture to store many pictures into a bit one, with the possibility to create one/many Sprite2D out of it. (nockawa)
  • Support of BMFont with the BitmaptFontTexture class, Text2D has now a bitmapFontTexture setting in the constructor to display text using a BitmapFontTexture (nockawa)

Minor Updates

  • WorldSpaceCanvas: TrackNode feature, a WSC can follow a Scene Node with an optional billboarding feature (always facing the camera)Demo
  • WorldSpaceCanvas: new setting unitScaleFactor to generated a bigger canvas than the world space mesh size. If you create a WSC with a size of 200;100 and a uSF of 3, the 3D Plane displaying the canvas will be 200;100 of scene units, the WSC will be 600;300 of pixels units.

Bug Fixing

  • Fix Rotation issue when the Parent's Primitive hadn't a identity scale. (nockawa)
  • Primitive's position computed from TrackedNode are now hidden when the node is out of the Viewing Frustum (nockawa)
  • WorldSpaceCanvas: sideOrientation is finally working, you can try Mesh.DOUBLESIDE to make you Canvas visible on both sides. (nockawa)