3D Glossary Update

PSarge, everything else you noted is true, but phong is not just an 'illumination model', it's a local illumination model, as it does not deal with illumination in general, it deals with local illumination.
 
darkblu said:
PSarge, everything else you noted is true, but phong is not just an 'illumination model', it's a local illumination model, as it does not deal with illumination in general, it deals with local illumination.

True.

I guess that takes us into radiosity and photon mapping (+ others) <slaps head>
 
[Picture + explanation: Yes - should probably be done more.]

Local illumination model: Lighting model that only takes into account the light sources and the surface being lit, and not any other geometry in the scene. Phong Lighting is a commonly used local illumination model.

Global illumination model: Lighting model that takes into account scene geometry, including reflections, refractions, and shadow casting. Radiosity and ray-tracing[?] are examples of global illumination models.

Gouraud shading (take 2 - is this any better?): Shading model where a color is given/computed at each vertex of each polygon, then the polygon is filled with smooth color gradations between the colors of each vertex. Gouraud shading generally provides rather smooth colors acrass a polygon model, avoiding the faceted look of flatshading.[should probably have a couple of pictures here, like
question484-shading.gif

from HowStuffWorks.com]
 
Phong Lighting is a commonly used local illumination model.

Perhaps we should write "The Phong Lighting Model (not to be confused with Phong Shading)".

EDIT: Just noticed PSarge's earlier posting on this verysubject.
 
Some more terms:

Flatshading: Shading method where one color is given/computed for each polygon, then that color is used to fill the entire polygon. Tends to give polygon models an artificially faceted look.

PBuffer: Data buffer that, like a framebuffer, holds RGB color data in a 2D data array and can be rendered to, but whose intended use is for a texture map rather than to be displayed directly on the screen.

Linear framebuffer: Framebuffer that is laid out in graphics card memory as a 2D array of pixels.

Tiled framebuffer: Framebuffer that is organized into tiles, typically of size 8x8 pixels, such that each tile lies in a contiguous memory block. Tends to give better rendering performance than linear framebuffers, due to better 2D spatial locality of pixel data. (This feature has nothing to do with tile-based rendering.)
 
arjan de lumens said:
Flatshading: Shading method where one color is given/computed for each polygon, then that color is used to fill the entire polygon. Tends to give polygon models an artificially faceted look.
Perhaps I'm just being picky but isn't that the wrong way around? Polygon models are flat. It's through use of gouraud or phong shading that they can be made to look 'smooth'.
 
Yes, Gouraud/Phong shading is to a large extent used to hide the fact that polygon models are inherently faceted (in order to make models look more realistic), whereas flatshading tends to exaggerate the fact.

