Thursday, December 21, 2006

What's New in the December 2006 DirectX SDK

This version of the DirectX SDK contains the following new features, tools, and documentation.

Direct3D 10 RTM

The DirectX December 2006 SDK contains the first official release of Direct3D 10, the latest graphics platform from Microsoft. Developers can now publish and distribute Direct3D 10 applications and games that leverage all of the software and hardware features of Direct3D 10 in Windows Vista.

Applications that use D3DX10 must deploy with a DirectSetup redist.
New D3DX Functionality

This release adds several new D3DX functions including the following:

* The D3DX10LoadTextureFromTexture function (added to D3DX10) allows developers to copy texture to texture, perform pixel format conversions and filtering for Direct3D 10 resources.
* The D3DX10ProjectCubeMap function (added to D3DX10) projects a cube-map lighting environment on the SH basis. This function is just a D3DX10 version of D3DXProjectCubeMap.
* The D3DXSHMultiply2, D3DXSHMultiply3, ..., and D3DXSHMultiply6 functions enable the multiplying together of several spherical harmonic (SH) visibility functions. These five functions are availble in both D3DX9 and D3DX10.

XACT: Code-driven API

The XACT code-driven API provides access for more programmatic control of basic objects, such as playing waves (from streaming and in-memory XACT wavebanks or directly from wave files) along with pitch and volume control. The API leverages the existing engine features of XACT such as streaming and wavebank parsing allowing a developer to develop code-driven audio without requiring extensive use of the XACT user interface to create content.

XACT: Cue Visibility API

Titles that want run-time visibility into the contents of an XACT cue can use a new method, IXACTSoundBank::GetCueProperties. This method returns information about the properties of a cue. In addition, the IXACTCue::GetProperties method from Xbox 360 is now available on Windows. It returns specific data on a prepared cue. The returned cue property data includes information such as the currently active variation for sounds and waves.
PIX Improvements

This release of PIX has the following improvements.

* Assembly-level debugging of Direct3D 10 shaders is now available.
* The Run File window layout has been redesigned to make it easier to configure and show more information at once.
* The Create Run File action has a new option to disable write caching while capturing the run file. If the option is enabled, capture performance is somewhat reduced but PIX will capture more data in the event that the target program crashes.


This release includes several new and updated samples.

* The ContentStreaming sample demonstrates streaming content in the background for applications that need to display more data than can fit in video or system RAM at any given time. This sample supports both Direct3D 9 and Direct3D 10.
* The CoreDetection sample demonstrates how to obtain CPU core topology information for the system and the current process. That information is then used to target specific cores for thread execution.
* The XACTCodeDriven sample shows how to use the XACT code-driven API to load and play a wave file without using the XACT user interface.
* The GameUXInstallHelper sample has been updated to support Windows Media Center registration using the Game Definition File (GDF) metadata.

Technical Articles

This release includes several new technical articles.

* The User Account Control for Game Developers article discusses the User Account Control (UAC) security feature, introduced in Windows Vista. This article describes the guidelines and best practices for game developers to work effectively with the UAC security feature.
* The DirectX Installation for Game Developers article addresses some of the common questions about the DirectX runtime, the DirectX version number, the DirectX libraries, best practices for installing DirectX, and how to deploy the DirectX debug runtime.
* The Games for Windows: Technical Requirements article discusses the requirements for the Games for Windows program and the Games for Windows: Test Requirements article describes how to test those requirements.

Known Issues with the December 2006 SDK

Windows 95, Windows 98 and Windows ME Are Unsupported by DirectX

Starting with the December 2006 SDK, DirectX no longer supports the targeting of applications for Windows 95, Windows 98, Windows 98 SE, or Windows ME. D3DX9_32.DLL will not install or load on these legacy operating systems. Developers who need support for these legacy operating should use the October 2006 or older SDKs.
XACT: Stop As Authored on Cue With Looping May Fail

In the December 2006 SDK, calling "Stop As Authored" on a cue using a looping sound may fail to break out of the loop correctly. This will happen if the following conditions are met:

1. A cue is playing a sound that has a wave event with the "PlayRelease" option set.
2. The currently active wave variation is a short streamed looping wave.
3. The "Stop As Authored" call is made before the cue has started playing the loop region for the wave.

This issue will be fixed in a future release of the SDK.
XACT: Deleting Waves As They Play May Cause The GUI To Crash

In the December 2006 SDK, if you delete a wave as it is playing, the XACT user interface may become unstable and eventually lead to a crash. This issue will be fixed in a future release of the SDK.
No Wave Notifications if the Notification is Registered Using a Wavebank Pointer

In the December 2006 SDK, the XACTNOTIFICATIONTYPE_WAVEPREPARED notification will not fire if the notication was registered using a wavebank pointer. Titles may workaround this issue by registering the notifcation against a wave instance or a wave index. This issue will be fixed in a future release of the SDK.
New HLSL Shader Compiler for Direct3D 9 Targets: No Support for 1.x Pixel Shader Targets

The December 2006 SDK includes D3DX9_32.DLL. This DLL includes the Direct3D 10 HLSL compiler enabled for Direct3D 9 targets (shader models 2.0 and later). The new compiler has no support for 1.x pixel shader targets. This new compiler is the default for Direct3D 9. As a result, all developers are encouraged to author their shaders in HLSL and use shader models 2.0 and higher. The legacy compiler is available using the /LD switch.

The new compiler exposed has the following issues:

