Real-Time GPU Texture Codecs
Spark is a set of real-time GPU texture codecs that produce results that are competitive with offline encoders, but have much higher performance:
Spark vs offline codecs on M1 MacBook Pro
The textures produced by the Spark codecs 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:
Many applications require textures that can't use offline compression. When these textures are left uncompressed, the larger memory footprint and higher bandwidth costs hurt performance and increase power consumption. Real-time texture compression solves these issues, enabling the following use cases:
Let users customize their avatars and create content on the device without restrictions.
This is absolutely massive for a lot of mobile games (UGC, games that allow user customization, etc) Ignacio is a top notch engineer so I'm more than excited to give this a try at some point.
— David Sena, Graphics Technical Director
Generate textures using procedural descriptions such as substance materials or custom shaders.
Combine terrain layers, apply decals, and cache the results to avoid expensive pixel shader composition. Encode tiles to GPU-native formats for a predictable memory footprint and reduced bandwidth at sample time.
We are really excited about the new possibilities Spark opens for our real time texture composition pipeline on mobile devices and web. Minimizing texture storage while keeping compatibility with various formats is crucial for modern content sharing platforms.
— Sebastian Aaltonen, Technical Director (Rendering) at HypeHype
Decode from formats optimized for storage and transmission like WebP or AVIF and re-encode to GPU-native formats at load time.
Infinite Flight features more than 1,000 unique liveries across its fleet. These textures are stored as WebP and transcoded to native GPU formats at runtime, reducing download size and storage requirements.
Spark has been a game-changer for our workflow, allowing us to reduce our downloadable content size by more than half while actually improving overall quality. Ignacio’s professionalism and the high level of support he provides have made the entire process seamless.
— Philippe Rollin, CTO at Infinite Flight
Enable instantaneous content updates and eliminate the need for complex asset caching systems.
Maxon Redshift renders scenes with thousands of textures that would exceed available VRAM uncompressed. Spark compression enables them to fit in GPU memory without introducing long load times.
Vector graphics are compact, scalable, and sharp, but expensive to render on low-end devices. Caching them as textures improves performance, but without runtime compression the memory cost becomes prohibitive.
Spark runs on virtually every modern GPU, across most graphics APIs (including Metal, Vulkan, OpenGL, and Direct3D) on mobile, desktop, consoles, and the web. For the full list of supported platforms and versions, see Platform Support.
Block compression is intrinsically parallel, but targeting the GPU well requires carefully crafted algorithms that minimize divergence and fit within tight resource limits. Refined over years of compression experience, Spark maximizes quality while saturating memory bandwidth, implementing numerically sensitive code in half floating point for consistent results across GPUs. For more details see Performance.
Spark encodes to the standard compressed texture formats on each platform. On mobile it targets ASTC (4x4 and 6x6), ETC2, and EAC; on macOS, desktop PCs, and some Android GPUs it also targets the BC family: BC1, BC3, BC4, BC5 and BC7. For the full list and quality comparisons, see Formats.
You can evaluate Spark for 30 days at no cost. Use the demos, apps, and examples below to test quality and performance on your own content and devices. If you need help with a specific platform, workflow, or integration, get in touch.
The native demos run the Spark codecs on Vulkan (Android) and Metal (iOS). They showcase encoder quality across a range of example textures and let you benchmark performance on your own device.
The native Spark demo is available as an Android (APK) build. An iOS App Store version and a Google Play listing are coming soon.
spark.js brings the Spark codecs to the web through a simple JavaScript API. The project is available on GitHub and ships with many examples you can run in your browser. Two of them are embedded below:
Spark for Unity integrates the Spark codecs into Unity. The demo app contains many example textures encoded with Spark and demonstrates other use cases such as glTF asset loading and virtual texturing.
Full source code of the Unity demo is available on GitHub. The compiled app is available on the App Store for iOS, or as a macOS, Windows, or Android (APK) build. A Google Play listing is coming soon.
Spark is available under two licensing paths:
Public license. A subset of the Spark codecs is published openly through our spark.js and Spark for Unity integrations. They're free until your product reaches $100,000 in lifetime revenue, with low one-time fees for commercial projects and lifetime distribution rights included. This is the right path for most indie and mid-size projects.
| License Level | Free | Indie | Pro |
|---|---|---|---|
| Lifetime Revenue | Under $100K | Over $100K | Over $100K |
| Development Budget | — | Under $1M | Over $1M |
| Fee | Free | $1,000 | $10,000 |
| Distribution rights | Lifetime | Lifetime | Lifetime |
| Support | No | No | 1 year |
| Optional | |||
| Attribution Waiver | No | No | $5,000 |
| Yearly Support | $2,000 | $2,000 | $5,000 |
Licenses are granted per project with no royalties or ongoing fees. Free use is governed by our End User License Agreement, and commercial use by our Commercial License Agreement.
Enterprise license. The full Spark codec suite includes additional codecs, a wider range of quality levels, platform-specific optimizations, source code access, and custom integrations. It is available under an annual B2B agreement starting at $10,000/year, with pricing based on project scope and supported platforms. This is the right path for studios with custom pipeline requirements, console targets, or production support needs.
Get in touch to discuss your project, pricing, and the best setup for your use case.
Or call +1 (530) 341-8666.