Friday, January 31, 2003

Advanced Graphics Programming Techniques Using OpenGL - SIGGRAPH `99 Course


Notes:
- The easiest way to demonstrate the power of the procedural interface is to note that a descriptive interface can be built on top of a procedural interface, but not vice-versa. Think of OpenGL as a ``graphics assembly language'': the pieces of OpenGL functionality can be combined as building blocks to create innovative techniques and produce new graphics capabilities.
- A second aspect of OpenGL is that the specification is not pixel exact. This means that two different OpenGL implementations are very unlikely to render exactly the same image. This allows OpenGL to be implemented across a range of hardware platforms [56]. If the specification were too exact, it would limit the kinds of hardware acceleration that could be used; limiting its usefulness as a standard. In practice, the lack of exactness need not be a burden -- unless you plan to build a rendering farm from a diverse set of machines.
- Rendering is only half the story. Great computer graphics starts with great images and geometric models.
- OpenGL is a renderer not a modeler. There are utility libraries such as the OpenGL Utility Library (GLU) that can assist with modeling tasks, but for all practical purposes modeling is the application's responsibility.
- Using stenciling to control pixels drawn from a particular primitive can help solve a number of important problems:
1. Drawing depth-buffered, co-planar polygons without z-buffering artifacts.
2. Decaling multiple textures on a primitive.
Values are written to the stencil buffer to create a mask for area to be decaled. Then this stencil mask is used to control two separate draw steps; one for the decaled region, one for the rest of the polygon
- use stencil-buffers to achieve a "decal" affect when rendering one polygon on-top of another.
- Typically, texture images are loaded from image files stored using a standard 2D image file format such as TIFF or JPEG. To make an image file into a texture for use by OpenGL, the OpenGL application is responsible for reading and decompressing as necessary the image file. Once the image is in memory as an uncompressed array, glTexImage2D() can be passed the size, format, and pointer to the image in memory. The OpenGL API limits itself to rendering functionality and therefore has no support for loading image files. You can either write an image loader yourself or use one of the numerous image loading libraries that are widely available. In addition to loading image files, applications are free to compute or otherwise procedurally generate texture images. Some techniques for procedural texture generation are discussed in Section 6.20.2. Rendering the image using OpenGL and then copying the image from the framebuffer with glCopyTexImage2D() is yet another option.
- Texture coordinates are the means by which texture image positions are assigned to vertices. The per-vertex assignment of texture coordinates is the key to mapping a texture image to rendered geometry.
- OpenGL's interpolation of texture coordinates across a primitive compensates for the appearance of a textured surface when viewed in perspective.
-
CG and Simulation

- Consider naturally-evolving simluation systems!!!
- graphics and simulations are tightly coupled in terms of ideology
- consider graphics, sims and CAS (Complex Adaptive Systems) !!!!

Tuesday, January 28, 2003

Computer Graphics Resources on the Web:
ACM SIGGRAPH is building a list of computer graphics resources on the web, currently accessible at http://www.siggraph.org/cgresources. We're always looking for more folks to contribute useful site links to this resource. If it's not already on the site, please send the URL, a description, and up to 5 relevant keywords to cgresources@siggraph.org. The site should be accurate, impartial and relevant to the SIGGRAPH community. No other qualifications are needed -- please just start contributing!

We'd also love to develop a repository of useful computer graphics software, models, textures, and other data on siggraph.org. If you're interested in developing this aspect of the SIGGRAPH community, it would be great if you -
understood basic Unix systems operations
were familiar with basic Apache configuration