The method from the paper Using Blue Noise for Ray Traced Soft Shadows can be readily adapted to a path tracer to yield images with better clarity than white noise.
Embed data into C byte arrays at build time
Set up a build workflow to effortlessly embed data into your executable at build time.
A quick look at Apple Silicon's hardware accelerated ray tracing performance
A simple test case measures how much of a boost can be obtained with hardware accelerated raytracing on Apple Silicon.
Notes on C++ initialization
A summary of the notes that I took to avoid shooting myself in the foot using C++ designated initializers and STL constructors.
GPU Pathtracer Devlog
A devlog of my GPU pathtracer project, where I am writing a physically based pathtracer from scratch using WebGPU.
Weekend raytracing with wgpu, part 2
This post focuses on making the raytracer discussed in part 1 much shinier. Notes on integrating a physically based sky model and textured material support are discussed next.
Weekend raytracing with wgpu, part 1
A look at the most notable challenges in implementing Peter Shirley's Raytracing In One Weekend using wgpu and WGSL.
Using inverse transform sampling to generate random numbers in a given distribution
In inverse transform sampling, the inverse cumulative distribution function is used to generate random numbers in a given distribution. But why does this work? And how can you use it to generate random numbers in a given distribution by drawing random numbers from any arbitrary distribution?
Quick and dirty image dithering
Dithering is a fascinating and seemingly counter-intuitive technique, the effects of which are easily demonstrated using images. This post develops a simple way to dither images using just a few lines of Rust code.
Generating 3d buildings using node graphs
There are many different ways to generate 3d models. Software like Blender gives you a pile of tools and modifiers with which you can model almost any object. Then you have your sculpting editors with which you can model complex organic shapes, as if you were modeling with clay. Finally, you have procedural modeling tools with which you can generative repetitive 3d geometry using simple rules.