📝 New Blog Post 📝
I spent this summer studying Raymarching with Signed Distance Fields and compiled it all in this article
In it, I show you how to use shaders with a bit of math to build anything from abstract visuals to beautiful endless landscapes✨
Finally managed to build a refraction shader I like✨
Being able to get such an effect was my long term goal when I got started with Three.js/React Three Fiber last year
Going to further improve this I have so many ideas on how to make this look better!
Played some more with R3F and FBO particles:
- used curl noise, the resulting scene is just too beautiful✨
- morphing from one shape to another
Both scenes render over 250k particles (512^2), M1 Macbook Pro is silent and cool
Spent the past few weeks studying:
- Volumetric Raymarching
- Rendering beautiful Cloudscapes in GLSL ⛅
- Performance improvement techniques
- Render physically accurate clouds
I'm putting all that together in a blog post and as you can see... it will be a big one once again
📝 New Blog Post 📝
In this article, I share everything I learned to recreate a beautiful dispersion with shaders 🌈
I deep dive into how you can use light and its properties to recreate amazing 3D effects for your next React Three Fiber project 🪄
It only takes some well-placed lights and a dash of clever math/GLSL code to get an incredible dispersion effect ✨
My next article will go through each step to get to this result while explaining the physics of those effects!
+ you'll get to play with my revamped Sandpack 😄
As promised, here's a first draft for my blog post on Refraction, Dispersion, and other light effects ✍️
This one will show the steps I took to implement the scene featured in and how with a few tricks and a bit of math you can get a fantastic result ✨
📝 New Blog Post 📝
In this article I share *everything* I learned about shaders 🪄
I crafted 8 unique React Three Fiber scenes to guide you through the inner workings of vertex/fragment shaders and how to make them dynamic, interactive and composable✨
this kind of behavior so short-sighted, unbelievably short-sighted, brings nothing to the table and actively makes the world worse
it's akin to phone scam that made the phone system utterly useless in the US
men like these are real parasite omfg
Finally achieved the color dispersion effect I always wanted✨
It took lots of trial and error and countless hours digging through papers on color and light in WebGL/shaders/R3F to get there
Totally worth it!
Will write about this on the blog soon
↳
Finally managed to build a refraction shader I like✨
Being able to get such an effect was my long term goal when I got started with Three.js/React Three Fiber last year
Going to further improve this I have so many ideas on how to make this look better!
📝 New Blog Post 📝
This article is a guide to *everything* you might want to know about Framer Motion layout animations
I deep dive into every concept along with tips & tricks, visual examples, and everyday use cases to up your animation game 🪄
Understanding attributes is key to creating great particles scenes with Three.js/React Three Fiber✨
Spent the evening iterating on an interactive way to illustrate how attributes arrays work for my next blog post
Happy with it so far! It's also very satisfying to use 😄
✍️ Early draft for my upcoming blog post
This one will focus on Particles, Attributes and how to use them to create amazing scenes with React Three Fiber and shaders ✨
I'll showcase everything I learned to build the scenes below:
📝 New Blog Post 📝
This article is a look into my experience building my own design system✨
In it, I document everything from defining tokens, creating the right level of abstraction, building variant-driven composable components, and how I ship it
also if you feel like playing with different ways to distribute your particles within a sphere, this is the cheatsheet I use for my mini-projects
(can't remember who originally shared it on Twitter sadly, but whoever this was: thank you!)
Fixed a little bug in my React Three Fiber particle blog post (thank you
@0x_prosciutto
for letting me know!)
I messed up the math to distribute my particles within a sphere in a "balanced" way which led to missing particles
(see the before/after below)
A great combo I keep using in my NextJS projects:
next/dynamic + react-intersection-observer 🪄
This allows me to only import a component once it's "in view". I use this pattern on my blog for my webmentions since they are at the bottom of the page
After last week's demo, I had another stupid idea:
what if moving your browser window could "shake" the objects in your React Three Fiber scene?
Turns out with Rapier, a well placed camera and a dash of math it's not too hard
A stupid little idea I had recently:
what if resizing the browser could have an effect on your scene with physics enabled?
Built with Rapier (and a more than questionable hack to allow resizing RigidBodies) and React Three Fiber
Link to the code 👇
📝 New Blog Post 📝
In this article, I tell you all about creating stunning 3D particle scenes with React Three Fiber 🎊
Through 8 unique code playgrounds, you'll learn *everything* from attributes, buffer geometries, animating with shaders and more!
📝 New Blog Post 📝
This article covers everything about the tool behind some of my favorite React Three Fiber creations: Render Targets 🎯
In it, I share all my tricks on how to use this tool to create mind-bending scenes with truly magical effects🪄
📝 New Blog Post 📝
Over the past few month I experimented building beautiful shaders of cloudscapes with Volumetric Raymarching
This article covers what I learned and worked on, from the basics to advanced techniques to render physically based clouds ⛅
When working with particles, you only need a few lines of code to get something that looks magical 🪄
And I hope to show you that straight in the middle of my next article!
Here's a preview of a scene rendering 5000 particles, smoothly, in
@codesandbox
's Sandpack, mindblowing!
Understanding attributes is key to creating great particles scenes with Three.js/React Three Fiber✨
Spent the evening iterating on an interactive way to illustrate how attributes arrays work for my next blog post
Happy with it so far! It's also very satisfying to use 😄
Just wrapped up this one which should be ready for a release on Tuesday!
In this article, I go through everything I've learned while building my personal design system for the past year.
3.5k words ✍️ turns out I had a lot to say about this project 😄
📝 New Blog Post 📝
It only takes some post-processing and shader code to give any React Three Fiber scene a unique aesthetic ✨
This article details the process and techniques to rebuild Moebius' distinct visual art as a Stylized Shader for the web
Summarizing an entire summer's worth of work in just under 5000 words ✅
I wish I could be more succinct but there's just so much to say/explain about Raymarching!
(might or might not have gotten a bit too philosophical towards the end of this draft)
Took some time to rebuild the drawing effect
@basementstudio
did for
Made with React Three Fiber, Drei, a dash of shaders, and a couple of FBOs
How would you improve it to get it closer to the original effect?
🔗 to the Codesandbox below 👇
📝 New Blog Post 📝
I've been obsessing with Caustics ever since I started studying shaders and light effects
Rebuilding these beautiful light patterns for the web has always been a goal so I'm happy to show you in details how I did it in this article☀️
More shader raymarching work!
This time tinkering with colors to get a nice neon effect (originally from a great stream from
@akella
)
I promise I'll try using something else than the signed distance function of a sphere soon! 😄
Back to messing around with shaders 🧪
Going to spend the next few weeks trying to learn as much as I can about raymarching and signed distance functions and see where it leads me
You can create entire procedurally generated worlds with shaders with a couple of well-placed math formulas!
From the sharpness of the terrain, the light, the fog, and the shadows of those mountains: it's all GLSL
(don't run this on your phone pls)
Back to messing around with shaders 🧪
Going to spend the next few weeks trying to learn as much as I can about raymarching and signed distance functions and see where it leads me
Wrapping up my latest blog post ✍️ It should be ready to be released this coming Tuesday!
In this one, I wrote about pretty much everything I've learned about particles in React Three Fiber, from the basics to using advanced techniques like FBO
7 R3F scenes, lots of examples 🪄
✍️ Releasing my blog post on Raymarching this coming Tuesday!
I spent this summer studying this technique to create shader-powered scenes ranging from abstract shapes to beautiful landscapes
Everything I learned is compiled in this article along with demos from my own work 🙂
✍️ Adding the final touches to my upcoming dispersion and refraction blog post it should land this coming Tuesday (earlier than expected!)
Excited to share with you everything I learned about those shader light effects, step by step, through interactive examples
A stupid little idea I had recently:
what if resizing the browser could have an effect on your scene with physics enabled?
Built with Rapier (and a more than questionable hack to allow resizing RigidBodies) and React Three Fiber
Link to the code 👇
📝 New Blog Post! 📝
Ever wondered how to improve your Github CI workflows to save your frontend team's precious time? ⏱
This article contains all my favorite tips to build efficient workflows, share build artifacts, avoid unnecessary runs, and more!
✍️ Wrapping up my upcoming blog post on one of my favorite WebGL tools: Render Targets!
It condenses *weeks* of learning/trial and error into a short article where I share a lot of code and techniques to create mind-bending scenes with magical effects 🪄
Will be out by Tuesday!
After postponning this for years, I'm finally working on a new version of my portfolio ✨
I want it to not only be about my work but also showcase my craft and what I learned
It might take a while to be ready, but you can follow along my progress 😊
↳
Can't get enough of Raymarching these days!
In this one I attempted a more "liquid" looking result by combining noise and smoothing functions
These effects would be tough to achieve in a more classic three.js scene, but with SDFs, it's almost too easy!
More shader raymarching work!
This time tinkering with colors to get a nice neon effect (originally from a great stream from
@akella
)
I promise I'll try using something else than the signed distance function of a sphere soon! 😄
✍️ Releasing my blog post on Caustics this Tuesday!
It condenses weeks of work attempting to rebuild from scratch this beautiful light effect that I've been obsessing with since I got started with Three.js
Just need to add a few final touches to make sure it's perfect
⛅
Revisited my first Volumetric rendering raymarched scene to improve it with some concepts I recently learned:
- lower res raymarching
- blue noise dithering
- bicubic filtering
- sample a texture for the noise
- lighting with directional derivative
My first attempt at Volumetric rendering with Raymarching 😶🌫️
I wanted to render clouds using noise derivatives and FBM which you can do by raymarching "inside" a volume
I was stuck in the "Pit of Dispair" a long time for this one 😅 but I think I got it
📝 New Blog Post: "Guide to creating animations that spark joy with Framer Motion"
Getting started with animations can be overwhelming so I created this little guide with fun examples to introduce you to everything I've learned about Framer Motion ✨
I had this scene in my mind for over 5 months
Now it runs on my browser
Made with React Three Fiber, (a lot of) shaders, and a very well done spaceship model.
Article coming soon, but in the meantime 👇
My first attempt at Volumetric rendering with Raymarching 😶🌫️
I wanted to render clouds using noise derivatives and FBM which you can do by raymarching "inside" a volume
I was stuck in the "Pit of Dispair" a long time for this one 😅 but I think I got it
A look at some of my recent shader Raymarching work 🧪
I learned how to use noise derivatives to create better procedural terrains
Combined with fog and light scattering you can achieve some gorgeous results like this beautiful Martian landscape
☁️ Third attempt at rendering a cloud with Raymarching
This time I think I got the lighting right!
I also added a phase function for more realistic scattering although I had to do tweaks to make the result pleasing
Yes, there will be a post about this!
☁️
Second attempt at Volumetric rendering
I added light sampling and applied some more physically based principles to render this cloud, like transmittance
Not 100% sure my lighting is applied correctly, but now we have some nice shadows and more depth
Took a stab at building a simple Raymarching visualizer to help me introduce the concept for my next blog post
It's not really "accurate" yet but I hope it can make this rendering method feel less intimidating for people not familiar with it 🙂
Will keep iterating on it!
Figured out how to add camera controls on my raymarching work
Turns out that to have an OrbitControl-like experience in this situation you can just use ... OrbitControl itself 😄
- Create a camera
- Attach it to your OrbitControl
- Pass its position to your raymarching scene
A look at some of my recent shader Raymarching work 🧪
I learned how to use noise derivatives to create better procedural terrains
Combined with fog and light scattering you can achieve some gorgeous results like this beautiful Martian landscape
You can create entire procedurally generated worlds with shaders with a couple of well-placed math formulas!
From the sharpness of the terrain, the light, the fog, and the shadows of those mountains: it's all GLSL
(don't run this on your phone pls)
Got Dynamic Caustics working with normal recomputation after vertex displacement
I also forked and modified MeshTransmissionMaterial to get that same displacement and the result just looks 🤌
Will add that as a last example of the upcoming blog post
Last month, I finally managed to build a Caustic light effect with R3F and custom shaders
I’ve been obsessing with this effect ever since I started working with shaders (ask
@pixelbeat
he'll tell you) so I'm excited to finally start writing about it ✍️
✍️ Releasing my blog post on Volumetric Raymarching this coming Tuesday!
I experimented with this technique over the past few months to render beautiful cloudscapes and physically accurate clouds
This article features everything I learned and the shader code behind my work 🙂
📝 New Post 📝
Tired of dealing with super slow Twitter embed iframes that trigger a lot of CLS in your blog posts?
In this article, I detail how you can get Static Tweets for your MDX-based content 🧑💻
Kudos to
@leeerob
for the original inspiration!
built this little showcase for Framer Motion's "AnimatePresence" last night
- 1st card doesn't use it: no exit animation 😕
- 2nd card is wrapped in an AnimatedPresence component: super fluid exit animation and transition between cards 😄
This next blog post is going to be 🔥
Experimenting with some new Opengraph image designs I could generate on the fly with
@vercel
/og
Not 100% happy with it yet, but it's the first iteration I kind of like
📝 New Blog Post 📝
In this article, I'm thrilled to introduce my AI-powered semantic search: ask a question and get an answer crafted from my own writing 🪄
In it, I deep dive into how you can use embeddings, OpenAI, and some good UX to build your own!
I think I really like Styled Components + CSS variables i.e. no theme provider, theme context, or JS-based theme. It looks much cleaner!
The only downside here though is that I lose typing (and autocomplete in VSCode for variables)
Started planning my next shader article on Volumetric rendering
Here's the shader of the cloud I posted a while ago I that I plan to write about
If you know a lot on this subject I'd love some feedback on the code, methods used, and how to improve it 🙂
My blue noise dithering implementation as of now 👇
You can clearly see the "very not granular" raymarching loop with blue noise dithering disabled
Once enabled I almost get back the quality I had with a more granular raymarching loop
A good read:
With just a few line of React Three Fiber, Rapier, and a bit of math you can build very satisfying scenes!
Made this little fidget toy that once displaced by your cursor/finger, resets itself to its original state using impulse/torque with some spring 😌
Spent the past few weeks studying:
- Volumetric Raymarching
- Rendering beautiful Cloudscapes in GLSL ⛅
- Performance improvement techniques
- Render physically accurate clouds
I'm putting all that together in a blog post and as you can see... it will be a big one once again
⛅
Revisited my first Volumetric rendering raymarched scene to improve it with some concepts I recently learned:
- lower res raymarching
- blue noise dithering
- bicubic filtering
- sample a texture for the noise
- lighting with directional derivative
Among all the 3D/shader blog posts I read
@maya_ndljk
's article on Custom Toon Shader is the one I keep getting back to on a regular basis
It explains so well how to do lighting and shadows in GLSL, I always use it as a base for my work
📝 New Blog Post: “Advanced animation patterns with Framer Motion
In this one, I share some of the greatest advanced Framer Motion patterns and tools I learned about and use through fun and interactive code snippets ✨
📝 Latest write-up! “The Power of Composition with CSS variables”
Managing your colors in a large codebase can be messy 😥
Composing them can bring order to all that and help you define complex themes with meaningful colors and all that with just CSS ✨
Early work on an outline shader using Sobel filter on both depth and normals of a scene
Next step is shading using a crosshatched pattern via texture to achieve a Moebius style on the web
@UselessGameDev
's Moebius video is a great guide for this project
Finally wrapped up this one, should be ready to publish by Tuesday after I add some final touches✍️
My aim for this one is to serve as a guide to help you implement complex Framer Motion layout animations
Stay tuned!
Coming soon 👀
In it, we'll take a look at the steps I took to build my very first Three.js project/scene from scratch:
One of my most ambitious write-ups to date, a lot of pieces fell into place at the right time 🙌
As promised, here's a first draft for my blog post on Refraction, Dispersion, and other light effects ✍️
This one will show the steps I took to implement the scene featured in and how with a few tricks and a bit of math you can get a fantastic result ✨
Finally achieved the color dispersion effect I always wanted✨
It took lots of trial and error and countless hours digging through papers on color and light in WebGL/shaders/R3F to get there
Totally worth it!
Will write about this on the blog soon
↳
SEO is hard! And it's easy to get it wrong when starting your blog or product and slowing down your growth
I got it wrong countless times 😅 but learned a lot through my mistakes
So here's a look back at my worst SEO mistakes and how I fixed them:
Finally wrapped my head around Three.js render targets and layers 🥵 and managed to rebuild
@pschroen
's hologram scene in R3F✨
His work on is an absolute gold mine for shaders and various rendering techniques, so much to learn!
Played some more with R3F and FBO particles:
- used curl noise, the resulting scene is just too beautiful✨
- morphing from one shape to another
Both scenes render over 250k particles (512^2), M1 Macbook Pro is silent and cool
Turns out positioning particles with a fragment shader (yes not a typo!) allows you to do very cool stuff 🧪
The concept that makes this scene possible is called Frame Buffer Object (FBO) and now that I know its existence I have a lot of things to try 👨💻
After last week's demo, I had another stupid idea:
what if moving your browser window could "shake" the objects in your React Three Fiber scene?
Turns out with Rapier, a well placed camera and a dash of math it's not too hard
First draft for my upcoming blog post on Render Targets ✍️
In this one, I hope to share more about one of my favorite R3F/Three.js tools, and how to leverage it to create scenes that can be truly magic/mind-bending 🪄
You can get a preview here:
Just spun up a new scene based of last week's little demo:
Using window.screenX/screenY and window.screen you can move your R3F scene's camera by ... dragging the window around!
Makes for a very cool effect especially with the orthographic camera 🪄
After last week's demo, I had another stupid idea:
what if moving your browser window could "shake" the objects in your React Three Fiber scene?
Turns out with Rapier, a well placed camera and a dash of math it's not too hard
work scheduled for 2024:
- caustics ✨
- ascii/dithering shaders
- moebius and watercolor shader study
- integrating raymarched shaders into R3F scenes
- adding delightful interactivity to WebGL scenes
and if time allows: building my personal website
☁️
Second attempt at Volumetric rendering
I added light sampling and applied some more physically based principles to render this cloud, like transmittance
Not 100% sure my lighting is applied correctly, but now we have some nice shadows and more depth
My first attempt at Volumetric rendering with Raymarching 😶🌫️
I wanted to render clouds using noise derivatives and FBM which you can do by raymarching "inside" a volume
I was stuck in the "Pit of Dispair" a long time for this one 😅 but I think I got it
- Interactive demos are built ✅
- Diagrams are drawn ✅
- 1st draft turned to 2nd, and now 3rd and final ✅
Your guide to caustics on the web is coming together!
Got Dynamic Caustics working with normal recomputation after vertex displacement
I also forked and modified MeshTransmissionMaterial to get that same displacement and the result just looks 🤌
Will add that as a last example of the upcoming blog post
Draft of my upcoming Raymarching blog posts ✍️
It's a big one, I prefer this rather than a 5 part series
In it, I'll share the raymarching techniques I learned over the summer:
- lighting/shadows
- combining SDFs
- FBM, noise derivatives
- and more!
along with demo scenes!
Took a stab at building a simple Raymarching visualizer to help me introduce the concept for my next blog post
It's not really "accurate" yet but I hope it can make this rendering method feel less intimidating for people not familiar with it 🙂
Will keep iterating on it!
📝 New Blog Post! 📝
In this article, I walk you through the steps I took and everything I learned while building my first Three.js scene✨
Looking for a sleek project to get started with and learn about meshes, animation, and light? It's right there👇
Another little component for my next Framer Motion blog post that will be used to showcase:
- How to add multiple shared layout animations
- Make it reusable thanks to the ability to namespace layout animations by wrapping the component in LayoutGroup with a unique id ✨
First iteration of a little widget to visualize the layout animations you may get with Framer Motion based on the value of the "layout" prop 👀
There're a lot of things to consider when using layout animations. I plan on adding more complex examples with edge cases in my article
Today is my last day as part of the
@Docker
team after 4 years of hard work. I’m officially looking for new opportunities in NYC or remote. If you’re looking for a frontend engineer to work on React and help your team develop, test, ship your product, my DMs are open!
Built this little widget to demonstrate how an edge detection filter with the Sobel operator works 😊
- Select a pixel, and see the Sobel matrix overlayed on top of it and its neighboring pixel
- Switch between x/y direction kernel to detect edges alongside other directions
This is getting very close to what I originally had in mind:
Moebius style spaceships, and nice shading 🤌
All that through a small custom post-processing effect
I also managed to get specular lighting to render nicely and experimented with multiple shadow patterns
Slowly getting there
Not 100% satisfy with how the shadow pattern looks but still pretty happy what I was able to pull off in 1 evening 😊
Also the current implementation does not yet work well with darker colors, the crosshatched pattern is always be displayed for those
Improving my blog is a very meditative/relaxing experience for me 😌
Here are some of the tiny updates I made during the break that to me make the whole difference
- new and improved dark/light color palette
- expandable images
- GLSL support in my demos
✍️ Wrapped up my upcoming blog post on my latest project: an AI-powered semantic search!
It goes through all the steps and concepts necessary to build a truly magical search experience using embeddings and OpenAI's completion API
Coming this Tuesday! 👀
finally got a caustic effect that looks good ✨
- subtle blur
- subtle chromatic abberation
- dynamic scale/placement based on the light position relative to the mesh
It even takes into account the backside of the mesh!
Really happy with the result
fixed some math, polished a bit my shader code and the light patterns are now even prettier
the more complex the geometry the nicer the caustic pattern 🙂
still lots to do
Learn how to create feedback effects and more fun stuff about Preserve Drawing Buffer in today's newsletter!
Check your email inbox!
#threejs
#webgl
#creativecoding
Built this little widget to demonstrate how an edge detection filter with the Sobel operator works 😊
- Select a pixel, and see the Sobel matrix overlayed on top of it and its neighboring pixel
- Switch between x/y direction kernel to detect edges alongside other directions
Turns out positioning particles with a fragment shader (yes not a typo!) allows you to do very cool stuff 🧪
The concept that makes this scene possible is called Frame Buffer Object (FBO) and now that I know its existence I have a lot of things to try 👨💻
Finally wrapped my head around Three.js render targets and layers 🥵 and managed to rebuild
@pschroen
's hologram scene in R3F✨
His work on is an absolute gold mine for shaders and various rendering techniques, so much to learn!
Last month, I finally managed to build a Caustic light effect with R3F and custom shaders
I’ve been obsessing with this effect ever since I started working with shaders (ask
@pixelbeat
he'll tell you) so I'm excited to finally start writing about it ✍️
You can do some pretty sweet magic tricks with render targets in R3F and a dash of shaders🪄
Like gracefully transitioning between 2 scenes, inspired by the beautiful !
I have a lot of exciting use cases like this one to show you in the next blog post 👀
First draft for my upcoming blog post on Render Targets ✍️
In this one, I hope to share more about one of my favorite R3F/Three.js tools, and how to leverage it to create scenes that can be truly magic/mind-bending 🪄
You can get a preview here:
With the recent release of Framer Motion 5 and the new Shared Layout Animation API it was time to revisit my last Framer Motion post ✍️
I rewrote the entire last section with new examples and rebuilt the shared layout animation demo widget from scratch✨
My blue noise dithering implementation as of now 👇
You can clearly see the "very not granular" raymarching loop with blue noise dithering disabled
Once enabled I almost get back the quality I had with a more granular raymarching loop
A good read:
Spent the evening implementing some of the performance improvement tips suggested by
@N8Programs
and
@Cody_J_Bennett
👉 so much faster!
- rendered at a lower resolution
- use blue noise dithering
I still need to try
- re-upscale the scene
- try variable raymarching step size
Spent a few weeks rebuilding the Moebius style with shaders for this R3F scene
On the way I learned a lot about
- depth textures
- custom shader pass
- sobel filters
- shadow patterns
and more
Here's the outline of the upcoming article covering it all ✍️