wahn/rs_pbrt

Implement VolPathIntegrator

wahn opened this issue · 4 comments

wahn commented

There are several examples with non-heterogeneous media, they all need a VolPathIntegrator:

> rg volpath 
f15-4a.pbrt
1:Integrator "volpath" "integer maxdepth" [1]

f15-4c.pbrt
1:Integrator "volpath" "integer maxdepth" [20]

smoke.pbrt
1:Integrator "volpath" "integer maxdepth" [10]

f15-4b.pbrt
1:Integrator "volpath" "integer maxdepth" [3]

cloud.pbrt
1:Integrator "volpath" "integer maxdepth" [50]
wahn commented

After commit b182857 we get some results:

pbrt

But ...

  1. It renders far longer than the C++ side
  2. It looks different

Here is how the C++ side renders the same scene (except using EXR vs. HDR):

f15-4a_cpp

wahn commented

After commit 5bae010 we see for the first time some structure in the rendered cloud, but it's still very different from the C++ version:

pbrt

wahn commented

Commit 2556c58 seems to fix the issue:

pbrt

wahn commented

Closing ...

> imf_diff -d -f f15-4a.exr pbrt_rust.exr diff.jpg
differing pixels:	  0.080% (469 of 583200)
average difference:	  2.786%
maximum difference:	  8.902%
Summary: A few pixels differ slightly.
== "f15-4a.exr" and "pbrt_rust.exr" are similar

diff