mmp / pbrt-v4

Source code to pbrt, the ray tracer described in the forthcoming 4th edition of the "Physically Based Rendering: From Theory to Implementation" book.
https://pbrt.org
Apache License 2.0
2.83k stars 440 forks source link

PBRT hangs while rendering certain scenes with subsurface materials from a certain sample rate and higher #416

Open wvierber opened 7 months ago

wvierber commented 7 months ago

I'm exploring the possibilities to render scenes using subsurface materials. In this endeavour, I stumbled upon PBRT hanging, not continuing with the rendering, without any error message or other direct indication which could cause this. This time counters just keep increasing while there is no progress and all but two threads stopped.

After some trials, I found out that this occurs at certain sample rates and is also affected by the presence of certain shapes (the vertical plane) in the scene, and on top of this is dependent on the subsurface properties of the material. I'm especially surprised by the big difference in sample rate between the two material properties (skin and outercortex) that can be rendered.

Below and attached you can find the used scene.zip and a summary of my observations:

Sample rate Material properties Vertical plane? Hangs?
10000 skin No No
(not reached) skin No Yes
50 skin Yes No
60 skin Yes Yes
10000 outercortex No No
(not reached) outercortex No Yes
3000 outercortex Yes No
4096 outercortex Yes Yes

Thanks for developing PBRT and possibly clarifying this behaviour of the software!

# Top view over complete area
LookAt 0 0 10  # eye
       0 0 0  # look at point
       0 -1 0    # up vector
Camera "perspective" "float fov" [45]

Sampler "halton" "integer pixelsamples" [4096]

Integrator "volpath"
  "integer maxdepth" [50]

Film "spectral" "string filename" ["../output/out.exr"]
     "integer xresolution" [400] "integer yresolution" [400]
     "integer nbuckets" [25]
     "float lambdamin" [500]
     "float lambdamax" [1000]

WorldBegin

# approximate the sun
LightSource "distant"  "point3 from" [ -30 0 52 ] 
  "blackbody L" [3000] "float scale" [5]

AttributeBegin
  Rotate 90.0 0.0 0.0 1.0
  Translate 0 0 0
  Material "subsurface"
    "spectrum sigma_a" ["./spds/outercortex_absorption.spd"]
    "spectrum sigma_s" ["./spds/outercortex_scattering.spd"]
    "float scale" [1]
    "float g" [0.8]
    "float roughness" [0]
  Shape "plymesh" "string filename" ["shapes/rect_slice.ply"]
AttributeEnd

## VERTICAL PLANE ##

AttributeBegin
  Rotate 90 0.0 1.0 0.0
  Translate -2.2 1 0
  Material "diffuse" "rgb reflectance" [ .01 .01 .01 ]
  Shape "plymesh" "string filename" ["shapes/plane_big.ply"]
AttributeEnd