Skip to main content

Changelog - WebGi SDK

0.9.5

  • Trim path in asset importer for parsing file extension.
  • Fix issue in DepthOfFieldPlugin where bloom was not having an effect
  • Add TransfrSharePlugin in the editor.
  • Fix in CustomContextGrid for when used inside a shadowRoot,
  • Add tippy.js styles to WebGiViewerElement(webgi-viewer)
  • Revert FrameFadePlugin issue fix.
  • minimizeOnSceneObjectLoad in LoadingScreenPlugin also checks for scene.environment and doesn't minimizes if its null.
  • Set autoStartDelay to 30000(30 sec) by default in InteractionPromptPlugin.

0.9.4

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

0.9.3

  • importPopup set to true by default in CoreViewerApp.initialize. Adds the LoadingScreenPlugin if set to true
  • Add interactionPrompt(default true) in CoreViewerApp.initialize. Adds the InteractionPromptPlugin if set to true
  • Add InteractionPromptPlugin, and to addBasePlugins
  • Add VRPluginBasic for webxr VR support
  • Add shadowMapType to ShadowMapBaker and GroundPlugin UI
  • Fixes in DepthNormalMaterial, GBufferPlugin
  • Add support to use MRT in WebGLRenderer.readRenderTargetPixels, EXRExporter, BaseRenderer.renderTargetToDataUrl
  • Dispatch afterRender event in Object3D.onAfterRender
  • Add rendersPerFrame and canvasTexture to ViewerApp.
  • Add depthTextureType and depthTextureFormat to CreateRenderTargetOptions and BaseRenderer.createTarget
  • Fix error in texture serialization where texture.source.data was set to null on error.
  • Remove bounds from FragmentClippingExtensionPlugin UI.
  • Fix shader error in TriplanarUVMappingPlugin when environment is null
  • Add renderDepthTexture and depthTextureType in GBufferPlugin
  • Fixed a race condition in ChromaticAberrationPlugin, FilmicGrainPlugin, VignettePlugin related to uniforms.
  • Minor fix in TransformControls2
  • Make editor modes ui scrollable on phone.

0.9.2

  • Improved Ui in Tweakpane UI plugin, added black, white and blue(default) color schemes(colorMode).
  • Add color scheme switching in ExtrasUiPlugin.
  • Add GeometryGeneratorPlugin with several shape primitives
  • Update theme for CustomContextGrid UI(used in Material and SwitchNode configurator)
  • Expand dropzone plugin by default in UI
  • Add context menus to Material configurator UI to update directly
  • Remove Scene Objects from UI
  • Add addToRoot parameter in ViewerApp.createObject3D
  • Fix mouse lock when pointer leaves the canvas in OrbitControls
  • Handle an edge case in Geometry center (keep position) option in the UI
  • LoadingScreenPlugin ui fixes when minimised
  • Fix UpdateView in camera view UI
  • Fix error in CannonPhysicsPlugin when PickingPlugin is not added to the viewer
  • Rename visible to enabled in Object3DWidgetsPlugin, add option to disable by default
  • Catch error in ScrollableCameraViewPlugin when div is not found.

0.9.1

  • Add LoadingScreenPlugin
  • Clamp camera near to a minimum value of 0.001 when using autoNearFar
  • Dispatch events processFileStart and processFileEnd in AssetImporter
  • Replace AssetManagerBasicPopupPlugin with LoadingScreenPlugin for default importPopup in addBasePlugins, CoreViewerApp and CoreEditorApp
  • Fix alphaVignette(in ShadowMapBaker) material defines when ground reflections are turned off
  • Dispatch events preRenderCamera, preBlitCamera, postRenderCamera from VirtualCamerasPlugin
  • Fix correct class as target in ui config button type value function.

0.9.0

  • 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
  • Other minor fixes

0.8.9

  • 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

0.8.8

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

0.8.7

  • Fix transmission rendering with MSAA(isAntialiased) enabled.
  • Export functions from three.js BufferGeometryUtils
  • Add env-metal-14.exr in default presets.
  • Add ObjMtlLoadPlugin, FBXLoadPlugin, Rhino3dmLoadPlugin, STLLoadPlugin, EXRLoadPlugin, GLTFMeshOptPlugin in addBasePlugins.
  • Allow string as presets in PresetGroup
  • Add minimum duration of 10ms in CameraViewPlugin.animateToView
  • Allow loading preset groups from a json file url in PresetLibraryPlugin.loadPresetGroups, use json fom exportPresetGroups

