OpenGL 3.3 & 4.0 breathe new life into existing graphics hardware and pave the way for next gen GPUs
Khronos and the OpenGL ARB have made an unprecedented move by releasing two new versions of OpenGL along with two new versions of the OpenGL Shading language all simultaneously. The specs are available here - OpenGL 3.3 , GLSL 3.3, OpenGL 4.0 and GLSL 4.0. This release announced at GDC breathes new life into existing graphics hardware and also paves the way for the next generations of GPUs.
Why two core specs and two language specs at once? OpenGL 4.0 and GLSL 4.0 enables access to new hardware such as the AMD HD5000 series cards which have been shipping for 5 months. OpenGL 3.3 and GLSL 3.3 provide new features that will be accessible on a much larger current installed base. You may have noticed that the GLSL revision went from 1.5 to 3.3 and 4.0. To make things easier on developers, the Shading Language versions now match the core OpenGL versions.
OpenGL 3.3 adds numerous updates to OpenGL functionality to make it more usable. Occlusion queries get a new boolean mode which tells you if any samples passed. Texture lookups can be swizzled before reaching shaders. Instanced arrays allow instanced rendering to reuse attribute data on multiple vertices based on a divisor. Also new is timer functionality that allows applications to find out how long geometry takes to render.
Applications that use many textures or switch texture state frequently will be able to take advantage of the new sampler objects in OpenGL 3.3. These new objects can encapsulate traditional texture state, allowing an application to use the same texture sample state on multiple texture images or multiple sample states on the same texture image. This makes texture setup much faster and easier for applications to track.
OpenGL 4.0 includes all of OpenGL 3.3 plus a slew of new stuff including enhanced blending, indexed drawing from buffer objects and enhanced transform feedback functionality. It also provides access to double precision floating point data types in shaders, key for compute, design, and digital content creation where precision is critical. New texture functionality allows for advanced texture gather fetches, new texture buffer formats and cube map array textures.
OpenGL 4.0 tessellation for worskation applications
One of the biggest additions to OpenGL 4.0 is tessellation. This new feature allows an application to amplify geometry, generating tessellated geometry based on incoming vertices. Tessellation can help applications take a rough object defined by only a few vertices and generate new vertices to smooth out the object and provide more detail. Check the Stumbling Ahead blog for more info. Using tessellation can be a huge win for many workstation applications which tend to be vertex and bandwidth limited.
GL Shading Language
The GL Shading Language has also been updated with the ability to dynamically assign subroutine usage at runtime. This means you can create a GLSL program that has many different subroutines and then pick which ones are used to alter lighting, material, or other effects as each piece of geometry is rendered. This makes program management much easier and introduces previously unattainable runtime flexibility.
OpenGL 3.3 and 4.0 continue to progress 3D API standards, increasing flexibility and usability for applications. Just as important, Khronos and the OpenGL ARB continue to work on bringing you the latest and greatest access to 3D hardware.