what's new.md 22 KB

4.2.0

Major updates

  • Added particle editor to the Inspector (Deltakosh)
  • Added sprite editor to the Inspector (Deltakosh)
  • Added the ShadowDepthWrapper class to support accurate shadow generation for custom as well as node material shaders. Doc (Popov72)
  • Added HDR texture filtering tools to the sandbox (Sebavan)
  • Reflection probes can now be used to give accurate shading with PBR (CraigFeldpsar and (Sebavan))
  • Added SubSurfaceScattering on PBR materials (CraigFeldpsar and (Sebavan))
  • Added editing of PBR materials, Post processes and Particle fragment shaders in the node material editor (Popov72)
  • Added Curve editor to manage entity's animations and edit animation groups in Inspector (pixelspace)
  • Added support in ShadowGenerator for fast fake soft transparent shadows (Popov72)
  • Added support for thin instances for faster mesh instances. Doc (Popov72)

Updates

General

  • Refactored React refs from old string API to React.createRef() API (belfortk)
  • Scale on one axis for BoundingBoxGizmo (cedricguillemet)
  • Simplified code contributions by fully automating the dev setup with gitpod (nisarhassan12)
  • Add 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)
  • Added support preserving vert colors for CSG objects (PirateJC)
  • Added boundingBoxRenderer.onBeforeBoxRenderingObservable and boundingBoxRenderer.onAfterBoxRenderingObservable (Deltakosh)
  • 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)

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)
  • Add back support for selecting textures based on engine capabilities (bghgary)
  • Fix Draco decoder when running on IE11 (bghgary)
  • Change default camera calculations to only include visible and enabled meshes (bghgary)
  • Optimized frozen instances (Deltakosh)
  • Add 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)

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)

Inspector

  • 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)
  • Add support to update inspector when switching to a new scene (belfortk)

Cameras

  • Fixed up vector not correctly handled with stereoscopic rig (cedricguillemet)
  • handle reattachment of panning button for ArcRotateCamera (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)

Sprites

  • Added support for 'sprite.useAlphaForPicking` to enable precise picking using sprite alpha (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)
  • 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)

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_xmp 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)

Serializers

  • Added support for KHR_materials_unlit to glTF serializer (Popov72)

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)

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)
  • Default (XR-global) rendering group ID can be defined when initializing a default experience (RaananW)
  • Added support for (experimental) haptic actuators (#8068) (RaananW)
  • 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)

Collisions

  • Added an option to optimize collision detection performance (jsdream) - PR

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)

Audio

Build

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

Playground

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

GUI

  • Added support for custom word splitting function for TextBlock (Popov72)

Bugs

  • Fix infinite loop in GlowLayer.unReferenceMeshFromUsingItsOwnMaterial (Popov72)
  • Fix picking issue in the Solid Particle System when MultiMaterial is enabled (jerome)
  • Fix picking issue in the Solid Particle System when expandable (jerome)
  • QuadraticErrorSimplification was not exported (RaananW)
  • Fix NME Frames bug where collapsing and moving a frame removed the nodes inside (belfortk)
  • Fix 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)
  • Fix 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)
  • Fix bug in Plane.transform when matrix passed in is not a pure rotation (Popov72)
  • Fix bug in PBR when anisotropy is enabled and no bump texture is provided (Popov72)
  • Fix horizon occlusion in PBR materials (Popov72)
  • Fix wrong relative position in applyImpulse/applyForce for ammojs plugin (cedricguillemet)
  • Fixed delay calculation in Animatable.goToFrame when speedRatio != 1 (Reimund Järnfors)
  • Fix bug in PBR when translucency is enabled and an irradiance texture is provided (Popov72)
  • Fix bug in PBR with translucency when irradiance texture is 2D (Popov72)
  • Fix parenting and enabled state of cloned lights (cedricguillemet)
  • Fix bug in PBR when specific combinations of parameters are used (Popov72)
  • Fix texture being inverted on the Y axis by default when using TextureAsset or AssetManager (broederj)
  • Fix TexturePacker cross-origin image requests, fix falsy default options (ludevik)
  • Fix freeze (infinite loop) when disposing a scene that loaded some specific gLTF files (Popov72)
  • Fix submesh recreation when it should not (Popov72)
  • Fix CustomMaterial and PBRCustomMaterial not setting uniforms / samplers / attributes (Popov72)
  • Fix bug in NME where deleting a node from a frame would not remove its ports on the outside of a frame
  • Fix 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)
  • Fix issue where ThinEngine.prototype.createDynamicEngine is undefined when using VideoTexture with es6 packages (rvadhavk)
  • Fix issue that canvas for VirtualJoystick does not have touch-action: "none" set by default (joergplewe)
  • Fix issue that prevented user from re-loading custom meshes (belfortk)
  • Fix bug in NME where collapsed frames didn't redraw output links to outside nodes (belfortk)
  • Fix bug in NME where links were not redrawn after moving frame port (belfortk)
  • Fix bugs in NME that were causing inconsistent behavior displaying Move Node Up and Down buttons on frame ports (belfortk)
  • Fix bug in ShaderMaterial when using morph targets (Popov72)
  • Fix bug in playground where child NME windows would not close before page unload events (belfortk)
  • Fixed an issue with stereoscopic rendering (#8000) (RaananW)
  • Fix bug with multiple scenes when resizing the screen and there's a glow or highlight layer active (Popov72)
  • Fix an error when compiling with the closure compiler (ageneau)
  • Fix 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)
  • Fix 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 an issue with transformation set after physics body was created using cannon.js (excluding height and plane) (#7928) (RaananW)
  • Fix bug when using ShadowOnlyMaterial with Cascaded Shadow Map and autoCalcDepthBounds is true (Popov72)
  • Fix OBJ serializer default scene scene handedness causing OBJ Mirror export
  • Fix 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)
  • Fix crash when loading a .obj file with vertex colors (Popov72)
  • Fix skeleton viewer still visible when isEnabled = false (Popov72)
  • Fix crash with CSG when no uvs defined (Popov72)

Breaking changes

  • 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)
  • HDRCubeTexture default rotation is now similar to the industry one. You might need to add 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 instead of being set to false unconditionally (Popov72)
  • Fix width/height GUI container computation to take into account paddings when adaptWithToChildren = true (Popov72)