Skip to content

Latest commit

 

History

History
88 lines (88 loc) · 12 KB

what's new.md

File metadata and controls

88 lines (88 loc) · 12 KB
  • 2.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 use buffer.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). The PolygonMeshBuilder 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)
    • 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
      • 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)
      • Fixed the device orientation cameras (both VR and non-VR cameras) (RaananW)
      • Fixed the WebVR implementation (RaananW)
      • DynamicTexture.clone() now preserves height in addition to width (dahlbyk)
      • Fixed missing some parameter default values in MeshBuilder.CreateGroundFromHeightMap() and MeshBuilder.CreateTiledGround() (jerome)
      • Fixed model shape initial red vertex color set to zero not formerly being taken in account in the SolidParticleSystem (jerome)
    • Breaking changes
      • VertexData.CreateLines() removed as MeshBuilder.CreateLines() now calls MeshBuilder.CreateLineSystem()
      • scene.onNewXXXAdded and scene.onXXXRemoved callbacks were removed and replaced by scene.onNewXXXAddedObservable and scene.onXXXRemovedObservable
      • Material.dispose does not dispose textures by default. You have to call material.dispose(false, true) to get the previous behavior.
      • SSAORenderingPipeline.getBlurHPostProcess and SSAORenderingPipeline.getBlurVPostProcess. The SSAO rendering pipeline doesn't use standard blur post-process anymore. A bilateral blur post-process is used instead.
      • Engine.bindBuffers is now Engine.bindBuffersDirectly (benaadams)
      • Engine.bindMultiBuffers is now Engine.bindBuffers and strongly typed { [key: string]: VertexBuffer; } of buffers (benaadams)
      • Engine.createDynamicVertexBuffer takes vertices rather than capacity, creating and initalizing in one gpu instruction (benaadams)
      • Internally new Engine.bindBuffer is used rather than gl.bindBuffer which only binds when the bound buffer is changing (benaadams)
      • DynamicTexture no longer forces height/width to exponents of 2 if MIP maps are disabled (dahlbyk)