Top Banner
Graphics Pipeline
29

Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Aug 27, 2018

Download

Documents

buitu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Graphics Pipeline

Page 2: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Rendering approaches

1.object-oriented

foreach object ...

2.image-oriented

foreach pixel ...

vertices image3D rendering

pipeline

Page 3: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

3

Z-buffer Rendering

•Z-buffering is very common approach, also often accelerated with hardware

•OpenGL is based on this approach

3D Polygons Image PixelsGRAPHICS PIPELINE

Page 4: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Pipelining operations

* +ba

c

An arithmetic pipeline that computes c+(a*b)

Page 5: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

3D graphics pipeline

Vertex processor

Clipper and primitive assembler

RasterizerFragment processor

Vertices Pixels

Geometry: objects - made of primitives - made of verticesVertex processing: coordinate transformations and colorClipping and primitive assembly: output is a set of primitivesRasterization: output is a set of fragments for each primitiveFragment processing: update pixels in the frame buffer

Page 6: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

3D graphics pipeline• optimized for drawing 3D triangles with shared

vertices

• map 3D vertex locations to 2D screen locations

• shade triangles and draw them in back to front order using a z-buffer

• speed depends on # of triangles

• most operations on vertices can be represented using a 4D coordinate space - 3D position + homogeneous coordinate for perspective viewing

• 4x4 matrices and 4-vectors

Page 7: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Primitives and Attributes

Page 8: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Choice of primitives

• Which primitives should an API contain?

• small set - supported by hardware, or

• lots of primitives - convenient for user

Page 9: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Choice of primitives

• Which primitives should an API contain?

➡small set - supported by hardware

• lots of primitives - convenient for user

Page 10: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Choice of primitives

• Which primitives should an API contain?

➡small set - supported by hardware

• lots of primitives - convenient for user

GPUs are optimized for points, lines, and triangles

Page 11: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Choice of primitives

• Which primitives should an API contain?

➡small set - supported by hardware

• lots of primitives - convenient for user

GPUs are optimized for points, lines, and triangles

Page 12: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Two classes of primitives

Angel and Shreiner

Geometric : points, lines, polygonsImage : arrays of pixels

Page 13: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Point and line segment types

Angel and Shreiner

Page 14: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Polygons• Multi-sided planar element composed of edges and

vertices.• Vertices (singular vertex) are represented by points • Edges connect vertices as line segments

E1

E3 E2

(x1,y1)

(x2,y2)

(x3,y3)

Page 15: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Valid polygons

• Simple

• Convex

• Flat

Page 16: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Valid polygons

• Simple

• Convex

• Flat

Page 17: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

OpenGL polygons

• Only triangles are supported (in latest versions)

GL_POINTS GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

Page 18: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Other polygons

triangulation

Page 19: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Graphics Pipeline (slides courtesy K. Fatahalian)

Page 20: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Vertex processing

v0

v1

v2

v3

v4

v5

Vertices

Vertices are transformed into “screen space”

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 21: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Vertex processing

v0

v1

v2

v3

v4

v5

Vertices

Vertices are transformed into “screen space”

EACH VERTEX IS TRANSFORMED

INDEPENDENTLY

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 22: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Primitive processing

v0

v1

v2

v3

v4

v5

Vertices

v0

v1

v2

v3

v4

v5

Primitives (triangles)

Then organized into primitives that are clipped and culled…

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 23: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Rasterization

Primitives are rasterized into “pixel fragments”

Fragments

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 24: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Rasterization

Primitives are rasterized into “pixel fragments”

EACH PRIMITIVE IS RASTERIZED INDEPENDENTLY

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 25: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Fragment processing

Shaded fragments

Fragments are shaded to compute a color at each pixel

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 26: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Fragment processing

EACH FRAGMENT IS PROCESSED INDEPENDENTLY

Fragments are shaded to compute a color at each pixel

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 27: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Pixel operations

Pixels

Fragments are blended into the frame buffer at their pixel locations (z-buffer determines visibility)

Vertex processor

Clipper and primitive assembler

Rasterizer Fragment processor

Vertices Pixels

Page 28: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Pipeline entities

v0

v1

v2

v3

v4

v5 v0

v1

v2

v3

v4

v5

Vertices Primitives Fragments

Pixels Fragments (shaded)

Page 29: Graphics Pipeline - UCRshinar/courses/cs230-winter-2016/Lecture9.pdf · Clipping and primitive assembly: output is a set of primitives Rasterization: output is a set of fragments

Graphics pipeline

Primitive Generation

Vertex Generation

Vertex Processing

Fragment Generation

Fragment Processing

Pixel Operations

Fixed-function

Programmable

Memory Buffers Vertex Data Buffers

Textures

Output image (pixels)

Textures

Textures

Primitive Processing

Vertex stream

Vertex stream

Primitive stream

Primitive stream

Fragment stream

Fragment stream

Vertices

Primitives

Fragments

Pixels