Sign in

Garrett Johnson

@gkjohnson.bsky.social
335 followers 73 following 125 posts

Woven by Toyota | NASA JPL | #threejs, graphics, open source, and a bunch of fun projects!

PostsRepliesMedia
Garrett Johnson @gkjohnson.bsky.social · 21/09/2026
Crab noodles also supported 🍝
040
Garrett Johnson @gkjohnson.bsky.social · 21/09/2026
Trying out some path traced generative yarn balls on the web 🧶 #webgpu #threejs
0100
Garrett Johnson @gkjohnson.bsky.social · 07/09/2026
Equal Earth projection is coming to 3DTilesRendererJS! 🗺️ Here it is rendering TerrainRGB & vector annotations. The LA streets look a bit less square but the projection looks great! We are updating the engine so data aligns across projections, letting you render maps however you need ✨ #equalearth
051
Garrett Johnson @gkjohnson.bsky.social · 26/08/2026
Taking a look around at some new models for three-gpu-pathtracer - good PBR assets make all the difference. All rendered in a web browser! Support for lights coming soon 💡
140
Garrett Johnson @gkjohnson.bsky.social · 25/08/2026
Getting depth of field working with none other than the Pixar RenderMan teapot! All rendered with three-gpu-pathtracer in a browser 🫖✨
060
Garrett Johnson @gkjohnson.bsky.social · 27/07/2026
New random sampling method for three-gpu-pathtracer: blue noise dither sampling! It offsets a common random sequence for ALL screen samples, yielding a cleaner image in just a few samples. Screenshots are single sample scrambled sobol vs blue noise. Small writeup below👇
1227
Garrett Johnson @gkjohnson.bsky.social · 13/07/2026
v0.9.11 for three-mesh-bvh has been released! And brings an overhaul of compute-shader functionality to improve performance, flexibility & platform support! 🚀 You can use the hooks to write your own compute traversal for custom queries, as with the shapecast function. 1/2 🧵
182
Garrett Johnson @gkjohnson.bsky.social · 06/07/2026
Just finished adding anisotropy support to the WebGPUPathTracer for three.js - slowly but surely getting to feature parity with the WebGL version. All with better ergonomics, features, and performance! Transmissive materials still need work though...💡
090
Garrett Johnson @gkjohnson.bsky.social · 18/06/2026
Slowly getting some additional annotations & metadata from vector tiles in 3DTilesRendererJS. Here, icons are layered on top of Google Photorealistic Tiles data so you can find landmarks & restaurants as you navigate. Road labels are up next! 🗺️
171
Garrett Johnson @gkjohnson.bsky.social · 15/06/2026
Six years later this is still one of my favorite outline effects especially for hard surface models like CAD & architecture. And now it works with three.js' WebGPURenderer thanks to a contribution from "cmhhelgeson" on Github!
5686
Garrett Johnson @gkjohnson.bsky.social · 27/05/2026
It's been almost exactly 6 years since I started the 3DTilesRendererJS project at JPL. This past year alone, downloads jumped 5x to over 20,000 per week. Huge thanks to everyone who has contributed and looking forward to seeing what else people build this year! 🌏✨
060
Garrett Johnson @gkjohnson.bsky.social · 19/05/2026
Support for @mapbox.com and @protomaps.com vector tiles are coming to three.js in 3DTilesRendererJS! You can now bring vector layers in as 3D Tiles overlays to customize map coloring for visualization and branding. Or just to make something a bit chaotic 🎨🌏
1111
Garrett Johnson @gkjohnson.bsky.social · 14/05/2026
Thanks to a great plugin by WilliamLiu-1997 on Github, you can now render Gaussian Splat tile sets with 3DTilesRendererJS!
1547
Garrett Johnson @gkjohnson.bsky.social · 11/03/2026
Got the path tracer running on mobile with 16-bit output using Kahan-summation & residuals packed into 8 bits. I'm a bit worried about precision loss so I'll probably replace this with something else. But it still looks quite good on these simple scenes! 🦀 #threejs #raytracing #webgpu #javascript
0110
Garrett Johnson @gkjohnson.bsky.social · 03/03/2026
Happy to report that Lego LDraw models are working #threejs #raytracing #webgpu #lego
180
Garrett Johnson @gkjohnson.bsky.social · 27/02/2026
Per-instance color support 🫧
1131
Garrett Johnson @gkjohnson.bsky.social · 26/02/2026
Using the recently-added "ObjectBVH", geometry instancing is also now supported. So complex scenes like these can finally be rendered without merging it all into a single geometry ✨ #threejs #raytracing #javascript #webgpu
1110
Garrett Johnson @gkjohnson.bsky.social · 25/02/2026
Environment map sampling & backgrounds are now supported in the WebGPU path tracer! Slowly but surely we're getting features ported over. Thanks to "TheBlek" for getting this added! #threejs #webgpu #javascript #raytracing
0174
Garrett Johnson @gkjohnson.bsky.social · 09/02/2026
We have a first pass at a wavefront path tracer! You can see the artifacts of thread groups pulling rays off the ring queue to trace in this slowed down video. It's not much, yet, but Im excited for what this will bring in terms of performance scalability✨ #threejs #raytracing
1100
Garrett Johnson @gkjohnson.bsky.social · 04/02/2026
Spent some time today looking into WebGPU support for three-gpu-pathtracer - compute is going to make this a lot easier than WebGL. Looking into Wavefront Pathtracing next ✨ Thanks to "TheBlek" on Github for helping to get this started! #threejs #raytracing
080
Garrett Johnson @gkjohnson.bsky.social · 04/02/2026
I revisited my parallel IK system for the first time in awhile to make some ergonomic improvements & got perf improved by over 50% in some cases 🦾🤖 I still have some more improvements in mind, though, when I have some more time. Repo link below 👇 #threejs #webgl #robotics
1143
Garrett Johnson @gkjohnson.bsky.social · 02/02/2026
Some amazing work by Jure Triglav putting WebGPU compute and three-mesh-bvh through their paces to render surfel-based global illumination! I'm looking forward to seeing what's coming in the web in the coming years. juretriglav.si/surfel-based... #threejs #raytracing #webgpu
051
Garrett Johnson @gkjohnson.bsky.social · 29/01/2026
User "web3d" over on the threejs forums using 3d-tiles-renderer to display some awesome drone scan data processed into tiles 🗺️ #threejs #gis #3dtiles
130
Garrett Johnson @gkjohnson.bsky.social · 26/01/2026
Using the same scene-wide BVH you can run accelerate frustum culling, as well. With this 500,000-instance BatchedMesh culling runs in less than 1/8th the time 🚀 #threejs #gamedev
0122
Garrett Johnson @gkjohnson.bsky.social · 20/01/2026
With the recent three-mesh-bvh changes you can finally make a full scene-wide BVH to accelerate physics, raycasting, etc. And at some point Pathtracing 😁 Its just a prototype so far but it "just works" with objects and batched instances in a single structure. #threejs #gamedev
061
Garrett Johnson @gkjohnson.bsky.social · 15/01/2026
With the new abstractions in three-mesh-bvh, making a custom BVH is easier than ever! SkinnedMeshes can now have one created directly, leading to an over 2x perf improvement on update vs creating a new static mesh. 🚀 What else needs a BVH? 1/2 👇 #threejs #webgl #gamedev
1202
Garrett Johnson @gkjohnson.bsky.social · 08/01/2026
It's been a long time coming but the latest version of three-mesh-bvh brings support for out-of-the-box Line & Point cloud BVH support! Now all your geometries can be fast 🚀 1/3 #threejs #webgl #javascript
140
Reposted by Garrett Johnson
Patrick Schroen @pschroen.bsky.social · 08/01/2026
Last year I was also experimenting with @gkjohnson.bsky.social's blue noise sketches, but with my usual subsurface scattering and motion blur. alien.js.org/examples/thr... #threejs #webgl #shader #bluenoise #motionblur
141
Garrett Johnson @gkjohnson.bsky.social · 22/12/2025
Im seeing a difference in behavior with deployed code on @github.com pages vs the same files locally. Has anyone seen this before? Left is edge generation run locally & right is on Github pages from one of my #threejs projects. Notice the extra lines. 1/3 👇 #webgl #javascript
120
Garrett Johnson @gkjohnson.bsky.social · 11/12/2025
Thanks to amazing work from "SoftwareMechanic" on Github, the 3DTilesRendererJS project now supports GeoJSON overlays! Perfect for draping GIS datasets - region outlines, property boundaries, or GPS paths - onto any 3D Tiles data set 🗺️✨ #threejs #gis #3dtiles #maps #javascript
0132
Garrett Johnson @gkjohnson.bsky.social · 03/12/2025
More graphic screenspace SDF effects 🐔🤖 #threejs #webgl #gamedev #realtimeVFX #javascript
0181
Garrett Johnson @gkjohnson.bsky.social · 18/11/2025
Taking a dive into Bezier curves for fast SVG & font rendering. The curves are evaluated in a fragment shader so they're resolution independent with single-pass antialiasing📈 Cubic curves next! Though it looks a bit more complicated... #threejs #webgl #gamedev #javascript #svg
0134
Reposted by Garrett Johnson
Chase Million @millionconcepts.com · 14/11/2025
Here's the blooper version I mentioned. (I have no idea who the uploader is or how they got a copy of this. But I am glad that it survives.)
youtube.com
Mars Rover Blooper Reel
YouTube video by theropod
0187
Garrett Johnson @gkjohnson.bsky.social · 13/11/2025
Thanks to @mrdoob.com, three-gpu-pathtracer now includes a drag-and-drop viewer for binary glTF files 🚀 I've added a link to the viewer in the repo! #threejs #webgl #raytracing
030
Garrett Johnson @gkjohnson.bsky.social · 12/11/2025
These are some of the more basic effects you can make, I think, but these are outline & glow effects made with the Jump Flood SDF buffer - link to the repo below! 👇 #threejs #webgl #gamedev
1154
Garrett Johnson @gkjohnson.bsky.social · 10/11/2025
Back from some time off programming with a Jump Flood Algorith demo to ease back in! JFA can be used to create a screen SDF from a model in real time - useful for things like silhouette outlines or any other visual effects. More effects coming up! ✨ #threejs #webgl #gamedev
1145
Garrett Johnson @gkjohnson.bsky.social · 06/11/2025
Version 0.9.2 of three-mesh-bvh is out now and brings support for raycasting & distance queries using WebGPU compute shaders! This is the first step towards WebGPU path tracing & other compute-shader features 🚀✨ #threejs #webgpu #javascript
1121
Garrett Johnson @gkjohnson.bsky.social · 15/10/2025
What are your favorite examples of documentation out there, especially for 3d libraries? What do they do well or not well? I'm considering updating some of my project docs & am looking for inspiration. Even the little things make a difference. #threejs #webgl #javascript
220
Garrett Johnson @gkjohnson.bsky.social · 01/10/2025
Job update: after nearly 8 years of open source I'm excited to go independent to work on consulting & OSS dev. More details to come, but feel free to reach out about collaborations or how you can support my work! #threejs #javascript #webgl #gis #cad
1122
Garrett Johnson @gkjohnson.bsky.social · 23/09/2025
3d-tiles-renderer & atmospheric rendering spotted in this "Air Fiesta" hot air balloon adventure experience online! Posted by Diego_Dotta on the threejs forums 🪂 Link to the post below 👇 #3dtiles #threejs #webgl #javascript
170
Garrett Johnson @gkjohnson.bsky.social · 17/09/2025
WMS Tiled Image Overlays are now in 3d-tiles-renderer! This new feature, made possible by "SoftwareMechanic" on Github, unlocks a whole suite of new data, including this USGS Hydrography dataset 🌊 Demo in thread 👇 #gis #threejs #3dtiles #nasajpl #maps #webgl
2122
Garrett Johnson @gkjohnson.bsky.social · 16/09/2025
3d-tiles-renderer has been gaining some real momentum this year. The number of weekly downloads has more than doubled since January to well over 7000 installs per week! 🌎✨ Sometimes I wish I knew more about where they were all coming from 😅 #gis #3dtiles #webgl #threejs
050
Garrett Johnson @gkjohnson.bsky.social · 08/09/2025
The "3d-tiles" renderer is slowly becoming "any tiled data" renderer - newly added support for WMTS tiled images brings a whole new world of mapping data to #threejs. Including the massive catalogue of data from NASA GIBS! Demo below 👇 #webgl #gis #3dtiles #nasajpl #nasa
1111
Garrett Johnson @gkjohnson.bsky.social · 04/09/2025
Looks like CesiumJS just released a new Martian data set on Cesium Ion! Controls and rendering work out-of-the-box with 3d-tiles-renderer, as well. Mars rover integration coming... someday? 🤖 Demo link below 👇 #threejs #webgl #gis #nasajpl #3dtiles
181
Garrett Johnson @gkjohnson.bsky.social · 11/07/2025
I was doing some debugging on 3d tiles with a red color ramp & tone mapping enabled and accidentally lit Mars on fire.
060
Garrett Johnson @gkjohnson.bsky.social · 26/06/2025
I've just gotten support added for starting a session & loading Google Maps map tiles with NASA-AMMOS/3DTilesRendererJS -- now you'll be able to load Google maps street & satellite data in three.js. Now I have to find time to make demos 😅 🗺️🛰️✨ #threejs #webgl #maps #3dtiles
2142
Garrett Johnson @gkjohnson.bsky.social · 23/06/2025
3DTilesRenderer now supports multiple tiled image overlays with different projections and per-layer tint & opacity. This video is showing a globe base layer & Washington DC overlay layer from Cesium Ion. Planar projection coming up next! #gis #3dtiles #cesiumgrant #threejs
190
Garrett Johnson @gkjohnson.bsky.social · 10/06/2025
3DTilesRendererJS now has initial support for TMS & XYZ tiled overlays on 3d tile sets, bringing more support for CesiumJS's terrain features. This demo is using the Swiss Alps Quantized Mesh data set w/ @openstreetmap.bsky.social images 🌎🌐 1 / 2 👇 #cesiumgrant #threejs #gis #3dtiles
193
Garrett Johnson @gkjohnson.bsky.social · 03/06/2025
Some new updates to QuantizedMesh support for 3d-tiles-renderer. The spec for available tiles is now completely supported and tile gaps are now filled in by clipping the parent tile into quadrants! Texture overlays are next. 1/2 🌎 #threejs #cesium #3dtiles #gis #cesiumgrant
1132
Reposted by Garrett Johnson
Christophe Yamahata @cyamahata.bsky.social · 29/05/2025
I’ve used three-gpu-pathtracer by @gkjohnson.bsky.social to create an online demonstration featuring optical prisms. The result is mindblowing, accurately capturing the multiple reflections and refractions of real-world optical elements. 🔗 Explore it on GitHub: cyamahat.github.io/three-gpu-pa...
Dove prism. A Dove prism rotates an image by twice its rotation about the longitudinal axis.
031