Final Render With Mitchell Netravali Reconstruction Filtering

Output
Normalized z-buffer
Sample count

Render time 0:03:18. Adaptive 8-32 samples per pixel. Time is ~13 times that of previous project.

Final Render

Output
Normalized z-buffer
Sample count

Render time 0:02:59. Adaptive 8-32 samples per pixel. Time is ~12 times that of previous project.

1 SPP / No Texture Filtering

Output
Normalized z-buffer

(Previous project) Render time 0:00:03

4 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer

Render time 0:00:12

16 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer

Render time 0:00:46

64 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer

Render time 0:02:57

Adaptive 4-64 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer
Sample count

Here, I set the variance threshold to 1/256^2. The rationale behind this is that if the standard deviationn is 1/256 or bigger, it is (probably) big enough to change the value of that pixel. Render time 0:01:15. The performance is the same as that of ~26 SPP on an average. Visually, the image looks better than 4 SPP, but worse than 16 SPP. Textures are not adequately filtered (by AA -- texture filtering is off).

Adaptive 8-64 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer
Sample count

Same variance threshold as earlier experiment. Render time 0:01:28. The performance is the same as having ~31 SPP on an average. The result is only a little worse than the 64 SPP image.

Adaptive 8-32 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer
Sample count

The 8-64 SPP experiment made me wonder if we really need 64 samples per pixel. Same variance threshold as earlier experiment. Render time 0:00:52. The performance is the same as having ~19 SPP on an average. The result is virtually indistinguishable from the 8-64 SPP image.

Adaptive 8-64 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer
Sample count

Looking at the sample counts of the previous 3 experiments, maybe the threshold is too low. Increasing that to 1/100^2 here. Render time 0:01:11 (performance ~25 SPP average)

Adaptive 8-32 SPP / Halton / No Texture Filtering

Output
Normalized z-buffer
Sample count

Same threshold as above. Render time 0:00:38 (performance ~13 SPP average), result is virtually indistinguishable from the 8-64 SPP image above. These settings give the best quality / cost in my opinion (4 SPP is too low, even when doing adaptive sampling), using these for subsequent parts.

Adaptive 8-32 SPP / Halton / Texture Filtering

Output
Normalized z-buffer
Sample count

Same threshold as above. Switching texture filtering on. In my implementation, the differential rays are 1.0 pixel away (not 0.5) from the traced ray (NOT the pixel center ray). Render time 0:01:06 (performance ~23 SPP average).

Adaptive 8-32 SPP / Halton / Texture Filtering / Mitchell-Netravali Reconstruction Filtering

Output
Normalized z-buffer
Sample count

Implemented bucketed rendering, bucket size 64 x 64. Render time 0:01:13 (performance ~25 SPP average).

Machine Specs

Processor 1.4 GHz Intel Core i5
RAM 4 GB 1600 MHz DDR3
Graphics Intel HD Graphics 5000 1536 MB
Software Xcode 9.0 on macOS Sierra 10.12.6