Performant 3D systems routinely utilize compressed textures, as an essential optimization technique to support the loading and display of massive amounts of textures in 3D applications. Indexed 3D Scene Layer (I3S) supports various compressed texture formats for that purpose targeting different platforms. With wider adoption of GPU-decodable Supercompressed Textures (GSTs) such as Basis Universal, gone are the days where 3D systems had to greatly compromise on texture quality, bloated texture asset sizes and various formats when using compressed textures. Basis Universal allows for excellent decoding speed, great compression rates while keeping the visual quality and works cross platform. In this blog, we are pleased to share a collaboration effort with Binomial that improved Basis Universal encoder speed by a factor of at least 3X! We also show a sneak preview of Basis Universal texture support as an I3S compressed texture asset.
Indexed 3D Scene Layer (I3S), a specification created by Esri for streaming textured mesh and point cloud dataset, has become one of the widely used format for disseminating massive geospatial content. I3S Supports various layer types including 3D object and IntegratedMesh – allowing the streaming of millions of 3D objects and high fidelity meshes, as well as Point Cloud Scene Layer – enabling the streaming of point cloud data consisting of billions of points. I3S has also added support for Building Scene Layer – unlocking complex BIM (Building Information Model) content to be accessible in a user friendly, web stream-able standard. In short, I3S enables the streaming of massive geospatial content to web browsers, mobile devices, and desktop applications.
I3S has been evolving since it was publicly shared to the open source community under an Apache license in early 2015. Adopted as the first 3D streaming Community Standard by the Open Geospatial Consortium (OGC) in the fall of 2017, I3S has continued to evolve, as a living, breathing specification. The latest example of this includes OGC’s recent incorporation of the Point Cloud Scene Layer specification, into an updated I3S 1.1 OGC Community Standard.
One of the key features of IntegratedMesh and 3D Object Scene Layers in I3S include support for compressed texture formats such as DXT and ETC2, as GPU native texture asset resources. Compressed textures bring massive reduction in client application memory since they are directly loaded in the GPU without having to be uncompressed to RGB/A. This affords the consuming application much-less memory utilization and avoid the CPU cycles required to decompress highly compressed image formats such as JPEG and PNG.
The advantages of a compressed texture is clear. Compressed textures considerably lower memory footprint of an application (particularly important in GPUs with shared graphics memory), more compressed images are able to fit into the cache of the processor, and using compressed texture can lower battery usage on mobile devices by avoiding expensive decompression from highly compact formats such as JPEG/PNG. However, generating and using compressed textures comes at a cost, including, compressed textures are significantly larger compared to the same image quality in JPEG/PNG formats and they tend to be hardware and platform specific (different platforms require different type of compressed textures) – creating challenges in storage and transmission. Lastly, creating compressed textures is also prohibitively slow even when using state of the art compression software. For example, ETC2 (a compressed texture format native to GPUs on mobile platforms) and PVRTC (GPU native compressed texture supported on IOS) are on average about 100x magnitude order slower compared to the generation of DXT (using Intel SSE compressor) which is GPU native compressed texture format on desktop platforms.
Until the introduction of GSTs – GPU-decodable Supercompressed Textures, GPU native compressed image generation was extremely specialized and was tightly coupled to specific hardware/platforms. Before GSTs, there wasn’t much option other than redundantly generating the same texture and distributing it in the various compressed texture format flavors targeting specific platforms.
GSTs allowed creating a supercompressed texture format once and being able to transcode it on the GPU to the native compressed texture format supported on the target platform. The general idea behind GSTs is to further compress endpoint texture compression formats such as DXT, ETC2 and PVRTC – significantly reducing the payload size (which are typically 3X larger compared to JPEG/PNG – even after further lossless LZ77 re-compression). The reduction in compressed texture size coupled with just having to deal with a single texture asset that works everywhere, allows asset creators the ability to create and transmit GPU native textures to any desired platform. GSTs came to further widespread usage with the introduction of Basis Universal Texture format by Binomial.