Ignacio Castano 🔜 GDC

Ignacio Castano 🔜 GDC

@icastano.bsky.social

Master swimmer, mountain climber, and stand up coder. I work on texture processing tools at Ludicon. Formerly at Roblox, Thekla (The Witness), NVIDIA, OddWorld, Relic, Crytek.

357 Followers 181 Following 77 Posts Joined Dec 2023
2 days ago

I'll be at GDC next week! With rising RAM costs and ever-growing asset sizes, texture compression has never mattered more. Get in touch if you'd like to meet and chat.

3 1 0 0
6 days ago
Preview
Announcing spark.js 0.1 I'm excited to announce spark.js 0.1, now with WebGL support!

I'm excited to announce the release of spark.js 0.1 now with support for WebGL!

www.ludicon.com/castano/blog...

#webgl #webgpu #sparkjs

14 2 0 0
2 weeks ago

That's quite impressive. I'll have to give hardware decoding a try. It's unfortunate that the vulkan video extensions are not exposed in any mobile device, where the power savings would make them much more attractive.

0 0 1 0
2 weeks ago
Post image

Reminds me to the character rendering pipeline in Hades: www.youtube.com/watch?v=Vj9e...

Real-time compression would address the memory footprint problem, but the other challenges remain and it's unclear to me the hardware decoder would perform better than bink.

0 0 1 0
2 weeks ago

For Vulkan we provide spirv shaders and example code showing how to use them in your app. You would be responsible of the resource management and kernel dispatch.

I’m curious how the Vulkan video extensions are working for you. How’s the latency and what kind of decode rates are you able to get?

1 0 1 0
2 weeks ago

Yes, base texture and mips are block compressed in realtime. Spark is very fast and produces superior results than all other realtime codecs. It uses a constrained search space and is optimized for perceptual metrics. Happy to provide specific numbers for your target hardware.

1 0 1 0
2 weeks ago

Thanks, happy to help co-develop a solution for your use case, including switch support.

1 0 1 0
2 weeks ago

spark.js is just a webgpu runtime. The Spark codecs should run on both switch consoles, but access to Nintendo SDK requires demand from a licensed studio. I should be able to provide support for switch the moment a developer requests it.

0 0 1 0
2 weeks ago
Preview
Runtime Mipmap Generation 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 codecs must precompute mipmaps so they can ...

Runtime mipmap generation can reduce texture transmission by 25%, with no loss of quality.

Real-time doesn’t mean compromises: the same algorithms used offline can run efficiently on the GPU.

Learn about the spark.js implementation here:
www.ludicon.com/castano/blog...

13 4 2 0
3 weeks ago
YouTube
"Project Echo" early pre-alpha footage YouTube video by Molecular Matters

I've been working on something new since August 2025 and have decided to finally spill the beans:
Introducing "Project Echo", a deterministic Record & Replay tool for PS5:
www.youtube.com/watch?v=K_sd...

Please read the video description and let me know your brutally honest feedback!

50 13 16 6
1 month ago
Preview
Adventures in Neural Rendering In recent years, neural networks have started to find their way into many areas of rendering. While antialiasing and upscaling are probably the most well‑known uses, they’re far from the only ones—…

I’ve recently been tinkering with MLPs, exploring different ways they might be used in rendering to get a feel for their potential. I also put together a blog post with some initial impressions. interplayoflight.wordpress.com/2026/02/10/a...

25 6 0 0
1 month ago

For offline compression NVTT used to be best option, but these days most people have forked/reimplemented it and amalgamated several codecs. Kram is a good example. I wish there was a more lightweight option for texture processing in the same spirit as meshoptimizer.

0 0 1 0
1 month ago
Sponza texture compressed with KTX-UASTC.

I generated the UASTC gltf after taking the screenshots, so I don't have the exact same shot. UASTC quality is pretty good, but takes 3x the size on disk than AVIF and doesn't scale to lower video memory requirements.

1 0 1 0
1 month ago
Preview
GitHub - Ludicon/webgpu-clustered-shading: Personal experimental project to implement clustered shading with WebGPU. Personal experimental project to implement clustered shading with WebGPU. - Ludicon/webgpu-clustered-shading

