Computer Graphics

You are currently browsing the archive for the Computer Graphics category.

NVIDIA released a new version of their beta ForceWare 180 drivers. There are 2 very interesting things about it worth mentioning.

First, it supports most of the OpenGL 3 ARB extensions, bringing some useful functionality such as vertex array objects (which first appeared on Mac OS X many years ago) and looser restrictions on framebuffer attachments with respect to their resolution.

However, the most exciting new feature is support for EXT_direct_state_access. That extension addresses a long-standing problem of the OpenGL API, namely state selectors. Indeed, there are quite a large number of functions in OpenGL whose behavior is affected by a number of state variables. For instance, the LoadMatrix* commands depend on the current matrix mode state. As the name suggest, EXT_direct_state_access adds a large number of new functions to OpenGL that explicitly take as an argument the object or piece of state to be modified, bypassing state selectors. This allows, for example, to load a texture matrix without changing the matrix mode first, or to change a texture parameter without binding that texture first.

As the EXT prefix suggests, this extensions is probably not likely to be adopted in the core specification in the next revision of OpenGL 3, but there’s a good chance it might be promoted to ARB, and integrated into core OpenGL by the 3.2 timeframe. This is pure speculation on my part, but this extension is something that a lot of people in the industry desire, so there should be momentum behind it.

GLee is my favorite OpenGL extension “manager” due to its simplicity (2 files to add to your project) and ease of use (just use one of the GLEE extension variables in an if statement, and function pointers are automatically bound).

Check it out.

NVIDIA has posted some OpenGL-related presentations from their recent NVISION 08 conference. I found the one on the GeForce 8 features and Cg particularly good with respect to introducing some modern OpenGL functionality and giving a sense of direction for the API.

http://developer.nvidia.com/object/nvision08-opengl2.html

Also check out the NVSG presentation with has some OpenGL related content.

http://developer.nvidia.com/object/nvision08-NVSG.html

AMD has released ATI Catalyst™ 8.9, which includes a number of OpenGL 3 extensions:

  • ARB_half_float_pixel
  • ARB_draw_instanced
  • ARB_instanced_arrays
  • ARB_map_buffer_range
  • EXT_texture_compression_3dc
  • EXT_texture_compression_rgtc
  • EXT_texture_compression_latc
  • EXT_texture_shared_exponent
  • EXT_depth_buffer_float
  • EXT_gpu_shader4

The addition of the geometry instancing extensions and of gpu_shader4 (GLSL 1.20) is particularly significant, as they expose functionality that has been available since DirectX™ 9, and of course DirectX™ 10 features as well.

I just stumbled on this Google Code project which is categorizing and documenting OpenGL extensions. It should prove to be a very useful reference, check it out.

http://code.google.com/p/glextensions/

Michael Lucas-Smith posted on his blog a list of forward-compatible OpenGL 3.0 constants. This, combined with my list of forward-compatible OpenGL 3.0 entry points, should help people write future-proof OpenGL code.

http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&printTitle=Forward_compatible_OpenGL_3.0_defines&entry=3398275422

This list only includes core entry points; constants and extensions are forthcoming. The commands are categorized according their purpose or “main concern”. Any entry point not listed is deprecated by Appendix E of the OpenGL 3.0 specification. Finally, entry point variants are not listed (f, i, v, etc.) and the “gl” prefix is omitted.

Comments to improve this list or to notify me of factual errors are welcome; the entry will be updated as needed.

Update (2008-09-08): Michael Lucas-Smith posted on his blog a list of forward-compatible OpenGL 3.0 constants. This, combined with my list of forward-compatible OpenGL 3.0 entry points, should help people write future-proof OpenGL code.

http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&printTitle=Forward_compatible_OpenGL_3.0_defines&entry=3398275422

Update (2008-10-17): Added TexSubImage* to the list in the texture objects section. Thanks to an anonymous poster for noticing the omission.

Buffer objects

  • BindBuffer
  • BufferData
  • BufferSubData
  • DeleteBuffers
  • FlushMappedBufferRange
  • GenBuffers
  • GetBufferParameter*
  • GetBufferPointer*
  • GetBufferSubData
  • IsBuffer
  • MapBuffer
  • MapBufferRange
  • UnmapBuffer

Drawing

  • DrawArrays
  • DrawElements
  • DrawRangeElements
  • MultiDrawArrays
  • MultiDrawElements

Drawing control

  • BeginConditionalRender
  • ClampColor
  • ClipPlane
  • CullFace
  • DepthRange
  • EndConditionalRender
  • FrontFace
  • Hint
  • LineWidth width larger than 1.0 are deprecated
  • PointParameter*
  • PointSize
  • PolygonMode FRONT_AND_BACK is the only valid face
  • SampleCoverage
  • Scissor
  • ShadeModel

Framebuffer

  • Clear
  • ClearBuffer*
  • ClearColor
  • ClearStencil
  • ClearDepth
  • ColorMask*
  • DepthMask
  • DrawBuffer
  • DrawBuffers
  • StencilMask
  • StencilMaskSeparate

Framebuffer objects

  • BindFragDataLocation
  • BindFramebuffer
  • BindRenderbuffer
  • BlitFramebuffer
  • CheckFramebufferStatus
  • DeleteFramebuffers
  • DeleteRenderbuffers
  • FramebufferRenderbuffer
  • FramebufferTexture*
  • FramebufferTextureLayer
  • GenerateMipmap
  • GenFramebuffers
  • GenRenderbuffers
  • GetFragDataLocation
  • GetFramebufferAttachmentParameter*
  • GetRenderbufferParameter*
  • IsFramebuffer
  • IsRenderbuffer
  • RenderbufferStorage
  • RenderbufferStorageMultisample

Miscellaneous

  • Disable
  • Enable
  • Finish
  • Flush

