Great interview! I appreciate you make this kind of material that inspire and helps people in the same path :) Thanks 80 level and Mats! Ancelmo Toledo ;)
Thanks for sharing.I found a lot of interesting information here. A really good post, very thankful and hopeful that you will write many more posts like this one. - earn to die
Ricardo Teixeira from Amplify Creations discussed the technology behind Amplify Texture and shared some of the ways this new tool can help you build bigger and more realistic spaces with beautiful materials.
Amplify Texture is still in development, not all features are currently available. We recently added support for Android devices but its current performance is not representative of the final product, there’s still much room for improvement.
Anyone can try the fully functional Desktop and Mobile (Android Beta) trial version for Unity today, the only difference from the full version is the lack of source code and a small watermark.
Textures are one of the most demanding and critical assets involved in producing rich applications and, be it with hand-made or processed scanned textures, most developers do not employ specific texture management techniques when using readily available engines such as Unity. As a result, they are either constrained by the texture amount and resolution used, or end up running into Video Memory limitations with synchronous and asynchronous texture upload. It’s a daily struggle to keep everything within limits in order to avoid low performance, long loading times, and the usual stuttering that occurs when an application hits the device memory limit and has to cannibalize System Ram.
As game artist, you might think that this does not apply to your work but, just as 80’s artists were used to work around limited color palettes, you have been working around texture size and memory limitations your entire career. With ever-faster SSD and GPU technology, there’s a real opportunity to improve how we manage texture data.
Amplify Texture provides an alternative method for efficient texture management that allows Unity applications to use a virtually unlimited quantity of textures without compromising quality or performance, it even eliminates texture loading times. With our texture virtualization technology scenes can easily use more than 1TB of texture data without ever hitting video memory limits.
Virtual texturing works by slicing all your textures into manageable tiles (or pages) and storing them in large files optimized for streaming; you can think of it as an extra step akin to lightmapping, without strict artistic requirements. At runtime, the view from your camera is analyzed and visible tiles are requested and streamed from disk in the background. Because you only see a portion of the scene with full level-of-detail at any given time, the system is able to balance hardware resources very efficiently; Video Ram use of virtualized content is fixed, it will never go over the defined limit. Amplify Texture always virtualizes your textures from the maximum resolution available, be it 8k or 16k textures (32k per-texture on Unity 2017), the original size is never compromised.
We feel that it’s important to point out that texture virtualization is not free, so to speak, the process that determines which textures to stream has a predictable, but negligible, cost due to its increased shader complexity. In our opinion, based on real-world test cases, the gains greatly outweigh the cost. It’s also not recommended for semi-transparent assets such as glass or water but you can combine both virtualized and non-virtualized textures in the same scene without any specific requirements or additional steps.
There are quite a few factors that come into play when it comes to texture size. Resolution wise, the need for sharp detail is one of the main drives but, from a development standpoint, it’s not unusual to use larger atlased texture collections in order to reduce draw call counts. Bit Depth is also one of the main size influences, most real-time applications stick to LDR textures, reserving HDR content for Skyboxes or integrate Lightmap systems. Amplify Texture actually allows you to use true High Dynamic Range textures in Unity with any type of asset, it’s particularly interesting for high-quality photogrammetry based assets.
The use of high-resolution scanned data, or even procedurally generated, is becoming extremely common. With projects boosting several gigabytes of texture data, it’s getting harder to rely solely on common legacy techniques. Virtual Texturing is an immediate and proven solution that allows you to completely overcome resolution and capacity limitations; we already count real-world test cases capable of using more than 70GB of texture data in a single scene, and some even higher currently in development.
Texture virtualization is an ideal non-destructive technique for high-quality and accurate scanned based data use. For entertainment or historical preservation applications, it ensures that the original data is kept at its highest resolution.
Optimizing texture load on GPU
Compression plays a big part when it comes to streaming performance, we use our own highly efficient algorithm that allows us to quickly upload and manipulate the necessary data. In addition to being ideal for streaming, it’s superior to standard DXT compression, allowing for even smaller application build sizes when compared to non-virtualized content.
Virtualization effectively solves the typical texture load/unload problem. Instead of loading textures with traditional methods, it streams optimized and pre-computed texture tiles. With Virtual Textures, texture count, texture resolution, and original file size is no longer a factor. To put it into perspective, with Amplify Texture, displaying a scene using 10 2048 x 2048 textures as the same impact as the same scene using 10 16384 x 16384.
Virtualized content opens a lot of possibilities, we actually support multi-tile texture collections in Unity with our plugin, UDIM or compatible naming conventions used by Zbrush and Mudbox. Regardless of the number of texture tiles, each collection will be considered to be a single texture and will only require one material; it’s a tremendous reduction in necessary steps and draw calls. In a way, UDIM virtualization aims to bridges the gap between VFX and real-time pipelines.
Multi-tile collections are extremely useful and flexible, not only for high-quality content generated with MARI, Zbrush or Mudbox, but also for scanned content made with popular capturing software such as CaptureReality. The use of multi-tile collections greatly simplifies managing massive scans with hundreds, or even thousands, of textures; using it is as simple as selecting the first tile in a collection and letting Amplify Texture do its magic in the background.
UDIM collections are also useful for existing assets, you can merge and adjust individual objects in your modeling software in order to take advantage of multi-tile uv texture collection optimizations. You don’t necessarily need to use MARI or Zbrush, all you would need to do is offset the UVs and rename the texture files accordingly.
Helping with large-scale landscapes
It helps by eliminating textures quantity, size and resolution limits; it even allows for reduced build sizes when compared to non-virtualized builds due to its highly efficient texture compression. It gives you peace of mind in knowing that virtualized content will never overload, so to speak, your graphics card. It’s a simple and ready to use solution that can be added to existing projects or new Unity projects. With little to no additional configuration required, it greatly simplifies how you manage large texture collections in a non-destructive way.
It’s not just for highly detailed projects, Amplify Texture can benefit almost any type of application. Imagine a game without texture limits or loading times on desktops, consoles, and mobiles devices, that’s something that texture virtualization can do for you.
When it comes to actual terrains it really depends on the type of technique used but it’s currently great for coverage Diffuse and Normals. There’s actually a couple of virtual texturing variants geared towards landscapes, Far Cry 4 makes great use of Adaptive Virtual Textures while Battlefield 3 went for Procedural Virtual Texturing.
Detail-oriented texture maps for hero assets
It’s perfect for detailed-oriented hero assets, with virtualized textures the only limit is your imagination. You can really go crazy with your materials, detailed tessellated content included.
We strongly believe that a hybrid mix of procedural and scanned data is the future, we already see some advances in this field by Allegorithmic and Quixel. The hardware is getting better but without modern texture management systems, we are going to have a hard time handling the vast amounts of content generated. Virtual Texturing in its current form is not the ultimate solution but a doorway to innovative and unconstrained possibilities.
AI-powered solutions will definitely play a big part in popularizing the use of synthesized, or even procedural content. By offloading the processing step of scanned data to trained frameworks, we reduce the amount of time necessary to create extensive material libraries. There’s already some indication that we can actually use this networks to generate entirely new content based on real-world data, the possibilities are truly unlimited.