This topic describes how to program hardware shaders using DirectX. Any version of the DirectX SDK can be used as long as the core runtime component is DirectX 9.0c or DirectX 11.
Support for DirectX 9 is a legacy feature, and will be removed in a future release. Developers should use the Nitrous APIs instead. See the Nitrous topics.
Support for the DirectX 10 legacy driver has been removed from the SDK as of 3ds Max 2015.
Plug-ins can be built to use any version of DirectX because different versions of Direct X sit side by side (i.e. later versions do not replace earlier version). Only the utility functions are updated with the DirectX updates; the core runtime does not change. Autodesk does not ship with a DirectX 8 driver anymore. However a developer is free to create his or her own window using a DirectX 8 device.
It is the core DirectX runtime that needs to be consistent. So if a developer request for the main DirectX device from 3ds Max, then they need to be using the same runtime component.
There are two main components to DirectX
D3DX consists of utility/helper functions. This is what changes with each SDK update. It contains the High Level Shader Language (HLSL) compilers, which is why Autodesk updates its usage when required. The core does not change except for a new runtime.
In addition to reading this section, you should examine dxstdmtl.cpp and dxstdmtl.h in the samples\material folder.