Encoding Render Targets for Free with Tile Shaders
The Spark codecs are often bandwidth-bound. The codec usually reads an uncompressed RGBA8 texture and outputs a block-compressed texture that, depending on the ...
The Spark codecs are often bandwidth-bound. The codec usually reads an uncompressed RGBA8 texture and outputs a block-compressed texture that, depending on the ...
I’m excited to announce the release of Spark 1.4. Spark is a set of real-time GPU texture codecs that produce results competitive with offline encoders wh...
Today I’m releasing Spark for Unity, a Unity package that brings the Spark texture codecs to the Unity engine. It’s available now on GitHub and it...
You would think that loading images in the browser is a solved problem. After all, websites are basically composed of text and images. Turns out that loading im...
The Apple Lossy compression format was introduced in the A15 and M2 chipsets (which share the same GPU generation) and it enables sampling and rendering to text...
In my previous post Writing to Compressed Textures in Metal, I showed how Metal heaps can be used to alias buffers and textures to inspect their actual memory l...
About a year ago I wrote GPU Texture Compression Everywhere, a post in which, among other things, I lamented that Metal did not have support for writing to comp...
One of the things I’ve always lamented about hardware image formats is the slow pace of innovation. Developers were usually unwilling to ship textures in ...
I’m excited to announce spark.js 0.1, now with WebGL support! spark.js has been evolving since I released it last summer. Since then, the WebGPU ecosystem...
One of the advantages of runtime texture compression is that mipmaps can also be computed at runtime and do not need to be transmitted. In contrast, offline cod...