PDC 2008, Day #4, Session #3, 1 hr 15 mins
I jumped off the Azure track (starting to be a bit repetitive) and next went to a session focused on Direct3D.
Despite the title, this session really had nothing to do with Windows 7, other than the fact that it talked a lot about Direct3D 11, which will be included in Windows 7 and available for Windows Vista.
Direct3D 10 is the currently shipping version, and supported by most (all?) modern video cards, as well as integrated graphics chips. I’m not entirely sure, but I think that Direct3D 10 shipped out-of-the-box with Windows Vista. It is also available for Windows XP.
Allison spent about half of the talk going through things that are different in Direct3D 10, as compared with Direct3D 9.
I’m not inclined to rehash all of the details. (I’ll include a link to Allison’s slide deck when it is available).
The main takeaway was that it’s very much worth programming to the v10 API, as opposed to the v9 API. Some of the reasons for this include:
- Much more consistent behavior, across devices
- Cleaner API
- Elimination of large CAPS (device capability) matrix, for a more consistent experience across devices
- Built-in driver that allows D3D10 to talk to D3D9 hardware
- Addition of WARP 10 software rasterizer, to support devices that don’t support WDDM directly. This is actually quite a bit faster than earlier software-only implementations
In the second half of her talk, Allison talked about the advances coming in Direct3D 11. She mentioned that D3D11 will ship with Windows 7 and also be available for Windows Vista.
Again, the details are probably more appropriate for a game developer. (See the slide deck). But the high level points are:
- Direct3D 11 is a strict superset of 10—there are no changes to existing 10 features
- Better support for character authoring, for denser meshes and more detailed characters
- Addition of tessellation to the rendering pipeline, for better performance and quality
- Much more scalable multi-threading support.
- Much more flexibility in what can be distributed across threads
- Dynamically linking in custom shaders
- Introduction of object-oriented features (interfaces/classes) to HLSL
- New block compression
- Direct3D11 will be available in the Nov 2008 SDK
Finally, Allison touched briefly on some future directions that the Direct3D is thinking about.
The main topic that she talked about here was in potentially using the GPU to perform highly parallel general purpose compute intensive tasks. The developer would use HLSL to write a “compute shader”, which would then get sent to the GPU to do the work. As an example, she talked about using this mechanism for post-processing of an image.