![Page 1: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/1.jpg)
1/45
CS148: Introduction to Computer Graphics and Imaging
Scanline Rendering
Electric Sheep screensaver by Scott DravesImage created collectively by users on the internet
![Page 2: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/2.jpg)
2/45
Human Eye
Light comes from light sources, is absorbed and reflected off of objects, and goes through the pupil of the eye.
![Page 3: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/3.jpg)
3/45
Without the pupil light scatters everywhere and does not make a coherent image
![Page 4: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/4.jpg)
4/45
With a pinhole model of the pupil light makes a coherent image inside the eye
![Page 5: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/5.jpg)
5/45
Human Retina: Rods and conesRetina contains rods and cones Rods are responsible for light intensity Cones are responsible for color vision
![Page 6: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/6.jpg)
6/45
Three Types of Cones
From http://webvision.med.utah.edu/imageswv/fovmoswv.jpeg
![Page 7: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/7.jpg)
7/45
Rods Capture Intensities
![Page 8: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/8.jpg)
8/45
Color Matching Experiment
Adjust brightness of three primaries
Lasers: R = 700 nm, G = 546 nm, B = 435 nm
until a human mistakenly thinks it matches another color C = x nm
Result: all colors can be matched with three colors
Therefore: humans have trichromatic color vision
C = R “+” G “+” B
![Page 9: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/9.jpg)
9/45
Trichromatic Theory• Since the human eye works in this fashion, we work this way with images, printers, and displays.• Image formats store values in the R, G, and B channels. • The values are between 0 and 255.• The relative values give the color, and the overall values give the intensity. • This is similar to the cones of the human eye.
• The monitor can be used to increase or decrease the image intensities (brightness/darkness).• This is similar to the rods of the human eye.
![Page 10: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/10.jpg)
10/45
Cameras
•A camera works similarly to the eye.
■ Light passes through the lens, bends to come to a point of focus, and makes an upside-down image on the film.
![Page 11: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/11.jpg)
11/45
Pinhole Camera
Linear perspective with viewpoint at pinhole
![Page 12: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/12.jpg)
12/45
Laws of Pinhole Cameras
Common assumptionsLight leaving an object travels in straight linesThese lines converge to a point (e.g. pinhole) Infinite depth of field which means everything is in focus
Perspective image is formed by the intersection of these lines with an image plane
More distant objects subtend smaller visual angles and appear smaller
Objects in front occlude the objects behind them
![Page 13: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/13.jpg)
13/45
OpenGL Camera
OpenGL uses a pinhole camera.
In OpenGL the image plane is in front of the focal point which means the image is right side up.
The frustum is the volume of our view (shown in blue below).
The image plane is the plane of the frustum nearest to the camera.
![Page 14: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/14.jpg)
14/45
Specifying the Camera in OpenGL
void gluLookAt(eye.x, eye.y, eye.z, at.x, at.y, at.z, up.x, up.y, up.z);- gluLookAt creates a camera from an eye point, a reference point indicating the center of the scene, and an up vector.
![Page 15: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/15.jpg)
15/45
Specifying the Frustum in OpenGL
void gluPerspective(fovy, aspect, near, far);
-gluPerspective specifies a viewing frustum for the camera into the world coordinate system. -fovy specifies the field of view angle.-aspect specifies the aspect ratio of the associated image plane.-near/far specify the distance from the camera to the new/far clipping plane.
![Page 16: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/16.jpg)
16/45
Drawing a Triangle in front of your Camera
glColor3f(1.f,0.f,0.f);glBegin(GL_TRIANGLES);glVertex3f(0.f,0.f,0.f);glVertex3f(1.f,0.f,0.f);glVertex3f(.5f,.86f,0.f);glEnd();
void glBegin(Glenum mode);•glBegin delimits the vertices of a primitive.•mode specifies the primitive that will be created from vertices presented between glBegin and glEnd.
void glVertex(x,y,z);•glVertex specifies a vertex to form the primitive.
![Page 17: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/17.jpg)
17/45
Fundamental Primitive: Triangles
• Why triangles?
• Lowest common denominator
■ Easily break convex polygons into triangles
■ Optimize the implementation of one primitive
■ Triangles have unique properties■ Guaranteed to be planar
■ Guaranteed to have a well-defined
interior
■ Well-defined method (barycentric interpolation) for interpolating values in the interior
![Page 18: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/18.jpg)
18/45
Triangle Meshes
Stanford Bunny69,451 triangles David, Digital Michelangelo Project
28,184,526 vertices, 56,230,343 triangles
![Page 19: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/19.jpg)
19/45
OpenGL Drawing Primitives
Geometric Shapes
Bitmaps Images
![Page 20: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/20.jpg)
20/45
Graphics Rendering Pipeline
Per-vertex ops
Rasterization
Per-fragment ops
Texturing
Vertices
Shadedfragments
Fragments
Transformedvertices
Frame buffer ops
Display
Commands Processor
pixels in the framebuffer
triangles, lines, pointsimages
Primitive assembly
Primitives
![Page 21: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/21.jpg)
21/45
Command queue
Command interpretation
Unpack and perform format conversion
Maintain graphics state
Command Processor
glBegin(GL_TRIANGLE_STRIP);glColor3f(.0f, 1.f, .0f);glVertex3f( .0f, .0f, .0f ); glVertex3f( 0.f, 1.f, .0f ); glColor3f(1.f, .0f, .0f);glVertex3f( 1.f, .0f, .0f ); glVertex3f( 1.f, 1.f, .0f ); glEnd();
![Page 22: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/22.jpg)
22/45
Vertex transformation
Normal transformation
Texture coordinate generation
Texture coordinate transformation
Lighting (light sources and surface reflection)
Projection
Per-vertex Operations
World-space triangles
Screen-space shaded triangles
![Page 23: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/23.jpg)
23/45
Primitive Assembly
Combine transformed/shaded vertices into primitives
■ 1 vert -> point
■ 2 verts -> line
■ 3 verts -> triangle
Clipping
Transform to window coordinates (viewport)
Determine orientation (CW/CCW)
Back-face cull
![Page 24: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/24.jpg)
24/45
Setup (per-triangle)
Sampling (triangle = {fragments})
Interpolation (interpolate colors and coordinates)
Rasterization
Triangles Fragments
![Page 25: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/25.jpg)
25/45
Textures are arrays indexed by floats (Sampler)
Texture address calculation
Texture bilinear interpolation and filtering
Texturing
Fragments Texture Fragments
![Page 26: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/26.jpg)
26/45
Per-fragment Operations
Combine texture sampler outputs
Per-fragment shading
Fragments Textured Fragments
![Page 27: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/27.jpg)
27/45
Operation
■ Test window ownership
■ Test scissor and stencil mask
■ Test alpha
■ Test depth
Blending or compositing
Frame buffer Operations
Textured Fragments Framebuffer Pixels
![Page 28: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/28.jpg)
28/45
Testing Depth using Z-Buffer
Initialize z-buffer to zmax
Interpolate z across the triangle
Draw fragment if closer
if(frag.Z<Z[frag.X][frag.Y]){
Z[frag.X][frag.Y]=frag.Z;
C[frag.X][frag.Y]=frag.C;
}
http://en.wikipedia.org/wiki/File:Z_buffer.svg
![Page 29: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/29.jpg)
29/45
Frame Buffering
Frame Buffer
■ Store image in a buffer to separate refresh rate from drawing rate
Single-buffer
■ Draw into display buffer directly
■ May see picture being drawn
Double-buffer
■ Display “front” buffer
■ Draw into “back” buffer (can’t see drawing)
■ Swap front and back (wait until vertical sync)
Triple buffer
■ Avoid waiting for vertical sync
![Page 30: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/30.jpg)
30/45
Framebuffer
Example Framebuffer: 1440 x 900
All coordinates are integers; they refer to pixel locations in the framebuffer
![Page 31: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/31.jpg)
31/45
Window
Example Framebuffer: 1440 x 900
The window is the portion of the display usable by the application(under control of the “window system”)
All coordinates are integers; they refer to pixel locations in the framebuffer
Window(512 x 512)
![Page 32: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/32.jpg)
32/45
Viewport
Example Framebuffer: 1440 x 900
Viewport(256x256)
All coordinates are integers; they refer to pixel locations in the framebuffer
The viewport is the portion of the window that can be drawn in,no pixels will appearoutside the viewport
Window(512 x 512)
![Page 33: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/33.jpg)
33/45
Specifying the Viewport in OpenGL
void glViewport(x, y, w, h);
-glViewport specifies the location and the size of the viewport in the screen coordinate system. Here x, y, w, and h are all integers.-x and y specify the lower left corner of the viewport rectangle.-w and h specify the width and height of the viewport. w/h should agree with the aspect ratio you set in gluPerspective.
![Page 34: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/34.jpg)
34/45
Windows = Virtual Framebuffers
Like virtual memory enables us to share the physical memory,
virtual framebuffers allows us to share the physical framebuffer
Abstract properties
■ Location and size on the screen
■ Stacking order
![Page 35: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/35.jpg)
35/45
Window Coordinate Systems
Window(512 x 512)
Each window has a user coordinate systemA 2D coordinate system is specified by assigning coordinates to the edges of the windowleft need not be less than right ...
right = 1.0left = -1.0
bottom = -1.0
top = 1.0
![Page 36: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/36.jpg)
36/45
Exposure
Parts of the window that are not visible can become visible
■ When opening
■ When unhiding
■ When brought to front
How do you update the visible parts of the window?
■ Redraw entire window (or a part of it)
■ Save the drawn window in a “backing store”, and copy onto screen when needed
![Page 37: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/37.jpg)
37/45
Display
Gamma correction
Analog to digital conversion
Display
LightFramebuffer Pixels
![Page 38: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/38.jpg)
38/45
glBegin(GL_TRIANGLES) glVertex3fv(v1); glVertex3fv(v2); glVertex3fv(v3);glEnd()
-90
-90
OpenGL GPU
CPU
![Page 39: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/39.jpg)
39/45
Graphics processing unit
A graphics processing unit (GPU), also occasionally called visual processing unit (VPU), is a specialized electronic circuit designed to rapidly manipulate and alter memory to accelerate the building of images in a frame buffer intended for output to a display.
NVIDIA’s GeForce GTX 690
VisionTek Radeon 7970
![Page 40: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/40.jpg)
40/45
What’s in a GPU?
ShaderCore
Tex
Rasterizer
Framebuffer Ops
Work Distributor
Primitive AssemblyShaderCore
ShaderCore
ShaderCore
ShaderCore
ShaderCore
ShaderCore
ShaderCore
Tex
Tex
Tex
![Page 41: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/41.jpg)
41/45
Modern PC
3.0 Ghz Intel Core2 Duo
NVIDIA GeForce8800 GTX (575 MHz)
(16 cores)
512MBvideo
Memory(GDDR3)
4MB L2 Cache
2GB mainmemory(DDR2)
Core 1 Core 2
NVIDIA 8800GTX
PCIe Bus (v1 = 4 GB/sec)
84 GB/sec
System board (Intel D975)
12.8 GB/sec
![Page 42: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/42.jpg)
42/45
Game Machines – Xbox 360
3.2 Ghz PowerPC CPU
Core 1 Core 2 Core 3
500 Mhz ATI GPU 512 MBmemory
L2 Cache
IOChip
48 3DCores Video
out
Framebuffer
Display (TV)
controllers/ethernet/audio/DVD/etc.
![Page 43: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/43.jpg)
43/45
Game Machines – PS3
3.2 Ghz Cell
PPCCore
SPU0
550 Mhz NVIDIA RSX GPU 256 MBvideo
Memory(GDDR3)
L2 Cache
IO Chip
Multiple 3Dcores Video
out
Display (TV)
controllers/ethernet/audio/DVD/etc.
SPU1 SPU2 SPU3
SPU4 SPU5 SPU6 SPU7 256 MBMemory(XDR)
![Page 44: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/44.jpg)
44/45
Hybrid CPU-GPUs
Intel Sandybridge
Apple A5
![Page 45: 1/45 CS148: Introduction to Computer Graphics and Imaging Scanline Rendering Electric Sheep screensaver by Scott Draves Image created collectively by users](https://reader036.vdocuments.site/reader036/viewer/2022062309/56649ecf5503460f94bdd147/html5/thumbnails/45.jpg)
45/45
NVIDIA GPU Performance
Year Product Triangle/s Fragment/s
1998 Riva ZX 3m 100m
1999 Riva TNT2 9m 350m
2000 GeForce2 GTS 25m 664m
2001 GeForce3 30m 800m
2002 GeForce Ti 4600 60m 1200m
2003 GeForce FX 167m 2000m
2004 GeForce 6800 Ultra 170m 6800m
2005 GeForce 7800 GTX 940m 10300m
2006 GeForce 7900 GTX 1400m 15600m
2007 GeForce 8800 GTX 1800m 36800m
2008 GeForce GTX 280 48160m
2010 GeForce GTX 480 42000m
2011 GeForce GTX 580 49400m