IOTD | Submit Your Image
Lambda Spectral Path Tracer by Bacterius
Time Spent:
1 month
Date Added: Oct 18 2012 07:26 PM
Physically based spectral path tracer written in C++, still largely a work in progress but quite functional as illustrated above. The image features physically correct Fresnel-weighted refractions and reflections as well as diffuse interreflection ("color bleeding").
This path tracer uses an optimized bounding volume hierarchy to accelerate ray tracing, allowing it to support scenes well into the tens of millions of objects with only a logarithmic performance hit. Another feature is the easy integration of scalable multithreading, thanks to OpenMP.
The code is available for free at github under the MIT license.
Feedback and/or contributions are very welcome!
Date Added: Oct 18 2012 07:26 PM
Physically based spectral path tracer written in C++, still largely a work in progress but quite functional as illustrated above. The image features physically correct Fresnel-weighted refractions and reflections as well as diffuse interreflection ("color bleeding").
This path tracer uses an optimized bounding volume hierarchy to accelerate ray tracing, allowing it to support scenes well into the tens of millions of objects with only a logarithmic performance hit. Another feature is the easy integration of scalable multithreading, thanks to OpenMP.
The code is available for free at github under the MIT license.
Feedback and/or contributions are very welcome!
Code::Blocks w/ GCC 4.6.
Delphi 6.
OpenMP.
Delphi 6.
OpenMP.









15 Comments
But that's with unidirectional path tracing, I predict I will need much less samples when I get around to implementing bidirectional path tracing.
Florent, indeed the tracer supports dispersion, however, dispersion is only visible with very small light sources (otherwise dispersion occurs all over the place and the result is a net white), which standard path tracing has trouble sampling. However I really want to do such an image as soon as BDPT is up.
As for GPU support, it would be difficult, mainly because of the amount of abstraction in the code which doesn't map well to GPU. I think it would be doable in CUDA because of all the extra features, however I don't have an nVidia graphics card. An interesting idea to keep in mind though.
I added a new render (the previous, low-resolution version took 2h27m49s)
Just kidding
Great work.
Look forward to see more
Good luck!
So, could you get a rainbow by shooting a ray of light through a prism?
When I wrote my proof of concept, I defined light as a series of wavelengths and then looped through each wavelength and matched it to a color table. Thus, you could have pure white light, use chemical light sources like an argon, neon, or sodium, and simulate the spectral diffusion. Cool stuff! I can send you details if you're interested.