Friday, June 16, 2017

Subsurface Scattering

I chose to implement subsurface scattering for the term project of the course. My first intention was to implement one of the diffusion approximation algorithms. Although they are much more faster than simulating transfer of equation with volumetric path tracing, they either do not work with arbitrary geometry or need a preprocessing step which I found cumbersome. Therefore, I implemented a volumetric path tracer that simulates subsurface scattering. The most challenging part for me was to find appropriate absorption and scattering coefficients for the tests. Thankfully, series of outputs show the effect of the scattering inside the medium clearly. Also, I captured a video to show the progressive feature of my path tracer.

Additionaly, I changed the scene input format quite a bit. I used assimp to load the 3d models. Since it supports many of the popular extensions, scene design is much more flexible than before. An example scene file is here.

Here are the outputs for the same scene with different material settings that my path tracer supports.
Lambertian Material
kd: (1.0, 1.0, 1.0)
2109 samples
Perfect Specular Material
ks: (1.0, 1.0, 1.0)
1785 samples
Perfect Refractive Material
tintcolor: (0.79, 0.53, 0.79)
tintdistance: 0.2
index of refraction: 2.0
2470 samples
Translucent Material
tintcolor: (0.79, 0.53, 0.79)
tintdistance: 0.2
index of refraction: 2.0
scattering coefficient: 50
anisotropy: 0.7
1015 samples
Translucent Material
tintcolor: (0.0, 0.8, 0.0)
tintdistance: 0.1
index of refraction: 1.5
scattering coefficient: 100
anisotropy: 0.7
3311 samples
Translucent Material
tintcolor: (0.8, 0.8, 0.8)
tintdistance: 0.2
index of refraction: 1.0
scattering coefficient: 150
anisotropy: 0.7
4900 samples
Finally, here is a video to demonstrate the progressive feature.

1 comment:

  1. Hocam güncelleme bekliyoruz merakla çok güzeller.
    Balmumu dimi bunlar?

    ReplyDelete