@absulit@mastodon.social avatar absulit , to random

So I was trying to implement ping-pong buffers in my library (emphasis on trying). The code has no errors, but the values are not changing, and I think is basically how my library is built because I think (because I couldn't figure it out) the entries are being swap twice or not being swap at all and am tired, but I have another idea to test.

@juretriglav@mastodon.social avatar juretriglav , to random

Making a implementation of Lucas Alber's Markov Chain Path Guiding GI paper

Demo of real-time GI, walking through a hall, changing light parameters

absulit ,
@absulit@mastodon.social avatar

@juretriglav amazing!

@castano@mastodon.gamedev.place avatar castano , to random

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.

https://www.ludicon.com/castano/blog/2026/02/an-updated-sponza-gltf/

castano OP ,
@castano@mastodon.gamedev.place avatar

The tool that I used to update the textures is at:

https://github.com/Ludicon/gltf-tex

castano OP ,
@castano@mastodon.gamedev.place avatar

And my fork of the webgpu demo that inspired this article:

https://github.com/Ludicon/webgpu-clustered-shading

@thekhronosgroup@fosstodon.org avatar thekhronosgroup , to random

We are seeking short talks, demos, and presentations that showcase real world use of , , , and Splatting on the web for the 3D on the Web special event during the week of GDC.

If you are building something interesting and would like to share it with the community, we would love to hear from you. Please note that sales forward presentations are unlikely to be selected.

To submit a 10 minute talk or demo, please email your description to [email protected]

ALT
@castano@mastodon.gamedev.place avatar castano , to random

While working on spark.js, I realized that normal map compression formats weren’t supported in popular frameworks like three.js. I addressed that gap by adding the necessary support to three.js and wrote an article to shed some light on the topic, drawing from my experience in real-time 3D graphics.

https://www.ludicon.com/castano/blog/2026/02/normal-map-compression-revisited/

@juretriglav@mastodon.social avatar juretriglav , to random
@castano@mastodon.gamedev.place avatar castano , to random

spark.js has been featured on webgpu.com!

"Real-Time Texture Transcoding for Faster Asset Delivery"
https://www.webgpu.com/showcase/spark-js-gltf-real-time-compression/

@h4ckernews@mastodon.social avatar h4ckernews Bot , to random

ChartGPU – WebGPU-powered charting library (1M points at 60fps)

https://github.com/ChartGPU/ChartGPU

@absulit@mastodon.social avatar absulit , to random

For the new version of POINTS I'm adding a way to load an HTMLElement as a texture. I think it's a simple way to load a weird font asset without an atlas/spritesheet. Or basically anything in the DOM.

Top Left: HTML
Below: texture in the canvas.

https://github.com/Absulit/points

ALT
@absulit@mastodon.social avatar absulit , to random

Another experiment with my POINTS library. This is basically an old physarum/slime demo I made a while ago, but rebuilt with compute shaders, particles and a lot more efficient than before.

absulit OP ,
@absulit@mastodon.social avatar

The idea of the physarum is that the particles leave a trail and are capable of following trails from other particles if the trail is stronger than the other particles, so they eventually follow each other.

The cool thing about this concept is that you can make the particle follow other things rather than the trails, like in this case a video.

The particles have two options: spawn from the center or spawn randomly, and this changes a bit how the video is interpreted.

@h4ckernews@mastodon.social avatar h4ckernews Bot , to random
@witchcrafter@mastodon.gamedev.place avatar witchcrafter , to random

Continuing my render pipeline tooling experiments - now testing simple deferred lighting!

☀️ directional sunlight
💡 point lights
🏝️ ambient light
🗺️ normal map support

video/mp4

@absulit@mastodon.social avatar absulit , to random

With the new version of my WebGPU library POINTS v0.6.0 (https://github.com/Absulit/points), I added a bunch of new features like support for depth maps, cameras, bloom and others, so I wanted to make a demo that used all of these.

Oscillating particles that move up and down like waves, some are emissive, and the camera zooms in and out.

absulit OP ,
@absulit@mastodon.social avatar

This demo has a 262K+ instanced particles (cubes) animated in compute shader, movement driven by a noise texture, it uses the depth map to create a slight depth of field and also some particles are emissive and to make the effect complete it has some bloom that affects only the bright particles, this thanks to the HDR output that allows those cubes to have a brightness beyond white and then those values are tonemapped to fit in the final output.

absulit OP ,
@absulit@mastodon.social avatar

All of this and running smoothly without losing any frames. This is the current state of graphics on the web.

@absulit@mastodon.social avatar absulit , to random

I think I understand better compute shaders than before. A thing that still eludes me is the fact that, even when I know I have 1 million particles, they are not all visible, even when I thought that was the case. I'm not entirely sure what it is, (not an expert but I manage to) it could be some sync issue related to random numbers, like it generates the same value and the particles overlaps

absulit OP ,
@absulit@mastodon.social avatar

I have this very clear demo with a lot less particles than a million, and it looks like it has more that the million one.

Also the workgroup sizes are different so that might be related.

I will check this later.

@absulit@mastodon.social avatar absulit , to random

I also updated my POINTS library a couple of days ago to v0.6.0 (and a fix in the queue) with depth maps/shadow maps, bloom, wireframes

https://github.com/Absulit/points

The image is from a personal demo I'm currently working

ALT