And my fork of the webgpu demo that inspired this article: github.com/Ludicon/webg...

1 0 0 0
1 month ago
Preview
GitHub - Ludicon/gltf-tex: Command-line tool for processing textures in glTF models with AVIF compression and parallel processing Command-line tool for processing textures in glTF models with AVIF compression and parallel processing - Ludicon/gltf-tex

The tool that I built to update the model with AVIF textures:
github.com/Ludicon/gltf...

1 0 1 0
1 month ago
Preview
GitHub - Ludicon/sponza-gltf: A cleaned up version of the Sponza glTF. A cleaned up version of the Sponza glTF. Contribute to Ludicon/sponza-gltf development by creating an account on GitHub.

You can find the new glTF files in this repo:
github.com/ludicon/spon...

1 0 1 0
1 month ago
An Updated Sponza glTF – Ignacio Castaño

I've put together an updated version of the Sponza scene with uncompressed PNG and compressed AVIF textures. I wrote about the process and compared the results against KTX.

www.ludicon.com/castano/blog...

#webgpu #web3d #sparkjs

13 2 3 1
1 month ago
Normal Map Compression Revisited – Ignacio Castaño

While working on spark.js, I realized that common normal map compression formats weren’t supported in popular frameworks like three.js. I added the necessary support to three.js and wrote an article to shed some light on the topic:

ludicon.com/castano/blog...

#webgpu #webgl #threejs #sparkjs

17 11 0 0
1 month ago
Post image

Graphics Programming weekly - Issue 426 - February 1st, 2026 www.jendrikillner.com/post/graphic...

55 15 1 0
1 month ago

For what I'm working on, I can change every file, asset, shader, and C++ code and see the changes in <1s.

Shaders take roughly 100ms, C++ code 500ms.

Using my own custom tech and Live++.

23 3 1 0
1 month ago

Really worthwhile reading from @icastano.bsky.social! If you're building with WebGPU, spark.js gives you new choices for texture compression that weren't possible with WebGL.

Also, I need to update my older blog post. 😅

7 1 0 0
1 month ago
Choosing Texture Formats for WebGPU applications – Ignacio Castaño

Choosing texture formats for WebGPU apps
www.ludicon.com/castano/blog...

Loading large scenes and running out of VRAM? This guide is for you. A follow up to @donmccurdy.com's guide, with a new option: Ship AVIF/WebP over the network, with native block-compressed textures in VRAM

#webgpu #webgl

7 2 0 1
1 month ago
Preview
spark.js GLTF Demo: Real-Time Texture Transcoding for Faster Asset Delivery A GLTF viewer that ships textures as compact WebP or AVIF, then transcodes them to GPU-compressed formats in the browser. Small downloads, efficient VRAM. Spark.js handles the conversion so you get th...

spark.js has been featured on webgpu.com!

"Real-Time Texture Transcoding for Faster Asset Delivery"
www.webgpu.com/showcase/spa...

#webgpu #threejs #gamedev

18 5 0 0
1 month ago
Maxon Logo

I'm excited to announce that @maxonvfx.bsky.social has licensed Spark for their cutting-edge Redshift renderer! Looking forward to supporting their work.

9 2 0 0
2 months ago

Fuck Donald Trump

9 1 0 0
2 months ago

We have to impeach him.

19,489 3,043 646 207
3 months ago

I've also submitted a small spark.js update that enables the use of these formats when using the three.js GLTF loader:

github.com/Ludicon/spar...

Shaved a few more bytes too! The package is now down to 256KB!

#webgpu #threejs #sparkjs

1 0 1 0
3 months ago

three.js r182 was just released! 🎉

github.com/mrdoob/three.js/rel

I contributed support for RG normal maps, enabling BC5 and EAC_RG normal map compression in both the WebGL and WebGPU renderers.

#webgpu #webgl #threejs

9 1 1 0
3 months ago
🐇 meshoptimizer v1.0 Mesh optimization library that makes meshes smaller and faster to render

After nine years of development, meshoptimizer has reached its first major version, 1.0!

This release focuses on improvements in clusterization and simplification as well as stabilization. Here's a release announcement with more details on past, present and future; please RT!

meshoptimizer.org/v1

248 76 9 1