* Using asm_fragment blocks is not supported by the DLL. Compilation of shaders or effects containing these statements will fail.
* Because only a subset of HLSL optimizations and new features are active in this release, generated shaders will not be fully optimized.

These issues will be fixed in a future release of the SDK.
DirectX Symbols Not Included For Pre-Release Versions of Windows Vista

In the December 2006 SDK, the symbol files download does not include symbols (PDBs) for pre-release versions of Windows Vista. In particular, there are no symbols for either Windows Vista RC1 or Windows Vista RC2.
Per-Sample Readback of MSAA Render Targets in the Shader Not Supported in the Reference Rasterizer

In the August 2006 and later SDKs, per-sample readback of MSAA render targets in the shader is not yet supported by the Direct3D 10 reference rasterizer. This issue will be fixed in a future release of the SDK.
DXGI: Cross-Process Shared Surfaces Not Supported in the Reference Rasterizer

In the August 2006 and later SDKs, cross-process shared surfaces are not supported when using the Reference Rasterizer. This issue will be fixed in a future release of the SDK.
PIX for Windows

In the August 2006 and later SDKs, PIX has the following issues:

* Some of the advanced features of the surface viewer in the PIX detail pane require a minimum of shader model 2.0 hardware.
* PIX currently does not capture D3DX10 API calls. The Direct3D 10 API calls that the D3DX10 APIs make will be captured and can be replayed.
* The pixel history feature does not currently support point, line, and instancing primitive types, which will be supported in a future release. Pixel history currently only works on non-multisampled render targets but support for multisampling will be added in a future release.
* You cannot view Direct3D objects from the context menu until they are valid. To make an object valid, select an event in the render pane (or any other detail pane) after the object is created.
* The "Modify D3D Device," "Modify Draw Calls," and "Save Device State" actions do not yet work for Direct3D 10 devices.
* For applications that use Direct3D 10, full stream capture only works when the trigger is "Program Start."

Microsoft Cross-Platform Audio Creation Tool (XACT)

In the August 2006 and later SDKs, the Microsoft Cross-Platform Audio Creation Tool (XACT) has the following issues:

* The XACT GUI is not yet supported in Windows Vista.
* The XACT Authoring Tool requires administrative privileges to run.
* Looping sounds with multiple tracks will get out of sync over time if some tracks have multiple variations and others don't.

Shader Debugging in Visual Studio 2005

In the August 2006 and later SDKs, the shader debugging functionality of the DirectX Extensions for Visual Studio® does not work with Visual Studio 2005.
DirectX Control Panel Removed from the Microsoft Control Panel

In the August 2006 and later SDKs, the DirectX® Control Panel has been removed from the Microsoft® Control Panel. You can now find the DirectX Control Panel in the Start menu under All Programs, Microsoft DirectX SDK, DirectX Utilities.

In addition, the control panel executable has been renamed from directx.cpl to dxcpl.exe; it can be found in both the %DXSDK_DIR%\utilities\bin\x64 and %DXSDK_DIR%\utilities\bin\x86 folders.
Installation Notes for All Platforms

* This SDK will install on Windows XP, Windows Server® 2003, Windows Vista RC2, and Windows Vista RTM using Visual Studio .NET 2003 or 2005.
* Before installing the current DirectX SDK, you should remove previous versions of the DirectX SDK.
* Some samples require that the latest Microsoft Windows SDK (Platform SDK) be installed on your system.
* If you encounter compilation issues related to the DirectX headers, make sure that the include directories in Visual Studio are set correctly. On the Win32 platform, make sure that there is a reference to the DirectX headers: either "$(DXSDK_DIR)include" or "c:\program files\microsoft DirectX SDK (December 2006)\Include" underneath the include directory: "$(VCInstallDir)Include".
* SDK Installation to a network share is not supported and some components (documentation and managed samples) will not run.
* Several virus protection software applications interfere with SDK installation and may require you to temporarily disable virus protection software until SDK installation is completed.

If you encounter "A cabinet file is necessary for installation and cannot be trusted" error during installation, your system may be corrupted or cryptographic services may be disabled. To attempt to resolve the problem, please try the following:
1. Enable cryptographic services: On the Start menu, right click on My Computer and then click Manage, which will display the Computer Management window. In the left panel of the window, click Services and Applications. Then, in the right panel of the window, double click on Services, then double click Cryptographic Services, which will display the Cryptographic Services Properties window. In the General tab of that window, make sure that Service Status is Started and that Startup Type is Automatic.
2. If you are running Windows on a FAT32 drive, run scandisk.
3. Try the resolution steps in Detecting digital signing issues in Windows XP
4. Try the resolution steps in You cannot install some updates or programs
5. Remove temporary files in %temp% and (if installing end-user runtime) "%windir%\system32\directx\websetup Error"
* External firewall programs may highlight that the file "InstallDeveloperFiles.exe" wants to access the Internet. This is by design and should be enabled.

Installation Notes for Windows Vista

Running Microsoft_DirectX_SDK.msi instead of setup.exe requires "Run As Administrator" to work correctly. If you install using setup.exe instead of using the MSI, you will be prompted for elevated permissions before the installation can succeed.

This release does not install any Developer Runtime components on versions of Windows Vista prior to RC2. If you are running earlier versions of Windows Vista (RC1 or earlier) and you need Developer Runtime components, you can use older releases of the DirectX SDK. Or you can copy the components that you need (debug DLLs and symbols) from "checked" builds of Vista. For Windows Vista, the Developer Runtime only includes DirectX debug components. All release versions of D3DX and the latest debug version are installed on all versions of Windows Vista.