This page is my personal collection of highlights from GDC 2014. I was not able to attend in person, so I had to rely on Twitter to get updated. The immersion was not perfect, but some of the thrill was definitely carried over. So here it goes (in release order):
Math for Game Programmers: Inverse Kinematics
Gino van den Bergen
Gino “dual numbers” van den Bergen describes an algebraic framework for kinematics, based on — you guessed it — dual numbers. It is worth taking seriously though. The approach is based on the fact that the group of rigid-body transformations is covered by dual quaternions (quaternions made up from dual numbers, as in
typedef Quaternion<DualNumber> DualQuaternion, or equivalently ), and so an IK-chain is modeled algebraically by a bunch of dual quaternions multiplied together, which can be solved for more easily than with matrices. Pretty clever.
Math for Game Programmers: Grassmann Algebra in Game Development
This talk has background information about exterior algebra and the projective split, and somewhat tangent (no pun intended) to the dual quaternion talk mentioned above, because it is all based on the same 19th century stuff (Grassmann, Hamilton, Clifford) that is making a renaissance these days. Lengyel first gives the message “know your vectors”, by dissecting ordinary vectors, bi-vectors (aka. axial vectors), and co-vectors (aka. pseudo-vectors). The second part shows how to easily carry concepts from 3-D to homogenous 4-D (for example, doing a 4-D cross product, join and meet, etc).
Assassin’s Creed 4: Black Flag Road to next-gen graphics
This talk discusses 3 next-gen techniques used in Black Flag: global illumination, fog irradiance volumes and screen space reflections. For me, the fog volumes were the most interesting part, as the team has devised a clever compute-based approach do solve the issue. The talk also has some practical details on the inner workings of AMD’s GCN graphics chips.
Approaching Zero Driver Overhead (a.k.a. →0)
cass everitt et. al.
This presentation and a similar one given at the Steam dev days show a concerted effort of major graphic chip vendors to evolve OpenGL further and reduce driver overhead to break the draw call barrier and enable a push in scene complexity. The important bits here are bindles textures, persistently mapped buffers and MultiDrawIndirect, together with the fact that you can fill multiple buffers concurrently from multiple threads (multithreading is in OpenGL since version 1, and buffers can be shared among contexts). This already works with existing drivers using existing extensions. I am a firm believer and practitioner of Never Start Over, therefore I welcome a more evolutionary path in favor of radical new designs like Mantle or #DirectX12 (though competition is always healthy).
- Shorter version hosted at Khronos
Rendering Battlefield 4 with Mantle
Nevertheless it was interesting to see details on the proposed Mantle API. I think it is no coincidence that they choose to prefix their entry points with “
gr”, similar to Glide (the only viable spiritual predecessor to Mantle if there should be any). Doing graphics the Mantle way revolves around pipeline objects and descriptor tables. Both are larger hand have even coarser granularity than the render state objects introduced in DirectX 10 (the latter ones turned out not to match actual hardware at all, so they’re not seeing the perf boost that they thought they would bring). Interesting read overall.
(be sure to scroll down if your browser window is narrow)
Crafting a Next Gen Content Pipeline for The Order 1886
David Neubelt and Matt Petineo
This presentation is similar to the one they gave at SIGGRAPH last year (as part of the Physically Based Shading course). This time the focus is more on engineering issues and less on PBS. The salient points are Tiled Forward +, H-basis, directional AO maps, GGX distribution (i have my gripes with this, I’d rather overlay multiple cosine-power lobes and have a material with more than one glossiness parameter to be able to flexibly represent NDF distributions at different length scales), Kajira-Kay-ish Hair, inverted gaussian for cloth, normal map antialiasing via reduction of glossiness in mip levels, and a somewhat cool hardware setup + editor tools to acquire BRDFs and paint with them.
Physically Based Shading in Unity
This caught my attention, because on a side note buried deep inside the paper, they mention they’re using my rusty old shading model from ShaderX7 (which I later dubbed as “Minimalist Cook Torrance”) on mobile targets. Back then I really had to squeeze out every arithmetic operation I could. And now the history of yesterday’s desktop repeats in the form of today’s mobile. Check out their demo for iPad and also the pictures on their blog it’s looking really nice.
Introduction to PowerVR Raytracing
James A. McCombe
In a bold move, Imagination Technologies introduces hardware support for ray-tracing in their latest PowerVR graphics chips. This evolutionary step mostly uses the already existing compute units to process rays in parallel, but also adds dedicated fixed function hardware for ray-box intersection tests and scene traversal. They advertise this tech to accelerate secondary rays emitted from the positions of rasterized pixels to allow better reflections, refraction, order-independent transparency, high quality shadows and generally anything that rasterization sucks at. (Yes, this means you need to “upload” your scene to the graphics chip and keep 2 representations.) In the off-line domain, the Unity engine ships with support for this hardware to preview light map baking. I find this innovation highly refreshing. Ray tracing is no longer the eternal “technology of the future”, it’s coming now.