This is really nice. I like the lighting model but also the attention to detail, e.g. scratches on the Chrome material. One thing, that might be specific to my renderer implementation - the specular reflection seems to be point sampled. Is this to do with a float texture limitation?
If you're interested in this topic, you may want to check out the "Physically Based Rendering" book[1]. It's basically a college text book (and priced accordingly) but it walks through the steps to build a fully functional (and fairly performant) ray tracing engine in C++. As a bonus, the code is BSD licensed, and up on github[2].
It's been great to go through it so far; I'm re-writing the renderer in a different language to help with the learning, I can't recommend it enough.
IIRC from reimplenting 1/2 of the OpenGL pipeline in C for a CS course, the early Phong and Gouraud shadings inevitably looked either plastic, matte or dull. Hair and skin were hard but have been mostly solved fairly okay at great computational expense. And there's lots of hacks for things like oranges (bump mapping -> surface normal tweaks) and then they're shader languages. Each surface material (wood (especially chatoyance), textured marble, dull cloth, broken cement, butterfly wings (structural color/schemochromes), conchoidal broken glass, irregular dirt, dead leaves, pearlescent automotive paint, oil slicks (thin-film interference), on and on) needs slightly and/or completely different hacks to pull off the "Hollywood" real-time smoke-and-mirrors, least CPU/GPU/memory intensive fakery to render a believable scene whereas actual Hollywood can throw massive resources offline, at their leisure to render a scene frame-by-frame.
Metal is extremely difficult to model because light travels oddly along crystalline and micro-fissure structures.
6 comments
[ 1.2 ms ] story [ 32.9 ms ] threadIf anyone wants to read a lot more, here's a collection of possibly a majority of the non-academic material to be found online: https://interplayoflight.wordpress.com/2013/12/30/readings-o...
It's been great to go through it so far; I'm re-writing the renderer in a different language to help with the learning, I can't recommend it enough.
[1]http://www.amazon.com/Physically-Based-Rendering-Second-Impl... [2] https://github.com/mmp/pbrt-v2
Metal is extremely difficult to model because light travels oddly along crystalline and micro-fissure structures.