Julien Sulpis

@jsulpis.dev

💻 Front-end engineer & speaker 💡 I explore ways to make the web more fun and performant for everyone. #WebGL #WebGPU #JS #CSS www.jsulpis.dev

C’est officiel : le DevFest Lyon revient 🚀 📅 4 décembre 2026 au Palais de la Bourse, lieu emblématique du patrimoine lyonnais ✨ 400 participant·e·s, des talks tech, des retours d’expérience et des échanges de qualité 🤝 Dossier de sponsoring bientôt disponible ⏳ Réservez la date 🌟 #DevFestLyon

Affiche DevFest Lyon 2ème édition : Vendredi 4 décembre – Palais de la Bourse”, sur fond de l’intérieur du Palais de la Bourse.

📣 call for feedback! I'm having second thoughts about the naming of the functions in my #webGL library. TL;DR: is it ok to have functions starting with "use" in a vanilla JS library ? explanation in thread 🧵

code snippet with a sample of the functions starting with "use"

OK I've finally made some progress, my trails effect works on a transparent background (dark or light), and the bloom effect too. The trails effect is kind of experimental though, it can produce artifacts in scenes with lots of particles. But I think those two make a great combo ! #WebGL #shaders

I did some tests to fully understand the effect of premultiplied alpha combined with the gamma correction (linear RGB -> sRGB). It seems that the only right way to blend rgba colors is to mix them in linear RGB with premultiplied alpha, and then convert to sRGB. However ⬇️

Bild

I've been working on a #WebGL light trail effect lately, and it turns out better than expected ! I just need to refine it a little and make it easy to reuse as a regular post-processing effect, and it should bring particles animations to a new level #buildInPublic

Debugging #WebGL shaders is hard, but debugging a multi-pass postprocessing effect, well... that's next level 😅 I spent like 2h checking every texture, render target, sampling algorithm... only to find out that I did not returned the right variable in a shader 🤦‍♂️ BUT I think I'm almost there !

git diff showing a change in the returned value of a fragment shader

I have finished setting up Umami on my home server for my websites analytics ✨ It's oddly satisfying to self-host things ! I'm starting small with a simple public API

I made this planet shader after completing @simondev.bsky.social's shader course, and now he has a new bundle including more advanced techniques and maths ? Let's do this ! 🚀 Give me just 10 years to complete all the courses I bought, and I should come up with interesting stuff...

I've been playing with the #WebGPU API recently, it's crazy powerful ! A useGPU lib is right around the corner 😂 PS : I will publish the code soon (vanilla WebGPU, OBJ file loader, compute shader and stuff)

It took me a while, but I finally implemented a boids behavior with the ping pong FBO technique. Still need a bit of time to polish the API and make it straightforward to use, and I will publish that in useGL

TIL: there is an equivalent of `requestAnimationFrame` for videos : `requestVideoFrameCallback`, called for each video frame. Could be useful to... automatically re-render a WebGL shader when a video texture is played \o/

sample code for video.requestVideoFrameCallback()

Il nous a régaler avec des conférences toujours excellentes, gagnant du dernier Code In The Dark, il nous paraissait normal d'inviter @jsulpis.dev pour nous parler cette fois de couleurs.

I really like Astro, but for documentation I prefer the UI and UX of VitePress over Starlight 🤔 Also the lack of top navigation bothers me. I will try to migrate the documentation of useGL 🤞

I'm trying to switch from #Notion to #Obsidian for Personal Knowledge Management (because Notion is slow, owns the data and Obsidian has a better way of linking notes). First impression : it's fast ! Local first + sync via iCloud (or any other cloud) is such a great combo ✨