Image Loading on the Web
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...
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...
The other day I was looking at this clustered shading WebGPU demo and was surprised by the jarring texture compression artifacts: The glTF model using KTX ETC1S...
Normal maps are one of the most widely used texture types in real-time rendering, but they’re also a bit unusual. They don’t represent color, rely on geometric ...
This is a supplement to Don McCurdy’s excellent article, Choosing texture formats for WebGL and WebGPU applications. Don covers the tradeoffs between modern ima...