2016-02-05

It’s been a while since I’ve had the time to update my blog, I hope to have much more to write about very shortly as a long term project I’ve been working on approaches fruition.   It’s been twenty years this year since my cohorts in crime Eric Engstrom and Craig Eisler created the DirectX family of API’s, culminating in 1996, with the launch of Direct3D.  Looking back twenty years later it’s hard to believe that I participated in such an amazing period in computing history… particularly when I compare what I knew and thought then about the future of computing at the time with where it has all gone since then.  One of the things that has stuck in my mind over the years is the price of being heretical.  It can be very hard and very costly to fly directly in the face of widely and religiously held dogma, especially when it is highly respected academics elevated to positions of great power and authority who you are presuming to disagree with.  In the case of Direct3D, I found myself on the wrong side of any argument about the future of 3D graphics with many pioneers in the space who I had learned my own skills in graphics from years earlier.  It wasn’t so much that they were “wrong” as that their academic view of how to make 3D computing a mass market reality was… highly naive and destructive in my opinion.  Initially, Bill Gates and Microsoft’s then CTO Cameron Mhyrvold, agreed with them but in the end they came around to embracing Direct3D as Microsoft’s consumer media strategy.

In honor of the 20th anniversary of Direct3D and the many great people who have contributed to DirectX and the “DirectXBox” over the years I thought I would re-post the original Direct3D specification from 1996, from an era BEFORE anybody imagined that consumer 3D graphics would become a multi-billion dollar industry and that the API’s we designed to accelerate gaming would give rise to chips so powerful, scalable and low cost that they would eventually rival traditional CPU’s in cost, performance and general purpose processing capabilities.  Today the GPU’s that power our desktops, mobile devices, the worlds most powerful super computers and tomorrows artificial intelligence drones and self-driving cars owe their origins to the earliest days of Windows gaming.  Here in it’s original form is the first release of Direct3D from Microsoft with the DirectX 2.0 SDK in 1996.

http://www.alexstjohn.com/WP/download/DirectX2.zip

This blog includes many stories about the people and debates that took place around the creation of Direct3D and many internal documents from that era at Microsoft are preserved here for posterity.  Perhaps the most fascinating thing about the first release of Direct3D was its ambitious scope, anticipating consumer hardware architectures years in the future.  Of course one of the greatest and most deeply entrenched debate was about Direct3D vs OpenGL.  For the 20th anniversary of Direct3D I would like to repost this text from the very first Direct3D documentation ever published.

“The Microsoft family of advanced 3D-graphics solutions includes the Direct3D™ and OpenGL® application programming interfaces (APIs).  The relationship between the Windows graphics systems, applications written with the Win32® API, the rest of the Windows system, and the hardware is shown in the following illustration:”



This diagram among others in the first D3D documentation probably deserves special mention in the history books of 3D along side the first maps of the New World.  Here we have our earliest conception of how D3D and OGL would co-exist in Windows.  The big fight was over the OGL guys wanting their own separate column to the hardware so that Windows could support not one but TWO different but equally broken 3D drivers for every new 3D card.  I enjoyed a lot of heat for strongly advocating the adoption of only one driver interface to 3D hardware for Windows to support.  Nobody at the time seemed to grasp that OpenGL did not include a specification for hardware drivers, we had to make those up and Direct3D was the one we came up with for Windows.  Those stories are all covered here in this blog but suffice to say that twenty years later everybody seems to have won the argument.  Powerful, low cost, GPU’s have become ubiquitous.

Here also is the driver hierarchy Direct3D laid out that specified a path for competing graphics chip makers to innovate along that provided a clear path to the general purpose 3D graphics chips we enjoy today.  Recall that at the time this architecture was announced the only 3D hardware we were aware of on the horizon supported just the Raster Module.  It was the visionary engineers from RenderMorphics and their President Kate Seekings who we acquired to build Direct3D who foresaw a future in which general purpose GPU computing would be possible and demanded by consumers.  Consequently Direct3D embraced the idea that GPU’s would support Zbuffers and floating point arithmetic long before the 3D chip market was destined to catch up with their vision.  We all spent a lot of hours crafting this early documentation for an API that we hoped chip vendors would support and accelerate.

