We are proud to announce the release of Verge3D 4.0, the next major version of the artist-friendly toolkit for creating 3D web interactives! This is a huge update, with tons of new features and complete overhaul of the tools, the file format, and the engine core. We hope that Verge3D has become even more professional, convenient and robust framework as a result of our hard work during last 6 months. Check the new features out:
Installation, Applications and Demos
The most important visible change with Verge3D 4.0 is that we separated user applications and settings, as well as stock demos, from the software installation. When starting the App Manager for the first time, it will suggest selecting a working folder for your applications (on Windows, this is usually inside Documents). This is where all your applications and the custom Puzzles library will now be stored.
You can also choose between “Light” or “Dark” themes in the same dialog. Both preferences can be changed later in the App Manager settings.
Having a separate folder for applications will make updating for new Verge3D versions easier. Also, you can now use different Verge3D flavors (Blender, 3ds Max, or Maya) with the same applications folder, rather than having to maintain a separate folder for each package.
Next, after installing Verge3D 4.0, you won’t see any stock demos listed in the App Manager (thus the file size of the distribution is only about 100 Mb now). The demos can now be freely downloaded upon request from the store section of the App Manager.
You can filter content by demos, tutorials, and libraries using small buttons on the right. We plan to add to this store various simple examples for more convenient learning how this or that feature works.
Finally, the software itself is installed in a system directory (usually Program Files on Windows). This normally requires admin privileges – if you happen not to have them, simply select a folder that you are permitted to use. All third-party Verge3D plugins must also be copied to this directory.
The personal settings for the App Manager are saved in another system folder (AppData/Roaming/Soft8Soft on Windows). This allows the system administrator to install Verge3D once for all users who can have their own settings each.
Texture Compression
Here goes one of the most important features of this release. Texture compression enables images to use 4x-6x less video memory, and speeds up rendering thanks to more efficient memory access. This feature is especially crucial to hardware-restricted Apple devices, since insufficient memory is the main reason for big scenes crushing on iOS.
Texture compression is performed when you export a scene, if you enable the corresponding option.
If you create a new app with Verge3D 4.0, you should leave checked the option Texture Decompressor that provides a JavaScript library for this operation.
Verge3D employs two compression algorithms which you can switch between:
🔷 UASTC is a modern method which offers best quality. It is good for everything including normal maps, ORM textures, etc.
🔷 ETC1S offers best compression and generates smallest files. However, it may cripple textures so you might use it only for non-contrast images (such as grass, wood, bricks, etc).
You can tweak efficiency-vs-quality by choosing the compression algorithm for each individual texture.
However, you don’t really need to choose between them and can safely leave the default Auto option, that corresponds to simply using UASTC in the current implementation (this behavior may change in the future).
Besides genuine texture compression, all HDR images are now compressed with LZMA (i.e. same method used for glTF files). This makes the HDR files 4x-6x times smaller, although they still occupy the same amount of video memory. This feature is turned off when you set the texture compression setting to Disabled.
We ensured that texture compression could be used with the puzzle replace texture. Also, the print performance info puzzle (as well as P-P-P hot keys) now outputs info about texture compression. Namely, it prints what exactly compression format is used internally by Verge3D on the target hardware (intended for advanced users).
From our side, we enabled texture compression for all stock demos. We also optimized PNG textures by removing ICC profiles from image files. This is quite relevant because the ICC profile enlarges a file, and more importantly, prevents using compression.
Verge3D for 3ds Max Demos
We added a new app called Light Probe (based on the similarly-named tutorial) to demonstrate both planar and cubemap reflection probes. You can download it from the Verge3D Asset Store.
We added the demo called 🐇 Transparency to Verge3D Asset Store to show off all types of transparency supported by the engine.
We also added a new demo called 🫖 Gltf Compat featuring an advanced PBR material compatible with glTF 2.0 standard.
We added an animation timeline to the Industrial Robot demo.
Finally, the small demo called 🖼️ Canvas Texture creates pictures on the fly using the HTML Canvas API.
Updating and Settings
To simplify updating applications for new Verge3D versions, all available JavaScript modules are now copied into the application folder by default. Particularly, if you enable texture compression introduced in v.4.0, it will work even if the app was originally created with older Verge3D versions. If you are sure you won’t need some of the modules, you can skip them in the update dialog.
We also redesigned the UI for ⚙️ App Manager settings, which are now reside in tabs.
Sync with Three.js
We have synced with version r137 of Three.js, the underlying WebGL library used by Verge3D. Most important features for Verge3D users include:
- Unlimited morph targets (for browsers supporting WebGL 2.0). Before this update, only max 6 morph targets were available in Verge3D.
- Improved rendering quality thanks to advanced texture filtering provided by hardware-accelerated sRGB textures (part of WebGL 2.0 specification).
- Upgraded glTF loader that now supports more glTF extensions. This will be helpful if you are going to use files exported by glTF exporters other than Verge3D’s. The full list of supported extensions includes: KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_ior, KHR_materials_pbrSpecularGlossiness, KHR_materials_sheen, KHR_materials_specular, KHR_materials_transmission, KHR_materials_unlit, KHR_materials_volume, KHR_texture_basisu, KHR_texture_transform, KHR_mesh_quantization, EXT_texture_webp, EXT_meshopt_compression.
In addition, the export to usdz puzzle now uses the USDZExporter class from the latest Three.js library. This brought better support for transparent materials, among other features.
Sync with Google Blockly
We upgraded the 🧩 Puzzles editor by syncing with the latest version of Google Blockly framework. It now works much faster with big scenarios, and is more stable.
Also, all outdated puzzles will now show in your scenarios as 🟥 red placeholders.
This will happen with old versions of such puzzles as play animation, replace scene, texture from text, external call, load sound, physics body params, physics apply vector, and ssao. Be sure to get rid of such puzzles (that have a ⚠️ warning sign on them) before upgrading to Verge3D 4.0.
Sync with Electron.js
We have updated Verge3D’s web-to-desktop converter to use the latest version 19.0.4 of Electron.js. It improved stability and added some useful features.
glTF Format
We refactored the glTF format to make the files more conformant with the glTF specification. Particularly, the S8S extensions were overhauled. Also glTF-compatible materials no longer contain S8S extensions. We recommend reexporting all your scenes after updating for Verge3D 4.0.
Browser Compatibility
We have removed legacy modules from the engine, namely Internet Explorer compatibility and legacy VR. Also the browsers must support WebAssembly as it is required for physics and some other features to work. This change will affect only 1-2% end users equipped with IE11 or mobile Safari before version 11 (iOS 11 was released in 2017). Still, if this does not look good to your audience, then you might prefer to stick to Verge3D 3.9.1 until you feel that you can ignore these older browsers.
🧩 Puzzles
We added puzzles get procedure and call procedure that you can use to save a procedure to a variable and call it later in some other place. This allows you to implement callbacks and to structure your puzzles better.
The camera, which by default is restricted in vertical direction, can now rotate in the full 360° mode. You can enable this behavior by using a new option called orbit allow turnover which we added to the puzzle set camera param. Thanks for suggesting this feature.
We added a new primitive, plane with texture, to the puzzle create object.
We synced with upstream the hardware database used by the puzzle check performance.
The advanced play animation puzzle obtained default fields: from, to, and speed. This way you no longer need to add Number puzzles every time you want to play an animation range.
The puzzle check AR mode now has 3 slots to conveniently use Apple’s USDZ viewer without the need of extra logic in your Puzzles. See the demo Augmented Reality for usage example.
We added the option @media to the puzzle create CSS rule, to match the puzzle set style for CSS rule where such the option is present.
We added the targetTouches events to the puzzle get event property. To explain the difference, touches means a list of information for every finger currently touching the screen. On the contrary, targetTouches are filtered to only those touches that started out within the same HTML element. This feature allowed us to implement mobile multi-touch controls for the Snowballs VR demo, so that the left and right hands could be distinguished in the Puzzles scenario.
We implemented a new puzzle called set animation speed, which you can use not only to adjust the speed per se, but also to reverse the playback, even before the animation finishes playing to the end. Thanks for suggesting it on the forums back in 2019, and sorry for taking this so long.
The good old puzzle show now works with multi-material objects when they are originally hidden.
3ds Max-Specific Features
Verge3D is now compatible with 3ds Max 2023. The version 2019 is no longer officially supported and not recommended for use.
The new glTF Material first appeared in 3ds Max 2023 is now supported by Verge3D, including all its settings.
Line render is now available for splines which can be used to implement various graphics effects, wireframes, physical ropes, etc. You can adjust the color and width for lines.
Controllers now properly work with Verge3D in localized variants of 3ds Max (e.g. German or Chinese).
The parameter Cutout (Opacity) is now supported for Physical Materials.
Animation of morph targets is now supported.
The Viewport Fit option (Vertical or Horizontal) is now available for cameras. You can use it to properly adjust your 3D UI elements to the user’s screen resolution. Thanks for suggesting this feature.
All Verge3D options in 3ds Max are now rolled up by default to make it more convenient for the users to use these options. We are thankful to Autodesk developers for advising us on how to properly implement this long awaited feature.
We fixed the bug with intensity of the default light sources.
We fixed the bug with anisotropic filtering for textures not working properly. Thanks for reporting this on the forums.
Color space is now correctly assigned to ORM textures generated for gltf-compatible materials. Thus lighting is no longer crippled for such models.
We fixed export crash when empty names are used for morph targets.
Other Improvements
We optimized loading of images by assigning them to textures asynchronously.
The LZMA unpacker now works faster and occupies less memory thanks to using WebAssembly.
Verge3D Network directory was simplified. It now displays one level less in the list of uploaded files (i.e. skips the “applications“ folder).
All so called “player-based” demos that were causing much confusion among users were converted to “normal” apps, that is, are supplied with a mandatory .html file to run them.
Clipping planes can now properly cut objects with skeletal animation. This feature was suggested through the enterprise support channel.
The users of Verge3D DevKit (included in Enterprise and Ultimate packages) can now automate the updating of the engine and applications by running the Python script utils/keymanager.py
.
A descriptive message is now shown in the App Manager if the local server is down, instead of ‘This site can’t be reached / localhost refused to connect’.
We implemented progressive loading of Asset Store entries which helps if Internet is slow. We also provided better titles and descriptions for the demos.
You can now navigate to the URL localhost:8668/reset
to clean up the settings of the App Manager. Intended for advanced users, this is a handy way to begin from scratch.
Fixed Issues
🐞 We fixed the bug with the combination of puzzles not and in list check occurrence.
🐞 We fixed banding artifacts with dynamic ambient occlusion.
🐞 We fixed the bug with Puzzles editor when new tabs had no access to all procedures used in a scenario. We also fixed some issues when a tab is deleted. Also tabs are now created faster.
🐞 We fixed the bug with Puzzles editor’s context menu option Jump to Procedure Puzzle that didn’t work properly.
🐞 We fixed the bug with disintegrating puzzles when a group of puzzles is being dragged (e.g. out of the library).
🐞 We fixed crashes occurred upon exiting an AR session.
🐞 Physics data are now properly cleaned up when the puzzle remove physics body is used.
🐞 We fixed the bug when dynamic ambient occlusion (GTAO) is used together with reflections. Thanks for reporting this.
🐞 The App Manager now properly works without Internet connection, which is needed for the Asset Store and Network Directory.
🐞 We fixed the bug with ambient occlusion not working in the AR/VR modes. Thanks for reporting this on the forums.
🐞 We implemented a workaround for a WebGL bug introduced in iOS 15.4. Thanks for reporting this.
🐞 Verge3D apps now work properly in WeChat browser on iOS 15.4. This issue was reported through the Enterprise support channel.
🐞 We fixed crashes in the Puzzles editor sometimes happened when puzzles are deleted. Thanks for reporting this.
🐞 We fixed rare export crashes related to case-sensitivity of file names (Windows-only).
🐞 We fixed the issue with normal-mapping of planar light probes, occurred when they are scaled.
🐞 We fixed z-fighting occurred on some non-Windows systems. This was achieved thanks to employing the 24-bit depth buffer which is part of WebGL 2.0.
🐞 We fixed the Windows-specific issue with line endings in the multi-line text puzzle.
🐞 We fixed the rare Puzzles bug caused by objects that: A) have morphing, B) have a clipping plane, and C) are multi-material, at the same time. This issue was reported through the Enterprise support channel.
🐞 We fixed the issue with incorrect lighting on originally empty scenes, that is when models are added in run time later.
🐞 We fixed a bug in Verge3D WordPress plugin related to incorrectly determining of product IDs.
Documentation
📝 We made links to the Verge3D Asset Store to serve as examples. We also adjusted styles and improved overall readability of the User Manual.
📝 We created or significantly reworked the following sections: Texture Compression, AR/VR Development, Developer Kit, and Personalizing Verge3D Applications. We also filled various gaps elsewhere.
📝 We synchronized the Developer Reference with the latest Three.js API docs.
Update for Verge3D 4.0 now!
Read the Verge3D 4.0 migration guide to learn how to upgrade correctly. Tell us what you think about this release, or provide further suggestions on the forums!
Great release!
I wonder, though, is the difference in the demos between Max & Blender intentional? Feels almost like there’s some sort of a gamma issue with textures/rendering in the Max demos, many of them look a bit washed out colour wise compared to the Blender demos.
Blender has a good realtime render Eevee and in Verge3d for Blender we base our engine look on Eevee , but in max we have no god reference, so we get what we get.