My little path tracer

A picture is worth a thousand words.
dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

My little path tracer

Postby dawelter » Sat Dec 09, 2017 8:39 am

This came out of my path tracer.
cornelbox3.jpg
cornelbox3.jpg (161.07 KiB) Viewed 3991 times


Unfortunately convergence stagnated after some 10k samples per pixel. Not unexpected since it is a difficult scene. Lit by two point lights through the holes in the ceiling. I haven't implemented area lights. The medium has chromatic collision coefficients with high scattering for blue wavelengths.

Cheers

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Mon Dec 11, 2017 12:42 pm

Trying to reproduce results from Peter Kutz's Sky Render.
Using 10 discrete wavelengths, no ozone, purely exponential density decrease. Something is wrong. Much too greenish for my taste.
atmosphere_fisheye1.jpg
atmosphere_fisheye1.jpg (61.03 KiB) Viewed 3948 times

atmosphere_fisheye2.jpg
atmosphere_fisheye2.jpg (46.42 KiB) Viewed 3948 times

My approximation to the solar emission spectrum might be inadequate in the blue wavelengths :roll:
solarspectrum10bins.png
solarspectrum10bins.png (14.11 KiB) Viewed 3948 times


EDIT:
Yeah that looks better!
https://www.dropbox.com/s/0jjsmpi5jvfmi ... 3.jpg?dl=0
https://www.dropbox.com/s/nh80qd93qnbje ... 4.jpg?dl=0

I changed two things at once: 36 bins instead of 10. sRGB output instead of CIE RGB 1931 because if I tell CIMG to write jpg it is probably going to be interpreted as sRGB.

Because I need RGB to spectrum conversions, I implemented the way of Smits (1999) but with more bins (kind of). The code is easily adaptable. I put it up on github: https://github.com/DaWelter/ToyTrace/bl ... sWay.ipynb

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Sat Jan 20, 2018 2:05 pm

Been working on my path tracer. Implemented table lookup for the height profile of collision coefficients. After some more work I could reproduce the blueness of the evening sky due to absorption by ozone.
atmosphere_fisheye_ozone_compare.jpg
atmosphere_fisheye_ozone_compare.jpg (473.17 KiB) Viewed 3688 times


Now there is support for area lights - in the form of triangles and spheres. Before, it supported only point lights and distant directional lights. Implemented MIS weighting for light vs. BRDF sampling.
arealights.jpg
arealights.jpg (453.05 KiB) Viewed 3688 times


Quick test rendering with clouds went super slow. The ground is not a plane but a huge sphere. Thus the geometry is extremely inhomogeneously distributed. And my naive Kd-tree cannot cope with it.
atmosphere_cloudy.jpg
atmosphere_cloudy.jpg (65.41 KiB) Viewed 3688 times

koiava
Posts: 47
Joined: Thu Apr 24, 2014 8:18 am
Location: Tbilisi, Georgia
Contact:

Re: My little path tracer

Postby koiava » Tue Feb 06, 2018 11:21 am

Really good results :)
Colibri Renderer

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Wed Feb 07, 2018 7:56 am

Thank you!

Meanwhile I have a better pic. Something about the clouds strikes me as odd. Still a nice second try if you ask me. :-)
atmosphere_cloudy.jpg
atmosphere_cloudy.jpg (776.3 KiB) Viewed 3353 times


To test my algorithms needed a material that has a "delta peak" plus a continuous density, so I implemented a dielectric material with a perfectly specular reflective layer. I followed a publication by Kelemen and Kalos (2001) to obtain a symmetric brdf which goes to fully specular towards grazing angles. The result:
material_test_scene.jpg
material_test_scene.jpg (323.38 KiB) Viewed 3353 times

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Thu Feb 22, 2018 8:44 am

Bidirectional path tracing! The first correct image! Well, as far as I can tell ;)
cornelbox5.jpg
cornelbox5.jpg (351.36 KiB) Viewed 3062 times

High variance at 128 bidirectional random walks per pixel. Paths are weighted by one over the number of techniques that can generate the path. Implementation of MIS pending ...

graphicsMan
Posts: 160
Joined: Mon Nov 28, 2011 7:28 pm

Re: My little path tracer

Postby graphicsMan » Thu Feb 22, 2018 2:55 pm

Nice :)

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Wed Feb 28, 2018 8:43 am

Thank you graphicsMan! :-)

Meanwhile, I implemented what I want to be mis weighting straight from the defnition p_k^a / sum_i p_i^a ... I also fixed the reflector. It has 10k triangles now and increased tesselation near the focal point. The light source was a point light, now I take very small sphere light, to "smooth" the irregularities of the model. Moved it a slight bit, too. And tada! The reflector focusses the light much much more cleanly.

Unfortunately, it does not converge :-( The noise around the sphere is gone. Which is great. But near the corners - No way this is correct. Also the brightness seems to increase from sweep to sweep as you can see at the line where I interrupted the rendering.

Will investigate. Hints appreciated ;-)
bdpt_second_pic_w_mis.jpg
bdpt_second_pic_w_mis.jpg (165.53 KiB) Viewed 2905 times

That's 512 samples per pixel btw. Took the night to render.

ingenious
Posts: 279
Joined: Mon Nov 28, 2011 11:11 pm
Location: London, UK
Contact:

Re: My little path tracer

Postby ingenious » Thu Mar 01, 2018 1:48 am

dawelter wrote:Will investigate. Hints appreciated ;-)


Yeah, doesn't look correct. The most likely reason is that the MIS weights corresponding to the different techniques for constructing a path don't sum up to one. This in turn is probably due to incorrect/inconsistent path pdf computation. What has helped me greatly in the past to debug such issues has been to debug one path length at a time.

Here are some more specific tips:
1. Start with an entirely diffuse scene. The pdfs are simpler.
2. Have a unidirectional path tracer that you're sure converges to the right solution.
3. Have a unidirectional light tracer that you're sure converges to the right solution. Compare against the images produced by the path tracer.
4. In the bidirectional path tracer, start by rendering direct illumination only, i.e. paths of length two (segments). There are already three ways to construct each such path. Make sure you compute the correct path pdfs, with solid-angle-to-area conversion factors (Jacobians) etc.
5. Only after you're sure the direct illumination converges to the same result as the path tracer and light tracer, move on to debugging one path longer. And one longer, etc.
6. Once you can correctly render a diffuse scene with your bidirectional tracer, add more complex materials.

Hope this helps!
Image Click here. You'll thank me later.

dawelter
Posts: 25
Joined: Sun Oct 29, 2017 3:15 pm
Location: Germany

Re: My little path tracer

Postby dawelter » Sat Mar 03, 2018 7:51 am

Thanks Ingenious. Indeed it was wrong MIS weighting. My logic for splatting on the light image is slightly odd and so it came that the weights for techniques with one eye vertex were much too low. Had to factor in the number of pixels. Got a clue by imaging MIS weights for various eye/light path lengths in Veach's "pyramid" style.

Now this looks so much better! 8-)
bdpt_mis_proper.jpg
bdpt_mis_proper.jpg (117.09 KiB) Viewed 2789 times


Return to “Visuals”

Who is online

Users browsing this forum: No registered users and 3 guests