Twenty years later Direct3D has evolved a great deal but the 3D rendering pipeline in DirectX 12 still bears a passing resemblance to its earliest designs.  Here in this modern diagram of Direct3D 12 the Vertex Shader owes it’s origins to the early Transform Module, the Pixel Shader to the early Lighting Module and the Rasterizer to the early Raster Module.  Ironically even features that were put into the original Direct3D to provide acceleration options for hardware vendors including the much reviled early D3D “Execute Buffers” which were eliminated from D3D because they confused developers were re-introduced in DirectX 12 twenty years later as it was realized that they were essential to fast hardware acceleration of the 3D pipeline.

Of course it’s fun to look back and reminisce about an amazing twenty year period of 3D innovation but then as now, I feel strongly compelled to make sweeping predictions about the future impact of the crazy new technologies we created back when we were kids.  Here then from the 1995 strategic proposal to create the Direct3D API was my prediction to Microsoft executives as to what the impact would be to PC gaming if Microsoft invested in creating a consumer focused 3D API.

“The ultimate goal would be to create on-line “Content Platforms”, or whole network worlds in which 100- 10000’s of people would play in purely virtualized environments. The business model would transform from one in which PC entertainment was sold in fixed units of “Game” played for a few months and thrown away, to ones in which the clients were virtually free, and the fun and complexity of play was generated directly from interaction with other people in the virtual worlds. Money would be made selling time in the virtual worlds,world authoring tools, character authoring tools, better weapon, or spell creation kits, etc. The Universes would be extensible and structured such that people authoring new content for a particular genre could add it to an existing universe on the net, and get compensated according to how long other users spent playing there.”

-From Taking Fun Seriously II, the second edition strategy document proposing the creation of DirectX written September 1995 (The first Windows based MMOG, Ultima Online, launched two years later)

…but that was yesterday for the next twenty years of Direct3D I predict that:

GPU’s will have an even more illustrious future.  I predict that GPU’s and GPU-like chip architectures will ultimately completely displace the traditional x86 based CPU in all markets and market segments.  Hybrid CPU/GPU cores will form a transitional bridge from the old world of monolithic chips and software platforms to a massively parallel world of highly dynamic modular software that operates far more like a human mind than the old world of serial processes and streams of 0’s and 1’s.   The primitive era of artificial intelligence as we know it today will give rise to software systems that are far more “intelligent” and versatile than the rudimentary pattern recognition constructs presently heralded as “Deep Learning”.  We may not see “human like” intelligence arise from the new machines we create with these chips but we are on the brink of simulating life itself at cellular, genetic and even atomic scales.  Our ability to map all the matter in our entire visible Universe, look backwards in time by computationally resorting historic events, to harness fusion for power and to cure all diseases including death by old age are largely gated today by the bounds of our computing power.  We are also on the brink of inventing computers that don’t simply “recognize patterns” for us but computers that can design and code themselves as well… a far greater achievement in AI than simply categorizing billions of cat photos accurately or automating robotic cars not to collide with one another most of the time.  Direct3D and OpenGL have given rise to general purpose programmable GPU’s and powerful parallel languages like Cuda.  These tools will in turn give rise to new software technologies and companies that displace the old software platforms, databases and Operating Systems that define the modern x86 based era with new Operating Systems and software solutions that enable computing to scale well beyond the constraints of modern (mostly) serial software solutions.  These new software systems will learn and evolve with collective human influence.  They will seamlessly span the enterprise, cloud and home in continuous networks of interacting components, part developed, part evolved and always current and adapting to the demands on them without experiencing monolithic obsolescence or abandonment.  The structure, security and integration of these systems will be governed by market forces that efficiently price every aspect of software and system value.  These are a few of the advances in computing we can anticipate as massively parallel GPU-like processors come to dominate all computing.

The post Happy 20th Anniversary to Direct3D appeared first on The Saint.

Show more