To continue sharing rusty things from last year, I did some experimenting with Vulkan and put the code here: github.com/sjb3d/caldera/. Has a very basic render graph and some probably terrible use of rust async/.await.
Conversation
The goal was to try out Vulkan ray tracing/mesh shaders/bindless/etc, but I also implemented "Coherent Parallel Hashing" (ggg.udg.edu/publicacions/U) since it is a useful technique for GPU hash tables. Code for that is here: github.com/sjb3d/caldera/
1
13
I also got a bit carried away and implemented a spectral path tracer using Vulkan ray tracing here: github.com/sjb3d/caldera/. It implements "Practical Hash-based Owen Scrambling" for sampling, and a few different BRDFs. Some renders below:
4
36
199
Replying to
Thanks, for reflectance data it is piecewise linear data baked to textures. Where I only have RGB I convert using the method by Brian Smits. Integration importance samples 3 wavelengths and traces them together (no dispersion yet).
Replying to
Are you using hero wavelength sampling for integration? Sampling 4 wavelengths rather than 3 significantly improves colour noise at no extra cost (assuming simd)
1
Replying to
I am importance sampling 3 wavelengths independently (the code does compare with hero wavelength sampling though). Is running on GPU so 3 wavelengths is a perf win vs 4. :)
1
Show replies