0.8.6

  • Set default minimum near plane in camera to 0.5
  • Updates and fixes in three.js types
  • Fixes for WebGL 1 rendering
  • Fix runtime error when context restored on some devices.
  • Add define WebGL2Context in shaders
  • Minor fixes

0.8.5

  • animatePromise renamed to animateAsync.
  • Add renderScale as an alias of displayCanvasScaling in BaseRenderer.
  • Fix near plane clipping with autoNearFar when camera is inside a model.
  • Make regex match exact string in AMaterialManager.
  • Fix for tweakpane UI interfering with colorSpace in textures loaded from the UI.
  • Allow undefined parameter in setEnvironmentMap and setBackgroundMap in ViewerApp, it has the same effect as null

0.8.4

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

0.8.3

  • Fix regex match to exact match in MaterialManager.applyVariation
  • Fix for Material Configurator changing other materials.

0.8.2

  • Add Auto Near far to the camera UI
  • Add clampMin, clampMax to OrbitControls, OrbitControls3
  • Fix for export extensions not working when added before registering a file.
  • Fix scroll issues with CustomContextGrid
  • Serialize enabled property in ParallaxMappingPlugin
  • Add GPU instancing support to DiamondMaterial
  • Other minor fixes, UI tweakes and performance improvements.

0.8.1

  • Fix alphaMap read, opacity in depth buffer and gbuffer pass.
  • Add stepPhysics and Make bodies from root objects in CannonPhysicsPlugin
  • Add Apply All in Material configurator UI.
  • Add colorWrite to Unlit and Physical material UI.
  • Fix scrolling in custom context grid for configurators
  • Add support for alphaMapTransform in DepthNormalPass and SSVelocityPass
  • Fix LUT, tonemap and flags buffer on some low-end Android devices (by using int ops)
  • Material name is now preserved when converting a physical material to diamond material.
  • Add recomputeOffsets debug flag in the editor for DiamondPlugin
  • Changes to auto dispose logic of material and geometries.
  • Fix camera near-far calculating when panning very far from the camera target.
  • Add regex support in MaterialManager.findMaterialsByName
  • Use getOrAddPlugin in addBasePlugins
  • Fix for onComplete and onStop not firing in PopmotionPlugin
  • Fix for nested auto-generated UI config rendering with decorators.

0.8.0

  • Fix HalfFloat and Float target export in BaseRenderer.renderTargetToDataUrl and BaseRenderer.renderTargetToBuffer
  • Fix an infinite loop in RendererUiPlugin when canvas had floating point size
  • Add Shadow Type in ExtrasUiPlugin
  • Export utils textureToDataUrl, textureToCanvas, can be used to convert any texture or data texture to a canvas or export as png/jpeg
  • Add loadedBytes, totalBytes to importFile event in AssetImporter
  • Support string(url) input in AssetImporter.importSingle
  • Fix initial state in AAssetManagerProcessStatePlugin, by calling _updateMainDiv when added to the viewer.
  • Add enableRefreshTransform in BaseGroundPlugin to programmatically control ground plane transform refresh
  • Add autoDispose to VariationConfiguratorPlugin. Default = true. When set to false the items will not be disposed when removed.
  • Improvements in CannonPhysicsPlugin, add support for mouse pick and add it to the editor under Animations
  • Keep model hierarchy and fix model reuse after dispose, if reference is saved.
  • Fix issue when progressive rendering doesn't resume after CannonPhysicsPlugin is disabled.
  • Export CannonPhysicsPlugin in the bundle
  • Fix an issue in Rhino 3DM load when layer material was not used in some cases
  • Add support for reading fadeDuration from events sceneUpdate, materialObject, activeCameraChange in FrameFadePlugin
  • Add normalBias to Progressive Shadow UI (RandomizedDirectionalLight)
  • Fixes in automatic near far computation when zoomed out.
  • Add texImageToCanvas to convert any texture image including DataTexture to convert to a canvas.
  • Fixes in textureToDataUrl and textureToCanvas for flipped textures.

0.7.9

  • 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 AViewerPlugin deserialize 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.

0.7.8

  • 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

0.7.7

  • Export STLLoadPlugin, Rhino3dmLoadPlugin, VariationConfiguratorGridUiPlugin, VariationConfiguratorPlugin, serialization, ui annotations, FileTransferPlugin, AAssetManagerProcessStatePlugin, ScrollableCameraViewPlugin, canvas utils in the browser viewer bundle.
  • Fix window bundle when not imported with type="module"
  • sRGB Color space fixes in loaders for .obj, .mtl, .hdrpng files
  • Allow separate uv set in UI for all maps in physical, unlit materials.
  • Add support for loading state of MaterialConfiguratorPlugin, SwitchNodePlugin, ThemePlugin in AAssetManagerProcessStatePlugin
  • Fix glb export with draco compression
  • gltf-transform package update
  • Fix multiple errors in shaders and material extensions including anisotropy and thin film layer.
  • Add several radial background images.
  • Add UI button to prompt for file in DropzonePlugin.
  • Obfuscation fix in Draco loader by putting worker in string.
  • Several minor fixes.

