BabylonJS v4.2.0 Release Notes

Release Date: 2020-11-12 // over 3 years ago
  • ⚡️ Major updates

    • ➕ Added particle editor to the Inspector (Deltakosh)
    • ➕ Added sprite editor to the Inspector (Deltakosh)
    • ⚡️ Updated skeleton viewer in the Inspector (Pryme8)
    • ➕ Added texture inspection in the Inspector (DarraghBurkeMS)
    • ➕ Added PBR support in the node material editor (Popov72)
    • ➕ Added new node material editor modes: procedural textures, post processes, particle shaders (Popov72 and Deltakosh)
    • ➕ Added customizable frames in the node material editor (Pamela W)
    • ➕ Added support for code templates in the playground (sailro)
    • ➕ Added HDR texture filtering tools to the sandbox. Doc (Sebavan)
    • 📚 Revamped documentation (RaananW, John King, Patrick Ryan, PiratJC)
    • ➕ Added KTX + BasisU support (Popov72)
    • ⚡️ Updated WebXR Support (RaananW)
    • Added support for thin instances for faster mesh instances. Doc (Popov72)
    • ➕ Added support in ShadowGenerator for soft transparent shadows (Popov72)
    • ➕ Added PBR Next features: Reflection probes for accurate shading and Sub Surface Scattering (CraigFeldpsar and Sebavan)
    • Added support for latest glTF extensions: KHR_materials_clearcoat, KHR_materials_sheen, KHR_materials_transmission, KHR_texture_basisu (Sebavan and Popov72)
    • Added support for 3D Commerce glTF extension: KHR_materials_variants (Sebavan and Deltakosh)

    ⚡️ Updates

    General

    • ➕ Added the ShadowDepthWrapper class to support accurate shadow generation for custom as well as node material shaders. Doc (Popov72)
    • ➕ Added support for postproces serialization (Deltakosh)
    • ➕ Added support for querystrings on KTX file URLs (abogartz)
    • 🔨 Refactored React refs from old string API to React.createRef() API (belfortk)
    • Scale on one axis for BoundingBoxGizmo (cedricguillemet)
    • Camera gizmo (cedricguillemet)
    • ⬆️ Upgraded gizmo meshes (davesauce14)
    • Gizmo isHovered boolean (cedricguillemet)
    • 👍 Node support (Transform, Bone) for gizmos (cedricguillemet)
    • Simplified code contributions by fully automating the dev setup with gitpod (nisarhassan12)
    • ➕ Added a CascadedShadowMap.IsSupported method and log an error instead of throwing an exception when CSM is not supported (Popov72)
    • ➕ Added initial code for DeviceInputSystem (PolygonalSun)
    • ➕ Added support for material.disableColorWrite (Deltakosh)
    • The Mesh Asset Task also accepts File as sceneInput (RaananW)
    • Gizmo axis thickness (cedricguillemet)
    • When no submesh can be picked(pointcloud), falls back to bbox intersection (cedricguillemet)
    • ➕ Added support preserving vert colors for CSG objects (PirateJC)
    • ➕ Added boundingBoxRenderer.onBeforeBoxRenderingObservable and boundingBoxRenderer.onAfterBoxRenderingObservable (Deltakosh)
    • 👍 Better plane handling for PointerDragBehavior when camera direction colinear to axis (cedricguillemet)
    • ➕ Added initial code for user facing DeviceSourceManager (PolygonalSun)
    • ➕ Added a Simple and advanced timer, based on observables (RaananW)
    • 🌲 Don't log a message in CustomProceduralTexture if the texturePath is not a JSON path (Popov72)
    • ➕ Added an alternate option to the mesh edge renderer to generate edges faster / more accurately for unusual geometries (like the ones generated by CSG) (Popov72)
    • ➕ Added an option when creating the engine to switch matrix computation to 64 bits (Popov72)
    • ➕ Added support for the alpha component to the SSR post-process (Popov72)
    • 👮 Force compute world matrix of the newly-attached mesh of a ray helper (RaananW)
    • 👍 Allow 180 monoscopic videos on top of the video dome (#8575) (RaananW)
    • ➕ Added AssetContainerTask support to AssetsManager class (MackeyK24)
    • ➕ Added fixedDragMeshBoundsSize for boundingbox gizmo to size anchors from bounds size (cedricguillemet)
    • 🔄 Changed DeviceSourceManager getInput contract to no longer return nullable values (Drigax)
    • 👍 Photo Dome and Video Dome now use the same abstract class and support the same parameters (#8771) (RaananW)
    • ➕ Added getTransformNodesByTags support to Scene class (MackeyK24)
    • ➕ Added support for multi-pointer mesh selection and pointer over/out triggers (#8820) (RaananW)
    • 🔄 Changed DeviceSourceManager getInput contract to no longer return nullable values for reals this time. Also added proper cleanup for DeviceSourceManager observables (Drigax)
    • 0️⃣ Default Loading screen supports any image size and ratio (#8845) (RaananW)
    • ➕ Added optional success and error callbacks for freezeActiveMeshes (RaananW)
    • 👍 Allow cross-eye mode in photo and video dome (#8897) (RaananW)
    • ➕ Added noMipMap option to the photo dome construction process (#8972) (RaananW)
    • ➕ Added a disableBoundingBoxesFromEffectLayer property to the EffectLayer class to render the bounding boxes unaffected by the effect (Popov72)
    • ✂ Removed all references to HTML element from cameras' attach and detach control functions (RaananW)
    • ➕ Added boundingBoxRenderer.onResourcesReadyObservable (aWeirdo)
    • ➕ Added copyTools.GenerateBase64StringFromTexture (aWeirdo)
    • ⚡️ Updated axisScaleGizmo to follow pointer on drag (aWeirdo)
    • ➕ Added manual input for sliders on NME and inspector (msDestiny14)

    Engine

    • 👌 Improved world matrix caching engine by using dirty mechanism on vector3 and quaternion (Deltakosh)
    • 👍 Allow logging of shader code when a compilation error occurs (Popov72)
    • ➕ Added back support for selecting textures based on engine capabilities (bghgary)
    • 🛠 Fixed Draco decoder when running on IE11 (bghgary)
    • 🔄 Change default camera calculations to only include visible and enabled meshes (bghgary)
    • ⚡️ Optimized frozen instances (Deltakosh)
    • ➕ Added support for detail maps in both the standard and PBR materials (Popov72)
    • ➕ Added abstractMesh method to get all particle systems that use the mesh as an emitter (PirateJC)
    • ➕ Added customization options to VirtualJoystick (#7398) (Rockwell15)
    • 🖐 Handle meshes with LODs in render target textures (meaning in glow/highlight layers, shadow generators, depth renderer, etc) (Popov72)

    NME

    • Frames are now resizable from the corners (belfortk)
    • Can now rename and re-order frame inputs and outputs (belfortk)
    • Can now edit Node port names (belfortk)
    • ⚡️ Updated which node ports are shown on frames by default so that only node ports connected to outside nodes are by default exposed on the frame (belfortk)
    • ➕ Added a modulo block (ageneau)
    • 🛠 Fix bug where frame port labels would be the names of incorrect nodes (belfortk)
    • 🛠 Fix bug where long comments on collapsed frames broke port alignment (belfortk)
    • ➕ Add the FragCoord and ScreenSize blocks (Popov72)
    • Particle systems: add the ParticlePositionWorld block (Popov72)
    • ➕ Add isExposedOnFrame property to connection points (belfortk)
    • ➕ Add support for exporting frames (belfortk)
    • ➕ Add support for importing frames and their nodes (unconnected) and exposed frame ports (belfortk)
    • ➕ Add the rgba and a outputs to the ReflectionTexture block (Popov72)
    • ➕ Add custom frames to be uploaded into NME for reuse (msDestiny14)
    • Node ports are now serialized for custom frames (msDestiny14)
    • Deleting a collapsed frame will delete all nodes inside it (msDestiny14)

    Inspector

    • ➕ Added support for follow cameras (Deltakosh)
    • 🆕 New delta tool used to apply delta changes to a scene (Deltakosh)
    • 🖐 Handle PBR colors as colors in linear space (Popov72)
    • 👍 Allow removing textures (Popov72)
    • Edit all textures (anisotropic, clear coat, sheen, ...) for the PBR materials (Popov72)
    • ➕ Added right click options to create PBR and Standard Materials (Deltakosh)
    • ➕ Added support for recording GIF (Deltakosh)
    • Popup Window available (To be used in Curve Editor) (pixelspace)
    • ➕ Added support to update inspector when switching to a new scene (belfortk)
    • Hex Component for Hex inputs on layer masks. (msDestiny14)
    • 👍 View & edit textures in pop out inspector using tools such as brush and floodfill. Supports region selection, individual channel editing, mipmap previews, and resizing. (DarraghBurkeMS)
    • ➕ Added mesh debug tools to display bone influence weights and bone indices maps. (Pryme8)
    • ➕ Added more functionality and options to the skeleton debug panel. (Pryme8)
    • Along with bone index it is now possible to select a bone using its name when viewing bone weights (#9117) (RaananW)
    • Gradient nodes from NME can now be set to be visible in the inspector (msDestiny14)

    Cameras

    • 🛠 Fixed up vector not correctly handled with stereoscopic rig (cedricguillemet)
    • 🖐 Handle reattachment of panning button for ArcRotateCamera (cedricguillemet)
    • Unattach previous control in scene.InputManager when attaching a new one (cedricguillemet)
    • ➕ Added flag to TargetCamera to invert rotation direction and multiplier to adjust speed (Exolun)
    • ➕ Added upwards and downwards keyboard input to FreeCamera (Pheater)
    • 🖐 Handle scales in camera matrices (Popov72)
    • ➕ Added mouse wheel controls to FreeCamera. (mrdunk)

    Debug

    • ➕ Added new view modes to the SkeletonViewer class. (Pryme8)
    • ➕ Added static methods to create debug shaders materials for a mesh with a skeleton. (Pryme8)
    • ➕ Added ability to view local rotation axes of bones using new displayOptions: showLocalAxes and localAxesSize (reimund)

    Sprites

    • ➕ Added support for 'sprite.useAlphaForPicking` to enable precise picking using sprite alpha (Deltakosh)
    • 👌 Improved rendering engine by using instancing when available (Deltakosh)

    Physics

    • 🛠 Fixed time steps or delta time with sub time step for Oimo.js and Cannon.js (cedricguillemet)
    • 👍 Ammo.js collision group and mask supported by impostor parameters (cedricguillemet)
    • Contact point parameter in registerOnPhysicsCollide callback (cedricguillemet)
    • collisionResponse flag to disable response but still get onCollide events (cedricguillemet)
    • ⚡️ Ammo.js IDL exposed property update and raycast vehicle stablization support (MackeyK24)
    • 🐎 Recast.js plugin nav mesh and crowd agent to ref performance optimizations. (MackeyK24)
    • ➕ Added scene.physicsEnabled boolean (Deltakosh)
    • 🛠 Fixed an issue with transformation set after physics body was created using Cannon.js (excluding height and plane) (#7928) (RaananW)
    • 🛠 Fixed an issue with compound creation and scaling preset (#8888) (RaananW)

    Loaders

    • ➕ Added support for glTF mesh instancing extension (#7521) (drigax)
    • Get the list of cameras retrieved from a gLTF file when loaded through the asset container (Popov72)
    • 🛠 Fixed SceneLoader.ImportAnimations. Now targets nodes based on "targetProperty" (#7931) (phenry20)
    • Renamed KHR_mesh_instancing extension to EXT_mesh_gpu_instancing (#7945) (drigax)
    • Added support for KHR_materials_ior for glTF loader. (Sebavan)
    • Added support for KHR_materials_specular for glTF loader. (Sebavan)
    • Added support for KHR_materials_variants for glTF loader. (MiiBond)
    • Added support for KHR_materials_transmission for glTF loader. (MiiBond)
    • 👌 Improved progress handling in glTF loader. (bghgary)
    • 👉 Use min/max values from position accessors (when available) to set the bounding box of meshes (Popov72)
    • ➕ Added missing "pluginExtension" parameter to SceneLoader.ImportAnimations. (phenry20)
    • ➕ Added support for .glb file loading through a base64 encoded filename (Popov72)
    • 🛠 Fixed issue with loading screen hiding too early when loading multiple assets concurrently. (bghgary)
    • ➕ Added the loadAllMaterials property to the gLTF loader to load materials even if not used by any mesh (Popov72)
    • Added transmission prerender pass when using KHR_materials_transmission (MiiBond)
    • 🛠 Fixed a bug when loading glTF with interleaved animation data. (bghgary)
    • Added support for KHR_materials_translucency for glTF loader. (MiiBond)

    Serializers

    • Added support for KHR_materials_unlit to glTF serializer (Popov72)
    • ➕ Added support for glTF Skins to glTF serializer (Drigax)
    • ➕ Added support for glTF Morph Target serialization (Drigax)
    • 🛠 Fixed several bugs in stlSerializer (aWeirdo)
    • ➕ Added param doNotBakeTransform to stlSerializer.CreateSTL (aWeirdo)

    Navigation

    Materials

    • ➕ Added the roughness and albedoScaling parameters to PBR sheen (Popov72)
    • ⚡️ Updated the energy conservation factor for the clear coat layer in PBR materials (Popov72)
    • ➕ Added the transparencyMode property to the StandardMaterial class (Popov72)
    • ➕ Added to FresnelParameters constructor options and equals method (brianzinn)
    • ➕ Added AddAttribute to CustomMaterial and PBRCustomMaterial (Popov72)
    • setTexture and setTextureArray from ShaderMaterial take now a BaseTexture as input instead of a Texture, allowing to pass a CubeTexture (Popov72)
    • 👍 Allow parenthesis usage in #if expressions in shader code (Popov72)
    • ➕ Added to StandardMaterial RGBD ReflectionTexture, RefractionTexture and LightmapTexture support. (MackeyK24)
    • 👍 Allow using the single comment syntax // comment in a #if construct in shader code (Popov72)
    • ➕ Added the possibility to update the shader code before being compiled (Popov72)
    • ➕ Added the shadowOnly property to the BackgroundMaterial class (Popov72)
    • ➕ Added support for lightmaps in unlit PBR materials (Popov72)
    • ➕ Added muted setting to VideoTexture, Fixed autoplay in Chrome (simonihmig)
    • ➕ Added waveCount to WaterMaterial used to adjust waves count according to the ground's size where the material is applied on (julien-moreau)
    • ✅ Alpha test transparencyMode no-longer requires a diffuse/albedo texture if opacityTexture is present (metaobjects)
    • ➕ Added hasTexture override in MultiMaterial (Vampiro)

    Meshes

    • ➕ Added MeshBuilder.CreateCapsule and Mesh.CreateCapsule for creation of a capsule shape mesh and VertexBuffers. (Pryme8)

    WebXR

    • ➕ Added optional ray and mesh selection predicates to WebXRControllerPointerSelection (Exolun)
    • ✅ Implemented the new WebXR HitTest API (#7364) (RaananW)
    • ⚡️ Playground doesn't update FPS when in XR in main and frame (#7875) (RaananW)
    • ➕ Added support for teleportation using pointer events (RaananW)
    • AR reference space type recommendation changed to 'unbounded' (#7959) (RaananW)
    • 🔌 Teleportation plugin doesn't use the touched to finish teleportation (#7916) (RaananW)
    • 👌 Support for pointer selection and teleportation in right handed systems (#7967) (RaananW)
    • Pointer Selection feature now uses selectstart and selectend events when gamepad and motion controller are not present (#7989) (RaananW)
    • ✂ Removed forced autoClear = false settings (RaananW)
    • ➕ Added a warning that WebXR can only be served over HTTPS (RaananW)
    • 0️⃣ Default (XR-global) rendering group ID can be defined when initializing a default experience (RaananW)
    • ➕ Added support for (experimental) haptic actuators (#8068) (RaananW)
    • 0️⃣ It is now possible to enable experimental (AR) features using the options of the default xr helper (RaananW)
    • 👍 Full support for right handed scenes (#8132) (RaananW)
    • WebXR anchors feature implemented (#7917) (RaananW)
    • Canvas is being resized when entering XR (RaananW)
    • 👍 All camera view matrices are now calculated by Babylon to support left and right handed systems (RaananW)
    • WebXR Features Manager now has the ability to check if a feature can be enabled, and set native features optional or required (RaananW)
    • Optional camera gaze mode added to the pointer selection feature (RaananW)
    • Exposing feature points when running on top of BabylonNative (Alex-MSFT)
    • ✅ WebXR hit test can now define different entity type for the results (#8687) (RaananW)
    • 🛠 Fixed an issue with stencil not enabled per default (#8720) (RaananW)
    • 🔦 Expose the overlay to which the XR Enter/Exit buttons are added to (#8754) (RaananW)
    • WebXR hand-tracking module is available, able to track hand-joints on selected devices including optional physics interactions (RaananW)
    • 🛠 Fixed an issue with moving backwards in XR (#8854) (RaananW)
    • ✅ Hit-Test results can be an empty array (#8887) (RaananW)
    • XR's main camera uses the first eye's projection matrix (#8944) (RaananW)
    • ⚡️ pointerX and pointerY of the scene are now updated when using the pointer selection feature (#8879) (RaananW)
    • XR tracking state was added to the camera (#9076) (RaananW)
    • Individual post processing can be applied to the XR rig cameras (#9038) (RaananW)
    • Pointer selection improvements - single/dual hand selection, max ray distance and more (#7974) (RaananW)
    • ⚡️ Updated Plane Detection API (RaananW)
    • ⚡️ Updated anchor system's promise resolution and API (#9258) (RaananW)
    • 🛠 Fixed an issue with teleportation re-attachment (#9273) (RaananW)

    Collisions

    • ➕ Added an option to optimize collision detection performance (jsdream) - PR
    • ➕ Added support for collisions with unindexed meshes (#9267)(Popov72)

    Animation

    • ➕ Added support for Additive Animation Blending. Existing animations can be converted to additive using the new MakeAnimationAdditive method for Skeletons, AnimationGroups and Animations. Animations can be played additively using the new isAdditive input parameter to the begin animation methods. (c-morten)
    • Sort events by frame in ascending order in Animation#addEvent() (ycw)

    Maths

    • ➕ Added Vector3.projectOnPlaneToRef (Deltakosh)

    Particles

    • ➕ Added local space support for GPU particles (CraigFeldpsar)
    • ➕ Added ability to update also colors and uvs of solid particle vertices (jerome)

    Textures

    • .HDR environment files will now give accurate PBR reflections (CraigFeldpsar)
    • ➕ Added a homogeneousRotationInUVTransform property in the Texture to avoid deformations when rotating the texture with non-uniform scaling (Popov72)
    • ➕ Added Texture.ForceSerializeBuffers (aWeirdo)

    Audio

    • ➕ Added support of metadata in Sound class. (julien-moreau)
    • ➕ Added currentTime property to the Sound class. (jocravio)

    🏗 Build

    • 🛠 Fixed an issue with gulp webpack, webpack stream and the viewer (RaananW)

    Playground

    • ➕ Added support for code templates in the playground (sailro)
    • 0️⃣ If createEngine fails, a default engine will be created (#8084) (RaananW)

    GUI

    • ➕ Added support for custom word splitting function for TextBlock (Popov72)
    • ➕ Added the fixedRatio property to the Control class (Popov72)
    • Clip multilines by camera near plane when point is attached to a mesh (cedricguillemet)

    Post Processes

    • SSAO 2, motion blur and screen space reflections are now using the brand new PrePassRenderer to avoid rendering the scene twice (CraigFeldpsar
    • Added Screen Space Curvature post process: Doc (Popov72 and Sebavan)
    • ➕ Added support of screen based motion blur in MotionBlurPostProcess (default mode is object based) to be used as a fallback to save performances on large scenes (julien-moreau)

    🐛 Bugs

    • 🛠 Fixed infinite loop in GlowLayer.unReferenceMeshFromUsingItsOwnMaterial (Popov72)
    • 🛠 Fixed picking issue in the Solid Particle System when MultiMaterial is enabled (jerome)
    • 🛠 Fixed picking issue in the Solid Particle System when expandable (jerome)
    • 🛠 Fixed use of skeleton override matrix in mesh ray intersection (cedricguillemet)
    • QuadraticErrorSimplification was not exported (RaananW)
    • 🛠 Fixed NME Frames bug where collapsing and moving a frame removed the nodes inside (belfortk)
    • 🛠 Fixed moving / disappearing controls when freezing/unfreezing the ScrollViewer (Popov72)
    • 🛠 Fix: when using instances, master mesh (if displayed) does not have correct instance buffer values (Popov72)
    • Exit XR will only trigger only if state is IN_XR (RaananW)
    • Fixed improper baking of transformed textures in KHR_texture_transform serializer. (drigax)
    • 🛠 Fixed NME codegen: missing common properties for float-value input block. (ycw)
    • 🛠 Fixed missing options for MeshBuilder.CreateBox. (ycw)
    • 🛠 Fixed bug in Plane.transform when matrix passed in is not a pure rotation (Popov72)
    • 🛠 Fixed bug in PBR when anisotropy is enabled and no bump texture is provided (Popov72)
    • 🛠 Fixed horizon occlusion in PBR materials (Popov72)
    • 🛠 Fixed wrong relative position in applyImpulse/applyForce for ammojs plugin (cedricguillemet)
    • 🛠 Fixed delay calculation in Animatable.goToFrame when speedRatio != 1 (Reimund Järnfors)
    • 🛠 Fixed bug in PBR when translucency is enabled and an irradiance texture is provided (Popov72)
    • 🛠 Fixed bug in PBR with translucency when irradiance texture is 2D (Popov72)
    • 🛠 Fixed parenting and enabled state of cloned lights (cedricguillemet)
    • 🛠 Fixed bug in PBR when specific combinations of parameters are used (Popov72)
    • 🛠 Fixed texture being inverted on the Y axis by default when using TextureAsset or AssetManager (broederj)
    • 🛠 Fixed TexturePacker cross-origin image requests, Fixed falsy default options (ludevik)
    • 🛠 Fixed freeze (infinite loop) when disposing a scene that loaded some specific gLTF files (Popov72)
    • 🛠 Fixed submesh recreation when it should not (Popov72)
    • 🛠 Fixed CustomMaterial and PBRCustomMaterial not setting uniforms / samplers / attributes (Popov72)
    • 🛠 Fixed bug in NME where deleting a node from a frame would not remove its ports on the outside of a frame
    • 🛠 Fixed mesh winding order inversion when merging meshes with overridden side orientation (drigax)
    • 🛠 Fixed a rendering issue with GearVR in WebXR mode (RaananW)
    • 🛠 Fixed error when downloading async createScene function in playground (#7926) (RaananW)
    • 🛠 Fixed issue where ThinEngine.prototype.createDynamicEngine is undefined when using VideoTexture with es6 packages (rvadhavk)
    • 🛠 Fixed issue that canvas for VirtualJoystick does not have touch-action: "none" set by default (joergplewe)
    • 🛠 Fixed issue that prevented user from re-loading custom meshes (belfortk)
    • 🛠 Fixed bug in NME where collapsed frames didn't redraw output links to outside nodes (belfortk)
    • 🛠 Fixed bug in NME where links were not redrawn after moving frame port (belfortk)
    • 🛠 Fixed bugs in NME that were causing inconsistent behavior displaying Move Node Up and Down buttons on frame ports (belfortk)
    • 🛠 Fixed bug in ShaderMaterial when using morph targets (Popov72)
    • 🛠 Fixed bug in playground where child NME windows would not close before page unload events (belfortk)
    • 🛠 Fixed an issue with stereoscopic rendering (#8000) (RaananW)
    • 🛠 Fixed bug with multiple scenes when resizing the screen and there's a glow or highlight layer active (Popov72)
    • 🛠 Fixed an error when compiling with the closure compiler (ageneau)
    • 🛠 Fixed an error in applying texture to sides of extrudePolygon using faceUV[1] (JohnK)
    • Playground didn't work if query params were added to the URL (RaananW)
    • 🛠 Fixed Path3D _distances / length computation (Poolminer)
    • 👉 Make sure bone matrices are up to date when calling TransformNode.attachToBone (Popov72)
    • 🛠 Fixed display problem with transparent objects and SSAO2 pipeline (bug in the GeometryBufferRenderer) (Popov72)
    • 🛠 Fixed Sound not accepting a TransformNode as a source for spatial sound (Poolminer)
    • 🛠 Fixed bug when using ShadowOnlyMaterial with Cascaded Shadow Map and autoCalcDepthBounds is true (Popov72)
    • 🛠 Fixed OBJ serializer default scene scene handedness causing OBJ Mirror export
    • 🛠 Fixed bug when using shadows + instances + transparent meshes + transparencyShadow = false (Popov72)
    • Incorrect initialization when reattaching XR pointer selection (#8227) (RaananW)
    • 🛠 Fixed DracoCompression to not load empty data into attributes (bghgary)
    • 🛠 Fixed Mesh.subdivide where one face could be lost depending on the number of subdivision (Popov72)
    • 🛠 Fixed AssetContainer.instantiateModelsToScene with cloneMaterials=true and MultiMaterials to properly set the cloned submaterials (ghempton)
    • 🛠 Fixed MSAA fail on MultiRenderTarget textures (CraigFeldpsar
    • 🛠 Fixed wrong display when setting DefaultRenderingPipeline.imageProcessingEnabled to false (Popov72)
    • 🛠 Fixed crash when loading a .obj file with vertex colors (Popov72)
    • 🛠 Fixed skeleton viewer still visible when isEnabled = false (Popov72)
    • 🛠 Fixed crash with CSG when no uvs defined (Popov72)
    • 🛠 Fixed an issue causing views to render blank when scene rendering is skipped for a given iteration of the render loop (elInfidel)
    • 🛠 Fixed docs Matrix.RotationYawPitchRoll and Matrix.RotationYawPitchRollToRef (VSerain)
    • 🛠 Fixed issue in GLTFLoader._updateBoneMatrices() where bone rest position was not set. (drigax)
    • 🛠 Fixed the bounding box of instances that does not match the instance position / rotation / scaling (Popov72)
    • 🛠 Fixed an issue with sound updateOptions not updating the underlying sound buffer/html element (RaananW)
    • 🛠 Fixed bug in sphereBuilder where top and bottom segments added 6 indices per triangle instead of 3. (use option dedupTopBottomIndices to enable it) (aWeirdo)
    • 🛠 Fixed issue with Babylon scene export of loaded glTF meshes.([Drigax]/(https://github.com/drigax))
    • 🛠 Fixed an issue with text block wrap and unicode strings (not working in IE11) (#8822) (RaananW)
    • 🛠 Fixed an issue with input text and input password and unicode strings (not working in IE11) (#9242) (Popov72)
    • 🛠 Fixed an issue with compound initialization that has rotation (#8744) (RaananW)
    • 🛠 Fixed an issue in DeviceSourceManager.getDeviceSources() where null devices are returned (Drigax)
    • 🛠 Fixed issue in glTF2 _Exporter.createSkinsAsync() that exported an incorrect joint indexing list (drigax)
    • 🛠 Fixed gltf2 Morph Target export code style, Added additional test case for non-animation group created morph targets (drigax)
    • 🛠 Fixed "Uncaught ReferenceError: name is not defined" (outermeasure)
    • 🛠 Fixed wrong winding when applying a transform matrix on VertexData (Popov72)
    • 🛠 Fixed exporting vertex color of mesh with StandardMaterial when exporting to glTF (Drigax)
    • 🔄 Changed use of mousemove to pointermove in freeCameraMouseInput and flyCameraMouseInput to Fixed issue with Firefox (PolygonalSun)
    • 🛠 Fixed TriPlanarMaterial to compute the right world normals (julien-moreau)
    • 🛠 Fixed SkeletonViewer to use utillity layer with custom lighting to improve debug mesh visibility (Drigax)
    • 🛠 Fixed same sub mesh being rendered multiple times in the shadow map (Popov72)
    • 🛠 Fixed incorrect shadows on the master mesh when using a lod mesh (Popov72)
    • Take first gamepad connected when attaching camera (and not only XBOX gamepads) (#9136) (RaananW)
    • 🛠 Fixed bug in Mesh.IncreaseVertices assuming null value if a property didn't exist. (aWeirdo)
    • 🛠 Fixed issue when taking a screenshot with multi-cameras using method CreateScreenshotUsingRenderTarget (#9201) (gabrielheming)
    • 🛠 Fixed inTangent in animationGroup (dad72)
    • 🛠 Fixed bug in QuadraticErrorSimplification not correctly optimizing mesh. (aWeirdo)
    • 🛠 Fixed bug in ArcRotateCamera where setting the position would recalculate the alpha value to a value outside the current limits. (nilss0n)

    💥 Breaking changes

    • FollowCamera.target was renamed to FollowCamera.meshTarget to not be in conflict with TargetCamera.target (Deltakosh)
    • EffectRenderer.render now takes a RenderTargetTexture or an InternalTexture as the output texture and only a single EffectWrapper for its first argument (Popov72)
    • ⚡️ Sound's updateOptions takes options.length and options.offset as seconds and not milliseconds (RaananW)
    • 0️⃣ HDRCubeTexture default rotation is now similar to the industry one. You might need to Added a rotation on y of 90 degrees if you scene changes (Sebavan)
    • PBRMaterial index of refraction is now defined as index of refraction and not the inverse of it (Sebavan)
    • SceneLoaderProgress class is now ISceneLoaderProgress interface (bghgary)
    • Rendering of transparent meshes: stencil state is now set to the value registered in the engine (when calling engine.setStencilBuffer(value)) instead of being set to false unconditionally. This change may affect the highlight layer when using transparent meshes. If you are impacted, you may need to exclude the transparent mesh(es) from the layer (Popov72)
    • 🛠 Fixed width/height GUI container computation to take into account paddings when adaptWithToChildren = true (Popov72)
    • 🚚 smoothstep in NME is now taking any type of parameters for its value input. If you use generated code from the NME ("Generate code" button), you may have to move the smoothstep output connection AFTER the input connections (Popov72)
    • 🚚 SoundTrack.RemoveSound and SoundTrack.AddSound were renamed to SoundTrack.removeSound and SoundTrack.addSound (Deltakosh)
    • PolygonPoints.add no longer filters out points that are close to the first point (bghgary)
    • Material created with matching names now have auto-incrementing IDs (Drigax)