Transcript Document
Programmable Pipelines
Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts Director, Arts Technology Center University of New Mexico
Objectives
• Introduce programmable pipelines - Vertex shaders - Fragment shaders • Introduce shading languages - Needed to describe shaders - RenderMan Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 2
Introduction
• Recent major advance in real time graphics is programmable pipeline - First introduced by NVIDIA GForce 3 - Supported by high-end commodity cards • NVIDIA, ATI, 3D Labs - Software Support • • • • Direct X 8 , 9, 10 OpenGL Extensions OpenGL Shading Language (GLSL) Cg Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 3
Background
• Two components - Vertex programs (shaders) - Fragment programs (shaders) • Requires detailed understanding of two seemingly contradictory apporachs - OpenGL pipeline • Real time - RenderMan ideas • offline Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 4
Black Box View
vertices
CPU Geometry Processor
vertices
Rasterizer
fragments fragments
Fragment Processor Frame Buffer
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 5
Geometric Calculations
• Geometric data: set of vertices + type - Can come from program, evaluator, display list - type: point, line, polygon - Vertex data can be • (x,y,z,w) coordinates of a vertex (glVertex) • Normal vector • Texture Coordinates • RGBA color • Other data: color indices, edge flags • Additional user-defined data in GLSL Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 6
Per-Vertex Operations
• Vertex locations are transformed by the model-view matrix into eye coordinates • Normals must be transformed with the inverse transpose of the model-view matrix so that v ·n=v’ ·n’ in both spaces - Assumes there is no scaling - May have to use autonormalization • Textures coordinates are generated if autotexture enabled and the texture matrix is applied Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 7
Lighting Calculations
• Done on a per-vertex basis Phong model I =k d I d
l
·
n
+ k s I s (
v
·
r
) a + k a I a • Phong model requires computation of
r
and
v
at every vertex Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 8
Calculating the Reflection Term
angle of incidence = angle of reflection cos q i = cos q r or
r ·n
=
l ·n r
,
n
, and
l
are coplanar
r
= a
l
+ b
n
normalize 1 =
r ·r
=
n ·n
=
l ·l
solving:
r
= 2(
l
·
n
)
n
-
l
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 9
OpenGL Lighting
• Modified Phong model - Halfway vector - Global ambient term • Specified in standard • Supported by hardware Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 10
Halfway Vector
Blinn proposed replacing
v ·r
by
n ·h
where
h
= (
l
+
v
)/|
l
+
v
| (
l
+
v
)/2 is halfway between
l
and
v
If
n
,
l
, and
v
y = f/2 are coplanar: Must then adjust exponent so that (
n ·h)
e’ ≈
(r.v)
e Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 11
Primitive Assembly
• Vertices are next assembled into objects - Polygons - Line Segements - Points • Transformation by projection matrix • Clipping - Against user defined planes - View volume, x= ±w, y=±w, z=±w - Polygon clipping can create new vertices • Perspective Division • Viewport mapping Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 12
Rasterization
• Geometric entities are rasterized into
fragments
• Each fragment corresponds to a point on an integer grid: a displayed pixel • Hence each fragment is a
potential pixel
• Each fragment has - A color - Possibly a depth value - Texture coordinates Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 13
Fragment Operations
• Texture generation • Fog • Antialiasing • Scissoring • Alpha test • Blending • Dithering • Logical Operation • Masking Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 14
Vertex Processor
• Takes in vertices - Position attribute - Possibly color - OpenGL state • Produces - Position in clip coordinates - Vertex color Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 15
Fragment Processor
• Takes in output of rasterizer (fragments) - Vertex values have been interpolated over primitive by rasterizer • Outputs a fragment - Color - Texture • Fragments still go through fragment tests - Hidden-surface removal - alpha Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 16
Programmable Shaders
• Replace fixed function vertex and fragment processing by programmable processors called
shaders
• Can replace either or both • If we use a programmable shader we must do
all
required functions of the fixed function processor Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 17
Development
• RenderMan Shading Language - Offline rendering • Hardware Shading Languages - UNC, Stanford - NVIDIA - OpenGL Vertex Program Extension - OpenGL Shading Language - Cg • • OpenGL Microsoft HLSL Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 18
RenderMan
• Developed by Pixar - S. Upstill,
The RenderMan Companion
, Addison-Wesley, 1989.
• Model interface file (RIB)
Modeler Renderer
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 19
Modeling vs Rendering
• Modeler outputs geometric model plus information for the renderer - Specifications of camera - Materials - Lights • May have different kinds of renderers - Ray tracer - Radiosity • How do we specify a shader?
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 20
Shading Trees
• Shaders such as the Phong model can be written as algebraic expressions I =k d I d
l
·
n
+ k s I s (
v
·
r
) s + k a I a • But expressions can be described by trees • Need now operators such as dot and cross products and new data types such as matrices and vectors • Environmental variables are part of state Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 21
Reflection Vector
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 22
Phong Model
Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 23