Sign in

Iwo Plaza | TypeGPU

@iwoplaza.dev
139 followers 291 following 59 posts

Lead Developer on typegpu.com // @swmansion.com 👨🏻‍💻🐸💚 github.com/iwoplaza 🧟🕷️⛏️ github.com/mobends 🎶🎹🎶 soundcloud.com/ivesiris

PostsRepliesMedia
Reposted by Iwo Plaza | TypeGPU
WhatTheStack @wts.rocks · 12/08/2026
JavaScript can do almost anything… but operator overloading is still missing. 👀 At What The Stack 2026, @iwoplaza.dev from Software Mansion will talk about the weird, clever, and sometimes cursed ways developers have tried to solve it, including the approach TypeGPU uses today. ⚡🧠
021
Reposted by Iwo Plaza | TypeGPU
Simon Le Marchant @marchantweb.com · 14/07/2026
Introducing Shaders v3 🔥 Our biggest release yet. Built for design engineers who ship magic. Design production-ready WebGPU shader effects on an infinite canvas, powered by a new rendering engine that's up to 25× faster. shaders.com/updates/intr...
shaders.com
Introducing Shaders v3 — Shaders
Everything new in Shaders v3, from the redesigned editor to our lightweight TypeGPU rendering engine.
041
Reposted by Iwo Plaza | TypeGPU
WhatTheStack @wts.rocks · 29/07/2026
🎮 Konrad Reczko is bringing shaders to #WTS. Software Engineer at Software Mansion, graphics programming enthusiast, and the person wondering how every game effect was rendered. TypeScript, TypeGPU, pixels, and the Jelly Slider. 📅 Sept 19 | Skopje 🎟️ wts.sh
011
Iwo Plaza | TypeGPU @iwoplaza.dev · 27/01/2026
I am using Three.js examples to track how well ByeGL is emulating WebGL on top of WebGPU, and today another one started working 🎉 #byegl #webgpu #webgl
031
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/12/2025
Thanks for having me! 💜
080
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/12/2025
Taking it to the next level 👏🤯
030
Reposted by Iwo Plaza | TypeGPU
Eric Lee @sdust.dev · 04/11/2025
Just discovered TypeGPU. It's a TypeScript-first way to write GPU shaders and compute pipelines. You stay in TypeScript, it auto-generates WGSL for WebGPU. 🔥 Perfect for experimenting with rendering, compute, and even AI inference in the browser. docs.swmansion.com/TypeGPU/exam...
052
Reposted by Iwo Plaza | TypeGPU
JSNation @jsnation.gitnation.org · 13/09/2025
WebGPU is exciting — but bridging libraries is tricky. 🎮@iwoplaza.bsky.social introduces TypeGPU: a TypeScript way to write shaders that talk across Three.js, TensorFlow & more. For devs curious about graphics + interop. See you at JSNation US?
jsnation.us
See you at JSNation US?
jsnation.us
041
Iwo Plaza | TypeGPU @iwoplaza.dev · 09/09/2025
The APIs related to uniforms (gl.getActiveUniform, gl.getUniformLocation) are now way more accurate. To test it out, I made a simple multi-light example to diff between ByeGL and WebGL #byegl #webgpu #webgl
040
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/09/2025
I dug up a WebGL game I made 8 years ago, and it's running on WebGPU without any changes thanks to #byegl 🥯🐶🎉 #webgl #webgpu
030
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/09/2025
See the source-code, and consider contributing with issues or PRs 🙏 github.com/software-man... And while you're at it, give us a star! ✨
github.com
GitHub - software-mansion-labs/byegl: 🥯🐶 A reimplementation of the WebGL API on top of WebGPU, allowing for gradual migration into the future of 3d on the web
🥯🐶 A reimplementation of the WebGL API on top of WebGPU, allowing for gradual migration into the future of 3d on the web - software-mansion-labs/byegl
000
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/09/2025
Get started here: software-mansion-labs.github.io/byegl/ It's very early in development, but the promise of mixing WebGL and WebGPU even in the simplest of examples is already exciting! 🥯🐶
120
Iwo Plaza | TypeGPU @iwoplaza.dev · 01/09/2025
"byegl" is an initiative to make the WebGL->WebGPU transition seamless for established WebGL apps. In the end, apps that use "byegl" to migrate will be built on top of WebGPU, not on top of potentially limiting abstractions. Follow us along on the journey! #webgl #webgpu #byegl
140
Iwo Plaza | TypeGPU @iwoplaza.dev · 31/08/2025
The surface below is drawn using vanilla WebGL, yet the vertex buffer is generated procedurally with a WebGPU compute shader. Once complete, my solution will allow established WebGL apps to migrate to WebGPU, *incrementally*! I'm shaking from excitement 🫨 #webgpu #webgl #byegl
031
Reposted by Iwo Plaza | TypeGPU
Alex Sweeney @alexjs.dev · 29/08/2025
ajs1998.github.io/double-pendu... I made a simulator to explore the space of double pendulums! It runs in your browser with WebGPU, and it's very fast! I wrote a little about it here: alex.leaflet.pub/3lxizbtwyg22d
ajs1998.github.io
Simulation steps per second
1103
Iwo Plaza | TypeGPU @iwoplaza.dev · 23/08/2025
Our main effort is definitely WGSL, as we’re betting on it becoming the go-to standard going forward, but a few plans and interests have been materializing lately to give GLSL generation a shot 👀 Tracking here: github.com/software-man...
github.com
feat: Scaffold the @typegpu/glsl package · Issue #1637 · software-mansion/TypeGPU
The main export of @typegpu/glsl would be the GLSLGenerator, a class matching the new ShaderGenerator interface, responsible for generating GLSL from tinyest. The main uses for the library would be...
000
Iwo Plaza | TypeGPU @iwoplaza.dev · 18/08/2025
Thank you so much! 🙌
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 24/07/2025
www.youtube.com/watch?v=pBRL...
youtube.com
Iwo Plaza – Your GPU is a JavaScript runtime* (TypeGPU deep-dive)
YouTube video by Software Mansion
030
Iwo Plaza | TypeGPU @iwoplaza.dev · 24/07/2025
My talk titled "Your GPU is a JavaScript Runtime*" just landed on YouTube! 👨‍💻 I answer WHY and HOW we compile JS/TS to WGSL, how it improves interop for the whole ecosystem, and the added dimension of customizability it unlocks for WebGPU libraries Video below ⬇️ #webgpu #typegpu #typescript
182
Iwo Plaza | TypeGPU @iwoplaza.dev · 24/07/2025
The code above creates a well-typed view over an existing buffer, so you don't have to use TypeGPU APIs anywhere else. We try to be as non-invasive as possible, so people can easily incorporate or eject out granularly.
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 24/07/2025
Glad you stumbled upon us! I know it's not everyone's cup of tea, but we try to make the syntax as similar as we can to WGSL. As for the maximalist part, you can pick and choose which part of WebGPU you want help with, and we'll stay out of your way for the rest 💜
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 15/07/2025
Interesting! 👀 Would love to share notes, we’re building a very low-level and type-focused library on top of WebGPU called TypeGPU, I’m sure we’ve stumbled upon similar challenges
110
Reposted by Iwo Plaza | TypeGPU
Maxime @maxime.bsky.social · 15/07/2025
floating soft glass made with WebGPU, compute shader, and a fully custom material r3f.maximeheckel.com/webgpu/glass
3353
Iwo Plaza | TypeGPU @iwoplaza.dev · 15/07/2025
Sorry guys, turns out I’ve been making a crab character all along 🦀 It’s really fun to make all of this from scratch in a custom engine, I’m having a blast! #typegpu #webgpu
170
Iwo Plaza | TypeGPU @iwoplaza.dev · 13/07/2025
Remember to always test on device… I thought it was going to run easy 60fps, but only quarter-resolution runs smoothly 🐢 I guess I gotta embrace the pixelated look! #typegpu #webgpu
010
Reposted by Iwo Plaza | TypeGPU
Software Mansion @swmansion.com · 11/07/2025
TypeGPU 0.6.0 heading your way! 🚀 🔁 Shader logic re-use – share logic across shaders without resorting to string concat 🧩 Dependency injection – parametrize shaders at compile time with slots 🔍 Auto-generated arg + return types in typed functions – inferred from your schema … And more! 👇
171
Iwo Plaza | TypeGPU @iwoplaza.dev · 30/06/2025
SDF ray marching written in TypeScript, compiled into WebGPU Shading Language! I think we struck a good balance of flexibility & expressiveness, while vastly improving the DX of working with WebGPU (from the perspective of a TypeScript app) GPU & CPU end-to-end type safety, tRPC/oRPC style 🚀
040
Iwo Plaza | TypeGPU @iwoplaza.dev · 29/06/2025
I think it was able to get it right on first try because: - The TypeScript LSP was able to give feedback to the model along the way - The I/O bridge between the CPU & GPU is type safe, no need to maintain both sides of the app separately (less room for runtime errors) Expect more updates on this 👀
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 29/06/2025
I hate to say it but... LLMs are decent at writing TypeGPU shaders. @thdxr.com's opencode wrote a few SDF functions, then created a simple ray marched scene. Mind you, this is NOT a Three.js scene! It's a custom fragment shader that sends rays into an "imaginary" space, written fully in TypeScript
120
Iwo Plaza | TypeGPU @iwoplaza.dev · 28/06/2025
Exciting! ✨ It would be awesome to hear your perspective on the problem of interop between WebGPU-based libraries like Tensorflow.js and Three.js, and possible ways forward. bsky.app/profile/iwop...
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 26/06/2025
Looks beautiful! 💜
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 24/06/2025
Thanks so much for the shout out! 🚀 Really fun episode, I am especially interested in the *secret* Nintendo Switch project... 👀
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 23/06/2025
Definitely a XorDev classic 👏👏 Reimplementing it in TypeScript went smoother than last time. Love playing with the parameters on this one 🫨 Code & Preview (WebGPU required): docs.swmansion.com/TypeGPU/exam... #webgpu #typegpu #shaders
1132
Reposted by Iwo Plaza | TypeGPU
Software Mansion @swmansion.com · 26/05/2025
TypeGPU makes defining and executing your own compute pipelines easier than ever. 🎉 It's designed to be foundational and give developers full control, while improving DX via type safety and modularity. Watch the video to see what we’ve been up to. 🔥 www.youtube.com/watch?v=QrHZ...
youtube.com
Simplifying Compute Shaders with TypeGPU: GPU Worklets & More
YouTube video by Software Mansion
171
Iwo Plaza | TypeGPU @iwoplaza.dev · 19/06/2025
We're not using Cloudflare Insights 🤔. I checked the page on Zen, and it does in fact not load at all because of WebGPU, but I am not getting these other errors. Could it be an extension?
000
Iwo Plaza | TypeGPU @iwoplaza.dev · 18/06/2025
I’ll take a look 👀. Thanks!
100
Iwo Plaza | TypeGPU @iwoplaza.dev · 18/06/2025
I HAD to know how this works 😱 I rewrote it in TypeScript and unminimized parts of the code for readability. TypeGPU takes that code and compiles it into WGSL (WebGPU Shading Language), so it can be executed on the GPU 🚀 Code & Preview: docs.swmansion.com/TypeGPU/exam... #WebGPU
2273
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
Hey guys! Happy to see excitement from the TypeScript community 😤💜 I just posted a thread explaining my reasoning behind creating TypeGPU, and how it fits into the ecosystem apart from just a WebGPU abstraction that has more synergy with TypeScript bsky.app/profile/iwop...
020
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
We're building libraries on top of TypeGPU as we speak, and we would love to work with everyone building their own GPU-enhanced libraries! You can keep full flexibility of your internals, and still use plain WebGPU & WGSL. We handle the API, you handle your lib's core value! 🔗
010
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
And it's not just the "glue code" that becomes better, library APIs can become more customizable! A library can defer shader logic to the user by accepting marked TypeScript functions. Dependency Inversion, without compromising efficiency! 🚀 (8/n)
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
By storing the memory layout both on the type-level, as well as at runtime (utlizing Zod-like schemas), we handle the serialization of user-defined data types with ease. Hover over any buffer or piece of shader logic, and the IDE can understand it. (7/n)
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
== left (vanilla WebGPU): - WGSL code as a string - Untyped boundary between CPU and GPU == right (TypeGPU): - It's a marked TypeScript function - Types flow from the CPU to the GPU - Same flexibility, but better synergy with TypeScript (6/n)
100
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
I like to use the analogy of server & client, as writing both sides in TypeScript gives you the same benefits here! (CC @t3.gg 👀) The GPU can be thought of as just an endpoint with an API, and instead of binary blobs and strings, that API can be made type-safe! (5/n)
100
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
What if we could write the glue code in TypeScript, and compile it to WebGPU Shading Language instead? ... We would get hints from the language server about both the output of Three, and the input of Tensorflow. This is what TypeGPU gives you, when you build on top of it! (4/n)
130
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
However, it's rarely the case that APIs are seamlessly compatible with one another, so we need "glue code" for interop. We have two options: 1. Copy data, and transform it in JS/TS. 2. Write a compute shader to operate on VRAM directly, and glue the APIs there. (3/n)
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
Let's say we wanted to pull a texture out of Three.js, and use it as a tensor in Tensorflow.js. If their internal data structure matches, we can just pass a VRAM pointer to avoid copying to JS and back unnecessarily (could be ~100x slower than the actual work we want to do) (2/n)
110
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
WebGPU is an amazing piece of technology, allowing for truly cross-platform graphics and GPGPU programming. It's being used by frameworks like Three.js and Tensorflow.js to accelerate their internals ⚡ However, when we try to connect libraries together, we soon hit a limit... 🧵 THREAD 🧵 (1/n)
151
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
Both look awesome! I would love to see the "light" version combined with another contrasting & vibrant hue as well 🤩
010
Reposted by Iwo Plaza | TypeGPU
sai @texoport.in · 17/06/2025
a smol side quest never hurt anyone
code:
const myVShader = VertexShader(function* () {
  const position = yield* glsl.attribute("position", glsl.types.vec3())
  const mvpMatrix = yield* glsl.uniform("mvpMatrix", glsl.types.mat4())

  const worldPos = yield* glsl.let(
    "worldPos",
    glsl.types.vec4(),
    glsl.mul(mvpMatrix, glsl.vec4(position, position, position, 1.0))
  )

  const scaledPos = yield* glsl.let(
    "scaledPos",
    glsl.types.vec4(),
    glsl.mul(worldPos, glsl.float(2.0))
  )

  yield* glsl.assign("gl_Position", scaledPos)
}).compile()

console.log(myVShader)


--- output ---

#version 100

attribute vec3 position;
uniform mat4 mvpMatrix;

void main() {
  vec4 worldPos = (mvpMatrix * vec4(position, position, position, 1.0));
  vec4 scaledPos = (worldPos * 2.0);
  gl_Position = scaledPos;
}
171
Iwo Plaza | TypeGPU @iwoplaza.dev · 17/06/2025
I think the god rays make my fake caustics shader complete! ✨ The shader is written in TypeScript, then compiled to WGSL (WebGPU Shading Language) using TypeGPU! 🚀 #webgpu #typegpu #shader
130