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👇
Garrett Johnson
@gkjohnson.bsky.social
Woven by Toyota | NASA JPL | #threejs, graphics, open source, and a bunch of fun projects!
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 🧵
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...💡
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! 🗺️
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 🎨🌏
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!
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! 🌏✨
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 🎨🌏
Thanks to a great plugin by WilliamLiu-1997 on Github, you can now render Gaussian Splat tile sets with 3DTilesRendererJS!
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
Happy to report that Lego LDraw models are working #threejs #raytracing #webgpu #lego
Happy to report that Lego LDraw models are working #threejs #raytracing #webgpu #lego
Per-instance color support 🫧
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
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
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
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
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
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
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
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
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
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
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
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
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
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
More graphic screenspace SDF effects 🐔🤖 #threejs #webgl #gamedev #realtimeVFX #javascript
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
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
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.)
Mars Rover Blooper Reel
YouTube video by theropod
youtube.com
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
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
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