Thursday, September 18, 2008

The Future of Triangles Part 1: Terminology

The triangle is at the heart of 3-d modeling - but before we discuss what might become of the triangle, we need terminology.
  • Per-vertex lighting.  This means that the brightness of the model (a function of the sun and camera position, etc.) is calculated for each vertex in the model, and then crudely interpolated between the vertices to light the pixels.
  • Per-pixel lighting.  This means that the brightness of the model (a function of the sun and camera position, etc.) is calculated for every pixel on the screen separately.
  • Tessellation.  This is the process of splitting a triangle into a number of smaller triangles, increasing the number of vertices in a model.
  • Specular lighting.  The specular lighting component is an extra amount of brightness that you get when the angle from the sun to the model to your eye is very small.  (That is, if the model was a mirror and you could see the sun by looking at a certain location, then that location would have a bright "specular hilite".)
  • Normal map.  A normal map is a texture that describes the way light bounces off a surface.  This is one way to do "bump mapping".  This tutorial shows a pretty good example of how normal maps work.  (The earth orbit textures in version 9 use normal maps to create "bumpy" mountains when pixel shaders are in use.)
  • Specular map.  A specular map is a texture that describes how strong the specular component of the lighting model appears for a given textured location.  Here's another tutorial that explains it.
  • Environment Map.  An environment map is a texture that represents the world around an object, used to simulate reflections.  Here's another blender tutorial that explains it better than I.  (The reflective water in X-Plane 9 is effectively using a dynamic environment map created by taking a picture of part of the sim's world every frame,)
  • Material attributes.  These are OBJ attributes that change the lighting model.  For example, ATTR_shiny_rat changes the lighting model so that specular hilites appear.
  • Batch.  A batch is a single set of triangles sent to the graphics card without any change of mode.  Basically every TRIS command in an OBJ becomes a batch; submitting a batch requires the CPU, but submitting a bigger batch (more triangles) does not require more CPU.
That's enough vocabulary to describe just about everything that is happening now, will be happening in the future, as well as some pie-in-the-sky stuff. :-)

2 comments:

krz said...

my vision of the future of 3d is not so clear anymore. the more i read about multicores and sparse voxel octtrees the more difficult it becomes to predict anything.

here is a good threat about things that might become popular:
http://ompf.org/forum/viewtopic.php?f=3&t=904&st=0&sk=t&sd=a

Dan said...

Interesting read.

And if anything of this is a sign of things to come, that makes it twice as interesting :)

Look forward to better lighting in the sim... and perhaps realistic shadows..?