OpenGL 2.0

3Dlabs have been the main instigators behind the OpenGL 2.0 movement, and the ARB have endorsed its development. ATI has signed-up too, with SGI and Apple being very supportive; nVIDIA has some reservations, although the level of support it has gained elsewhere will likely persuade them to fully sign up to it soon.

One of the issues with DirectX8 is that although it does introduce developers to a certain level of programmability, Microsoft did make a misstep in defining the API to be at the assembler level; not only is this difficult for the ISVs to program in, they made the further mistake of making two assembler level programs -- one for ATI and one for NVIDIA. While it does expose all the functionality, the ISV's have to worry about which path to take which is why there are still only a handful of games that utilise it. Likewise with OpenGL, the hardware has now exceeded the level of functionality available via the core API and major parts of the graphics pipeline are being supported by extra OpenGL extensions, some of which are, unfortunately, proprietary.

The point of OpenGL 2.0 is to move the functionality of the API a step beyond that of current hardware and to define the API in a hardware independent manner. By moving to a higher level, the ISVs will not have to worry about which paths/extensions require support as the compilers will worry about the 'housekeeping' of determining what is supported by the hardware being used. In some respects this is learning from the development of CPUs - very few people program CPUs in assembler these days as it's just not worth it.




OpenGL 2.0 has been constructed in such as way that you can incrementally take control of the various parts of the pipeline, if you wish you can just take control of lighting, or texture address calculations, etc. One of the primary feedbacks 3Dlabs had from the ISV's is that they don't want total freedom by having the API say "OK, here's a programmable pipeline, do whatever you want".

OpenGL 2.0 has been programmed as a superset of OpenGL 1.3, the most significant addition being that of Vertex and Fragment (pixel) shaders programmability. However, being a superset means that there is inevitably some duplication in the tasks, for instance standard Transformations could be achieved either by the old Tranformation pipeline or now the vertex shader pipeline, so to answer this issue a streamlined API, called ‘Pure’ OpenGL 2.0 will be defined. Pure OpenGL 2.0 is a small footprint API which removed much of the duplication of functionality now that programmability is supported. There has to be a transition path for applications to go from their current state through supporting OpenGL 2.0 functionality and right up to moving to Pure OpenGL 2.0, so this will take some time; new applications though will be encouraged to support Pure OpenGL 2.0 immediately.

The diagram below gives an outline of what is supported by OpenGL 2.0 and also what Pure OpenGL 2.0 may consist of:


Click for a bigger version



The P10 hardware won't be able to support everything in OpenGL 2.0 but it will support a useful vertical slice through it – what 3Dlabs are doing is focussing on the areas that ISV's actually want and prioritising their compiler to service those real needs right now. The compiler already in good enough condition to have people doing large terrain compression (achieving 100:1 compression ratios), raycasting into volumetric model datasets and HP polynomial texture mapping (whereby multiple pictures of and object or surface is taken and combined to create very realistic texturing). Game developers have been frustrated by not being able to get to the programmability in the hardware in OpenGL, without supporting multiple vendor specific instructions, but this will be addressed in OpenGL 2.0.

With regards to the developmental state of OpenGL 2.0 presently prototype compiler generated code is running accelerated on P10 hardware and 3Dlabs are freely distributing the compiler parser code. By the June OpenGL ARB meeting 3Dlabs hope to release the first draft of the OpenGL Shading Language Specification document and in time for SIGGRAPH 2002 they hope ot have the OpenGL shading language specification ready for review, release the latest version of parser/intermediate code compiler, release a code generator for NVIDIA and/or ARB vertex programs and release demos that use OpenGL 2.0 functionality.

OpenGL 2.0 is important to the development community because it will set a standard interface for OpenGL and the new levels of programmability that is available in hardware already and forthcoming. However, OpenGL 2.0 is also very important to 3Dlabs as it exposes the much of the levels of programmability achievable in the P10 chipset.

For more information on OpenGL 2.0 visit 3Dlabs OpenGL information website here.