Shane Simms
banner
shaneasimms.bsky.social
Shane Simms
@shaneasimms.bsky.social
VFX artist living in Melbourne, learning to write tools in C++ ⌨️
Currently learning about path tracing 🔮
Advertise your account with a Simpsons image
May 28, 2025 at 9:12 AM
Added support for nested dielectrics based on "Simple Nested Dielectrics" by Schmidt & Budge
May 16, 2025 at 7:46 AM
(More maths)
February 25, 2025 at 12:12 AM
Added importance sampling for textures. These images were rendered with the same number of samples before and after importance sampling the environment light
February 24, 2025 at 11:52 PM
Added normal mapping and fixed some edge cases, made a scene to demo the current features
February 9, 2025 at 9:22 AM
Added emission patterns for lights, and added an environment light
January 21, 2025 at 10:49 PM
Refactored everything, improved memory management, added pattern interface, added texture pattern
January 21, 2025 at 1:11 AM
(Maths stuffs)
December 3, 2024 at 1:33 AM
Finally got microfacet transmission working! 🔮
December 3, 2024 at 1:32 AM
Implemented a specular glass shader. Had to tweak a lot of my integration code to get it to work with transmission. Going to attempt a microfacet version next
November 11, 2024 at 6:20 AM
Read Heitz' 2018 paper on GGX VNDF sampling a week ago, then tried to remember how it works and implemented it today. Really simple and elegant, and less noise!
November 11, 2024 at 6:20 AM
Went on a side quest inspired by OPSR - now I'm roughening over paths using an attenuation factor (gamma) to improve control over blurring out caustics and reducing fireflies
November 11, 2024 at 6:19 AM
Heard that the STL RNG can be slow. Looked into XORShift RNGs. The seed is multiplied by matrices covering all possible seed values until a repeat. The matrices in XORShift RNGs use bitwise operations so are very cheap. Only 1% faster but fun! Total speed increase: ~11%
November 11, 2024 at 6:19 AM
Decided to try and optimise starting with some low-hanging fruit. Made tweaks to the BVH, then implemented a better triangle intersection algorithm where rays are transformed to simplify cross products, and transforms are stored per ray ahead of time to save computation
November 11, 2024 at 6:18 AM
So I derived a sampling strategy for Trowbridge-Reitz as well. Still sampling invisible microfacets though
November 11, 2024 at 6:18 AM
Made a Veach inspired scene for testing and found and fixed some more bugs
November 11, 2024 at 6:17 AM
Multiple light sources, layered BSDFs (just additive for now), fixed a whole lotta bugs and edge cases
November 11, 2024 at 6:16 AM
Got Beckmann microfacet distribution working, added an analytic ring light (inspired by Max Liani), also now adjusting roughness after rough bounces to spread out caustics, accounted for a bunch of edge cases and fixed a load of bugs
November 11, 2024 at 6:16 AM
Found the Beckmann distribution on pbr-book.org, and derived sampling based that. It's not ideal as I'm sampling the whole distribution, including invisible microfacets, so a lot of samples will be useless. One day I'll learn a better strategy
November 11, 2024 at 6:15 AM
I remembered how to derive the Cook-Torrance BRDF! But never learned how to derive any NDFs / masking-shadowing functions... I have no choice but to Google some, but I will derive the BRDF sampling by myself. Added NDF derivation to my list of things to learn later
November 11, 2024 at 6:14 AM
Multiple importance sampling! I'm using the power heuristic. Didn't do any derivation, I just remembered the functions and checked that they were working as expected with Desmos. I think the fireflies are caustics?
⬇️MIS, light sampling, BSDF sampling
November 11, 2024 at 6:14 AM
Adding BSDF sampling so I can introduce MIS. Here are some cosine-weighted hemisphere samples I exported as a .ply to check in Blender, and my derivation. I'm uniformly sampling a disk and projecting up on to the hemisphere to get the cosine distribution (Malley's method)
November 11, 2024 at 6:12 AM
I was clamping each ray's max distance for to the closest previous hit for every bounce🤦 The shadows look how I would expect them to now! Also added a perfectly specular BRDF
November 11, 2024 at 6:11 AM
I was building the local coord sys in a slightly stupid way and missing some edge cases, normals are fixed now. Still not sure why the shadows are still so dark, but I added Russian roulette, allowing me to get some more bounces in the same amount of time
November 11, 2024 at 6:11 AM
Finally some actual path tracing! But it looks very broken... normals are getting busted on certain angles, and shadows look way too dark...
November 11, 2024 at 6:11 AM