Formulas came directly from the book. No issues with implementation. New code in PerspectiveLens.cpp, sampleRay.
Capsule test from paulbourke.net. Texture renders correctly for the most part, but renders black at the high depth location. Initial trouble with implementation due to believing that texture images were zero-indexed at top left rather than bottom left. New code in FBScatterText / bssrdf constructors and sample methods.
Only difficulty came with image loading. Initially thought extreme theta singularities were a bug, but was informed this is not so for latitude-longitude maps. New code in envlight.cpp.
Expanded spheres about randomly-selected "seed" drops from an initial random collection to clump and expand nearby drops. Only drops normal dot products with the seed normal greater than 0 were clumped to allow drops on both sides of a thin object. Vertex normals were not implemented. New code in mesh.cpp, in genModel.
Incomplete. New code found in bssrdf.cpp and path_mats_ss.cpp. First implemented a forward/backward scattering BSDF (fbscattering.cpp / fbscatteringtext.cpp), which is based on the microfacet BSDF but additionally includes a transmittance probability parameter which gives the likelihood of the outgoing direction being reversed. Three images below show a backlight piercing the leaf at diffferent transmission parameters.
Attempted actual subsurface scattering after that. Maple leaf texture did not seem amenable to uv blurring, so tried to blur points in 3D space. Random uniform points were generated as in the drop generator, and their incoming irradiances were computed. When integrating a material with subsurface scattering, a weighted average of the irradiances was taken by inverse power of distance to the intersection, where the power was a specified parameter (high power = less texture space diffusion-like blurring, low power = more). The randomness here seems to manifest at a high level, shown in the three backlit square boxes below. The distant light behind them (on the upper left corner from the viewer's perspective) produces different penetrating radiance patterns in each. Subsurface scattering was only implemented at the first intersection of the viewer ray (where specular lighting was also not implemented).
Uses MATS integrator. Leaf uses FBScatterText BSDF. Rock and floor are microfacet. Camera has DOF. Texturing error manifests as bright red spots and black spot on leaf. All credits for models given in the PowerPoint.