Sign in

Nelarius

@nelarius.bsky.social
50 followers 60 following 91 posts

Maps @ Mapbox 🗺️ | Ray tracing ✨ | Voxels ◽️ My rendering notes: nelari.us GitHub: github.com/nelarius

PostsRepliesMedia
Nelarius @nelarius.bsky.social · 05/10/2026
Added some UI animation juice to the #voxel editor and pushed it out as an update to polycube.app 📦
010
Nelarius @nelarius.bsky.social · 13/09/2026
The lighting is from a sky-view LUT and a sun disk, from sebh.github.io/publications...
000
Nelarius @nelarius.bsky.social · 13/09/2026
One trick from my denoiser is to aggregate albedo-demodulated radiance (radiance / albedo) in the spatial hash map instead of raw radiance. That way the surface texture detail is not averaged out inside a spatial hash cell.
121
Nelarius @nelarius.bsky.social · 13/09/2026
Continuing the "low-fidelity #voxel global illumination" experiment with blocky spatially hashed path-traced lighting ✨ Implemented a small wavefront path tracer based on jacco.ompf2.com/2019/07/18/w... on top of the axis-aligned distance fields.
160
Nelarius @nelarius.bsky.social · 08/09/2026
I've used it in a previous renderer and it definitely helped with distributing the noise in direct lighting / shadows! Haven't looked in to how it performs with integration in general yet, but probably better than white noise 😃
011
Nelarius @nelarius.bsky.social · 08/09/2026
Half the number of samples gives a roughly similar visual appearance as before.
001
Nelarius @nelarius.bsky.social · 08/09/2026
Added Halton sampling to the voxel renderer. Yielded a nice improvement in #voxel AO clarity 🎉 The method is loosely based on the code in github.com/mmp/pbrt-v4.
250
Nelarius @nelarius.bsky.social · 03/09/2026
The method scales pretty well even to a large voxelized Sponza Atrium scene on my lower-end Macbook Air, although the 4 GiB GPU memory consumption from uncompressed nested distance fields is not exactly practical.
020
Nelarius @nelarius.bsky.social · 03/09/2026
The ray-marching algorithm and axis-aligned distance fields are from the "Globally Illuminated Voxel Worlds Accelerated with Nested Axis‐Aligned Distance Fields" publication: www.cg.tuwien.ac.at/research/pub...
cg.tuwien.ac.at
120
Nelarius @nelarius.bsky.social · 03/09/2026
Spatially hashed ambient occlusion is adapted from this blog post: interplayoflight.wordpress.com/2025/11/23/s...
interplayoflight.wordpress.com
Spatial hashing for raytraced ambient occlusion
Subdividing a 3D space into cells or voxels and using positional and/or directional information to directly index into it is a popular method to store and access local data, typically using 3D text…
110
Nelarius @nelarius.bsky.social · 03/09/2026
"Low-fidelity global illumination" #voxel rendering. Combines raymarching with axis-aligned distance fields and spatially hashed ray-traced ambient occlusion. The unfiltered blocky look from spatial hashing kinda works in a voxel scene!
1110
Nelarius @nelarius.bsky.social · 31/08/2026
While investigating #voxel rendering alternatives that don't involve generating triangles, I ran into the "Voxel GI with Nested Axis-Aligned Distance Fields" paper. github.com/cg-tuwien/NA... Super promising method, with adapted code, I can render RTAO with 1 billion voxels on an M2 Macbook Air!
091
Nelarius @nelarius.bsky.social · 12/08/2026
Published another update for my #voxel editor 📦 The face brush now tracks the mouse a lot better when extruding 😌 polycube.app/release-note...
010
Nelarius @nelarius.bsky.social · 09/08/2026
A #voxel IBM PCjr.
010
Nelarius @nelarius.bsky.social · 08/07/2026
Pushed out a small update to my #voxel editor with improvements to saving and loading files and made the sliders a bit less frustrating to use 📦 polycube.app/release-note...
040
Nelarius @nelarius.bsky.social · 19/06/2026
Happy Midsummer 🌞 polycube.app has a dynamic sky which can be controlled from the render view. You can move the sun across the sky and see the image update in real time ✨ #raytracing
000
Reposted by Nelarius
Mari @madmaraca.bsky.social · 03/06/2026
Far enough away, even chaos looks peaceful. 🌃
16411
Reposted by Nelarius
Jacco Bikker 🎦 @jbikker.bsky.social · 26/05/2026
ReSTIR PT, by @daqilin.bsky.social Daqi Lin, Markus Kettunen and @wymancr.bsky.social Chris Wyman: research.nvidia.com/labs/rtr/pub... I3D'26.
research.nvidia.com
ReSTIR PT Enhanced: Algorithmic Advances for Faster and More Robust ReSTIR Path Tracing | NVIDIA Real-Time Graphics Research
<p>Algorithms leveraging ReSTIR-style spatiotemporal reuse have recently proliferated, hugely increasing effective sample count for light transport in real-time ray and path tracers. Many papers have ...
1196
Nelarius @nelarius.bsky.social · 24/05/2026
It's currently only a macOS app, but I'm interested in rewriting the Metal renderer into something cross-platform using SDL GPU or something equivalent.
000
Nelarius @nelarius.bsky.social · 24/05/2026
Sharing my tiny #voxel editor app that I've been working on for the past year: polycube.app It has nice-looking color sliders, three different brushes and a #raytracing renderer with a built-in denoiser ✨ Looking to keep updating it, still so many things on the to-do list! 📋
171
Nelarius @nelarius.bsky.social · 11/05/2026
It's a little bit crazy that under the hood, this washed-out jagged "color history" is what is actually being denoised. After denoising, the color is multiplied back in and the result is blended into the previous frames.
000
Nelarius @nelarius.bsky.social · 11/05/2026
OK, just a little bit more fiddling with the #voxel raytracer. Now it incrementally denoises and accumulates each 1spp frame speeding up the accumulation once the camera is stationary. The only thing missing now is reprojection 😛 #raytracing
140
Nelarius @nelarius.bsky.social · 19/04/2026
The end result at a normal resolution looks all right now, although there's always something which could be improved when snooping with a magnifier 😮‍💨
000
Nelarius @nelarius.bsky.social · 19/04/2026
Finally, I switched to the sigma values directly from the SVGF paper and fixed some noise getting through the luminance edge stopping weight.
100
Nelarius @nelarius.bsky.social · 19/04/2026
Noticed that Q2RTX was further scaling their depth term with the inverse A-trous stepwidth. Interestingly, this also had a positive impact on the result.
100
Nelarius @nelarius.bsky.social · 19/04/2026
Then used chrismile.net/blog/2024/sv... as a better depth gradient expression. This also helped with artifacts along edges, and yields much better results than finite differences.
100
Nelarius @nelarius.bsky.social · 19/04/2026
First: do albedo demodulation/remodulation before and after the wavelet transform loop. This had a big impact on shadow appearance.
100
Nelarius @nelarius.bsky.social · 19/04/2026
Write your own denoiser they said, what could possibly go wrong? 😃 Turns out, a lot of things. Spent much time pixel-peeping at a 1/4 resolution renders and found all kinds of artifacts. Luckily github.com/NVIDIA/Q2RTX exists and was able to find problems in my pseudo-svgf implementation.
110
Nelarius @nelarius.bsky.social · 29/03/2026
The adjustable sky-view altitude can make for nice-looking skies although it can look a bit dorky in the viewport
000
Nelarius @nelarius.bsky.social · 29/03/2026
Some kind of #voxel RGB temple.
120
Nelarius @nelarius.bsky.social · 14/03/2026
Haven't posted about my #voxel project in a while, but I finally got around to implementing orthographic projection 🔶 #screenshotsaturday #raytracing
050
Nelarius @nelarius.bsky.social · 28/02/2026
Cool, so that's what you've been up to with all these color quantization skeets! 😄 Looking forward to seeing the book, definitely not too much material about this online.
110
Reposted by Nelarius
Nikita Lisitsa @lisyarus.bsky.social · 14/11/2025
Rewrote my voxel raytracing experiment to use spherical harmonics. Probes are now spawned per air voxel adjacent to a diffuse face (as opposed to per diffuse face), which simplifies probe allocation a lot and hopefully leads to easier probe LOD system in the future.
428117
Nelarius @nelarius.bsky.social · 15/11/2025
And the final result, with the original 8spp noisy image for reference again. Pixel peepers will see all sorts of problems with the filtered result, and the edge stopping function could be improved using tricks from the SVGF paper. Still, it's better than waiting for an 2048 spp image to converge 😄
000
Nelarius @nelarius.bsky.social · 15/11/2025
The biggest difference is that the À-trous algorithm is run iteratively, with the previous c' being used as input for the next run. Each iteration, the gap between neighboring pixels q doubles. The linked paper used 5 iterations.
100
Nelarius @nelarius.bsky.social · 15/11/2025
Finally, moving to the À-trous wavelet algorithm yields still better results. The filter looks similar to the previous one, with the spatial Gaussian replaced with a cubic B-spline.
100
Nelarius @nelarius.bsky.social · 15/11/2025
This particular filter is inspired by a bilateral filter (course notes: people.csail.mit.edu/sparis/bf_co...), as well as the edge stopping function from the À-Trous wavelet filter paper (jo.dreggn.org/home/2010_at...)
people.csail.mit.edu
100
Nelarius @nelarius.bsky.social · 15/11/2025
The edges are now preserved, but the spatial blur is still not sufficient for removing the noise.
100
Nelarius @nelarius.bsky.social · 15/11/2025
The Gaussian blur can be improved by applying an edge stopping function. It's a Gaussian blur with extra weight multipliers controlling for color and normals, not just distance from the center pixel.
100
Nelarius @nelarius.bsky.social · 15/11/2025
This results in a blurred image, which is a start!
100
Nelarius @nelarius.bsky.social · 15/11/2025
First, ran the image through a Gaussian blur. The new color c' is the average over neighboring pixels.
100
Nelarius @nelarius.bsky.social · 15/11/2025
Worked on a homemade ray tracing denoiser. Ended up with something in the spirit of À-Trous wavelet and SVGF papers, which works quite well for simple, diffuse #voxel meshes. 8 spp images, before and after. Details of journey from Gaussian blur to À-Trous wavelet denoiser in thread 🧵👇 #raytracing
110
Nelarius @nelarius.bsky.social · 16/10/2025
Added a quick and dirty VOX importer to my #voxel project. Since I recently played through Monument Valley, I checked out Ephtracy's Monument Valley files first 🏛️
000
Nelarius @nelarius.bsky.social · 04/10/2025
The planetary sunrises and sunsets you get with the Unreal sky model are probably overkill for the #voxel renderer, but makes for nice #screenshotsaturday material 🪐
020
Nelarius @nelarius.bsky.social · 01/10/2025
The new model gives the transmittance at any point in the sky, so the sun turns convincingly red as it approaches the horizon🌗
000
Nelarius @nelarius.bsky.social · 01/10/2025
Integrated the Unreal Engine sky model into the #voxel editor. The sunsets didn't look right in the Hosek-Wilkie model (left). With the new sky model, sunsets are now exactly how I wanted them 🌅 Pardon the fireflies, I need to get proper denoising set up ✨ #raytracing
110
Nelarius @nelarius.bsky.social · 24/09/2025
At a quick glance I thought you had gone down some kind of hardcore atmospheric rendering rabbit hole 😁
010
Nelarius @nelarius.bsky.social · 20/09/2025
The sky is an implementation of Hillaire's model: sebh.github.io/publications... The atmosphere is rendered into a small 2D angular coordinate lookup table using raymarching integrators from section 3. The LUT is small enough that it can be updated in real-time on the CPU.
sebh.github.io
020
Nelarius @nelarius.bsky.social · 20/09/2025
The images show a 2D look-up table of scattered light. The sun position and camera altitude can be played around with in real time. But zooming to space and back just looks so good 😄
100
Nelarius @nelarius.bsky.social · 20/09/2025
Good morning from an altitude of 40 km! Putting off other tasks in the #voxel project to work on a much nicer ray-marched sky for the ray tracer. #screenshotsaturday #raymarching #raytracing
160