CanvasSnipperPlugin - add options progressiveFrames, tileRows, tileColumns, normalized rect to snapshot options. Add options to UI.
Add method DiamondPlugin.unprepareDiamondMesh, unprepare diamond geometries when Make Standard is clicked in the UI. Add getAllCacheMaps for performance debugging.
Removed IViewerApp interface. Use the class ViewerApp directly.
Signature for IViewerViewerPlugin changed to remove IViewerApp
iJewel3d license verification now checks for license on embedded iframes.
Updated Rhino3dmLoader2.LIBRARY_PATH, which requires rhino3dm version >8.0.0. If using Rhino3dmLoader2.LIBRARY_PATH, update the version to latest 8.9.0 from npm.
Fix a bug where userData is cleared in Light toJSON
Add GLTFSpecGlossinessConverterPlugin to automatically convert specular-glossiness(KHR_materials_pbrSpecularGlossiness) to metal-roughness in gltf files on load.
Add options - deleteImportedViewerConfigOnLoad and autoDisposeSceneMaps to RootScene with default true
If using the private property __importedViewerConfig after model load, set deleteImportedViewerConfigOnLoad to false
Update to three.js r157 (from r153)
Strongly typed event type system with proper maps (Breaking Change for typescript classes)
Add static variables GLTFMeshOptPlugin.DECODER_URL and DRACOLoader2.LIB_CDN_PATH for changing path of externally loaded libraries.
Fix loading screen logo image object fit in Safari
Remove opaque check for SSAO material extension.
Add support for disabling SSAO cast per material by setting material.userData.pluginsDisabled to false or material.userData.ssaoCastDisabled to true
Add support for disabling velocity buffer(for TAA) per material by setting material.userData.pluginsDisabled to false or material.userData[VelocityBufferPlugin.PluginType] to {disabled: true}.
Add support for material.userData.pluginsDisabled in SSR, SSCS, SSRTAO, SSGI and Bloom.
Add support for highlighting by materials and by materials of same name in OutlinePlugin. Parameters - highlightSelectedMaterials, highlightMaterialSameNames. Note: these are not serialized.
Fix a runtime error in legacySeparateMapSamplerUVFix while loading some files.
Serialize apply* properties in SimpleTextPlugin
Fix issue where same image with different samplers is not loaded as different textures in GLTFLoader
Set useGBufferDepth to false by default in ViewerApp constructor.
Add support for morph targets in DiamondPlugin
Minor fix in auto instance diamonds in Diamond plugin UI.
Change default BloomPass.intensity to 0.2 from 0.5 in BloomPlugin
Change default SSAOPass.parameters.falloff to 1.3 from 1 in SSAOPlugin
Fix ground edge issue when tonemap disabled
Add options to addSceneObject event in RootScene
Add duplex: half when AWSClientPlugin.USE_PROXY
Add GemEnvironment2, GemEnvironment2 to PresetLibraryPlugin
Add RainbowDiamondPlugin Plugin.
Perform legacySeparateMapSamplerUVFix for files exported pre-0.7.6.
Add envMapRotationOffset for x, y, z axis in DiamondMaterial.
Change defaults in CanvasRecorderPlugin - convergeMode = true, mimeType = video/mp4, also automatically clamp maxFrameCount(ProgressivePlugin) in record method.
Set animationPauseDuration to 6000 by default in InteractionPromptPlugin.
Disable ObjectRotationPlugin by default
Fixes in VRPluginBasic
Made improvements to fix frame drag issue in FrameFadePlugin.
Improve performance of GBufferPlugin in some cases.
Rename LightWidgetsPlugin to Object3DWidgetsPlugin
Add VirtualCamerasPlugin to render virtual cameras to a render target in preRender before the main/active camera.
Add Add Camera UI button to SceneCamerasUiPlugin.
Add renderToScreen in BaseRenderer.render.
Fix near far initialization in CameraController
Add IScene.renderCamera
Minor fix in Rhino3dmLoader2.ForceLayerMaterials
Add ACameraHelperWidget, AHelperWidget
Add CameraHelper2(CameraHelper with fat lines)
Add onEnd in AnimationOptions for popmotion animate
Add support for storing multiple last frame targets for every camera in ProgressivePlugin
Add CanvasRecorderPlugin.recordCamera360 to record camera 360 animation from current position, fix offset bug when starting record after any camera view animation and target center in record 360 in CanvasRecorderPlugin.
Fix color space warning in CustomBumpMapPlugin
Cleanup targets on screen using DebugPlugin
Rename objectRef to object in IWidget
Add support for passing other animation options in animateCameraToViewSpherical
Fix TransformAnimationPlugin not showing in the UI
Changes in SSBevelPass.ts, OutlinePlugin.ts, ProgressivePlugin.ts, DepthOfFieldPlugin.ts, FrameFadePlugin.ts, GBufferPlugin.ts, SSContactShadows.ts, SSRTAOPlugin.ts, TemporalAAPlugin.ts, VelocityBufferPlugin.ts, changing activeCamera to renderCamera
Fix load of 3dm files that have InstanceReference with multiple objects.
Add ignoreWidgets in RootScene.getBounds.
Properly serialize/deserialize object, material, geometry userData in gltf files, useful for three.js primitives.
Add UI config for Rhino3dmLoadPlugin, add options for forceLayerMaterials and hideLineMesh in Rhino3dmLoadPlugin and Rhino3dmLoader2.
Add ignoreObject in Box3B.expandByObject.
Increase MaxCanvasScale to 5 in RendererUiPlugin.
Add updateView in CameraView and its UI to update existing camera view.
Fix enabled getter in GenericFilterPlugin which was always returning the initial enabled state of the plugin/pass(Fixes DepthOfFieldPlugin, BloomPlugin, etc).
'Add Spot-light' in LightsUiPlugin.
Add right-click menu to material configurator UI with option to remove individual materials.
Add TransformAnimationPlugin to save and animate to different transform states of an object.
Add LightWidgetsPlugin with DirectionalLightHelper2, SpotLightHelper2, PointLightHelper2
Add refreshScene flag in scene.setDirty options(same as scene update)
Fix crash in Reflector2 when environment background is used
Context restore crash fix.
Make function optional in ThreeViewer.doOnce. Now, to wait for end of frame simply do await viewer.doOnce('postFrame')
Add syncMaxDuration in GLTFAnimationPlugin. If set to true, the animation duration for all clips will be set to the max duration of all animations in the gltf file.
Add Ambient Light, Add Point Light in LightsUiPlugin
Add defaultModes in CoreEditorApp which can be edited before calling setupUi. With this all tabs and arrangement can be set in code.
Add parameter modes in CoreEditorApp.setupUi, using this all modes can be set from scratch in code.
CameraController.userData now same as CameraController.cameraObject.userData.
Fix autoNearFar, minNear and maxFar serialization for default camera in GLTF files and viewer config.
Add support to enable/disable bloom for each material through the UI config.
Move BloomPlugin before GroundPlugin in addBasePlugins
Add env-metal-gem-3, env-metal-gem-4 environments in editor presets
Add support to export GLTFMeshGpuInstancing extension in GLTFExporter.
Add autoGPUInstanceMeshes to the bundle for automatically converting meshes with same geometry and material to GPU instanced meshes.
Add Center Geometry (keep position) and Auto GPU instance in Geometry and ExtrasUIPlugin.
Fix Box3B for instanced meshes.
Dispatch events shadowBaking and shadowBaked from ShadowMapBaker
Fix outline color issue for visible/hidden objects
Change default outline color in OutlinePlugin
Promises from PopmotionPlugin.animate and animatePromise will reject if an error is thrown in the onStop or onComplete callback, which can be caught by the application.
Fix a bug in materials keeping mesh references after variation change. (in Material.copyProps)
Add support for RegExp in MaterialManager.findMaterialsByName
Fix for extra hover events firing when nothing is hovering.
Remove waitForProgressive from type SnipOptions
Set default alphaTest to 0.01 in ShadowMapBaker when using alphaMap mode.
Add support for displacementMap, fix alphaMapTransform in DepthNormalMaterial (used in GBufferPlugin)
Improvements in stopping other camera view animations when starting a new animation with animateToView in CameraViewPlugin
Add throwOnStop parameter to CameraViewPlugin.animateToView to throw an error if the animation is stopped by starting another animation.
Add support to put arbitrary data in IConfiguratorVariation in VariationConfiguratorPlugin. Includes support for traversing children and validating material type while applying materials.
Fix sheen value not getting exported in GLTFExporter
Add assetManager and dropzone parameters to ViewerAppOptions to automatically add the AssetManagerPlugin and DropzonePlugin
When adding a plugin by class, same plugin won't be added when a plugin of the same type already exists.
Fix shader errors in TriplanarUVMappingPlugin
Fix background warning in HDRiGroundPlugin
Expose autoAdjustTransform property in BaseGroundPlugin
Fix for OutlinePlugin when parent nodes are selected
Fix for PickingPlugin when invisible objects are obstructing the view.
Minor fixes related to asset manager instantiation
Add support for textureUpdate event(from texture, material, object and scene) when texture.needUpdate is set to true
Increase bounds for Point Light UI.
Expose meta in AViewerPlugindeserialize event.
Fix for a race condition in material deserialization in BaseGroundPlugin
Fix several runtime errors and warnings.
Move Asset manager importers and exporters to non-static context to support multiple instances of AssetManagerPlugin on the same page
Fixes in Object uiconfig, add rotate model and autocenter options
Add new attributes disposeOnRemove and autoManageViewers to WebGiViewerElement(webgi-viewer). When disposeOnRemove is set to true, the viewer will be disposed when the element is removed from the DOM. When autoManageViewers is set to true, viewers will be saved globally when the element is removed from DOM and will be reused when added again or a new element is created.
Add support for embedUrlImagePreviews in AssetExporterPlugin and GLTFExporter2 to embed small texture previews of remote URL images in glTF files.
Add support for encrypt and encryptKey parameters in AssetExporterPlugin and GLTFExporter2 to encrypt the exported files inside a GLB wrapper.
Fixes in tweakpane UI Download Image option. Fix download of images with explicit URLs and blobs. Add support to download render targets(WebGLRenderTarget) in PNG(for Uint8) and EXR(for HalfFloat and Float) formats.
Add ViewerApp.load, ViewerApp.setEnvironmentMap, ViewerApp.setBackgroundMap to load assets, images and environment maps and add to the scene or set as the environment/background automatically.
Add ViewerApp.assetManager to get the attached AssetManagerPlugin
ViewerApp.getPlugin also accepts string with PluginType
Add sync counterparts addPluginSync, addPluginsSync, removePluginSync in ViewerApp
Add ViewerApp.doOnce to execute a function once after a frame or renderEvent
Dispatch events renderEnabled and renderDisabled from ViewerApp
Rhino3DMLoader2, Rhino3DMLoader instance reference attributes, geometry name, support to disable material parse/load, check material source, str
Add support for ILoader.transform in AssetImporter.
Obfuscation fix for workers of DracoLoader, Rhino3dmLoader, KTX2Loader
Add parameter disposeRuntimeMaterials in AMaterialManager.dispose
Fix Shader error in Transmission.
Add BaseRenderer.renderTargetToDataUrl and BaseRenderer.renderTargetToBuffer, RenderTarget.toJSON
Add Geometry UI - Center Geometry, Compute vertex normals, Compute vertex tangents, Normalize normals, Convert to indexed, Convert to non-indexed, Create uv1 from uv
Fixes in glTF transform pipeline custom extensions
Fix import of iridescence and attenuationDistance values from blender exported glTF files.
Add interfaces IViewerPluginSync and IViewerPluginASync.
Refactor AssetManagerPlugin and DropzonePlugin to implement IViewerPluginSync. These can be added with ViewerApp.addPluginSync
Fix ParallaxMappingPlugin shader errors after three.js update
Remove ScrollableCameraViewPlugin warning when name doesn't start with #
Fix SwitchNodeBasePlugin to not show invisible objects during export, add Enabled toggle to UI.
Fix HierarchyUiPlugin to toggle visibility postFrame
Add VariationConfiguratorPlugin.clearVariations to clear the loaded variations and remove the objects from the scene
Add number type in TweakpaneUiPlugin, add support for generating Ui for arbitrary object and arrays
Update three.js to r152. Changes might be required only if using custom three.js code, because ColorManagement is enabled by default. Default color space is now SRGBColorSpace instead of LinearColorSpace. As a result, material files exported from new viewer version might not look correct in older viewer versions, but old files will look correct in new viewer versions.
Three.js toJSON asset versions updated to 4.6, which is used to determine the color space.
Deprecate ViewerApp.getBackground() and ViewerApp.setBackground()
Add RootScene.backgroundColor in addition to RootScene.background to set background color. Use backgroundColor to set colors and background to set textures. When both are set, both are multiplied.
Deprecate envMapBackground, background can now be set to environment by simply setting viewer.scene.background = 'environment'
Replace autoReleaseTransparentTarget(default=true) with preserveTransparentTarget(default=false) in RenderPass2
Remove refreshEnvMapIntensity and refreshFixedEnvMap from RootScene by removing the need to refresh all materials on every change.
Deprecate controlsEnabled in CameraController options, set controlsMode = '' or camera.controls.enabled = false or camera.interactionsEnabled = false to disable controls.
Removed viewer.backgroundIntensity, use viewer.scene.backgroundIntensity instead.
Removed viewer.useLegacyLights, use viewer.renderer.useLegacyLights instead.
Serialize renderManager with viewer with stable noise and useLegacyLights
Add Iridescence to physical material UI (MeshStandardMaterial2)
Fix black screen when using MSAA(isAntialiased), when used with depth prepass.
Add MSAA and Depth prepass toggle to Extras in the editor UI.
Rename useTotalFrameCount(in BaseRenderer) to stableNoise
Add ViewerApp.getOrAddPlugin (async) which adds the plugin if it doesn't exist.
Fix a race condition when adding plugin dependencies in the viewer.
Add GroundPlugin.autoBakeShadows, set it to false to manually control shadow baking instead of automatically baking shadows whenever anything in the scene changes. Also added GroundPlugin.bakedShadows() to trigger shadow baking manually whenever required (eg. on model load).
Set BaseRenderer.useLegacyLights to false by default.
Change setupModesUi to take map of extra plugins and mode instead of an array of plugins.
Export defaultPresets in the bundle. For PresetLibraryPlugin
Fix serialization of some material properties.
Dispatch 'afterRender' event from MeshStandardMaterial2 and MeshBasicMaterial2
Fix a bug where UI freezes in the editor while working with configurators.
Add CameraViewPlugin.setCurrentCameraView to set active camera to some view without animation.
Add cameraView to ParallaxCameraControllerPlugin
VariationConfiguratorPlugin Add support for loading icon files along with item files from local folder, implement fromJSON so that json can be loaded with addFromPath or drag and drop. Add support for loading preset json files along with models. Add importPath to import config.json by path.
Add KTX2LoadPlugin to the editor.
Add processBufferViewImageBuffer in GLTFWriter to directly add image buffers(instead of blob) to bufferViews
Dispose scene models on scene dispose. Dispose tracked targets on renderer dispose, remove and dispose plugins, dispose scene and renderer on viewer dispose.
Add encodeUint16Rgbe to gltf exporter options, AssetExporter options and UI (Compress hdr env maps in Asset Export -> GLB Export) to compress/encode embedded HDR environment maps with rgbe encoding. (disabled by default)
Improve and speed up serialization for embedded rgbe images in GLB. Note: This breaks compatibility for loading new files with old webgi versions. Disable Compress hdr env maps in the UI to export files without encoding which will load correctly in old versions (upto 0.7.4)
Support export of ktx2 textures in the serialization pipeline.
Fix KHR_texture_basisu extension in GLTF exporter.
Add originPosition in HDRiGroundPlugin to move the sphere in world.
Fix viewer.createCamera for cameras nested inside other objects.
Fix UI crash on safari browsers.
Several fixes in VariationConfiguratorPlugin.
Set useTotalFrameCount to true by default in TemporalAAPlugin
Use premultipliedAlpha in WebGLRenderer, this fixes issues on ios browsers.
Add autoPullTarget to OrbitControls(similar to autoPushTarget) to automatically pull the target to the camera position when the camera is moved beyond max distance. note: to make the camera work like first person view, set minDistance, maxDistance to very close to each other (like 1 and 1.1) and set autoPullTarget and autoPushTarget to true.
Add VariationConfiguratorPlugin, VariationConfiguratorGridUiPlugin and VariationConfiguratorEditorUiPlugin for creating object and material configurations from external files.
Remove object cache from AssetImporter when disposed.
Add applyMaterial in MaterialManager to apply a material configuration using copy.
Add importedFile param to ImportAssetOptions in AssetManager
Fix stopped event in FFMPEGRecorder
Add support to exclude objects(and it's children) from being exported in glb by setting object.userData.excludeFromExport to true in the object.
Fixes in WebGiViewerElement where scene was not cleared when src changed, fix a race condition in environment map load.
Improve CanvasSnipper.GetBlob to use toBlob directly.
Fix for scene getting clipped when GLTF animations are playing. Note: to fix any clipping issue when scene is updated/animated, call viewer.scene.refreshActiveCameraNearFar()
add DEBUG_DEPTH in TonemapExtension, and as Render Depth in the Tonemap Plugin UI
Add support for reading minNearPlane and maxFarPlane from camera.userdata, and add to the UI. Note: change minNearPlane if there are z-fighting issues even when objects are not overlapping. Remove zoom from Camera Ui
Add frustumCulled in Object UI
Fix useLegacyLights not getting changed in ViewerApp
Fix PointerLockControls2.
Deprecate RootScene.minNearDistance in favor of camera.userData.minNearPlane
Fix cache storage being overwritten in ImageLoader
Use lights added to scene by plugins in PathTracingPlugin1
Add gammaFactor in DiamondMaterial
Performance optimizations in Material extension.
Add fixedEnvMapDirection in RootScene with a toggle in the UI in BackgroundEnvUiPlugin
Fix displacementMap export with DRACO compression.
Multiple environment map support in DiamondPlugin
Fix support for rough transmissive material support (for effects like frosted glass).
Update three.js to r150dev from r144
Set blurTransmissionTarget to true by default in RenderPass2
Set ViewerApp.useGbufferDepth to true by default and enabled in the sandbox editor.
Add support for transparent objects and useRgbm=true in ARPlugin for webxr, as well as several fixes.
Add SSGIPlugin, NormalBufferPlugin and SSBevelPlugin to addBasePlugins. (Disabled by default)
Export TriplanarUVMappingPlugin in bundle.
Fix disposeSceneModels when some scene objects are not disposed.
Fixed a bug where material extension doesn't work in production builds.
Use pointer events instead of mouse events in FirstPersonControls2
Add useLegacyLights in ViewerApp. Set it to false to enable physically correct lighting. Added as Artistic Lighting in the Background/Env UI
Serialize plugin properties in PathTracingPlugin1
Support for getValue and setValue in tweakpane image ui config generator.
Fixed an issue when loading and caching SVG files.
Fix onChange decorator for multiple references to the same property.
Add XAtlasPlugin to bundle and sandbox editor,
Add static variables for library path KTX2LoadPlugin.TRANSCODER_LIBRARY_PATH, Rhino3dmLoader2.LIBRARY_PATH, ENABLE3D_LIBRARY_PATH and AMMOJS_LIBRARY_PATH in AmmoPhysicsPlugin
Add tTransparent uniform in CombinedPostPass (not used)
Add autoReleaseTransparentTarget(default=true) in RenderPass2
Add storeState and loadState to AViewerPlugin. All serializable plugins have support for saving and loading their state to a storage(by default localStorage).
Fix issues with TweakpaneUiPlugin UI refresh.
Serialize exportOptions in AssetExporterPlugin
Add FileTransferPlugin with utility actions to download file(used by AssetExporterPlugin, CanvasSnipperPlugin, CanvasRecorderPlugin), and can be overridden to upload files to server.
Add downloadSceneGlb function in AssetExporterPlugin
Expose storage(cache/cache storage) in AssetManagerPlugin
Add AWSClientPlugin which can connect to any S3 compatible server, interface with FileTransferPlugin to upload files to server on export. Dispatches event 'fileUpload' on successful upload.
Prompt for filename when downloading file in CanvasRecorderPlugin
Add filename property to CanvasSnipperPlugin to set default filename
Add 'Clear local storage' and 'Clear cache' buttons to ExtrasUiPlugin
Persist serializable plugins state when reload of page in webgi modes editor.
Add reset defaults option in TweakpaneUiPlugin for viewer plugins to reset values to default.
Fix loading of downloaded LUTPlugin preset json.
Add exportState and importState functions in AViewerPlugin to export and import (serialized) plugin state.
MaterialConfiguratorBasePlugin now creates a new material to apply if the type is mismatched.
Add reset defaults button in the sandbox editor.
Add viewAdd and viewDelete events in CameraViewPlugin.
Fix resetOnEnd in GLTFAnimationPlugin.playAnimation.
Add DiamondMaterial support for ThinFilmLayerPlugin
Add FragmentClippingExtensionPlugin
Automatically dispose Cube Normal Maps when all attached geometries are disposed. Can be disabled by setting CubeNormalsCaptureHelper.AutoDisposeTargets to false.
Add functions disposeCacheMap and disposeAllCacheMaps to DiamondPlugin to dispose maps based on cacheKey.
Add 'materialChanged' event to IScene and RootScene to notify when a material is changed on any mesh in the scene.
Automatically prepare Diamond meshes when DiamondMaterial is set on a mesh using setMaterial.
Add animateOnDrag to GLTFAnimationPlugin to seek animation playback with pointer drag over canvas.
Add PointerDragHelper for easier pointer drag event subscription.
Rewrite RendererUiPlugin for easier resolution setting with automatic scale calculation and full(container fill) mode.
Fix aspect ratio in FragmentClippingExtensionPlugin
Add renderOrder to Object UI. Add polygonOffset, polygonOffsetFactor and polygonOffsetUnits to Physical Material UI.
Add OutlinePlugin to the sandbox editor to show outline on selected objects. It depends on PickingPlugin Disabling it enables the bounding-box selection behaviour from PickingPlugin
Add IGBufferUpdater interface. LUTPlugin, SSBevelPlugin, TonemapPlugin, OutlinePlugin implement it for updating GBuffer flag data
Add addGBufferUpdater function to DepthNormalPass.
LUTPlugin now supports upto 3 LUT Textures. Old files with LUT textures will be incompatible with this change.
Fix for Unexpected exception while loading some old files.
Fix for post-processing plugins not updating properties properly on setDirty call.
Add support for adding material extensions to DiamondMaterial.
Fix error while importing raw text files with AssetImporter
Fix rendering issue in ContactShadowGroundPlugin where colors were inverted.
Clear GLTF Animations on plugin remove.
Export Combined post plugins in the viewer bundle.
Add Record GLTF Animation button in Canvas Recorder UI
Add events checkpointBegin and checkpointEnd to GLTFAnimationPlugin, fired when animation reaches the start position and the end.
Fix GLTFAnimationPlugin.playAnimation to return promise that resolves properly when using convergeMode in CanvasRecorderPlugin
Change signature of exportViewerConfig, add parameter binary which can be set to false when exporting json config, this will encode all array buffers in resources to base64 strings.
Fix issues with de-serialization of LUT files in config json.
Apply rotation to imported 3dm files (-Pi/2 in x) to keep orientation consistent with Rhino.
Add WEBGI_materials_displacementmap as GLTF extension to export displacement map, scale and bias in GLTF.
Fixed a bug when exporting lightMap with WEBGI_materials_lightmap extension.
Fix refresh of camera UI objects in CameraUiPlugin.
Rename SerializableOrbitControls to OrbitControls3
Add setControlsCtor and setControlsCtor in CameraController to add custom camera controls with mode.
Add abstract class ACameraControlsPlugin to attach new camera controls to the viewer cameras.
Add DeviceOrientationControlsPlugin ts version of DeviceOrientationControls with added features, using ACameraControlsPlugin.
Add FirstPersonControls2, ts version of FirstPersonControls with added features, using ACameraControlsPlugin.
Add PointerLockControls2, ts version of PointerLockControls with added features, using ACameraControlsPlugin.
Removed DeviceOrientationPlugin.
Fix signature of RootScene.addEventListener to get event types in autocomplete.
Add IMaterial.dispose() (dev) - this will automatically dispose all the Texture objects on the material that are not used by any other material in MaterialManager, unless texture.userData.disposeOnIdle is false. The material must be registered with MaterialManager(which happens during load from AssetManagerPlugin), and it is automatically unregistered on dispose.
Rename material.userData.appliedMeshes to material.userData.__appliedMeshes.
Rename geometry.userData.appliedMeshes to geometry.userData.__appliedMeshes.
Add viewer.createMaterial() to create new materials. (similar to viewer.createPhysicalMaterial with ability to create any material type).
Add CSS3DRendererPlugin to editor UI and export class in bundle.
Add forcedLinearDepth support in GbufferPlugin in material userData.
Fix issue with alpha map clearing scene on rendering in GbufferPlugin.
Fix material indexing for multi-materials in CSGPluginBSP.
Add ChromaticAberrationExtension, FilmicGrainExtension, GammaCorrectionExtension, LUTExtension, VignetteExtension, TonemapExtension all implementing MaterialExtension
Update TonemapPlugin to use CombinedPostPlugin. Add TonemapExtension to implement tonemap postprocessing. Use viewer.getPlugin(TonemapPlugin).config instead of viewer.getPlugin(TonemapPlugin).pass.passObject.
GLTFExporter will convert all BufferGeometry attributes to non-normalized and export.
Fixed import of Material.side in gltf material extras extension.
Automatic Gamma correction removed from the viewer, add GammaCorrectionPlugin to get the same look.
In AssetImporter, importing disposed models again by path will automatically reimport the objects, unless reimportDisposed is set to false in import options.
Fix error when importing Line objects in 3dm files.
Add depthFunc to gltf in WEBGI_material_extras extension
When importing assets with AssetManagerPlugin, all meshes with no material will be assigned a default standard material.
Add mipmap filtering options to texture UI config.
Add depthFunc and depthTest to physical material UI config.
Prevent scene update in SelectionWidget visibility change.
Add alert, confirm and prompt to ViewerApp and IUiObjectConfig
Add WindowiseDialogPlugin to editor for better alert, confirm and prompt. by overriding in viewer
Fixed UX issue where it's not possible to set image by url without setting a load one first.
Add makeDiamondMesh in DiamondPlugin to convert only
a single mesh to diamond. (Make Diamond in the UI now prompts the user to convert all or just the selected mesh)
Fix SVG serialization and deserialization in GLB files as image source.
Fix issues with clipBackground and non-tonemapped objects
Reimporting materials with the same url or asset with addFromPath, importSinglePath, importAsset etc will not create new materials, instead instances created earlier will be returned.
Fix issues with depth rendering in Reflector2 (used with GroundPlugin)
Add types for options passed to AssetImporter, AssetExporter, AssetManagerPlugin, RootScene
Add autoCenter in Object3DModel and import options, to center the imported model by changing its location according to bounding box. This is an alternative to pseudoCenter which creates a new parent.
Moved setMaterial, setGeometry, setDirty and dispose to IModel interface from its userData(along with types in IModel interface). So instead of calling object.modelObject.userData.setDirty() you can call object.setDirty() directly.
Deprecation warning for setter functions in userData for Object3D and Mesh
Fixed bug where environment map intensity is not synced multiple materials on a single mesh.
Add SceneCamerasUiPlugin for listing cameras in the scene, with camera UI options to set to the active camera or copy view settings to the current active camera.
Add event handling for setView and activateMain events. Dispatch these events on cameras to change the main camera or copy view settings to the current active camera like: camera.dispatchEvent({type: 'setView', camera: camera})
Moved material.userData.setDirty() to material.setDirty()
Add uuid, visible and userData to IModel interface.
limitCameraAboveGround in BaseGroundPlugin set to false by default as it can interfere with serialization of custom maxPolarAngle value in SerializableOrbitControls.
Fix issue with SSR and AO multiplication when applied to the same object.