CS451Real-time Rendering Pipeline

Slides:



Advertisements
Similar presentations
Real-Time Rendering 靜宜大學資工研究所 蔡奇偉副教授 2010©.
Advertisements

Understanding the graphics pipeline Lecture 2 Original Slides by: Suresh Venkatasubramanian Updates by Joseph Kider.
Graphics Pipeline.
CS 4363/6353 INTRODUCTION TO COMPUTER GRAPHICS. WHAT YOU’LL SEE Interactive 3D computer graphics Real-time 2D, but mostly 3D OpenGL C/C++ (if you don’t.
CS 4731: Computer Graphics Lecture 18: Hidden Surface Removal Emmanuel Agu.
CGDD 4003 THE MASSIVE FIELD OF COMPUTER GRAPHICS.
The Graphics Pipeline CS2150 Anthony Jones. Introduction What is this lecture about? – The graphics pipeline as a whole – With examples from the video.
Game Engine Design ITCS 4010/5010 Spring 2006 Kalpathi Subramanian Department of Computer Science UNC Charlotte.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Models and Architectures Ed Angel Professor of Computer Science, Electrical and Computer.
Part I: Basics of Computer Graphics Rendering Polygonal Objects (Read Chapter 1 of Advanced Animation and Rendering Techniques) Chapter
3D Rendering with JOGL Introduction to Java OpenGL Graphic Library By Ricardo Veguilla
Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College.
University of Illinois at Chicago Electronic Visualization Laboratory (EVL) CS 426 Intro to 3D Computer Graphics © 2003, 2004, 2005 Jason Leigh Electronic.
COMP 175: Computer Graphics March 24, 2015
GPU Programming Robert Hero Quick Overview (The Old Way) Graphics cards process Triangles Graphics cards process Triangles Quads.
Technology and Historical Overview. Introduction to 3d Computer Graphics  3D computer graphics is the science, study, and method of projecting a mathematical.
CSE 381 – Advanced Game Programming Basic 3D Graphics
Week 2 - Wednesday CS361.
Computer Graphics World, View and Projection Matrices CO2409 Computer Graphics Week 8.
Computer Graphics An Introduction. What’s this course all about? 06/10/2015 Lecture 1 2 We will cover… Graphics programming and algorithms Graphics data.
Week 5 - Wednesday.  What did we talk about last time?  Project 2  Normal transforms  Euler angles  Quaternions.
CS 450: COMPUTER GRAPHICS REVIEW: INTRODUCTION TO COMPUTER GRAPHICS – PART 2 SPRING 2015 DR. MICHAEL J. REALE.
Week 2 - Friday.  What did we talk about last time?  Graphics rendering pipeline  Geometry Stage.
CSC 461: Lecture 3 1 CSC461 Lecture 3: Models and Architectures  Objectives –Learn the basic design of a graphics system –Introduce pipeline architecture.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
OpenGL Conclusions OpenGL Programming and Reference Guides, other sources CSCI 6360/4360.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
1Computer Graphics Lecture 4 - Models and Architectures John Shearer Culture Lab – space 2
CAP4730: Computational Structures in Computer Graphics 3D Transformations.
Advanced Computer Graphics Advanced Shaders CO2409 Computer Graphics Week 16.
GRAPHICS PIPELINE & SHADERS SET09115 Intro to Graphics Programming.
Computer Graphics Chapter 6 Andreas Savva. 2 Interactive Graphics Graphics provides one of the most natural means of communicating with a computer. Interactive.
1 Perception and VR MONT 104S, Fall 2008 Lecture 21 More Graphics for VR.
Mark Nelson 3d projections Fall 2013
Advanced Computer Graphics Spring 2014 K. H. Ko School of Mechatronics Gwangju Institute of Science and Technology.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
1 Perception and VR MONT 104S, Fall 2008 Lecture 20 Computer Graphics and VR.
The Graphics Pipeline Revisited Real Time Rendering Instructor: David Luebke.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Models and Architectures 靜宜大學 資訊工程系 蔡奇偉 副教授 2012.
GLSL Review Monday, Nov OpenGL pipeline Command Stream Vertex Processing Geometry processing Rasterization Fragment processing Fragment Ops/Blending.
Applications and Rendering pipeline
Introduction to Computer Graphics
- Introduction - Graphics Pipeline
Photorealistic Rendering vs. Interactive 3D Graphics
Week 2 - Friday CS361.
Visual Appearance Chapter 4
CSCE 441 Computer Graphics 3-D Viewing
Modeling 101 For the moment assume that all geometry consists of points, lines and faces Line: A segment between two endpoints Face: A planar area bounded.
Graphics Processing Unit
Deferred Lighting.
3D Graphics Rendering PPT By Ricardo Veguilla.
CENG 477 Introduction to Computer Graphics
The Graphics Rendering Pipeline
Understanding Theory and application of 3D
Real-time Computer Graphics Overview
Models and Architectures
Models and Architectures
CSCE 441: Computer Graphics Hidden Surface Removal
Models and Architectures
Introduction to Computer Graphics with WebGL
Introduction to Computer Graphics with WebGL
Graphics Processing Unit
The Graphics Pipeline Lecture 5 Mon, Sep 3, 2007.
Chapter V Vertex Processing
Lecture 13 Clipping & Scan Conversion
Visibility (hidden surface removal)
Models and Architectures
CS5500 Computer Graphics April 17, 2006 CS5500 Computer Graphics
Models and Architectures
Presentation transcript:

CS451Real-time Rendering Pipeline Jyh-Ming Lien Department of Computer SCience George Mason University Based on Tomas Akenine-Möller’s lecture note

You say that you render a ”3D scene”, but what does it mean? First of all, to take a picture, it takes a camera Decides what should end up in the final image Point camera dir near far fov (angle) Create image of geometry inside gray region Used by OpenGL, DirectX, ray tracing, etc.

You say that you render a ”3D scene”, but what does it mean? A 3D scene includes: Geometry (triangles, lines, points, and more) A triangle consists of 3 vertices A vertex is 3D position, and may Material properties of geometry Light sources Textures (images to glue onto the geometry) Let us take a look at OBJ format include normals, texture coordinates and more

Rendering Primitives Use graphics hardware (GPU) for real time computation… These GPUs can render points, lines, triangles very efficiently A surface is thus an approximation by a number of such primitives

Fixed-Function Pipeline From chapter 2 in the RTR book The pipeline is the ”engine” that creates images from 3D scenes Three conceptual stages of the pipeline: Application (executed on the CPU) Geometry Rasterizer 3D scene input Application Geometry Rasterizer Image output Game CAD/Maya GIS Transformation matrices (World, View, Projection) Textures / Color Lighting information

Back to the pipeline: The APPLICATION stage Geometry Rasterizer Back to the pipeline: The APPLICATION stage Executed on the CPU Means that the programmer decides what happens here Examples: Collision detection Speed-up techniques Animation Most important task: send rendering primitives (e.g. triangles) to the graphics hardware

Application Geometry Rasterizer The GEOMETRY stage Task: ”geometrical” operations on the input data (e.g. triangles) Allows: Move objects (matrix multiplication) Move the camera (matrix multiplication) Compute lighting at vertices of triangle Project onto screen (3D to 2D matrix multiplication) Clipping (remove triangles outside the screen) Map to window

Animate objects and camera Application Geometry Rasterizer Application Geometry Rasterizer Animate objects and camera Can animate in many different ways with 4x4 matrices Example: Before displaying a torus on screen, a matrix that represents a rotation can be applied. The result is that the torus is rotated. Same thing with camera (this is possible since motion is relative)

Application Geometry Rasterizer The RASTERIZER stage Main task: take output from GEOMETRY and turn into visible pixels on screen add textures and various other per-pixel operations And visibility is resolved here: sorts the primitives in the z-direction

Rewind! Let’s take a closer look The programmer ”sends” down primtives to be rendered through the pipeline (using API calls) The geometry stage does per-vertex operations The rasterizer stage does per-pixel operations Next, scrutinize geometry and rasterizer

GEOMETRY stage in more detail Application Geometry Rasterizer Application Geometry Rasterizer GEOMETRY stage in more detail The model transform Originally, an object is in model space Move, orient, and transform geometrical objects into world space Ex: a sphere is defined with origin at (0,0,0) with radius 1 Translate, rotate, scale to make it appear elsewhere Done per vertex with a 4x4 matrix multiplication How does the matrix look like? Can it be any 4x4 matrix?

The view transform You can move the camera in the same manner Application Geometry Rasterizer Application Geometry Rasterizer The view transform You can move the camera in the same manner But apply inverse transform to objects, so that camera looks down negative z-axis (as in OpenGL) z x

Lighting mimics how light in nature behaves Application Geometry Rasterizer Application Geometry Rasterizer Lighting Compute lighting at vertices light white Geometry blue red green Rasterizer white white mimics how light in nature behaves uses empirical models, hacks, and some real theory Much more about this in later lectures

Projection Two major ways to do it Orthogonal Perspective Application Geometry Rasterizer Application Geometry Rasterizer Projection Two major ways to do it Orthogonal (useful in fewer applications) Perspective (most often used) Mimics how humans perceive the world, i.e., objects’ apparent size decreases with distance Orthogonal Perspective

Projection Frustum Pinhole camera CG camera Application Application Geometry Rasterizer Geometry Rasterizer Projection Also done with a matrix multiplication Pinhole camera (left), analog used in CG (right) rendered image Frustum film Pinhole camera CG camera

Clipping and Screen Mapping Application Geometry Rasterizer Application Geometry Rasterizer Clipping and Screen Mapping Square (cube) after projection Clip primitives to square Screen mapping, scales and translates square so that it ends up in a rendering window These screen space coordinates together with Z (depth) are sent to the rasterizer stage

Summary camera space world space model space world space Application Geometry Rasterizer Application Geometry Rasterizer Summary camera space world space model space world space compute lighting projection image space clip map to screen

The RASTERIZER in more detail Application Geometry Rasterizer The RASTERIZER in more detail Scan-conversion Find out which pixels are inside the primitive Texturing Put images on triangles Interpolation over triangle Z-buffering Make sure that what is visible from the camera really is displayed Double buffering And more…

Scan conversion Triangle vertices from GEOMETRY is input Application Geometry Rasterizer Application Geometry Rasterizer Scan conversion Triangle vertices from GEOMETRY is input Find pixels inside the triangle Or on a line, or on a point Do per-pixel operations on these pixels: Interpolation Texturing Z-buffering And more…

Interpolation Interpolate colors over the triangle blue red green flat Application Geometry Rasterizer Interpolation Interpolate colors over the triangle Called Gouraud interpolation blue red green flat Gouraud

Texturing texturing is like gluing images onto geometrical object Application Geometry Rasterizer Texturing texturing is like gluing images onto geometrical object + = Uses and other applications More realism Bump mapping Pseudo reflections Light mapping ... many others Bump mapping

Z-buffering The graphics hardware is pretty stupid It ”just” draws triangles However, a triangle that is covered by a more closely located triangle should not be visible Assume two equally large tris at different depths Draw 1 then 2 incorrect Draw 2 then 1 correct Triangle 1 near Triangle 2 far

Z-buffering Would be nice to avoid sorting… Application Geometry Rasterizer Z-buffering Would be nice to avoid sorting… The Z-buffer (aka depth buffer) solves this Idea: Store z value (depth) at each pixel When scan-converting a triangle, compute z at each pixel on triangle Compare triangle’s z to Z-buffer z-value If triangle’s z is smaller, then replace Z-buffer and color buffer Else do nothing Can render in any order (if no blending is involved)

Double buffering The monitor displays one image at a time Application Geometry Rasterizer Double buffering The monitor displays one image at a time So if we render the next image to screen, then rendered primitives pop up And even worse, we often clear the screen before generating a new image A better solution is ”double buffering”

Double buffering Use two buffers: one front and one back Application Geometry Rasterizer Double buffering Use two buffers: one front and one back The front buffer is displayed The back buffer is rendered to When new image has been created in back buffer, swap front and back

Programmable pipeline Application Geometry Rasterizer Programmable pipeline Programmable shading has become a hot topic Vertex shaders Pixel shaders Adds more control and much more possibilities for the programmer bus Application Geometry Rasterizer HARDWARE CPU Very general Command GPU Vertex shader program Pixel shader program GPU Highly specialized e.g, vector calculations Highly parallelized More to come when we talk about shaders!!