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.
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.
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.
Snowballs VR Revisited
We have further upgraded our ☃️ Snowballs VR demo. It now offers 3 types of controls:
🕹️ desktop controls with mouse and pointer lock (now works on localized keyboards too)
🕹️ mobile multi-touch controls
🕹️ VR controls optimized for Oculus Quest 1/2
We also added more levels, more snowball guns, improved the graphics and UI, performed some performance optimizations, and streamlined the 🧩 Puzzles logic.
We believe this small game have become one of the most advanced Verge3D apps ever created so far. All in all, this demo inspired us to add various features to simplify the creation of such huge yet code-less applications, as well as to fix many bugs in the engine.
Verge3D for Blender Demos
We updated the Light Probe app (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 a demo called 🐇 Transparency to Verge3D Asset Store to show off all types of transparency supported by the engine.
Also we added a new demo called Clone Object to show the workings of the clone object puzzle.
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
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.
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.
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.
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.
We supported the node called Float Curve from the Converter category.
We supported 3 options, Multiply Add, Refract and Faceforward, in the node Vector Math.
Verge3D now properly handles scenes in which an armature is not assigned to any mesh.
The Brick Texture node no longer produces rendering artifacts.
We supported the Vector input option in the node Map Range. This option was introduced in Blender 3.1.
We dropped support for outdated Blender 2.80-2.82. This allowed us to eliminate some hacks and noticeably speed up the export. We also managed to drop all old shaders generated from these Blender versions which helped boost up shader compilation, resulting in scenes loading faster.
We supported Blender 3.2 and 3.3 alpha for this update. Specifically, Verge3D can now handle the output Alpha of the node Object Info introduced in Blender 3.2. E.g. you can clone an object, and set both color and alpha for each clone, thus making the cloned objects transparent.
Also you can now use two new nodes, Combine Color and Separate Color, to be shipped with upcoming Blender 3.3. Until this version is out, one uses nodes called Combine RGB/HSV and Separate RGB/HSV for the same purpose.
We fixed the export crash case related to baking of animation in Blender 3.1. Thanks for the report.
We fixed the bug with animation of curves. Thanks for the report.
We fixed the export crash with armature reported here.
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
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.
🐞 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.
📝 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 synchronized the Developer Reference with the latest Three.js API docs.