Introduction to light shading for real-time rendering

I am finally back in Tokyo after two intense weeks in Europe, during which I did things as various as being a perfect tourist in four capitals (stolen bag experience included) or attending the world biggest demoparty, getting nominated with the rest of my group for some awards, ranking 2nd in a competition and getting slashdotted for that. :)

As previously advertised, I presented at Revision a talk on light shading. A video was recorded for the streaming and has been made available online pretty much immediately, thanks to the work of the Revision team:

Unfortunately, the last minutes are missing. I was basically comparing the Fresnel version with the manually tweaked version, and explaining that while the former might not look perfect yet, it was an out of the box result, while the latter required me to introduce some fudge factor I had to tweak. Regarding references, I couldn’t list them all so I just mentioned the most significant ones (the first part of this talk is strongly inspired by Naty Hoffmann’s course introduction) and referred to here for the rest. At last I mentioned an evaluation sheet for whoever cared to give some feedback.

Performance wise, when seeing the video I feel embarrassed. The flow is far from what I was aiming, some explanations are not crystal clear as I wanted them to be, and you can notice I was confused a couple of times by the surrounding noise (hey, did I mention it’s a party?). But on the other hand various people told me it was a good seminar so even though there is much room for improvement, it’s not that bad of a start I guess.

Anyway, you can download a quick export of the party version of the slides. When I have some time I will try to get a better looking export (without text and images cropped out), and fix a couple of slides.

Talking about light at Revision

Over the last months I have been reading various resources on light shading, and shared the most relevant ones on this blog. Along the way I became more and more thrilled by how light interacts with materials and how we can model it to get more convincing rendering.

I found some insights to be really enlightening and very worth sharing. Therefore as a way of challenging my own understanding of this matter and as an opportunity to practice talk, I decided to speak about real-time lighting during a seminar at Revision.

Revision is a big demoparty that will be held during four days over the Easter weekend in Saarbrücken, Germany. If you are coming (which I recommend) and want to hear about shading, specular and Fresnel, come and see me!

Update: the talk is scheduled for Saturday April 7th, 14h – 15h.

“Introduction to light shading for real-time rendering”

Update: see this post for the material.

Readings on physically based rendering

Physically based rendering (PBR) seems to be the hot thing recently in game as well as film industries. Last year at SIGGRAPH Naty Hoffman led a course on physically based shading. The first talk in particular gives some excellent insights on the physics behind lighting.

This year, at SIGGRAPH again, the physically based lighting used in Call of Duty: Black Ops was one of the topics of the course Advances in Real-Time Rendering in 3D Graphics and Games. Keith Judge wrote an article to sum up the ideas presented in this talk in shading language. Sébastien Largarde also has some insights on the shift to physically based shading from a production point of view.

On a narrower topic Rory Driscoll briefly explained the problem of energy conservation, a first but important step toward PBR, in a convincing and straight to the point manner. In articles mentioning normalization factors the origin is not always clear, especially when authors take shortcuts to avoid digressing from their topic. Fortunately Fabian Giesen wrote a demonstration of the normalization factor for the Phong and Blinn-Phong models and Chris­t­ian Schüler gathered various of the normalization terms we can see in publications, with proper references.

There are many other sources to read, but I will stop there for now. Just follow the links and you have plenty of reading already. ;)

Addendum: Sébastien pointed out this article on energy conservation for wrapped diffuse lighting and this one on physically plausible microfacet BRDF, which includes a WebGL demo to play with.

Update: Tri-Ace has made a couple of presentations on the matter over the last years, which you can find on their research page.

Update: this article, Basic Theory of Physically-Based Rendering, presents the ideas of PBR in a very easy to read manner and works well as an introduction.

Visualizing specular component in real life

Graphics programmers are quite used to the idea of specular highlight. It is usually more or less understood, or accepted, to be the reflected part of the incoming light, on top of the one that sort of bounces in every direction and that is referred to as the diffuse part. The specular term happens to have a very physical meaning though (which I won’t elaborate on for this time) and the interesting property of being polarized while the diffuse part is not.

This property is used by photographers, who add polarizing filters to their gear in order to eliminate glares and reflections from their shots when taking photos through glass or water for instance.

John Hable has written a very interesting article showing how to split specular and diffuse in real images. He later wrote another article showing that specular often contributes more than we expect for matte materials. Both help giving an idea of the importance of the specular term as well as getting the eye trained to identify it.