Took me the whole day, but the new HTML in Canvas is working in my #webgpu library.

The code has been working for hours, no errors, the missing piece was that I needed to reassign the texture after the copyElementImageToTexture call, because it didn't updated the reference automatically.

I can even select the text and copy & paste. That's the blue rectangle, the live selection!

#javascript #chrome #webdev #graphicsprogramming #computergraphics

Part of my recent progress on my library POINTS (https://github.com/Absulit/points)

These are two render passes. Background pass has an image. Foreground pass has a mesh and an image inside; mesh is scaled dynamically at runtime. The image preserves its ratio no matter the scale of the quad.

#webgpu #wgsl #graphicsprogramming #javascript #webdev #webdevelopment
#genart #creativecoding #digitalart #3d #cgi #computeshaders #shaders #generativeart

tidepoolers extreme

Noisedeck.app

Another cool things is that I've learned a lot about js these last few years. I know there's a lot more to learn, but I still recall there first iteration of my library, it was super slow, but it worked! And I thought that maybe something like C# could increase speed. It was basically the same, except the #javascript was slightly faster. The real issue was that I never understood #webgl, but it got fixed with #webgpu which makes a lot more of sense to me than webgl

#csharp #dev #development

Related to my #webgpu library, I always find kind of funny and annoying that, every time I try to develop an app with it, I find that there are missing features, so I have to cancel the app and go back to my library and add the feature. This is good in a way because it's cool to know I have that power. I couldn't imagine myself needing a feature in threejs and try to add it without trying first to understand the code base, which would probably take weeks.

I saw a video yesterday about #threejs and how thanks to their agnostic approach to the renderer which is isolated, they were able to add new renderers like the #webgpu one. I was thinking how I don't do that in my library and also how that ship has sailed, if I wanted to do that for a different renderer in the future I wouldn't have any idea of what to do, which is kind of funny.

Meaning, my library is pretty stuck with webgpu, or as the kids say: coupled.

I wish my job was in something related to #webgpu. I think about it all the time. But I certainly wouldn't like to implement again what I already did in my library. It's like, ok I like to work in the innards of computer graphics, but I certainly wouldn't like to put my hands on Vulkan. I really like my library as a hobby. I work in my library so I can later make stuff with it, not necessarily webgpu but I love the topic, super interesting & thanks to it I was able to understand compute shaders.

New week, more slides: Run LLMs Locally

Now including wllama to run GGUF models inside your browser!

wllama uses llama.cpp, WebAssembly and WebGPU, bringing a completely new experience of LLMs into the web.
It has no 4 GB limitation and is faster than Transformers.js.

I also added translations using the HY-MT model from Tencent.

https://codeberg.org/thbley/talks/raw/branch/main/Run_LLMs_Locally_2026_ThomasBley.pdf

#ai #llm #llamacpp #wllama #stablediffusion #qwen3 #glm #localai #gemma4 #webgpu #opencode #mtp #webassembly

OK I think I have the concept wrong. It's not to update values on every frame but to send some kind of static data, but that's more like a constant, isn't it? #webgpu
OK so I'm implementing #webgpu immediates, which I find the concept really interesting, but then again if I have a bundle encoder, I can only send data once because it's cached. So... why do I use bundle encoders at all if I can't do this? What am I doing wrong?