Ok, I’m officially at least a year overdue for a blog post. Well, at least now I have something interesting to post about.
I just gave a small talk at this years SIGGRAPH as part of the “Physically Based Shading in Theory and Practice” course. The talk covered the Physically Based Shading we developed during Black Ops and the improvements we made during Black Ops II.
You can find the slides, course notes and Mathematica notebooks on the course’s web page.
I finally managed to track down a bug in the debug allocator functionality that Eric Jacopin reported to me few months ago.
It turned out I had a race condition where a block would be freed but before being unregistered from the debug tracking utility and if another thread managed to get in and allocate the same block, it would trigger an assert that the block is already being tracked.
Here’s the corrected version HPHA-errata.
Embarrassingly I had a bug in the Kelemen-Szirmay-Kalos Visibility function. In the process of porting the shader HLSL code to slide’s math, I have somehow made a mess.The screenshots were taken with the correct math at least.
Thanks to Sébastien Lagarde for finding this out.
The slides will be updated shortly. In the meantime here’s the correct KSK function:
The 2011 course’s main page.
Direct link to my slides.
Apologies for running out of time for Q&A at the course. If you had any questions please do leave a comment here and I’ll gladly answer as best as I can.
I’m very excited (and stressed) about this.
I’ll be giving a small talk at this year’s Siggraph as part of the Advances in Real-Time Rendering in Games.
Here’s the abstract:
Physically based lighting in Call of Duty: Black Ops
In this talk Dimitar Lazarov will present the lighting engine of Call of Duty: Black Ops and discuss the fundamental restrictions imposed by targeting 60 fps. He will overview the premise behind physically based lighting, why it was chosen for adoption in Call of Duty: Black Ops and recount the major technical and non-technical hurdles that were encountered during the implementation and deployment.
Dimitar will provide an in-depth analysis of the specular portion of the BRDF, overview the different distribution functions, shadow-masking functions, Fresnel effect approximations etc, and discuss the ones that had the best visual / performance trade-off for Call of Duty: Black Ops.
Additionally, Dimitar will show two important algorithms that were essential in achieving a physically believable specular – roughness-driven pre-filtered and normalized reflection probes and roughness mip-map augmentation with normal mip-map variance.
And finally, Dimitar will discuss how physically based lighting affects the authoring of art assets and some potential difficulties the Art team could encounter in the transition to physically based lighting.
This post is only 3 years overdue.
This is the HPHA article and source code I wrote for Game Programming Gems 7.
If you haven’t bought the book yet, don’t hesitate to pick it up on Amazon before they start collecting sales tax.
My first blog post. I have no idea what to say yet, but I’m sure it will come to me in due time.