My next session was by Tiago Sousa from Crytek. He talked about the effects in Crysis. I was really impressed that the Crysis guys had implemented so many effects like depth of field, motion blur, HDR tone mapping, and volumetrics, and that all of them work together so well. They really didn't cut any corners on Crysis. Visually I think it's about the most impressive game out there right now. Tiago talked about their system for water, including dynamic waves, reflection and refraction, chromatic dispersion, caustics, god rays, and that cool effect that happens on the screen when you leave the water. Next he talked about the shaders that they wrote to achieve the frozen look on objects. He said that effect was a real pain and required 4 separate iterations before they finally found a version of the effect that they were happy with. In the middle of the talk, Tiago gave a couple of guidelines for creating effects in games that I wish all programmers would follow. First he said "Never sacrifice quality for speed." I could hardly believe I was hearing that from a programmer. Most graphics programmers I know say exactly the opposite. He also said "Make the effects as subtle as possible." Usually when programmers put a new effect into a game, they really make it stand out and it ends up looking silly. Following the "subtle" advice is a good idea.
After that, I went to a session by Jeremy Vickery on Practical Light and Color. Jeremy is a lighting artist at Pixar and also a very good teacher. I loved the style of his presentation. He talked about the properties of light - diffuse, specular, reflection, refraction, subsurface scattering, etc. I loved his description of how light shifts in saturation as well as value when it gets darker. I learned a lot from him and I even ordered his DVD from Gnomon workshop so that I can really study the principles he was presenting.
Finally, I attended Adam Pletcher's session on Python for Artists. Adam really opened my eyes to a whole new world of posibilities with python. I already know MaxScript and I use it a lot to create tools to speed things up in 3ds Max. Python is a lot like MaxScript - but it's outside Max so it can do all kinds of things. Adam showed lots of demos of what it can do. He wrote several scripts that grab things from the web. One script grabbed the current number of people playing Halo 3 online. Another grabbed the current temperature for a given zip code and added to an auto-generated excel spread sheet. Another set of demos dealt with textures. The first demo scanned all of the textures in a directory and reported if any of them were not power of two or if they were saved at the wrong bit depth. For his final demo, Adam showed a script that he wrote that allowed you to fly around a 3ds Max scene using an Xbox 360 controller! Even better than that, he had assigned level decoration assets to the buttons on the controller, so you could use one button to switch between the set of available assets, and another button to place the assets in the level. It was controller-based interactive level creation inside Max. I was totally blown away. Needless to say, I am now learning python. I'm pretty excited about what I'll be able to do with it to speed up our art pipeline once I start learning.
Thanks for reading my GDC blog posts. If you'd like more information on any of the sessions I added, please let me know. I took at lot of notes and I'd be happy to share additional details if anyone is interested.