0.7.6 (Major changes)

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

0.7.5

  • Fixes in SSContactShadows and add to the editor UI
  • Fix for 0 roughness in transmission
  • Fix background intensity to be consistent with envMapIntensity when envmap is used as background.
  • Add ViewerApp.addPlugins to add multiple plugins at once.
  • Introduce CoreViewerApp, CoreEditorApp, addEditorPlugins
  • 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.

0.7.4

  • Fix issue with SSGIPlugin introduced because of incorrect framecount from Total Frame Count option.
  • Use local position in camera controller for nested cameras.
  • Add Remove vertex color attribute button in geometry UI.
  • Add vertexColors and alphaTest to gltf material extras extension.
  • Fix issue where embedded images with invalid source URLs stop loading of the glb file.
  • Add attenuationDistance and attenuationColor to Physical material UI. Change default value of attenuationDistance to 0(infinite) from Infinity
  • MaterialManager.applyMaterial and MaterialConfiguratorPlugin.applyMaterial returns boolean indicating if the material was applied or not.
  • Add encode-progress event in CanvasRecorderPlugin to get progress of encoding when using ffmpeg.js.
  • Add ObjectPicker.hoverEnabled to enable/disable intersection check while hovering. (default: false)
  • Add worldSpace option in CameraViewPlugin.getCurrentCameraView to get the view in world space. (default: true)
  • Fix incorrect value from useLegacyLights(Artistic Lighting toggle in the UI)
  • Fix issues with dynamic selection in OutlinePlugin.
  • Fix state issues in tweakpane image UI where set image and remove image doesn't work in some cases.
  • Serialize enabled and enableEdit in ParallaxCameraControllerPlugin.
  • Add autoplayOnLoad property and fix serialization of dragAxis in GLTFAnimationPlugin
  • Fix issue in DepthOfFieldPlugin not working properly for cameras nested inside other objects.
  • Add SwitchNodeBasePlugin, similar to SwitchNodePlugin but with a base class to extend from, example: https://codepen.io/repalash/pen/bGmVbZj
  • Set autoLookAtTarget to false by default in CameraController
  • Fix camera animation for nested cameras in imported models
  • OutlinePlugin fix for non-default camera.

0.7.3

  • 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 ParallaxCameraControllerPlugin, GryoInputDevice, MouseInputDevice.
  • Add easing to CameraViewControlPlugin and ScrollableCameraViewPlugin.

0.7.2

  • 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

0.7.1

  • Rewrite CanvasRecorderPlugin, add support for encoding mp4 with ffmpeg.js for type video/mp4
  • Add ACanvasRecorder, CanvasMediaRecorder, FFMPEGRecorder, ImageSequenceRecorder.
  • Deprecate CanvasRecorder.
  • Fixes in MaterialConfiguratorPlugin
  • Fix shader compile error when SSR is toggled for some single nodes.
  • Update GLTFLoader so that loaded textures have the same uuid as when saving, by removing texture.clone() in GLTFTextureTransformExtension.

0.7.0

  • 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

0.6.9

  • Add support for disabling automatic near far calculation by setting cameraObject.userData.autoNearFar to false in CameraController.
  • Remove reference to preImported assets after dispose.
  • Add clearCache in AssetImporter to clear memory asset and loader cache. This does not clear the browser cache or cache storage.
  • Implement dispose in AMaterialManager to dispose all materials. This does not remove any references to material in any scene objects.
  • Replace objects in AssetManagerPlugin cache storage if downloaded again.
  • Fixes in ARPlugin to present the scene in WebXR immersive-ar mode. Still in development.
  • Remove obsolete parameters in SSAOPass serialization.
  • Remove renderToScreen from TonemapPlugin. It's now rendered with CombinedPostPlugin.
  • GroundPlugin now keeps the ground mesh rotation in z.
  • Change default view names in CameraViewPlugin to #view{id}
  • Add resumeAnimation() in GLTFAnimationPlugin.
  • Fixes in ScrollableCameraViewPreviewPlugin.
  • Fixes in PathTracingPlugin1. Add support for directional lights.
  • Add reRender to CombinedPostPlugin to rerender just the screen pass with changes like outline, tonemapping etc.
  • Cache blob of loaded images in ImageLoader.

