Nick Wiggill

07-06-2012, 03:55 PM

This (http://en.wikibooks.org/wiki/GLSL_Programming/Vertex_Transformations) article describes both the standard and oblique projection matrices. Note the differences. (Performance: the former requires an additional trig call, while the latter requires two extra divisions.)

According to Mathematics for 3D Game Programming and Computer Graphics, 2nd Ed., the oblique projection matrix is what is used internally by the deprecated function glFrustum(). While I do not know if this is speculation on the author's part, Eric Lengyel is something of a long-time expert in graphics and computational geometry, so I am inclined to accept this as fact.

What I need to understand is:

What practical usage does an oblique perspective projection ever see? Is it ever used in games, for instance?

In a programmable pipeline, is there any good reason why we would choose to use the oblique rather than the standard projection matrix (the latter being simpler since it essentially has fewer parameters)? I can only assume it was (reputedly) used in glFrustum() because that in fixed pipeline functionality, there is obviously a need to build for all possible use cases, and the oblique projection matrix would appear to be slightly more generalised case of the standard projection matrix.

Comments & discussions most welcome. I'm writing the transformation aspect of my vertex shader, hence the questions on the available options.

According to Mathematics for 3D Game Programming and Computer Graphics, 2nd Ed., the oblique projection matrix is what is used internally by the deprecated function glFrustum(). While I do not know if this is speculation on the author's part, Eric Lengyel is something of a long-time expert in graphics and computational geometry, so I am inclined to accept this as fact.

What I need to understand is:

What practical usage does an oblique perspective projection ever see? Is it ever used in games, for instance?

In a programmable pipeline, is there any good reason why we would choose to use the oblique rather than the standard projection matrix (the latter being simpler since it essentially has fewer parameters)? I can only assume it was (reputedly) used in glFrustum() because that in fixed pipeline functionality, there is obviously a need to build for all possible use cases, and the oblique projection matrix would appear to be slightly more generalised case of the standard projection matrix.

Comments & discussions most welcome. I'm writing the transformation aspect of my vertex shader, hence the questions on the available options.