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
bobjones32 - Saturday, January 31, 2009 - link
Derek, Vista has been out for only 2 years. Take a look at XP's first two years and it was a phenomenal disaster comparatively. How people forget its far more significant performance and driver compatibility issues, and of course the Blaster worm, is totally beyond me.Just look at some of the nightmares: http://community.winsupersite.com/blogs/paul/archi...">http://community.winsupersite.com/blogs...8/06/30/...
Business uptake? Initial consumer uptake? Driver support? Gaming speed? Security? Compatibility? Vista's first two years have been incredibly successful compared to XP's first two years.
The difference? In 2001, sensationalist blogging making mountains out of molehills and purporting endless false perceptions without significant evidence wasn't nearly as popular. Apple's ads that only fed into peoples' ignorance only helped that false perception grow.
Zoomer - Monday, February 2, 2009 - link
Compare XP to 98SE.Now compare Vista to XP.
We have to take things in context.
CvP - Saturday, January 31, 2009 - link
TOTALLY AGREE.well said.
Goty - Saturday, January 31, 2009 - link
So the gist of this comment (Derek's) is that Vista doesn't suck, but you still say, "Vista sucks."I'm confused now.
Anyhow, I personally agree with the other people in the section that say Vista is a great operating system. I installed it in January of '07 and the only change I've made is to move from Business to Ultimate (thanks to the fact that I was using an ATI video card at the time and the fact that they didn't slack off on their driver development).
DerekWilson - Saturday, January 31, 2009 - link
Actually, that's an apt statement.Vista is currently something it was not initially. This made it "suck" in the hearts and minds of many people at the start, damaging the Windows brand and frustrating users. While, as I said, those issues are largely gone post SP1. This impacted Microsoft's ability to inspire confidence in the industry that everyone would eventually move to a platform that ran DX10, whether or not the OS eventually got to a stable place.
In spite of this, I use Vista: I have 6GB of RAM and I'm interested in DX10 for the sake of DX10 personally. I'm a bit of a technologist and I like things for the sake of the thing, really, but that doesn't mean that MS didn't drop the ball in their delivery of Vista.
just4U - Wednesday, February 4, 2009 - link
What made it suck in the hearts and minds of many people was the refusal to move away from what they allready knew. Changing your operating system has always brought alot of grumbling from the majority... but it's even more overstated with XP which has been around and in wide use far longer then previous Microsoft Operating systems.The beta form of Vista I found to be buggy as hell.. But ofcourse I was testing it on a 1800+ Tbird with 1G of ram. Later when I adopted it (before sp1) it was fine with very few problems. I'd even go as far as saying way way less then what XP had at launch.
CvP - Saturday, January 31, 2009 - link
and XP was much better *when* it was released?!until XPsp1, it was a piece of shit.
until XPsp2, it wasn't worth switching to XPsp2.
and all those lack of driver etc..it was not MS's fault.
poohbear - Saturday, January 31, 2009 - link
"calling it like it is"? i have vista64 premium and i much prefer it to win XP. I have the hardware to run it flawlessly ofcourse, and in that context it's anything but "sucks". would never go back to XP, so please vista has come a looooooong way and doesnt need superfluos opinions like this in 2009.mechBgon - Saturday, January 31, 2009 - link
Derek, if you take a look at Valve's monthly user survey, the ratio of Vista to WinXP users is now at about 1 to 2.1 and climbing by the month. That's not what I'd call "rejection of Vista." I think you've been reading The Inq too much :)As for your remark about Vista being a "WinME," I disagree. WinXP was the WinME of this era; it was basically Win2000 with a few bonus features, like WinME was a makeover of Win98SE. Once WinXP SP2 was released, *then* WinXP actually had some real merit over Win2000 in the security department, but that was late in the game.
Vista, however, is a paradigm shift, a watershed in Windows history. Stuff is not run at Admin level by default anymore, and never will be again. Pulling that off without breaking 80% of the existing software in the world was an amazing accomplishment that involved virtualizing the Registry and file system (a little-known facet of UAC, as it happens).
This is another misguided factoid:
"MS recognized that they had a problem and implemented and extended again and again downgrade options to Windows XP for customers who were unsatisfied with Vista."
Well heck, OEM Windows XP Pro comes with downgrade rights to run Win98 or WinME. It's not a backpedalling measure, nor a confession that WinME is better than WinXP. That's normal Microsoft policy so customers can license the current OS but use the previous version, temporarily or permanently, for whatever reason.
There will be downgrade rights with the appropriate versions of Windows 7, too.
suryad - Thursday, February 5, 2009 - link
I am not so sure you can just take Valve's survey which is just predominantly consisting of gamers as a good statistic. Thats just my 2 cents. An OS is not just meant for gaming...sure thats a good amount of Vista users in the survey but what about the rest of the people who are not gamers? I am pretty confident that most people who are on Vista and are on the Steam survey are/were sold by the appeal of DX 10 and next generation gaming and graphics and all that.