CHW 12/03/2010

Khronos Group lanza OpenGL 3.3 y 4.0

Nuevas versiones del API 3D estandar multiplataforma

Ayer Khronos Group anunció el lanzamiento de las nuevas versiones de sus API 3D OpenGL las que ofrecen rendimiento, calidad y mejorada flexibilidad, incluyendo Tesselation y Shaders de doble precisión, además de una estrecha integración con OpenCL.

[metroimage ids=”38-124230″ imagesize=”large”]

Aquí las especificaciones de las nuevas versiones de esta API:

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 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 and unsigned (GL_ARB_vertex_type_2_10_10_10_rev).

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).

El objetivo de la versión 3.3 de OpenGL es traer muchas de las mejoras de OpenGL 4.0 al hardware viejo sin soporte de Tesselation por hardware, esto incluye a los GPU compatibles con las API competidoras DirectX 10.1 e inferiores, OpenGL 4.0 será compatible con el hardware DirectX 11; tanto ATI como Nvidia ya anunciaron su total apoyo a estas nuevas versiones del API, las cuales vendran muy pronto incluidas en futuras versiones de sus drivers.

Link: (PR) OpenGL 4.0 specification released, OpenGL 3.3 and 4.0 Specifications Released (Geeks3D)