what's new.md 17 KB

3.2.0

Major updates

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

  • 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)
  • New watcher configuration for VSCode. Now the task only compiles changed files (sebavan)
  • 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)
  • VRHelper now has onSelectedMeshUnselected observable that will notify observers when the current selected mesh gets unselected (carloslanderas)
  • VRHelper now has onBeforeCameraTeleport and onAfterCameraTeleport 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)
  • AssetsManager will now clear its tasks lsit from all successfully loaded tasks (deltakosh)
  • Added documentation to WebVRCamera and VRExperienceHelper (trevordev)
  • Introduced isStroke on HighlightLayerOptions which makes the highlight solid (PixelsCommander)
  • (Viewer) There is now an option to paste payload instead of a URL for configuration (RaananW)
  • (Viewer) Models can be loaded async using JavaScript (RaananW)
  • 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)
  • (Viewer) initScene and initEngine can now be extended. onProgress during model loading is implemented as observable. (RaananW)
  • glTF loader now supports the KHR_lights extension (MiiBond)
  • The observable can now notify observers using promise-based callback chain. (RaananW)
  • Added base64 helper functions to Tools (bghgary)
  • Added createDefaultCamera and createDefaultLight functions to Scene (bghgary)
  • Gulp process now supports multiple outputs when using webpack. (RaananW)
  • (Viewer) Scene Optimizer intergrated in viewer. (RaananW)
  • (Viewer) The viewer supports custom shaders in the configuration. (RaananW)
  • Documented PostProcessRenderEffect, DefaultRenderingPipeline, BlurPostProcess, DepthOfFieldEffect, PostProcess, PostProcessManager, Effect classes (trevordev)
  • SPS internal storage of each solid particle rotation matrix (jbousquie)
  • SPS particle parenting feature (jbousquie)
  • (Viewer) Introducing the viewer labs - testing new features. (RaananW)
  • KeepAssets class and AssetContainer.moveAllFromScene (HoloLite trevordev)
  • (Viewer) It is now possible to update parts of the configuration without rcreating the objects. Extra configuration can be loaded sync (if provided) (RaananW)
  • (Gulp) extra/external declarations can be prepended to final declarations during build. (RaananW)
  • (Viewer) Model can be normalized using configuration, camera is dynamically configured. (RaananW)
  • (Gulp) extra/external declarations can be prepended to final NPM declarations during build. (RaananW)
  • GUI.Line can have its world position set from one end or the other (SvenFrankson)
  • Added FOV system to background material for zoom effects in skyboxes without adjusting camera FOV (DavidHGillen)
  • Improved glTF loader by using promises for asynchronous operations. (bghgary]
  • Improved glTF loader performance by compiling materials in parallel with downloading external resources. (bghgary]
  • Added unit tests for the glTF 2.0 loader. (bghgary]
  • Added promise-based async functions to the SceneLoader, Scene.whenReadyAsync, and material.forceCompilationAsync. (bghgary]
  • Added checks to VertexData.merge to ensure data is valid before merging. (bghgary]
  • Ability to set a mesh to customize the webVR gaze tracker (trevordev)
  • Added promise-based async functions for initWebVRAsync and useStandingMatrixAsync (trevordev)
  • Add stroke (outline) options on GUI text control (SvenFrankson)
  • Add isThumbClamped option on GUI slider control (JeanPhilippeKernel)
  • Add floating point texture support for RenderTargetCubeTexture (PeapBoy)
  • Support for mutli-touch when interacting with multiple gui elements simultaneously (trevordev)
  • (Viewer) Declaration file published, ready for npm. (RaananW)
  • Added Draco mesh compression support to glTF 2.0 loader. (bghgary)
  • Support multiple simultaneous webVR controller gui interactions in WebVRExperienceHelper (trevordev)
  • (Viewer) XHR requests not use Tools.LoadFile and are disposed correctly - #3671 (RaananW)
  • Added Tools.WorkerPool class for web worker management. (bghgary)
  • Support depth maps for multiple active cameras for post processes like depth of field (trevordev)
  • Integrates depth texture support in the engine (sebavan)
  • NPM package now has a dependency system, updated during build. (RaananW)
  • WebVRExperienceHelper will create an empty controller model so that controller interactions can be used while the actual model is still loading (trevordev)
  • Default fragment shader will clamp negative values to avoid underflow, webVR post processing will render to eye texture size (trevordev)
  • Supports Environment Drag and Drop in Sandbox (sebavan)
  • EnvironmentHelper has no an onError observable to handle errors when loading the textures (RaananW)
  • (Viewer) Viewer supports model animations and multi-model loading (RaananW)
  • Tests for sharpen, chromatic aberration, default pipeline and enable/disable post processes (trevordev)
  • onPointer* callbacks have now the event type as a 3rd variable (RaananW)
  • Lightmap texture in PBR material follow the gammaSpace Flag of the texture (sebavan)
  • Added setTextureFromPostProcessOutput to bind the output of a postprocess into an effect (trevordev)
  • Added support for primitive modes to glTF 2.0 loader. (bghgary]
  • Updated bloom effect to only bloom areas of the image above a luminance threshold (trevordev)
  • Cannon and Oimo are optional dependencies (RaananW)
  • Shadows - Introduces Normal Bias (sebavan))
  • Earcut is an external, optional dependency. (RaananW)
  • Return animation groups when calling SceneLoader.ImportMesh. (bghgary]

Bug fixes

  • setPivotMatrix ws not setting pivot correctly. This is now fixed. We also introduced a new setPreTransformMatrix to reproduce the sometimes needed behavior of the previous setPivotMatrix function (deltakosh)
  • SPS solid particle .pivot property now also behaves like the standard mesh pivot. Former behavior (particle translation) can be kept with the particle property .translateFromPivot set to true (jbousquie)
  • Texture extension detection in Engine.CreateTexture (sebavan)
  • SPS internal temporary vector3 instead of Tmp.Vector3 to avoid possible concurrent uses (jbousquie)
  • Fixed a bug when calling load on an empty assets manager - #3739 (RaananW)
  • Enabling teleportation in the vr helper class caused a redundant post process to be added (trevordev)
  • (Viewer) Fixed a bug where loading another mesh positioned it incorrectly (RaananW)
  • Scale vr controllers by deviceScale when it is set in VRExperienceHelper (trevordev)
  • (Viewer) Disabling templates now work correctly (RaananW)
  • AMD "define" declaration is no longer anonymous (RaananW)
  • Collision worker didn't initialize instanced meshes correctly - #3819 (RaananW)
  • postMessage calls in webworkers were fixed. (RaananW)
  • Fixed WebCam Texture on Firefox and Edge - #3825 (sebavan)
  • Add onLoadObservable on VideoTexture - #3845 (sebavan)
  • beforeRender is now triggered after the camera updated its state - #3873 (RaananW)
  • Tools.DeepCopy no longer copying getter-only elements - #3929 (RaananW)

Breaking changes

  • Removed the unused PostProcessRenderPass class and extended postProcessingRenderingEffect to support multiple PostProcesses (trevordev)
  • VertexData.merge no longer supports merging of data that do not have the same set of attributes. (bghgary]
  • glTF 2.0 loader now creates a mesh for each primitive instead of merging the primitives together into one mesh. If a mesh only has one primitive, the behavior is the same as before. This change only affects meshes that have multiple primitives. (bghgary]
  • Engine's onCanvasPointerOutObservable will now return a PointerEvent instead of the Engine. (trevordev)
  • Removed public references to default rendering pipeline's internal post process (trevordev)