0.6.8

  • Cache 'blob' in ImageBitmapLoader, images referenced by URL inside GLTF files will now be cached to CacheStorage.
  • Add useTotalFrameCount to TemporalAAPlugin and its UI, if this is set to true, then frameCount won't be reset when the viewer is set to dirty
  • Fix aspect refresh for camera when activated as main.
  • Download and import textures with rootPath in parallel in ObjectLoader2.
  • Add CameraViewControlPlugin with setState to interpolate the camera position, target between all camera views from CameraViewPlugin.
  • Add ScrollableCameraViewPlugin which maps the camera views to div/sections on the HTML page and syncs the camera view with the scroll position.
  • Add ScrollableCameraViewPreviewPlugin to preview the camera views in the scrollable camera view plugin with editable HTML.
  • Remove SSAO disable confirm popup in SSGIPlugin
  • Add autoIncrementTime control in GLTFAnimationPlugin. If set to false, the animation time can be set manually with setTime
  • Several fixes in GLTFAnimationPlugin related to resetting and playing animations.
  • Fixed initialized event in WebGiViewerElement

0.6.7

  • Add normalScale to material extras during GLTF export, since it doesn't work properly in some cases.
  • Serialize loop, loopRepetitions and timeScale in GLTFAnimationPlugin.
  • Fix timeScale in GLTFAnimationPlugin to allow negative values and bound to mixer.
  • Better shadow-based transparency for the ground with aoMap mode in GroundPlugin.
  • Fix unsupported encoding issue with Multi render targets.
  • Add GLTFKHRMaterialVariantsPlugin to import and export KHR_materials_variants extension mappings and material variants in GLTF.
  • Add classes GLTFMaterialsVariantsExtensionExport and GLTFMaterialsVariantsExtensionImport to the bundle.
  • Add support for userData.__importData for loaders in AssetImporter. This data can be used after the object is added to the scene.
  • Fix issue in AMaterialManager.processMaterial where non-converted materials were registered in the manager.
  • Add console property to IViewer interface. It can be used to override the console object used by the viewer.

0.6.6

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

0.6.5

  • Fix issues with floating point scale and render target size.
  • Serialize and save geometry offsets after being prepared by DiamondPlugin. Fixes issue when geometry is modified due to DRACO compression.
  • Fix diamond shader rendering after context loss and restore.
  • Remove confirm dialog box when enabling SSBevelPlugin
  • Disable scale in UI when mode === 'custom' in RendererUiPlugin
  • Fix PickingPlugin autoFocus to fit object in view.
  • Add CameraViewPlugin.animateToFitObject and alias ViewerApp.fitToView to animate camera and fit an object/scene to the view.
  • Add 'Fit Scene/Object' option in modes ui bottom bar.

0.6.4

  • Add 360 turntable camera animation recording option in CanvasRecorderPlugin UI
  • Add record function in CanvasRecorderPlugin which takes an action and executes it between start and stop recording calls.
  • Add dracoOptions of type EncoderOptions to AssetExporterPlugin.exportOptions
  • Fix Diamond rendering after context loss and restore.
  • Emit events 'contextRestored' and 'contextLost' from BaseRenderer(viewer.renderer)
  • Fixed bug with memory caching of offset matrices in diamond plugin.
  • Serialize geometry offsets(eigen vectors) matrices in gltf to read in the viewer.

0.6.3

  • 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

0.6.2

  • Add caching flag in options for setupCoreWebGiViewer
  • Export setupModesUi and setupModesStyles in bundle.
  • Add useTotalFrameCount and totalFrameCount in BaseRenderer.
  • Add envMapRotationOffset in DiamondMaterial
  • Add contrast and saturation to TonemappingPlugin
  • Fixed issues in OutlinePlugin

0.6.1

  • Fix for material bump map, when SSBevel is on.
  • Separate OutlineRenderPass, removed redraw in GBufferRenderPass, Changes in outline shader to render visible/hidden parts differently.
  • Add vertexColors to the UI
  • Export PresetGroup and subclasses in the viewer bundle.
  • Fix GBufferPlugin on webgl1 devices.
  • Add 9 new environment map presets.
  • Export CustomAnimationHelper and CustomAnimationHelperPlugin in the bundle to interface with three.js animations by code.

