Sign in

iiinova is part of the Atmosphere — an open, public network where you own your identity.

Martin Laxenaire

@martin-laxenaire.fr
683 followers 138 following 101 posts

Freelance front-end developer. Javascript, WebGL, WebGPU and stuff. martin-laxenaire.fr Author of curtainsjs.com and martinlaxenaire.github.io/gpu-curta… - also an @okaydev.co‬

PostsRepliesMedia
Martin Laxenaire @martin-laxenaire.fr · 11/12/2025
#gpucurtains v0.15 is out! 🚀 Now with full core glTF features and PBR shading support. Repo → github.com/martinlaxena... Website → martinlaxenaire.github.io/gpu-curtains/ glTF model viewer → martinlaxenaire.github.io/gpu-curtains... #webgpu #3d #javascript #gltf
032 3
Martin Laxenaire @martin-laxenaire.fr · 14/11/2025
Super happy to see my portfolio being picked by @muzli.bsky.social yesterday! 🎉 → muz.li/picked/2025-... → martin-laxenaire.fr
030 3
Martin Laxenaire @martin-laxenaire.fr · 26/09/2025
Switched to a MRT approach for masking thanks to @douglilliequist.bsky.social It's cleaner plus it allows to easily add/remove meshes (based on a single uniform toggling) to the selective bloom, like on mouseover! 💥
020 2
Martin Laxenaire @martin-laxenaire.fr · 24/09/2025
Working on adding a post-processing implementation using compute shaders for #gpucurtains. Here's an example with a selective compute bloom pass. Not sure I've used the most straightforward process (depth handling was tricky), but it's working. #webgpu #javascript
120 2
Martin Laxenaire @martin-laxenaire.fr · 08/09/2025
I've build myself a new portfolio - let's start a new chapter! 🚀 A tribute to the 80s arcade video games where you'll need to play and interact with the site to unlock all the content and features. Will you reach the 100% mark? → martin-laxenaire.fr
1267 26
Martin Laxenaire @martin-laxenaire.fr · 24/07/2025
So cool to see #webgpu finally running on @firefox.com on Windows! 🔥 Some #gpucurtains examples are still broken (lack of rgba16float texture support, video textures, a few shaders to patch...) but it's a huge step forward!! martinlaxenaire.github.io/gpu-curtains...
A 3D scene containing meshes and their planar reflections rendered with WebGPU on Firefox
020 2
Martin Laxenaire @martin-laxenaire.fr · 11/04/2025
My first take at implementing volumetric lighting. Quite happy with the result (even tho it's taking its toll on my poor integrated GPU). 💥 (I might be cooking something... 😁) #webgpu #gpucurtains #javascript
0101 10
Martin Laxenaire @martin-laxenaire.fr · 04/04/2025
Also, it's working out of the box for more complex scenarios like PBR materials or shadows, and we can even use render bundles all the way! 💥 Here's a test scene for you to play with: martinlaxenaire.github.io/gpu-curtains...
010 1
Martin Laxenaire @martin-laxenaire.fr · 04/04/2025
Wanted to try planar reflections with #gpu-curtains for a while. Turned out I already had everything in place to implement it, just had to figure out a few details to make it work. Try here → martinlaxenaire.github.io/gpu-curtains... #webgpu #javascript
141 4
Martin Laxenaire @martin-laxenaire.fr · 01/04/2025
Did you know you can use webcam media streams as #webgpu textures with #gpu-curtains? 👋 Try here: martinlaxenaire.github.io/gpu-curtains...
021 2
Martin Laxenaire @martin-laxenaire.fr · 13/03/2025
Suddenly remembered I'd created a color palette generator when working on generative coding tests a few years ago (2021). Decided to create a proper gallery to put everything there: www.martin-laxenaire.fr/generative/ #creativecoding #generative #javascript
191 9
Martin Laxenaire @martin-laxenaire.fr · 03/03/2025
Based on the current quality, we can enable or disable features, increase the DPR and render targets resolutions, camera far value and so on. 8/9
110 1
Martin Laxenaire @martin-laxenaire.fr · 03/03/2025
3. Transparency Almost all the meshes drawn are transparent. This can easily lead to depth related issues, with objects being drawn on top of each other when they shouldn't, especially with particles. At that time I didn't know about OIT, so I came up with my own solution. 5/9
100 1
Martin Laxenaire @martin-laxenaire.fr · 03/03/2025
2. Instancing The particles and waves representing the sea are both instanced using a tile system. As the camera moves, the tiles move accordingly, allowing to draw only whats currently visible in the camera frustum. 4/9
100 1
Martin Laxenaire @martin-laxenaire.fr · 03/03/2025
For a really soothing ambience, we've added a day/night cycle that subtly affects the color scheme and post processing effects like lens flare. 3/9
100 1
Martin Laxenaire @martin-laxenaire.fr · 03/03/2025
1. Concept The idea is that the user navigates a quiet sea and sails through the history of recreational boating. Hovering markers along the path invites her/him to learn more about said history. The navigation path is randomly generated each time for a unique experience. 2/9
100 1
Martin Laxenaire @martin-laxenaire.fr · 25/02/2025
#gpucurtains v0.12 is out! 🚀 So many new features since last annoucement: built-in shading including PBR, spot lights, glTF animations and skinning, orthographic camera, stencil support... → martinlaxenaire.github.io/gpu-curtains/ → github.com/martinlaxena... #webgpu #javascript
1144 14
Martin Laxenaire @martin-laxenaire.fr · 05/02/2025
My 4th and last #gpucurtains tutorial on @okaydev.co is up, and it's a big one! Learn how to use compute shaders to update instances positions, build a shadow map from scratch and more... → okaydev.co/articles/div... #webgpu #javascript
2125 12
Martin Laxenaire @martin-laxenaire.fr · 31/01/2025
Look at how easy it'd be to create those nice soap bubbles:
Code excerpt showing how to create the soap bubbles
020 2
Martin Laxenaire @martin-laxenaire.fr · 31/01/2025
I think you're gonna love what's coming in the next #gpucurtains release... #webpgu #javascript
2101 10
Martin Laxenaire @martin-laxenaire.fr · 27/01/2025
Some basic things like defines and if/else at least. At the moment, here's an example of how I'm generating my fragment shader, but I'm not very fond of using template litterals as I find it kinda messy:
100 1
Martin Laxenaire @martin-laxenaire.fr · 24/01/2025
While I was at it, thought I would start implementing #gltf extensions in #gpucurtains. Started with transmission. What a silly idea, it was way more challenging than expected! 😅 But hey, look at that! PBR shading with transmission, dispersion, volume, ior... So cool! #javascript #webgpu
151 5
Martin Laxenaire @martin-laxenaire.fr · 20/01/2025
#glTF support is going to be greatly improved in the next #gpucurtains update! 💥 - Animations ✅ - Morph targets ✅ - Skinning ✅ - Shadow support ✅ #webgpu #javascript
052 5
Martin Laxenaire @martin-laxenaire.fr · 19/12/2024
Working on implementing indirect drawing in #gpucurtains. Took me a bit of time but I've successfuly managed to port @toji.dev GPU culling example (see toji.github.io/webgpu-bundl...) using an indirect buffer, a render bundle and a compute shader. Super happy about this one! 🎉 #webgpu
2113 11
Martin Laxenaire @martin-laxenaire.fr · 16/12/2024
#gpu-curtains v0.9.0 is here! 🎉 New release introduces raycasting, render bundles (can lead to major performances boost), environment maps, advanced renderers switching at runtime... Website → martinlaxenaire.github.io/gpu-curtains/ Repo → github.com/martinlaxena... #webgpu #javascript
160 6
Martin Laxenaire @martin-laxenaire.fr · 03/12/2024
You can also chose which light you'd want to update - you don't have to update all the light's renderer! Here, the directional lights are not added to the second renderer scene, only the ambient and point lights are. #webgpu
000 0
Martin Laxenaire @martin-laxenaire.fr · 03/12/2024
Also part of the incoming #gpu-curtains next release will be the ability to update any light's renderer at runtime. This is the same scene with lights and shadows, rendered alternatively on two separate canvases each with their own renderers and cameras. #webgpu
221 2
Martin Laxenaire @martin-laxenaire.fr · 29/11/2024
Finalizing my #gpu-curtains render bundle PR. In some edge cases it can speed up rendering up to 150%. Here you can see the difference when rendering 5000 rotating meshes. The main optimization (besides using the bundle) comes from using a single buffer to hold the meshes transformations. #webgpu
A screenshot of 5000 meshes rotated each frame, drawn using a WebGPU render bundle at ~37fpsA screenshot of 5000 meshes rotated each frame, drawn without using a WebGPU render bundle at ~25fpsScreenshot of the WebGPU debugger showing the render bundle execution and the single writeBuffer call used to optimize performances
020 2
Martin Laxenaire @martin-laxenaire.fr · 13/11/2024
Had a bit of free time and started implementing a raycaster in #gpucurtains. Pretty happy with the result so far as I initially thought this would take me way more time. #webgpu #javascript #3d
090 9
Martin Laxenaire @martin-laxenaire.fr · 08/11/2024
Happy to launch today my latest production "Musée de la plaisance", an immersive experience about the boating history by the Beneteau Foundation, in collaboration with the Danka agency. 🌊⛵ museedelaplaisance.com #threejs #webgl
1253 25
Martin Laxenaire @martin-laxenaire.fr · 28/08/2024
Next major #gpucurtains version is well on its way, and it's gonna be big! I've been working on a builtin light system along with real-time shadows. Here's a "Sponza by night" test, with different kinds of lights & shadows and PBR + IBL shading. #webgpu #javascript #wip
000 0
Martin Laxenaire @martin-laxenaire.fr · 15/03/2024
Took a bit of time to explore @raphaelameaume.bsky.social fragment tools this afternoon. Awesome for quick sketches prototyping. It is so easy it feels like cheating. → github.com/raphaelameau... #madewithfragments (and gpu-curtains 😆)
000 0
Martin Laxenaire @martin-laxenaire.fr · 01/03/2024
You could wonder "how much is too much?" and I wouldn't blame you. 😅 So I've also added a minimal proof of concept of the technique: martinlaxenaire.github.io/gpu-curtains...
Transparent stacked planes rendered using weighted, blended order-independent transparency technique
000 0
Martin Laxenaire @martin-laxenaire.fr · 01/03/2024
Just updated gpu-curtains to v0.3.0 I've added this new galaxy generator example, demonstrating the use of order-independent transparency: martinlaxenaire.github.io/gpu-curtains...
A 3D rotating galaxy implemented using the weighted, blended order-independent transparency technique
100 1
Martin Laxenaire @martin-laxenaire.fr · 28/02/2024
Working on a new gpu-curtains example, some kind of galaxy using order-independent transparency (WBOIT specifically)
A screenshot of a 3D galaxy rendered with order-independent transparency
000 0
Martin Laxenaire @martin-laxenaire.fr · 12/02/2024
Implemented SSAO with gpu-curtains. Should I add it to the examples section?
Screenshot of a webgpu scene with screen space ambient occlusion appliedScreenshot of the same webgpu scene but with the debyg view of the screen space ambient occlusion pass
100 1
Martin Laxenaire @martin-laxenaire.fr · 12/12/2023
One webgpu device, multiple canvases 🔥🔥
110 1
Martin Laxenaire @martin-laxenaire.fr · 01/12/2023
500k webgpu particles and I'm barely hearing my fan 😍
020 2
Martin Laxenaire @martin-laxenaire.fr · 29/11/2023
2000 non instanced webgpu meshes. Not too bad for my poor mid-tier 2018 laptop.
webgpu scene with 2000 non instanced mesh with the stats indicating it's running at ~35fps
000 0
Martin Laxenaire @martin-laxenaire.fr · 23/10/2023
This was on my todo list for soooo long, I'm super excited to finally have a working #webgpu cloth simulation. Running fully on the GPU thanks to compute passes. (this is a port of this awesome example: github.com/Yuu6883/WebG... )
030 3