Spark is a software library that enables the use of compressed GPU textures in scenarios where it was not possible before.
It accomplishes this by leveraging the compute capabilities of modern GPUs and achieves quality that is competitive with offline encoders.
Spark vs offline codecs on M1 MacBook Pro
Tooltip text
The textures produced by the Spark encoders frequently match the quality and appearance of the original images so closely that they're nearly indistinguishable. Don't just take our word for it; see the impressive results with your own eyes:
Spark
Original
HypeHype texture by Daniel Palmi
4:1
GPU Optimized
Spark is designed to take advantage of the GPU's capabilities to optimize its performance. It runs on most graphics APIs including Metal, Vulkan, OpenGL and Direct3D.
While block compression is intrinsically parallel, targeting it requires carefully crafted algorithms that minimize divergence and fit within the constrained resource limits. Spark is the result of the refinement of these techniques over years of compression experience.
Spark aims to maximize the quality that can be attained while saturating memory bandwidth. To achieve this we optimize the use of the arithmetic units by meticulously implementing numerically sensitive algorithms and table lookups in half floating point, ensuring correctness and consistency across GPUs.
Designed for Mobile
Spark is specifically aimed at low- and mid-range mobile devices. It runs on most iOS devices with Metal 1.2 support and most Android devices with support for OpenGL ES 3.2 or Vulkan 1.1.
The following table summarizes the platforms and devices that we officially support:
Platform / Vendor | Support Version |
iOS / Apple | iPhone 6 and above using Metal 1.2 |
Android / Arm | Bifrost and above |
Android / Qualcomm | Adreno 500 and above with driver version ≥ 512.490 |
Android / ImgTec | All PowerVR and BXM devices |
Android / Samsung | Xclipse 920 |
MacOS | All Metal 1.2 devices from Apple, Intel, AMD, and NVIDIA |
Windows | All D3D11, D3D12, OpenGL, and Vulkan 1.1 |
Linux | Valve's SteamDeck only |
The following charts show the expected performance on a sample of iPhone and Android devices:
Measured throughput on a subset of representative iPhone devices
Measured throughput on a subset of representative Android phones
Old and low-end devices stand to benefit the most from GPU texture compression. We have put special attention to ensure Spark runs well on these devices:
Measured throughput on some of our low-end Android phones
Formats
Spark has been optimized using a comprehensive collection of freely accessible PBR textures, complemented by assets generously shared by our clients. Our codecs target the formats best suited for this content: ASTC 4x4 for color and albedo maps, both with and without alpha, and EAC for normal maps, roughness, metalness, occlusion, and height.
On MacOS, Desktop PCs, and some Android devices Spark supports BC1, BC3, BC4, BC5, and BC7 formats. While there are several real-time GPU encoders that also target these formats, Spark provides higher quality and performance than the alternatives:
Error and Throughput of Spark BC codecs against competing BC encoders on the Adreno 740
Licensing
We have many flexible licensing options available for a wide range of applications and budgets. For licensing inquiries and evaluation requests contact us at spark@ludicon.com
Spark is a product by Ludicon LLC