what's new.md 8.5 KB

4.2.0

Major updates

  • Added particle editor to the Inspector (Deltakosh
  • Added the ShadowDepthWrapper class to support accurate shadow generation for custom as well as node material shaders (Popov72)

Updates

General

  • Refactored React refs from old string API to React.createRef() API (Kyle Belfort

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

Engine

  • Allow logging of shader code when a compilation error occurs (Popov72)
  • Add back support for selecting textures based on engine capabilities (bghgary)

NME

  • Frames are now resizable from the corners (Kyle Belfort
  • Can now rename and re-order frame inputs and outputs (Kyle Belfort

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)

Cameras

  • Added flag to TargetCamera to invert rotation direction and multiplier to adjust speed (Exolun)
  • Added upwards and downwards keyboard input to FreeCamera (Pheater)

Sprites

  • Added support for 'sprite.useAlphaForPicking` to enable precise picking using sprite alpha (Deltakosh

Physics

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

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)

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)

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)

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)

Build

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

Bugs

  • Fix infinite loop in GlowLayer.unReferenceMeshFromUsingItsOwnMaterial (Popov72
  • Fix picking issue in the Solid Particle System when MultiMaterial is enabled (jerome)
  • QuadraticErrorSimplification was not exported (RaananW
  • Fix NME Frames bug where collapsing and moving a frame removed the nodes inside (Kyle Belfort
  • 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 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

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)