Precomputed Radiance Transfer, DirectX 10, and other awesomeness

Hey Scott --

How's it going, man?!  I'm still here at the PDC in Los Angeles.  Remember the last time you and I were at this convention centre?  Participating in the graphical extravaganza known as Siggraph 2001?  Yeah, those were the days.

There were two PDC talks here yesterday on the future of DirectX, and the geek in me is buzzing something fierce.

Check this image out!  It's a sample from the DirectX SDK, and it renders on my laptop in perfect real-time!   

Precomputed Radiance Transfer bat from the DXSDK samples

Remember when you explained to me how subsurface scattering works?  Why Gollum's ears would glow from the front if you stuck a flashlight behind his head?  How skin looks plastic without it, how marble loses its scale, and how milk appears opaque like glue?  Well, if you step back from the graphics industry for a year like I have, and then look again, you find that such jaw-dropping pre-rendered stuff is suddenly feasible -- in real time!  The trick they use is to pre-compute the surface response and represent it as a function of spherical harmonic functions (think: the electron orbital shapes from first-year chemistry).  Precomputed Radiance Transfer.  It's gonna be big.

Since you're teaching stuff like vertex and pixel shaders now, you'd have appreciated the next bit of the presentation.  I'm nostalgic for the days when we messed for hours with the DirectX High-Level Shader Language, letting it work out vertex and pixel properties without us writing in some silly card-specific assembly language.  Yesterday, they walked us through an excellent HLSL shader tutorial, using an increasingly-impressive rendering of planet Earth, which introduced us to everything from texture blending to normal mapping.  I'll send it your way if I get my hands on it.

Anyhow, I know that stuff is old hat, so let me get to the future: DirectX 10.  DX10 will provide the foundation of Windows Vista's graphics, and will debut in Vista Beta 2.  Needless to say, on the road to Beta 2, it's all being demoed today with software reference drivers, but the real thing's only a matter of time, right?

First thing about DX10; two words: NO GETCAPS!  For code monkeys like me, no more incessant interrogation of the graphics card to assess what it's capable of.  We get a guaranteed feature set for every card that supports DX(10+n), where n >=0.  Microsoft plans to stay ahead of hardware manufacturers, so that us developers need only to check the version of DirectX the card supports, instead of the myriad specifics.  Exponential joy.

And then... and then there's the geometry shaders.  Geometry shaders.  Dude -- vertices live in shader-land isolation NO MORE!  You can figure out what face a vertex appears on.  Insert and delete vertices!  Operate on entire primitives (holy crap!!).  I saw them do a single-pass render to a dynamic cubemap which they used in the scene.  I saw a particle system that could spawn and destroy particles, all implemented on the graphics processor.  I dreamed really big last night...

Scott, help me, man -- I gotta get out of here.  Hook me up with the August DXSDK, a mission, and a few weeks to go absolutely mental.  Or, fair enough, let's be realistic -- think about the October timeframe.  The October DXSDK will apparently install under Vista.  You're thinking this is just a desperate attempt to write a clever blog article... but what if it really was a desperate attempt to escape?!  I could find my passion again, you can fuel the one you never lost, we can build something worth losing sleep over.

So what do you say?  Are you in?

Skip to main content