If you do e.g. phong shading and replaces the interpolated normal vector with the actual polygon normal, you actually end up with something that looks different from flatshading, unless the light sources and eye position are both infinitely far away - still faceted as hell, but subtly more real-looking, as if the faceted look is intended rather than a rendering artifact (I remember having seen pictures displaying this, but I can't find them right now).
 
arjan de lumens said:
adations between the colors of each vertex. Gouraud shading generally provides rather smooth colors acrass a polygon model, avoiding the faceted look of flatshading.[should probably have a couple of pictures here, like
question484-shading.gif

from HowStuffWorks.com]

Hee hee. Ironically that is not gouraud shading on the right hand image but probably phong shading! Note the complete absence of Mach banding. (If you compute the difference between neighbouring pixels you'll see that the derivative dosen't have any big discontinuities)
 
OK, so the example picture sucked (yes, the "gouraud" shaded object does look a bit too smooth ..), so let's try again (flat, gouraud, phong, respectively):

flatgouraudphong.jpg


which shows some mach banding (I presume) plus a munged specular highlight, the two main problems with gouraud shading of low-poly models.
 
Some more terms, this time mostly texturing stuff:

Procedural texturing: Texturing method where the texture map is generated from a mathematical formula/algorithm on the fly instead of being read from a texture map in memory. One popular procedural texturing method is Perlin Noise.

Cube map: Collection of 6 square texture maps, corresponding to the 6 sides of a cube. Is addressed with a vector pointing from the center of the cube - the texels pointed to by the vector is what is read out. The main use of cube-maps is to create reflection effects in shiny surfaces (environment mapping); cube-maps have the advantage over sphere-maps that they can be generated dynamically by the renderer, thereby allowing reflections of dynamic environments.

Sphere map: A texture map that corresponds to the surface of a sphere. Is normally used for reflection effects (environment mapping). Since sphere maps cannot be quickly generated at run-time, they are only useful for reflections of static environments.

Projective texturing: Texturing method that simulates the projection of a picture onto a surface, as if by e.g. an overhead projector.
 
This time, some tile-based rendering stuff:

Tile-based rendering (TBR): Rendering method where the frame is subdivided into small blocks, so-called 'tiles', and then rendered one tile at a time. For each tile, every polygon that touches the tile is drawn before the renderer begins processing the next tile. This guarantees that each tile of a frame is processed only once. A tile-based renderer has an on-chip buffer capable of holding the full set of framebuffer data for one tile. This permits some substantial optimizations:
  • All framebuffer accesses other than a single RGB color writeback can be confined to the on-chip tile-buffer. This eliminates the need for off-chip Z, stencil and multisample buffers (except in case of framebuffer reads), and also saves a lot of memory bandwidth. This also implies that Multisampling AA can be done nearly for free in tile-based renderers as well.
  • Highly aggressive hidden surface removal algorithms may be employed at very little cost - certain tile-based renderers (like the PowerVR ones) are capable of eliminating ALL opaque overdraw. This saves raw fillrate and texture bandwidth usage.
Tile-based rendering requires that, for each tile, a list of all polygons touching the tile is built. This blocks the tile-based renderer from doing any rendering until all the polygons for a given frame have been collected. This leads to the disadvantages of tile-based rendering:
  • The polygon list building results in additional per-polygon memory bandwidth usage. (This seems to be a rather small problem in practice.)
  • Framebuffer readouts (like the OpenGL glReadPixels() function) are difficult to perform correctly and efficiently.
Tile-based rendering has also been referred to as 'zone-based rendering'.

Immediate-mode rendering (IMR): Rendering method where each polygon is drawn to the framebuffer immediately after being passed to the renderer. [should I write more here?]

Deferred rendering: Rendering method where all the per-polygon data for a frame are collected before actual rendering starts. Tile-based rendering is the most commonplace deferred rendering method.
 
Some more stuff:

Shadow Mapping: Rendering method for producing shadows. First, the entire scene is first rendered as seen from a light source. The contents of the Z buffer resulting from this renderer pass is then taken as the 'shadow map', for each pixel containing a depth value indicating distance from light source. Then, in a second pass, the scene is rendered as seen from the standard camera position. During this pass, for each pixel, the distance to the light source is again computed. Additionally, we find the position in the shadow map corresponding to the current pixel and look up the result. If the value read from the shadow map is less than the computed depth, then it implies that the current pixel is shadowed - if they are approximately equal, the current pixel is not shadowed and lighting should be applied. The main problems with shadow mapping is choosing an appropriate resolution for the shadow map (too low resolution gives stair-step shadow edges; too high resolution drag down performance) , determinining allowable error for "approximately equal", and the fact that the shadows generated this way have hard edges. A pdf detailing the shadow map process can be found here.

Immediate-mode rendering, add: This is the rendering method performed by most present-day 3d acceleators, including all Voodoo, GeForce and Radeon series chips.

N-patches: A class of higher order surfaces where, for each patch, the control points correspond to the vertices of a triangle - the resulting surface is a smoothly curved surface instead of the flat triangle. Because the control points match triangle vertices, N-patches can be used as triangle replacements on pre-existing triangle models, as long as the models do not have any sharp edges or creases. (N-patches only work when the surface normal vector does not have any discontinuities.) The result is in general a more rounded look, which usually increases the realism of organic models.

Displacement mapping: Rendering technique used to create bumpy surfaces by modifying actual scene geometry - as opposed to bump-mapping, which uses texturing techniques to fake bumps in inherently flat surfaces. The actual method works as follows: First, a polygon mesh is generated. Then, for each vertex in the polygon mesh, a height value is loaded from a texture map (the 'displacement map'). This value is then used to move the vertex up or down ('displacement'). Finally, the polygon mesh is rendered. Displacement mappping is mostly useful for large bumps; it may be combined with bump-mapping, with bump-mapping used for small bumps and the displacement mapping for large bumps. Displacement mapping requires support for higher-order surfaces to generate the initial mesh; current implementations use N-patches for this purpose. For some example pictures of what displacement mapping can do, look here.
 
arjan de lumens said:
Immediate-mode rendering, add: This is the rendering method performed by most present-day 3d acceleators, including all Voodoo, GeForce and Radeon series chips.
Ahh..... another can of worms. 'Immediate mode' is often used in different ways - for example, the OpenGL Begin/End paradigm is very frequently referred to as 'immediate mode' while using display lists would not be - and then vertex arrays kind of straddle the line, usually not being referred to as 'immediate mode'. However, all these things still work fine on all those video cards...

I would leave it off, myself.
 
<just reading the M's>

MCD - an obsolete method of implementing OpenGL on Windows NT.

MIPS is also a type of CPU, once used heavily in Silicon Graphics workstations.
 
Dio said:
Ahh..... another can of worms. 'Immediate mode' is often used in different ways - for example, the OpenGL Begin/End paradigm is very frequently referred to as 'immediate mode' while using display lists would not be - and then vertex arrays kind of straddle the line, usually not being referred to as 'immediate mode'. However, all these things still work fine on all those video cards...
Cannot remember having seen any contexts where 'immediate mode' is used in this particular sense - sounds like something that is specific to programming practice? If I understand this use of 'immediate mode' correctly, the alternative to 'immediate mode' could be referred to as 'batched mode' - is this right?

(The way I understand OpenGL display lists, you may be able to build a display list without actually drawing polygons in the process, but when you eventually call glCallList(), the GL is still required to render all the polygons in the display list immediately, just as if you replaced the glCallList() call with the full sequence of polygons within glBegin/glEnd pairs.)
 
arjan de lumens said:
Cannot remember having seen any contexts where 'immediate mode' is used in this particular sense - sounds like something that is specific to programming practice? If I understand this use of 'immediate mode' correctly, the alternative to 'immediate mode' could be referred to as 'batched mode' - is this right?
Yes, seems pretty much right. I think you are right and this may be specific to driver programming - but that's the context I would hear or use immediate mode in... therefore, can of worms because different people hear the same phrase to mean different things.

(My favourite definition conflict is between the film industry and the game industry in the use of the word 'development'. Films that are being developed are a long way from getting off the ground, while games that are being developed are thoroughly up and running. That's a surprisingly big problem when talking to a lot of people who might want to hand out money.)
 
This would be the 4th definition conflict I collect so far. So now I have:
  • Frame buffer - RGB(A) color buffer only, or all actual per-pixel data (RGB, Z, stencil, etc), or all memory that can potentially be allocated to per-pixel data?
  • Rasterization - Scan-conversion only, or per-pixel color determination also?
  • Tile-based rendering - does this include immediate-mode rendering techniques that merely use a tiled framebuffer also?
  • Immediate mode - different definitions for hardware and software. (This could be handled by re-writing my previous definition attempt to point out the difference.)
Any suggestions for how to resolve conflicts like these, or do we have to just live with them?
 
I would say there is no resolution possible. English is a language defined by its usage... and if people use terms wrongly often enough, they end up defined anew...

The conventional dictionary method is to list each possible definition in order, clearly numbered to distinguish them...
 
Back
Top