wahn/rs_pbrt

[debug] pbrt-v3-scenes/villa scene

wahn opened this issue · 3 comments

wahn commented

Currently (commit 09e476c) the villa test scene renders differently for C++ ...

f16-20a

... and Rust

pbrt

Assumption: Something might go wrong with the glass material and letting light trough ...

wahn commented

Let's focus on this area:

Film "image"
...
  "float cropwindow" [ 0 0.25 0.75 1 ]
wahn commented

Most likely the problem is that we do not deal with shadowalpha yet (see https://www.pbrt.org/fileformat-v3.html#shapes):

> rg shadowalpha
geometry.pbrt
136:    Shape "plymesh" "string filename" "geometry/mesh_00032.ply" "float shadowalpha" [0]
144:    Shape "plymesh" "string filename" "geometry/mesh_00034.ply"  "float shadowalpha" [0]
150:    Shape "plymesh" "string filename" "geometry/mesh_00035.ply"  "float shadowalpha" [0]
162:    Shape "plymesh" "string filename" "geometry/mesh_00037.ply"  "float shadowalpha" [0]
180:    Shape "plymesh" "string filename" "geometry/mesh_00040.ply"  "float shadowalpha" [0]
186:    Shape "plymesh" "string filename" "geometry/mesh_00041.ply"  "float shadowalpha" [0]
740:    Shape "plymesh" "string filename" "geometry/mesh_00068.ply"  "float shadowalpha" [0]
1323:    Shape "plymesh" "string filename" "geometry/mesh_00137.ply"  "float shadowalpha" [0]
1463:    Shape "plymesh" "string filename" "geometry/mesh_00146.ply"  "float shadowalpha" [0]
1559:    Shape "plymesh" "string filename" "geometry/mesh_00162.ply"  "float shadowalpha" [0]
1627:    Shape "plymesh" "string filename" "geometry/mesh_00174.ply"  "float shadowalpha" [0]
2127:    Shape "plymesh" "string filename" "geometry/mesh_00258.ply"  "float shadowalpha" [0]
2147:    Shape "plymesh" "string filename" "geometry/mesh_00262.ply"  "float shadowalpha" [0]
2173:    Shape "plymesh" "string filename" "geometry/mesh_00267.ply"  "float shadowalpha" [0]
2181:    Shape "plymesh" "string filename" "geometry/mesh_00269.ply"  "float shadowalpha" [0]
wahn commented

Now both (C++ and Rust) versions render approx. the same image:

pbrt

> imf_diff -d -f pbrt.png pbrt_cpp.png diff.jpg
differing pixels:	  1.509% (2075 of 137514)
average difference:	  2.359%
maximum difference:	 42.055%
Summary: Some pixels differ strongly.
== "pbrt.png" and "pbrt_cpp.png" are different

diff