Wednesday, October 15, 2008

DirectX history

I wanted to take a link I found recently and repost the material. Its a "History of DirectX" post I had forgotten I had made back in 2004.

"Some one should store this somewhere for when it gets asked again :-).

Alex, Craig, and Eric burst onto stage at CGDC 1995 and showed a beta of the GamesSDK v1, with DDraw, DSound, DInput, and DPlay. The logo used was the radiation symbol, the internal code-name was "The Manhattan Project" and the technology was smoking hot compared to any previous Windows graphics API.They got a standing o, as no one had ever seen an MS library delivering refresh-rate graphics. It was quite a scene, and the BBQ and open rides at Great America contributed to the feeling that something great was happening.

Summer of 1995 MS bought RenderMorphics with the intent of adding a 3D API to the GSDK. I know this because I was at Kaleida labs who was a source licensee of RL, and I was the 3D developer for ScriptX, both Mac and Windows. Thus Kaleida and I was notified about the transaction.

GSDK v1 shipped in Oct 1995, just after Windows 95 shipped in August 1995.The famous Judgment day Halloween party complete with Gwar in the Haunted House at the Redwest parking lot celebrated the event.

The day after Judgment day, "The Aftermath" was held to brief developers on D3D. At that time a beta of D3D was made available. The immediate mode API was always called D3D. The higher-level RL API was renamed to be D3D Retained Mode.

At some point a 2nd version of RL was indeed made available, but at the cost of being COM-ified. RL lost a bit of its performance with this architectural change. But D3D IM and accessing 3D HW is where the action was anyway.

DX 2.0 shipped in June 1996. The Games SDK was indeed renamed at this point, but still used the old radiation symbol logo. It contained updates to the original 4 APIs. D3D IM and RM were aimed at DX 3.0.

I arrived at MS on Alex’s team during Meltdown week August 1996. DX 3.0 shipped August "43" ( Sept 12 to the rest of us ) because Eric promised it would ship in August. D3D IM with execute buffers and D3D RM were in that release.

The release plan Alex, Craig, and Eric had outlined before the community at CGDC 96 and again at Meltdown Aug '96 showed: DX 3 Aug 96 DX 4 Dec 96 DX 5 June 97. DX 4 was basically a bug fix release to make sure DX 3 actually worked on real 3D HW since the Voodoo 1 HW release was going to be after DX 3 shipped. Similar fix-ups have happened since. After a lot of discussion, saner heads prevailed and convinced the 3 that a release right before Christmas would be a bad idea in terms of consumer satisfaction and game developer sales, since there would be little testing and a high likelihood of bad experiences and returns. So the question was what to do about release numbers. Since a DX 5 release in 97 was already on tap and had been discussed publicly, it was decided to skip DX 4 and go to DX 5. That way the community got the expected release in 97.

At the same time, both Japanese and German geographies provided feedback that the radiation symbol logo was not appropriate for those geographies.Kevin Dalles was product manager at the time (before Kevin Bachus) and produced the 4-arm logo over winter 96-97. The logo change was unrelated to any release vehicle.

EDIT:Craig provides a similar recount of history here but with more details from the inside since I joined between DX2 and DX3 ( hey, I did ship DX2 games at Dynamix ). Between DX3 and DX5 Craig, Alex, and Eric went off to do the Chrome browser that used the 3D hardware for rendering. Way cool, but both too far ahead of its time and the team wanted to charge for it.

DX 5 was basically the DrawPrimitive release for D3D and did ship summer of 1997 and is what I used for my Unreal and 3DSMax ports. If I recall correctly, Force Feedback DInput was in this release too.

DX 6 was basically multi-texture, with the fixed function multi-texture cascade, from the D3D perspective. Released 1998.

DX 7 was basically hardware transform and light from the D3D perspective. Released 1999. This was the first full release where DMusic was in the SDK, even though it was initially released in the 6.1 "update".

DX 8 was the 1st rev of programmable shading for D3D, but was very limited for pixel shaders. Very. Just as a note, DPlay actually got a lot better in this release. At this point I became the DX SDK PM. Released 2000.

Dx 8.1 was an intermediate step from the D3D perspective with support for an advanced pixel shader model, 1.4, which was better than the 1.1 in D3D8 but still not very general. Released 2001.

DX 9 was the SM2.0 release with really good pixel shaders, compatibility with DShow, the last unified toolkit release, and was in my opinion the high-water mark of DirectX. I have an internal politics post that I may decide to make some day to discuss what has happened to the integrated multimedia toolkit that was DirectX, but I digress. Released Dec 2002.

DX 10 is really Direct3D 10 and is only about 3D. And also Vista only, which was a huge break with the past. Certainly the API churn was huge, the flip of the texture formats disabled previous generation D3D content, and Geometry Shaders and some of the other interesting bits of D3D10 have not really fulfilled their promise yet, time will tell if they end up doing so.

Now we await D3D11 in Windows 7 and are expecting it to also appear in Vista. ComputeShader, Tesselator, SM 5.0, and a few other bits are the E-ticket rides.

As a retrospective flashback, Alex started appearing down in the valley at Ken Nicholsons "GamePC Consortium" meetings (which I attended) in 1994 and was talking about graphics acceleration, "Funstones", as a benchmark to measure graphics performance, etc - all a huge big hint he was cooking something up back in Redmond.

Second Hand Smoke captures some of that perspective. Although I have to say WinG wasn’t that laughable, just limited to 8-bit modes, which wasn't enough. DDraw accelerated all modes by comparison, which made it way more valuable.

And the perspective on how RL become D3D IM is a bit limited in that it’s accurate enough for RM but doesn't hit enough data points for the IM API.

And D3D definitely was not "jumped on" by 3Dfx, ATI, and nVidia. 3Dfx did all they could to counter-evangelise Glide. ATI and nVidia were helpful true. Nor is Rich Seidner's "Crushed by MS" totally true - I worked with Rich at Kaleida and thus know quite a bit about what really happened.

So don't read Omits' article or any of these articles and believe all of it.

All that and I didn't mention the spaceship at all :-)”

Some one did store the original of this post away here, thanks to Keith Ditchburn. I just touched it up to bring it up to date, and found the links to Omit’s and Rich’s articles. And I still haven't discussed the spaceship story. :-).

0 comments: