Another project down, another new feature! I’ve implemented specular reflections for shiny objects, and the results look great! All of these renders were using the GGX distribution and accompanying geometry term covered in the well-known Cornell-microfacet whitepaper. For Fresnel, I use Schlick’s approximation.
These renders have much higher resolution than the prior ones. This is because I got my render farm working! The control server is an Amazon Web Services EC2-micro, and I’ve been populating the farm with school computers on the downtime during the week. I haven’t been tracking render-times exactly, but I can provide some estimates:
- Darker sphere close-up scene:
- 1920×1080 resolution
- 8196 passes
- ~30 minutes with 160 cores.
- Ball array scene:
- 1000×1000 resolution
- 2048 passes
- ~5 minutes with 160 cores.
- Double-sphere reflection scene:
- 1920×1080 resolution
- 2048 passes
- ~13 minutes over 80 cores.
Again, these times are estimates. They’re basically from memory, I’m tracking time with my new renders, so I’ll see how these hold up.
What I found interesting was the difference in rendering different parts of the scene. Without a proper load distribution system, some computers can finish in almost half the time of the others (usually dependent on scene complexity in the region). Areas with high specular-reflection usually take longer to render, due to the more expensive calculations.
I’m playing with different distributions right now (comparing GGX, Phong, and Beckman), and I’m looking forward to seeing the differences. I’ve also been looking at Disney’s whitepaper on their PBR model, and I want to try to implement their model when I have some free time.
The last feature to implement in this class will be light transmission, which will be interesting! It’s one of the driving reasons I implemented a render farm, so I’m interested to see how much of an improvement I’ll see.