One Last Thing and Closing Thoughts
The final bit of DX11 we'll touch on is the update to HLSL (MS's High Level Shader Language) in version 5.0 which brings some very developer friendly adjustments. While HLSL has always been similar in syntax to C, 5.0 adds support for classes and interfaces. We still don't get to use pointers though.
These changes are being made because of the sheer size of shader code. Programmers and artists need to build or generate either a single massive shader or tons of smaller shader programs for any given game. These code resources are huge and can be hard to manage without OOP (Object Oriented Programming) constructs. But there are some differences to how things work in other OOP languages. For instance, there is no need for memory management (because there are no pointers) or constructors / destructors in HLSL. Tasks like initialization are handled through updates to constant buffers, which generally reflect member data.
Aside from the programmability aspect, classes and interfaces were added to support dynamic shader linkage to combat the intricacy of developing with huge numbers of resources and effects. Dynamic linking allows the application to decide at runtime what shaders to compile and link and enables interfaces to be left ambiguous until runtime. At runtime, shaders are dynamically linked and based on what is linked all possible function bodies are then compiled and optimized. Compiled hardware-native code isn't inlined until the appropriate SetShader function is called.
The flexibility this provides will enable development of much more complex and dynamic shader code, as it won't all need to be in one giant block with lots of "ifs", nor will there need to be thousands of smaller shaders cluttering up the developers mind. Performance of the shaders will still limit what can be done, but with this step DirectX helps reduce code complexity as a limiting factor in development.
With all of this - the ability to perform unordered memory accesses, multi-threading, tessellation, and the Compute Shader - DX11 is pretty aggressive. The complexity of the upgrade, however, is mitigated by the fact that this is nothing like the wholesale changes made in the move from DX9 to DX10: DX11 is really just a superset of DX10 in terms of features. This enables the ability for DX11 to run on down-level hardware (where DX11 specific features are not used), which when combined with the enhancements to HLSL with OOP and dynamic shader linking mean that developers should really have fewer qualms about moving from DX10 to DX11 than we saw with the transition from DX9. (Of course, that's nothing new: the first DX8 games shipped when DX9 was out, and it wasn't until DX10 that we saw a reasonable number of DX9 titles.)
To be fair, the OS upgrade requirement also threw a wrench in the gears. That won't be a problem this time, as Vista still sucks but will be getting DX11 support and Windows 7 looks like a better upgrade option for XP users than Vista. Developers who haven't already moved from DX9 may well skip DX10 altogether in favor of DX11 depending on the predicted ship dates of their titles; all signs point to DX11 as setting the time frame when we start to see the revolution promised with the move to DX10 take place. Developers have had time to familiarize themselves with the extended advantages of programmability offered by DX10, coding for DX11 will be much easier though OOP constructs and multi-threaded support, and if the features don't entice them, the ability to run on down-level hardware with a better coding environment might just seal the deal.
I'm still an OpenGL developer at this point, and I've dabbled a bit with DirectX at times. But DirectX 11 (and my disappointment with OpenGL 3.0) mark the first time I think I might actually make the switch. The first preview of DX11 is already available in the latest DX SDK. When I've got time I'll have to download it and get started. Hopefully the implementation is as attractive as the pitch. Wish me luck.
109 Comments
View All Comments
Havor - Saturday, January 31, 2009 - link
DX10 is Vista only ware XP and 98SE/win2k shared a common DXAnd yeah XP was Win2K but it had better gaming support then W2K so there was no reason not to use XP over W2K, and only very old games gave some problems whit XP over 98SE.
Ware Vista almost had no RL benefits over XP just a high resource hog and steep learning curve.
If people could had a those between XP and vista i think Vista Nr's would have bin 75% lower
Other then DX10 and x64 there is no reason for me to go to Vista, so i will wait for Win7 and upgrade to i7/i5 till then my X2 6000+ and XP sp3 will do
michal1980 - Friday, January 30, 2009 - link
i agree with most of your logic. And it makes sense. It didn't feel right with the rest of the article though.I will however disagree with it being compared to Win ME.
Win ME was just junk, unstable, worthless, and never improving. And while vista had teething issues, alot of it was due to a huge shift in the actual OS.
I haven't tired 7 yet, but from all I read,it seems like vista re-tuned. However I doubt Win7 could have ever gotten to where it is without Vista. Vista was a trail by fire, and in most cases it made it. A huge problem early on was hardware specs to run it were set too low, and it was hell for people on cheap low end hardware.
My experance has been overall very postive, esspically when I moved to 4gb's of ram. Driver problems now are minimal (x64), and no matter how stable XP ever was. IMHO, and in my experance, vista has been leaps and bounds more stable. I can't recall having an OS crash/lock up that required a reboot. If not for hardware changes/updates, my vista box would never reboot.
Havor - Saturday, January 31, 2009 - link
The compering to ME holds up some bid, do vista is not as bad as ME was.How ever on my computer club there was a 100% return to 98SE ore win2k, most users(70%) here that run dual-boot Vista/XP machine, returned to XP after trying Vista for a wile (me included)
And there has never bin Any love for the OS especially compared to XP.
The bigger problem for dev. is that DX10 is Vista only, and there are way to many XP machines out there to develop DX10 only games, so from a dev. point of view Vista was/still is the next ME.
just4U - Wednesday, February 4, 2009 - link
WinME is what Vista will eventually be compared to no matter what. I had less problems with WinME then I did with 98, or 95 but it got a bad rap.. Nowadays people just all say it was crap. Im sure 5-7+ years from now they will say the exact same thing about Vista. (shrug)marsbound2024 - Friday, January 30, 2009 - link
I agree with what you have said. Microsoft had years to develop Vista where previously its OS releases came within two years of each other. It should have been optimized at the very least and we have seen that it is resource-intensive and one might even say "bloated." While Vista does work and I rather like working with Vista 64-bit, I think it should have been more than what it is for having such a lengthy development timeframe. While many of us superbly informed on computer operating systems and application support, the average consumer seems to really dislike Vista. From UAC to horrible startup times on occasion (usually due to services such as Cyberlink), to the network connectivity problems that seem to be related to IPv6 and the fact that it used to bring budget systems to their knees (when they were manufactured with the purpose of running Vista), most people have a bad taste in their mouths from running Vista. Vista had a lot of promise on the table from what was on paper, but in execution it simply generated more headaches than it should have. Windows 7 should hopefully be getting back to what an operating system should be: streamlined GUI with robust, yet optimally programmed features that range from security to file management on NTFS.srp49ers - Friday, January 30, 2009 - link
The vista comments seemed out of place considering the tone of the rest of the article.Cuhulainn - Friday, January 30, 2009 - link
Agreed. Even if you think it sucks, give the reasons related to the article. I would like to know what issues there are between Vista/DirectX, as I am a current user. Rather than being told that what I am running sucks, tell me what is wrong with it, or what is right with 7 that is an improvement over Vista.That being said, I have little to no knowledge of these things and still found this to be an interesting read. Much appreciated.
Staples - Saturday, January 31, 2009 - link
And the fact that a year ago, most people who said that Vista sucks are ones who unsurprisingly never actually used it. When someone says Vista sucks, I always think there is a high probablility that they are someone who has never used it (and therefore stupid for saying something like that). Anyway, I have been using Vista since it came out and except for the fixes which made it use less resources, there never has been anything wrong with the OS despite what the legion of "I read it on the internet so it must be true" people would have you believe. Seems like the majority of geeks thought it sucked without having ever used it which is just idiotic. When I realized this, it was sad to know how gulible people really are.ssj4Gogeta - Friday, January 30, 2009 - link
It will be great if MS releases DX11 for XP. I multi-boot XP and Vista and Ubuntu. I think I'll replace Vista with Win 7 and not XP.By the way, why haven't we heard anything about Larrabee? Intel said that the first samples would be ready by the end of 2008. It seems to me like it will be a revolutionary step in graphics computing.
Ryan Smith - Friday, January 30, 2009 - link
It won't happen, it can't happen. DX10 goes hand-in-hand with a massive rearchitecting of GPU threading and memory management, which is why we transitioned from the XPDM to WDDM for Vista. You can't backport that kind of stuff, it's a fundamental change in how the OS addresses the GPU and allocates work & resources for it.