Sparkspark logo

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:

Quality and throughput vs offline codecs

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:

Compressed Image
Spark
Original Image
Original
Lorikeet by Simon Fenney
4:1

Use Cases

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:

  • Transcoding
  • Virtual Texturing
  • Optimize Workflows
  • UGC Textures
  • Procedural Textures
  • Vector Graphics

Let users customize their avatars and create content on the device without restrictions.

User Generated Content

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.

Procedural Textures

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.

Virtual Texturing

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 Liveries

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 GPU Rendering

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.

Vector Graphics

Technology

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.

Evaluation

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.

Spark Demo: plasma texture
Spark Demo: HDR environment
Spark Demo: HDR environment in diff mode
Spark Demo: benchmark result

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.

Spark for Unity demo: a glTF FlightHelmet scene rendered with Spark-compressed textures on iPad
Spark for Unity demo: procedural Mandelbrot virtual-texture streamed and encoded in real time

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.

Licensing

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.

Contact Us

Or call +1 (530) 341-8666.