Shane Simms

Shane Simms

@shaneasimms.bsky.social

VFX artist living in Melbourne, learning to write tools in C++ โŒจ๏ธ Currently learning about path tracing ๐Ÿ”ฎ

26 Followers 45 Following 38 Posts Joined Oct 2023
1 week ago
Post image Post image Post image Post image

I've spent a lot of time recently learning about volumetrics. Added support for inhomogeneous volumes defined over a voxel grid.

2 0 0 0
6 months ago
Post image

I got tired of mashing together tools to write long threads with ๐ซ๐ข๐œ๐ก ๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก๐‘ก๐‘–๐‘›๐‘” and โ„ณฮฑโ€ โ„โ€”so I wrote La๐‘‡๐‘ค๐‘’๐‘’๐‘ก!

It converts Markdown and LaTeX to Unicode that can be used in โ€œtweetsโ€, and automatically splits long threads. Try it out!

keenancrane.github.io/LaTweet/

92 17 3 4
6 months ago
Preview
How does PBRT rewrite the majorant transmittance integral over segments when sampling the majorant transmittance? In the PBRT book section on Sampling the Majorant Transmittance, they take the equation: $\int_0^t \sigma_{maj}(p')T_{maj}(p \to p')f(p')dt'$, and using the multiplicative property of transmittance...

I'm pretty stumped by this equation in the PBR book, I wonder if anyone on here can help me?

computergraphics.stackexchange.com/questions/14...

0 0 0 0
8 months ago

Asking because I'm thinking of switching to Linux soon - why did you choose Mint? I've been looking at Rocky primarily because of the stable support for VFX tools

1 0 1 0
9 months ago

Advertise your account with a Simpsons image

1 0 0 0
9 months ago

This is so cool, is there any possibility of some of the dice models being made available for download? Would love to have a 2D6

1 0 0 0
9 months ago
Post image

Added support for nested dielectrics based on "Simple Nested Dielectrics" by Schmidt & Budge

0 0 1 0
1 year ago
Post image

(More maths)

0 0 1 0
1 year ago
Post image Post image

Added importance sampling for textures. These images were rendered with the same number of samples before and after importance sampling the environment light

2 0 1 0
1 year ago
Post image Post image

Added normal mapping and fixed some edge cases, made a scene to demo the current features

2 0 1 0
1 year ago
Post image

Added emission patterns for lights, and added an environment light

1 0 1 0
1 year ago
Post image

Refactored everything, improved memory management, added pattern interface, added texture pattern

1 0 1 0
1 year ago
Post image Post image Post image

(Maths stuffs)

0 0 1 0
1 year ago
Post image Post image Post image Post image

Finally got microfacet transmission working! ๐Ÿ”ฎ

0 0 1 0
1 year ago
Post image Post image Post image

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

1 1 1 0
1 year ago
Post image Post image Post image Post image

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!

1 0 1 0
1 year ago
Post image Post image Post image

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

1 0 1 0
1 year ago
Post image

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%

0 0 1 0
1 year ago
Post image

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

0 0 1 0
1 year ago
Post image Post image

So I derived a sampling strategy for Trowbridge-Reitz as well. Still sampling invisible microfacets though

0 0 1 0
1 year ago
Post image

Made a Veach inspired scene for testing and found and fixed some more bugs

0 0 1 0
1 year ago
Post image

Multiple light sources, layered BSDFs (just additive for now), fixed a whole lotta bugs and edge cases

0 0 1 0
1 year ago
Post image

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

0 0 1 0
1 year ago
Post image

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

0 0 1 0
1 year ago

(I don't know how to derive any Fresnel functions either, but I've memorised the standard dielectric Fresnel function after using it in a lot of places. I understand that the derivation involves Maxwell's equations, which I'm keen to learn more about)

0 0 1 0
1 year ago
Post image

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

0 0 1 0
1 year ago
Post image Post image Post image

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

0 0 1 0
1 year ago
Post image Post image

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)

0 0 1 0
1 year ago
Post image

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

0 0 1 0
1 year ago
Post image

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

0 0 1 0