CSCE 552 Fall 2012 3D Models By Jijun Tang. Triangles Fundamental primitive of pipelines  Everything else constructed from them  (except lines and point.

Slides:



Advertisements
Similar presentations
CS 352: Computer Graphics Chapter 7: The Rendering Pipeline.
Advertisements

Optimized Stencil Shadow Volumes
Graphics Pipeline.
Texture Mapping. Texturing  process that modifies the appearance of each point on a surface using an image or function  any aspect of appearance can.
Week 7 - Monday.  What did we talk about last time?  Specular shading  Aliasing and antialiasing.
Week 10 - Monday.  What did we talk about last time?  Global illumination  Shadows  Projection shadows  Soft shadows.
Real-Time Rendering TEXTURING Lecture 02 Marina Gavrilova.
03/12/02 (c) 2002 University of Wisconsin, CS559 Last Time Some Visibility (Hidden Surface Removal) algorithms –Painter’s Draw in some order Things drawn.
CAP4730: Computational Structures in Computer Graphics Visible Surface Determination.
CHAPTER 12 Height Maps, Hidden Surface Removal, Clipping and Level of Detail Algorithms © 2008 Cengage Learning EMEA.
CSE 381 – Advanced Game Programming Scene Management
Korea Univ. Graphics Lab. 3D Game Engine Design Chapter 12. Spatial Sorting Chung Ji Hye
Right of Passage.
Chapter 6: Vertices to Fragments Part 2 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley Mohan Sridharan Based on Slides.
1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces.
CGDD 4003 THE MASSIVE FIELD OF COMPUTER GRAPHICS.
Tomas Mőller © 2000 Speeding up your game The scene graph Culling techniques Level-of-detail rendering (LODs) Collision detection Resources and pointers.
Chapter 5.1 Graphics. 2 Overview Fundamentals High-Level Organization Rendering Primitives Textures Lighting The Hardware Rendering Pipeline Conclusions.
Hidden Surface Elimination Wen-Chieh (Steve) Lin Institute of Multimedia Engineering I-Chen Lin’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals.
CSCE 590E Spring 2007 Graphics I By Jijun Tang. Announcements Second presentation will be held on April 16 th and 18 th  April 16 th : Space Banditos,
Graphics Presented by Shuang Li. 2 Overview  Fundamentals  High-Level Organization  Rendering Primitives  Textures  Lighting  The Hardware Rendering.
1 Advanced Scene Management System. 2 A tree-based or graph-based representation is good for 3D data management A tree-based or graph-based representation.
CSCE 590E Spring 2007 Graphics II By Jijun Tang.
10/11/2001CS 638, Fall 2001 Today Kd-trees BSP Trees.
Introduction to 3D Graphics John E. Laird. Basic Issues u Given a internal model of a 3D world, with textures and light sources how do you project it.
University of Texas at Austin CS 378 – Game Technology Don Fussell CS 378: Computer Game Technology Beyond Meshes Spring 2012.
Hidden Surface Removal
10/29/02 (c) 2002 University of Wisconsin, CS559 Today Hidden Surface Removal Exact Visibility.
University of Illinois at Chicago Electronic Visualization Laboratory (EVL) CS 426 Intro to 3D Computer Graphics © 2003, 2004, 2005 Jason Leigh Electronic.
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
CSCE 552 Spring 2010 Graphics By Jijun Tang. Fundamentals Frame and Back Buffer Visibility and Depth Buffer Stencil Buffer Triangles Vertices Coordinate.
The Visibility Problem In many environments, most of the primitives (triangles) are not visible most of the time –Architectural walkthroughs, Urban environments.
Buffers Textures and more Rendering Paul Taylor & Barry La Trobe University 2009.
Graphics Systems and OpenGL. Business of Generating Images Images are made up of pixels.
Real-Time Rendering SPEEDING UP RENDERING Lecture 04 Marina Gavrilova.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
Chapter 5.1 (3D) Graphics. 2 Overview Fundamentals High-Level Organization Rendering Primitives Textures Lighting The Hardware Rendering Pipeline Conclusions.
Advanced Computer Graphics Advanced Shaders CO2409 Computer Graphics Week 16.
2 COEN Computer Graphics I Evening’s Goals n Discuss application bottleneck determination n Discuss various optimizations for making programs execute.
Real-time Graphics for VR Chapter 23. What is it about? In this part of the course we will look at how to render images given the constrains of VR: –we.
3/23/04© University of Wisconsin, CS559 Spring 2004 Last Time Antialiasing –Area-weighted sampling Visibility –Painters algorithm –Depth buffer (Z-buffer)
1Computer Graphics Implementation II Lecture 16 John Shearer Culture Lab – space 2
Implementation II Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Chapter 5.1 Graphics. 2 Overview Fundamentals High-Level Organization Rendering Primitives Textures Lighting The Hardware Rendering Pipeline Conclusions.
Implementation II.
Computer Graphics Zhen Jiang West Chester University.
09/16/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1.
CSCE 552 Spring D Models By Jijun Tang. Triangles Fundamental primitive of pipelines  Everything else constructed from them  (except lines and.
Emerging Technologies for Games Deferred Rendering CO3303 Week 22.
10/19/04© University of Wisconsin, CS559 Fall 2004 Last Time Clipping –Why we care –Sutherland-Hodgman –Cohen-Sutherland –Intuition for Liang-Barsky Homework.
Graphics Graphics Korea University cgvr.korea.ac.kr 1 7. Speed-up Techniques Presented by SooKyun Kim.
CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam © Visible Surface Determination (VSD) To render or not to render, that is the question… 1 of.
Where We Stand At this point we know how to: –Convert points from local to window coordinates –Clip polygons and lines to the view volume –Determine which.
Right of Passage.
Maths & Technologies for Games Spatial Partitioning 2
Computer Graphics I, Fall 2010 Implementation II.
Maths & Technologies for Games Spatial Partitioning 1 CO3303 Week 8-9.
1 CSCE 441: Computer Graphics Hidden Surface Removal Jinxiang Chai.
Graphics, Modeling, and Textures Computer Game Design and Development.
- Introduction - Graphics Pipeline
Computer Graphics Implementation II
CSCE 552 Spring 2011 Graphics By Jijun Tang.
CSCE 552 Spring 2010 Animation By Jijun Tang.
Hidden Surfaces Dr. Scott Schaefer.
CS451Real-time Rendering Pipeline
CSCE 441: Computer Graphics Hidden Surface Removal
Graphics, Modeling, and Textures
Lecture 13 Clipping & Scan Conversion
Presentation transcript:

CSCE 552 Fall D Models By Jijun Tang

Triangles Fundamental primitive of pipelines  Everything else constructed from them  (except lines and point sprites) Three points define a plane Triangle plane is mapped with data  Textures  Colors “Rasterized” to find pixels to draw

Mesh

Vertices A vertex is a point in space Plus other attribute data  Colors  Surface normal  Texture coordinates  Whatever data shader programs need Triangles use three vertices  Vertices shared between adjacent triangles

Textures Array of texels  Same as pixel, but for a texture  Nominally R,G,B,A but can mean anything 1D, 2D, 3D and “cube map” arrays  2D is by far the most common  Basically just a 2D image bitmap  Often square and power-of-2 in size Cube map - six 2D arrays makes hollow cube  Approximates a hollow sphere of texels  For environmental

Texture Example

High-Level Organization Gameplay and Rendering Render Objects Render Instances Meshes Skeletons Volume Partitioning

Gameplay and Rendering Rendering speed varies according to scene  Some scenes more complex than others  Typically frames per second Gameplay is constant speed  Camera view should not change game  In multiplayer, each person has a different view, but there is only one shared game  1 update per second (RTS) to thousands (FPS) Keep the two as separate as possible!

Render Objects Description of renderable object type Mesh data (triangles, vertices) Material data (shaders, textures, etc) Skeleton (+rig) for animation Shared by multiple instances

Render Instances A single entity in a world References a render object  Decides what the object looks like Position and orientation Lighting state Animation state

Meshes Triangles Vertices Single material “Atomic unit of rendering”  Not quite atomic, depending on hardware Single object may have multiple meshes  Each with different shaders, textures, etc  Level-Of-Distance (LOD)

LOD Objects have different mesh for different distance from the player The mesh should be simpler if object is faraway Many games have LOD, for example, Microsoft Train Simulator

Example (40m, poly)

Example (120m, 3900 poly)

Volume Partitioning Cannot draw entire world every frame  Lots of objects – far too slow Need to decide quickly what is visible Partition world into areas Decide which areas are visible Draw things in each visible area Many ways of partitioning the world

Volume Partitioning - Portals Nodes joined by portals  Usually a polygon, but can be any shape See if any portal of node is visible If so, draw geometry in node See if portals to other nodes are visible  Check only against visible portal shape  Common to use screen bounding boxes Recurse to other nodes

Volume Partitioning – Portals Visible Invisible Not tested Eye View frustum Node Portal Test first two portals ??

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal Both visible

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal Mark node visible, test all portals going from node ??

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal One portal visible, one invisible

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal Mark node as visible, other node not visited at all. Check all portals in visible node ?? ?

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal One visible, two invisible

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal Mark node as visible, check new node’s portals ?

Volume Partitioning – Portals Visible Invisible Not tested Eye Node Portal One portal invisible. No more visible nodes or portals to check. Render scene.

Real Example

Volume Partitioning – Portals Portals are simple and fast Low memory footprint Automatic generation is difficult, and generally need to be placed by hand Hard to find which node a point is in, and must constantly track movement of objects through portals Best at indoor scenes, outside generates too many portals to be efficient

Volume Partitioning – BSP Binary space partition tree Tree of nodes Each node has plane that splits it in two child nodes, one on each side of plane Some leaves marked as “solid” Others filled with renderable geometry

BSP

Volume Partitioning – BSP Finding which node a point is in is fast  Start at top node  Test which side of the plane the point is on  Move to that child node  Stop when leaf node hit Visibility determination is similar to portals  Portals implied from BSP planes Automated BSP generation is common Generates far more nodes than portals  Higher memory requirements

Volume Partitioning: Quadtree Quadtree (2D) and octree (3D)  Quadtrees described here  Extension to 3D octree is obvious Each node is square  Usually power-of-two in size Has four child nodes or leaves Each is a quarter of size of parent

Quadtree

Octree

Volume Partitioning - PVS Potentially visible set Based on any existing node system For each node, stores list of which nodes are potentially visible Use list for node that camera is currently in  Ignore any nodes not on that list – not visible Static lists  Precalculated at level authoring time  Ignores current frustum  Cannot deal with moving occluders

PVS Room A Room B Room C Room D Room E Viewpoint PVS = B, A, D

Volume Partitioning - PVS Very fast  No recursion, no calculations Still need frustum culling Difficult to calculate  Intersection of volumes and portals  Lots of tests – very slow Most useful when combined with other partitioning schemes

Rendering Primitives Strips, Lists, Fans Indexed Primitives The Vertex Cache Quads and Point Sprites

Strips, Lists, Fans Triangle list Triangle fan Triangle strip Line list Line strip

Vertex Sharing List has no sharing  Vertex count = triangle count * 3 Strips and fans share adjacent vertices  Vertex count = triangle count + 2  Lower memory  Topology restrictions  Have to break into multiple rendering calls

Vertex Counts Using lists duplicates vertices a lot!  Total of 6x number of rendering vertices  Most meshes: tri count = 2x vert count Strips or fans still duplicate vertices  Each strip/fan needs its own set of vertices  More than doubles vertex count Typically 2.5x with good strips  Hard to find optimal strips and fans  Have to submit each as separate rendering call

Strips vs. Lists 32 triangles, 25 vertices4 strips, 40 vertices 25 to 40 vertices is 60% extra data!

Indexed Primitives Vertices stored in separate array  No duplication of vertices  Called a “vertex buffer” or “vertex array”  3 numbers (int/float/double) per vertex Triangles hold indices, not vertices Index is just an integer  Typically 16 bits (65,536)  Duplicating indices is cheap  Indexes into vertex array

Vertex Index Array

The Vertex Cache Vertices processed by vertex shader Results used by multiple triangles Avoid re-running shader for each triangle Storing results in video memory is slow So store results in small cache  Requires indexed primitives  Cache typically vertices in size, resulted in around 95% efficiency

Cache Performance Size and type of cache usually unknown  LRU (least recently used) or FIFO (first in first out) replacement policy  Also odd variants of FIFO policy  Variable cache size according to vertex type Reorder triangles to be cache-friendly  Not the same as finding optimal strips!  Render nearby triangles together  “Fairly good” is easy to achieve  Ideal ordering still a subject for research

CSCE 552 Fall 2012 Graphics By Jijun Tang

Fundamentals Frame and Back Buffer Visibility and Depth Buffer Triangles Vertices Coordinate Spaces Textures Shaders Materials

Frame and Back Buffer Both hold pixel colors Frame buffer is displayed on screen Back buffer is just a region of memory Image is rendered to the back buffer  Half-drawn images are very distracting  You do not want to see the screen is drawn pixel by pixel

Two Buffers

Switching Back buffer can be standard, frame buffer should aim at each hardware Swapped to the frame buffer  May be a swap, or may be a copy  Copy is actually preferred, because you can still modify the format Back buffer is larger if anti-aliasing  Some hardware may not support anti-aliasing  Shrink and filter to frame buffer

Anti-aliasing

In Game Difference

Visibility and Depth Buffer Depth buffer is a buffer that holds the depth of each pixel in the scene, and is the same size as back buffer Holds a depth or “Z” value (often called the “Z buffer”) Pixels test their depth against existing value  If greater, new pixel is further than existing pixel  Therefore hidden by existing pixel – rejected  Otherwise, is in front, and therefore visible  Overwrites value in depth buffer and color in back buffer No useful units for the depth value  By convention, nearer means lower value  Non-linear mapping from world space

Object Depth Is Difficult

Basic Depth Buffer Algorithm for each object in scene in any order for each pixel in the object being rendered if the pixel has already been rendered, then if the new object pixel is closer than the old one, then Replace the displayed pixel with the new one

Frustum The viewing frustum is the region of space in the modeled world that may appear on the screen Frustum culling is the process of removing objects that lie completely outside the viewing frustum from the rendering process

Frustum and Frustum Culling

Coordinate Spaces World space  Arbitrary global game space Object space  Child of world space  Origin at entity’s position and orientation  Vertex positions and normals stored in this Camera space  Camera’s version of “object” space Screen (image) space  Clip space vertices projected to screen space  Actual pixels, ready for rendering

Relationship

Clip Space Distorted version of camera space Edges of screen make four side planes Near and far planes  Needed to control precision of depth buffer Total of six clipping planes Distorted to make a cube in 4D clip space Makes clipping hardware simpler

Clip Space Eye Triangles will be clipped Camera space visible frustum Clip space frustum

Shaders A program run at each vertex or pixel  Generates pixel colors or vertex positions Relatively small programs  Usually tens or hundreds of instructions Explicit parallelism  No direct communication between shaders  “Extreme SIMD” programming model Hardware capabilities evolving rapidly

Example

Textures Texture Formats Texture Mapping Texture Filtering Rendering to Textures

Textures Array of texels  Same as pixel, but for a texture  Nominally R,G,B,A but can mean anything 1D, 2D, 3D and “cube map” arrays  2D is by far the most common  Basically just a 2D image bitmap  Often square and power-of-2 in size Cube map - six 2D arrays makes hollow cube  Approximates a hollow sphere of texels  For environmental

Texture Example

Texture Formats Textures made of texels Texels have R,G,B,A components  Often do mean red, green, blue colors  Really just a labelling convention  Shader decides what the numbers “mean” Not all formats have all components Different formats have different bit widths for components  Trade off storage space and speed for fidelity  Accuracy concerns

Common formats A8R8G8B8 (RGBA8):  32-bit RGB with Alpha  8 bits per comp, 32 bits total R5G6B5: 5 or 6 bits per comp, 16 bits total A32f: single 32-bit floating-point comp A16R16G16B16f: four 16-bit floats DXT1: compressed 4x4 RGB block  64 bits  Storing 16 input pixels in 64 bits of output (4 bits per pixel)  Consisting of two 16-bit R5G6B5 color values and a 4x4 two bit lookup table

Texels Arrangement Texels arranged in variety of ways  1D linear array of texels  2D rectangle/square of texels  3D solid cube of texels  Six 2D squares of texels in hollow cube All the above can have mipmap chains  Mipmap is half the size in each dimension  Mipmap chain – all mipmaps to size 1

MIP Maps Pre-calculated, optimized collections of bitmap images that accompany a main texture MIP meaning "much in a small space“ Each bitmap image is a version of the main texture, but at a certain reduced level of detail (like LOD in 3D Models)

MIPMapping Example

Texture Mapping Texture coordinates called U, V, W Only need U for 1D; U,V for 2D U,V,W typically stored in vertices Or can be computed by shaders Ranges from 0 to 1 across texture  No matter how many texels the texture contains (64X64, 128X128, etc)  Except for cube map – range is -1 to +1

Texture Example