0.6.0

  • Add AShaderMaterial2 aith API to create materials types with custom shaders and apply them on objects.
  • Add support for custom material extensions in MeshBasicMaterial2 and DiamondMaterial.
  • Add textAnchor in SimpleTextPlugin
  • Read autoLookAtTarget from userData in CameraController.
  • Fixed PickingPlugin to properly pick objects inside another.
  • Fix promises returned from playAnimation, playClip with convergeMode, pausing in GLTFAnimationPlugin.
  • Bind button value function in tweakpane buttons to config so that this works.
  • Add smoothShadow to GroundPlugin to smooth baked shadow edges.
  • Disabled Outline extension by default, can be enabled from the UI.
  • Fixes in LUTPlugin.
  • Several build improvements.

0.5.9

  • Build improvements

0.5.8

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

0.5.7

  • Update rhino3dm to 7.15.0
  • 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.

0.5.6

  • Set depthTonemap to true by default in setupCoreWebGiViewer
  • Set importPopup to false by default in setupCoreWebGiViewer
  • Add AAssetManagerProcessStatePlugin as helper to access the current state/progress while importing/exporting files through the AssetManagerPlugin
  • Add AssetManagerLoadingBarPlugin, to show top loading bar while importing and exporting files, added by default in setupCoreWebGiViewer
  • Export SSBevelPlugin and NormalBufferPlugin in bundle.
  • autoScale will now also scale the object position to work properly with autoCenter
  • Enable autoCenter instead of pseudoCenter in Dropzone options.
  • Add 'panel' as alternative to 'folder' in UiObjectConfig.
  • RendererUiPlugin: width and height are not serialized when its more than the canvas container size(at export time).
  • Implement serialization of LUT Cube texture files as embedded blobs in viewer config resources while exporting GLB files.

0.5.5

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

0.5.4

  • Add CSGPluginBVH and CSGPluginBSP
  • Add deviceOrientation to controlsMode in ICamera.
  • Improve CameraController to support different types of controls.
  • Add DeviceOrientationPlugin (alpha)
  • Add support to import/export polygonOffset parameters in gltf material extras extension.
  • Allow negative values in offset and repeat in texture sampler UI config.
  • Export class SSGIPlugin in bundle. (beta)
  • Change DropzonePlugin default import options with pseudoCenter: true and autoCenter: false
  • Export class EllipseCurve3D in bundle.
  • Fix parameters refresh on deserialize in RendererUiPlugin. Add RendererUiPlugin.refreshSize() to trigger setSize manually.
  • Add support for loading .cube files in Tweakpane Image UI.
  • Edit ViewerApp.setBackgroundColor to return void instead of Promise<void>
  • Add SSBevelPlugin (alpha)
  • Add CombinedPostPlugin for combining all screen post-processing in a single pass
  • Add abstract class GenericExtensionPlugin for post-processing extensions to be added in CombinedPostPlugin
  • Add ChromaticAberrationPlugin, FilmicGrainPlugin, GammaCorrectionPlugin, LUTPlugin, VignettePlugin
  • 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.

0.5.3

  • 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
  • Export ClearcoatTintPlugin, PresetLibraryPlugin, SceneLoopPlugin
  • 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.
  • Update three.js to r143.

0.5.2

  • depthTonemap is true by default in TonemapPlugin
  • Add dollyZoom to OrbitControls, CameraController
  • 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.

0.5.1

  • Disposing an object with object.modelObject.userData.dispose() will dispose all children as well.
  • Add progress parameter for download progress (computed based on downloaded bytes) in importFile event of AssetImporter
  • hierarchyChanged parameter added to sceneUpdate event in RootScene, fired when some object is added or removed from the scene's model root.
  • Add traverseSceneObjects to ViewerApp to traverse all objects added to the scene model root.
  • Rewrite LightsUiPlugin to update with scene.
  • Fix noise with high roughness in Reflector2
  • Fix issues when deserializing default camera options.

0.5.0

  • Removed processors from RootScene
  • Convert setBackground and setEnvironment functions to sync. (in ViewerApp and RootScene)
  • Add support for MSAA with isAntialiased parameter in ViewerApp constructor.
  • Fixed issues with serialization of large DataTextures.
  • Add blurTransmissionTarget in RenderPass2
  • Changed defaults for GroundPlugin
  • Shadow type set to PCFSoftShadowMap by default. It can be changed by setting viewer.renderer.rendererObject.shadowMap.type
  • Add support for Unlit materials with MeshBasicMaterial2
  • Add autoPushTarget with minDistance in OrbitControls
  • Fixed issues when importing empty scenes with viewer configurations.
  • Fixed read of normalMapBias when importing lights.
  • Several other fixes and UI tweaks.
  • Add CameraUiPlugin and RendererUiPlugin
  • Export LightsUiPlugin in webgi bundle.