3D Labs Proposes OpenGL 2.0 To Kick DirectX
furiousgreencloud writes "3Dlabs is trying to drive the graphics interface away from hardware specific extentions, as seen in DirectX. Instead, they are proposing an open (no NDA) dialog on OpenGL 2.0. The guidelines mention good-ol-fashioned platform independence (linux included) and emphasis on programmability, time control and memory managemenmt. They've got a PDF availible for consumption."
Soon we'll have Nvidia making games tho I'm sure that will be created on a proprietary system even more stringent than where we are now. You don't think so? --- Example: ... "It's the hottest game of the year and they don't take ATI." (Sung to the toon of a Visa comercial. It's in Nvidias best intrest to make this happen. Tho maybe not in the markets best interest.
I am Jack's HTTP Server
...but the current OpenGL standard is extensible enough for the time being. More important would be a complete OpenAPI setup with input, sound, network, and graphics options all combined and available on all platforms.
Sure, including specific instructions for per-pixel operations etc. for all cards as opposed to stuff like GL_EXT_NVIDIA_WHATEVER would be great, but it's not likely that there will be many drivers for any older cards for this, and all the new cards have great GL drivers already...
Basically, this is unneccessary.
This 2.25MB pdf will surely be inaccessible in a few minutes. I've mirrored it at http://ekrout.resnet.bucknell.edu/mirrored.pdf.
If you celebrate Xmas, befriend me (538
Vendor specific extensions are making cross-vendor OpenGL development difficult. It is necessary to implement several different codepaths in order to achieve various effects on different hardware (bump mapping, cubic environment mapping, etc.) because each vendor wants to do it their own way to expose all of the new capabilities of their hardware. The SGI multitexture extension is probabily the only real exception to this since it seems to be supported by the bulk of cards on the market.
I don't know of any current AAA, A or B grade game that doesn't support at least one proprietary OpenGL extension.
DirectX8 exposes the hardware in an 'almost' abstract manner but again vendor specific features have started to creep into the mix (the different shader version support is something that comes to mind), meaning that developers still have to develop multiple versions of the same effect for different hardware.
This is definately a great move! I hope they succeed!
This has probably already been said, but the SDL library is probably our best bet. It has been in development for the past two years or so, and has progressed immensely into a stable and feature-rich development platform. It is a complete cross-platform solution for high-performance game graphics, sound, and input on an insane amount of platforms, including the requisite Windows, Mac (both Classic and OS X) and *nix. Ports are also available or in the works for QNX, BeOS, Amiga, and a number of other OSes, I'm sure. I have used it for some of my projects, and I must say it is far superior to any other API I have ever tried, including DirectX (which it encapsulates nicely :-). Sam Latinga, the founder and main coordinator of SDL, is not only a great programmer and API engineer, but a nice guy as well.
Loneliness is a power that we possess to give or take away forever
Loops
I'd recommend against general for and while loop constructs in the shading languages. These are difficult to statically analyze the behavior of. For instance, you could stall your pipeline with an infinite loop but no compiler can detect infinite loops. Also, loops are rarely used except for Perlin noise where you iterate down to a particular frequency.
Loops of a particular form can still be analyzed, and would be useful. Something like this:
for (int i = 0; i < N; i++) { body }
If i is 'const' within the body, then this will iterate at most N times, giving you a bound on the compute time needed. Note that if N is an arbitrarily large number, it may still be difficult to analyse. Here's another form that is more generally boundable:
for (int i = 0; i < N && i < 20; i++) { body }
This will run at most twenty times, giving an easily computable upper bound on the total run time for the loop. Of course, 20 was just pulled out of a hat, and should probably be a constant specific to the compiler or hardware available.
Memory Management Issues
Pinning is dangerous, your program could be really broken on a graphics card with smaller memory than you intended. At the end of the standardization process it will probably become a mere 'hint' anyway.
An alternative might be to treat the memory management as a generational garbage collector, with user hints on what generation things should fall into. Rather than specify a particular management scheme, the programmer could hint at how dynamic the object would likely to be, say for instance ranking them from 0-7, with 0 being transient and 7 being pinned. Alternatively the systems themselves could become more intelligent, tossing everything into the transient area, and migrating them upstream automatically when the transient area starts to fill up.
Another useful operation would be to hint flushing everything below a certain level. So for instance you could give Everquest character models a level 5, the terrain a level 4, mobs a level 3, and various effects and candy at lower levels. Then on zone you would just specify a flush of levels 4 and under to clear that memory, while leaving the character models intact.
For added flexibility to this model, multiple different memory pools could be managed in this fashion. It remains to be tested whether that would be worthwhile or not.
Well, that's all I could think of off the top of my head. Good luck on OpenGL 2.0!
Michael
There's a lot of discussion on how/when/why they want to move forward to OpenGL 2.0. Gives some interesting insights into how these things are done.
Also, there's some talk about nVidia's new position on opening up their vertex shading IP, GL_vertex_program_NV vs. ATI's GL_EXT_vertex_shader, and which approach would be better for OpenGL 2.0 (low-level vs. high-level).
Why would anyone engrave "Elbereth"?
Jeez. Major trolling.
Or do you actually believe everything you just said?
The Structure of Array link is actually fairly interesting, but if you think about it it has no meaning to this argument. OpenGL has allows allowed you to specify seperate streams, but X/Y/Z are still bound together. That's not SOA, and not what Intel likes. When you get down to it the whole SOA thing was basically just Intel making up excuses and workarounds for poor CPU design.
In fact most modern hardware (Radeon, Geforce) will prefer it if you pack all your vertex components together, as DirectX has always worked. This all to make more efficient use of memory bandwidth.
Ofcouse that link to Paul Hsieh's site is ancient, and reflects a persons opinion of a battle that raged years ago, based on years old facts. Not all that interesting really.
In similar news...
Linus Torvalds proposes to kick Bill Gates.
It is uncertain as to whether the world's richest man will propose a retaliation kick. Such a proposal could be viewed as a sign of weakness. It should be noted that while Gates is phyiscally much smaller than Torvalds, microsoft operating systems have a much larger market share than linux.
Know what I like about atheists? I've yet to meet one that believes God is on their side.
I suppose it's not your fault that some clueless moderator thought your post was insightful but I'm embarrassed for him ;-)
OpenGL is the (free, open, clean and crossplatform) counterpart to Direct3D, not DirectX.
Life's a bitch but somebody's gotta do it.
"3D Labs Proposes OpenGL 2.0 To Kick DirectX"
DirectX includes all of the extensions shown above. OpenGL just does graphics. The author of the post, and the person who posted the story, clearly wanted to make a comparison between OpenGL and ALL of DirectX, which as as mentioned before, is ludicrous because of all the stuff OpenGL is lacking.
Get your facts straight.
True, but us game developers also buggered up the market by NOT actively pushing OpenGL instead of D3D, and developing for D3D *when we HAD a choice*.
There was even a petition to Microsoft to better support OpenGL for gaming, which Microsoft responded by ramming D3D down everyones throats.
I'm just thankfull that Carmack didn't sell out - he's the primary reason OpenGL support for games is still around. The OpenGL-Game-Dev list traffic has unfortunately slowed down, but it's not dead (yet.)
> Game developers aren't scratching their heads in a huddle
> making sure some vertex shader is going to work on a MIPS box as well as a Intel one.
You don't do any PS2 coding do you?
When your game is simulatenously being ported to X-Box, and the PS2 you need to re-implement the vertex shader natively on each hardware. It would save a LOT of time if us developers could use just ONE vertex shader description language for BOTH platforms !
> A bulk of game developers and publishers won't bitch much about standards
> while they can hit an incredible percentage of the gaming market by focusing on one system.
And loose 1/2 your sales?! That's the reason a standard exists - so we DON'T have to code specifically for one card !
Game developers want to maximize their sales with the least amount of work.
Rest of your comment is correct.
~~~
WTF is "Your comment violated the postersubj compression filter. Comment aborted" and why isn't it in the FAQ ?