OpenGL 3.3 and 4.0 Specifications Released



OpenGL 4.0


GL_ARB_tessellation_shader, GL_ARB_gpu_shader5, GL_ARB_draw_indirect, GL_ARB_shader_subroutine or GL_ARB_texture_gather, here are some of the new features that OpenGL 4.0 will bring.

And from the press release:

Open standard 3D API specification available immediately; Provides performance, quality and flexibility enhancements including tessellation and double precision shaders; Tight integration with OpenCL for seamless visual computing.

And OpenGL 4.0 will officialize the support of hardware tessellation (GL_ARB_tessellation_shader): very very nice!!! I’ll be able to update my tessellation demo to make it run on both NVIDIA and ATI cards…

And I bet (actually it’s sure my friends) that GeForce GTX 480 and GTX 470 will expose these new extensions.

OpenGL 3.3 and 4.0 specifications are available HERE.

OpenGL 4.0 new features:

  • Support for OpenGL Shading Language 4.00, including new fragment
    shader texture functions (textureLOD) that return the results of automatic
    level-of-detail computations that would be performed if a texture lookup
    were performed (GL_ARB_texture_query_lod – this extension only affects
    the shading language, not the API).
  • Ability to set individual blend equations and blend functions for each color output (GL_ARB_draw_buffers_blend).
  • Mechanism for supplying the arguments to a DrawArraysInstanced or DrawElementsInstancedBaseVertex drawing command from buffer object memory (GL_ARB_draw_indirect).
  • Many new features in OpenGL Shading Language 4.00 and related APIs to support capabilities of current generation GPUs (GL_ARB_gpu_shader5 – see that extension specification for a detailed summary of the features).
  • Support for double-precision floating-point uniforms, including vectors and matrices, as well as double-precision floating-point data types in shaders (GL_ARB_gpu_shader_fp64)
  • Ability to explicitly request that an implementation use a minimum number of unique set of fragment computation inputs when multisampling a pixel (GL_ARB_sample_shading).
  • Support for “indirect subroutine calls”, where a single shader can include many subroutines and dynamically select through the API which subroutine is called from each call site (GL_ARB_shader_subroutine).
  • New tessellation stages and two new corresponding shader types, tessellation control and tessellation evaluation shaders, operating on patches (fixed-sized collections of vertices) (GL_ARB_tessellation_shader).
  • Support for three-component buffer texture formats RGB32F, RGB32I, and RGB32UI (GL_ARB_texture_buffer_object_rgb32).
  • Cube map array textures, 2-dimensional array textures that may contain many cube map layers. Each cube map layer is a unique cube map image set (GL_ARB_texture_cube_map_array).
  • New texture functions (textureGather) that determine the 2×2 footprint used for linear filtering in a texture lookup, and return a vector consisting of the first component from each of the four texels in the footprint (GL_ARB_texture_gather).

OpenGL 3.3 new features:

  • Support for OpenGL Shading Language 3.30, including built-in functions for getting and setting the bit encoding for floating-point values (GL_ARB_shader_bit_encoding – this extension only affects the shading language, not the API).
  • New blending functions whereby a fragment shader may output two colors, one of which is treated as the source color, and the other used as a blending factor for either source or destination colors (GL_ARB_blend_func_extended).
  • A method to pre-assign attribute locations to named vertex shader inputs and color numbers to named fragment shader outputs. This allows applications to globally assign a particular semantic meaning, such as diffuse color or vertex normal, to a particular attribute location without knowing how that attribute will be named in any particular shader (GL_ARB_explicit_attrib_location).
  • Simple boolean occlusion queries, which are often sufficient in preference to more general counter-based queries (GL_ARB_occlusion_query2).
  • Sampler objects, which separate sampler state from texture image data. Samplers may be bound to texture units to supplant the bound texture’s sampling state, and a single sampler may be bound to more than one texture unit simultaneously, allowing different textures to be accessed with a single set of shared sampling parameters, or the same texture image data to be sampled with different sampling parameters (GL_ARB_sampler_objects).
  • A new texture format for unsigned 10.10.10.2 integer textures (GL_ARB_texture_rgb10_a2ui).
  • A mechanism to swizzle the components of a texture before they are returned to the shader (GL_ARB_texture_swizzle).
  • A query object-based mechanism to determine the amount of time it takes to fully complete a set of GL commands without stalling the rendering pipeline (GL_ARB_timer_query).
  • Ability to specify an array ”divisor” for generic vertex array attributes, which when non-zero specifies that the attribute is instanced. An instanced attribute does not advance per-vertex as usual, but rather after every divisor conceptual draw calls (GL_ARB_instanced_arrays).
  • Two new vertex attribute data formats, signed 2.10.10.10 and unsigned 2.10.10.10 (GL_ARB_vertex_type_2_10_10_10_rev).


11 thoughts on “OpenGL 3.3 and 4.0 Specifications Released”

  1. Leith

    Wow! OpenGL ARB seems to have really got over their issues! No more slow specification releases!

  2. Leith

    How much of 3.3 and 4.0 is already present in the latest beta NVIDIA or ATI drivers?

  3. DrBalthar

    Well OGL still playing catchup to Direct3D. At least the pace is accelerating. GLSL still is far behind the usability of HLSL/FX though even with the latest update it hasn’t caught up yet. Well at least they finally have #include statement (WOW something you could do in HLSL for decades).

  4. Pingback: Khronos Group lanza OpenGL 3.3 y 4.0 | Conexion Geek

  5. cristobal

    @DrBalthar : are you talking about include statement in GLSL shader ?

  6. Pingback: .: iNSANE iDEA :. » Blog Archive » #0310 – OpenGL 3.3 és… 4.0!

  7. Pingback: NVIDIA R197.15: First OpenGL 3.3 Drivers Available and 12 New OpenGL Extensions - 3D Tech News, Pixel Hacking, Data Visualization and 3D Programming - Geeks3D.com

  8. Pingback: GLEW 1.5.4 Available with OpenGL 4.0 Support - 3D Tech News, Pixel Hacking, Data Visualization and 3D Programming - Geeks3D.com

Comments are closed.