Pixel operations

  • BlendColor
  • BlendEquation
  • BlendEquationSeparate
  • BlendFunc
  • BlendFuncSeparate
  • DepthFunc
  • LogicOp
  • StencilFunc
  • StencilFuncSeparate
  • StencilOp
  • StencilOpSeparate

Pixel read-write

  • PixelStore*
  • ReadBuffer
  • CopyPixels
  • ReadPixels

Query objects

  • BeginQuery
  • DeleteQueries
  • GenQueries
  • IsQuery
  • EndQuery
  • GetQuery*
  • GetQueryObject*

Shader and program objects

  • AttachShader
  • CompileShader
  • CreateProgram
  • CreateShader
  • DeleteProgram
  • DeleteShader
  • DetachShader
  • GetAttachedShaders
  • GetProgram*
  • GetProgramInfoLog
  • GetShader*
  • GetShaderInfoLog
  • GetShaderSource
  • IsProgram
  • IsShader
  • LinkProgram
  • ShaderSource
  • UseProgram
  • ValidateProgram

Shader uniforms

  • GetActiveUniform
  • GetUniformLocation
  • GetUniform*
  • Uniform1*
  • Uniform2*
  • Uniform3*
  • Uniform4*
  • UniformMatrix2*
  • UniformMatrix2×3*
  • UniformMatrix2×4*
  • UniformMatrix3*
  • UniformMatrix3×2*
  • UniformMatrix3×4*
  • UniformMatrix4*
  • UniformMatrix4×2*
  • UniformMatrix4×3*

State requests

  • GetBooleanv
  • GetClipPlane
  • GetDoublev
  • GetError
  • GetFloatv
  • GetIntegerv
  • GetString
  • GetTexEnv* target TEXTURE_ENV is deprecated
  • IsEnabled

Texture objects

  • ActiveTexture
  • BindTexture
  • CompressedTexImage*
  • CompressedTexSubImage*
  • CopyTexImage*
  • CopyTexSubImage*
  • DeleteTextures
  • GetCompressedTexImage
  • GetTexImage
  • GetTexParameter* all texture border parameters are deprecated, automatic mipmap generation is deprecated, target TEXTURE_PRIORITY is deprecated
  • GetTexLevelParameter*
  • GenTextures
  • IsTexture
  • TexEnv target TEXTURE_ENV is deprecated
  • TexImage* legacy OpenGL 1.0 internal formats (1, 2, 3, 4) are deprecated
  • TexParameter* all texture border parameters are deprecated, automatic mipmap generation is deprecated, target TEXTURE_PRIORITY is deprecated
  • TexSubImage*

Transform

  • Viewport

Transform feedback

  • BeginTransformFeedback
  • BindBufferBase
  • BindBufferRange
  • EndTransformFeedback
  • GetTransformFeedbackVaryings
  • TransformFeedbackVaryings

Vertex arrays

  • DisableVertexAttribArray
  • EnableVertexAttribArray
  • GetVertexAttribIPointer*
  • GetVertexAttribPointer*
  • VertexAttribIPointer
  • VertexAttribPointer

Vertex array objects

  • BindVertexArray
  • DeleteVertexArrays
  • GenVertexArrays
  • IsVertexArray

Vertex attributes

  • BindAttribLocation
  • GetActiveAttrib
  • GetAttribLocation
  • GetVertexAttrib*
  • VertexAttrib1*
  • VertexAttrib2*
  • VertexAttrib3*
  • VertexAttrib4N*
  • VertexAttrib4*
  • VertexAttribI*
  • VertexAttribI4*

The Khronos Group has posted the SIGGRAPH 2008 OpenGL BoF slides. Below are the links to the presentations, in order:

  1. Introduction OpenGL SIGGRAPH BOF Aug08.pdf
  2. OpenGL 3.0 Overview SIGGRAPH BOF Aug08.pdf
  3. Shading Language SIGGRAPH BOF Aug08.pdf
  4. Blizzard SIGGRAPH BOF Aug08.pdf
  5. Extensions SIGGRAPH BOF Aug08.pdf
  6. Ecosystem SIGGRAPH BOF Aug08.pdf
  7. Vendor Announcements SIGGRAPH BOF Aug08.pdf
  8. OpenCL and OpenGL SIGGRAPH BOF Aug08.pdf
  9. gDEBugger SIGGRAPH BOF Aug08.pdf
  10. GPC SIGGRAPH BOF Aug08.pdf
  11. MARTZ SIGGRAPH BOF Aug08.pdf
  12. Book Update SIGGRAPH BOF Aug08.pdf

Enjoy!

Excellent read (from opengl.org):

After testing an approach that would have a drastic effect on the API, requiring complete OpenGL application rewrites and not introducing any of the long awaited features modern GPUs are capable of, the choice was made to give programmers what they are really waiting for. And that’s new features now. GL 3.0 takes two important steps to moving open standard graphics forward in a major way. The first is to provide core and ARB extension access to the new and exciting capabilities of hardware. The second is to create a roadmap that allows developers to see what parts of core specifications will be going away in the future, also providing the OpenGL ARB with a way to introduce new features faster.

http://fireuser.com/blog/opengl_30_a_big_step_in_the_right_direction/

From his blog:

The OpenGL BoF went really well, I think. Nobody showed up with torches or pitchforks. Of course, the free beer may have helped. The most useful part of it for me was the mingling period after all the presentations. I talked with quite a few people and, contrary to the /. reports, nobody was furious. Whew!

He also talks about some SIGGRAPH sessions he attended, with links to relevant papers.

Thanks to people like him and Rob Barris diligently working on the OpenGL forums, this whole storm-in-a-glass should be over soon, and we can then start focusing on the new interesting stuff and what’s coming in less than a year.

« Older entries