Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Similar documents
Texturing. Slides done bytomas Akenine-Möller and Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Shading. Slides by Ulf Assarsson and Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Lecture 1. Application-, geometry-, rasterization stage Real-time Graphics pipeline. Z-buffer Double buffering Screen tearing

Spatial Data Structures and Speed-Up Techniques. Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

TDA361/DIT220 Computer Graphics, January 15 th 2016

Shading. Slides by Ulf Assarsson and Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

CHAPTER 1 Graphics Systems and Models 3

TDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students)

Spatial Data Structures and Speed-Up Techniques. Ulf Assarsson Department of Computer Science and Engineering Chalmers University of Technology

Texturing. Slides done by Tomas Akenine-Möller and Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Introduction to Visualization and Computer Graphics

Pipeline Operations. CS 4620 Lecture 14

CS451Real-time Rendering Pipeline

CS 130 Final. Fall 2015

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11

Pipeline Operations. CS 4620 Lecture 10

EECE 478. Learning Objectives. Learning Objectives. Rasterization & Scenes. Rasterization. Compositing

FROM VERTICES TO FRAGMENTS. Lecture 5 Comp3080 Computer Graphics HKBU

Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

The Rasterizer Stage. Texturing, Lighting, Testing and Blending

Lecture 17: Shading in OpenGL. CITS3003 Graphics & Animation

The Rasterization Pipeline

CS452/552; EE465/505. Intro to Lighting

RASTERISED RENDERING

The Traditional Graphics Pipeline

Topics and things to know about them:

CS 354R: Computer Game Technology

Topics. From vertices to fragments

Speeding up your game

Lets assume each object has a defined colour. Hence our illumination model is looks unrealistic.

The Traditional Graphics Pipeline

+ = Texturing: Glue n-dimensional images onto geometrical objects. Texturing. Texture magnification. Texture coordinates. Bilinear interpolation

Real-Time Rendering. Tomas Möller Eric Haines. A K Peters Natick, Massachusetts

3D Rasterization II COS 426

Objectives Shading in OpenGL. Front and Back Faces. OpenGL shading. Introduce the OpenGL shading methods. Discuss polygonal shading

Interactive Computer Graphics A TOP-DOWN APPROACH WITH SHADER-BASED OPENGL

Computer Graphics (CS 543) Lecture 13b Ray Tracing (Part 1) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

CS452/552; EE465/505. Clipping & Scan Conversion

Realtime 3D Computer Graphics Virtual Reality

Pipeline implementation II

Spring 2009 Prof. Hyesoon Kim

Recollection. Models Pixels. Model transformation Viewport transformation Clipping Rasterization Texturing + Lights & shadows

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

Rasterization Overview

CSE 167: Introduction to Computer Graphics Lecture #9: Visibility. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018


Mattan Erez. The University of Texas at Austin

Lighting and Shading II. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

Texture. Texture Mapping. Texture Mapping. CS 475 / CS 675 Computer Graphics. Lecture 11 : Texture

CS 475 / CS 675 Computer Graphics. Lecture 11 : Texture

The Traditional Graphics Pipeline

Spring 2011 Prof. Hyesoon Kim

Orthogonal Projection Matrices. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

TSBK 07! Computer Graphics! Ingemar Ragnemalm, ISY

Computer Graphics Ray Casting. Matthias Teschner

CS 563 Advanced Topics in Computer Graphics Culling and Acceleration Techniques Part 1 by Mark Vessella

Clipping and Scan Conversion

Implementation III. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

Adaptive Point Cloud Rendering

C P S C 314 S H A D E R S, O P E N G L, & J S RENDERING PIPELINE. Mikhail Bessmeltsev

l Without collision detection (CD), it is practically impossible to construct e.g., games, movie production tools (e.g., Avatar)

INF3320 Computer Graphics and Discrete Geometry

CS 130 Exam I. Fall 2015

Hidden surface removal. Computer Graphics

Chapter 2 A top-down approach - How to make shaded images?

Models and Architectures

Blue colour text questions Black colour text sample answers Red colour text further explanation or references for the sample answers

CSE 167: Lecture #8: GLSL. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Computer Graphics. Lecture 14 Bump-mapping, Global Illumination (1)

GLOBAL EDITION. Interactive Computer Graphics. A Top-Down Approach with WebGL SEVENTH EDITION. Edward Angel Dave Shreiner

CS 418: Interactive Computer Graphics. Basic Shading in WebGL. Eric Shaffer

ECS 175 COMPUTER GRAPHICS. Ken Joy.! Winter 2014

CSE 167: Introduction to Computer Graphics Lecture #6: Lights. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2014

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling

Today. Texture mapping in OpenGL. Texture mapping. Basic shaders for texturing. Today. Computergrafik

Computer Science 426 Midterm 3/11/04, 1:30PM-2:50PM

CS 130 Exam I. Fall 2015

Homework #2. Hidden Surfaces, Projections, Shading and Texture, Ray Tracing, and Parametric Curves

Deferred Rendering Due: Wednesday November 15 at 10pm

Textures. Texture coordinates. Introduce one more component to geometry

CS 4620 Program 3: Pipeline

CS230 : Computer Graphics Lecture 4. Tamar Shinar Computer Science & Engineering UC Riverside

Rasterization Computer Graphics I Lecture 14. Scan Conversion Antialiasing Compositing [Angel, Ch , ]

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

COMP environment mapping Mar. 12, r = 2n(n v) v

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Fondamenti di Grafica 3D The Rasterization Pipeline.

Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03

Computer Graphics I Lecture 11

Computer Graphics. Bing-Yu Chen National Taiwan University

CSE 167: Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Module Contact: Dr Stephen Laycock, CMP Copyright of the University of East Anglia Version 1

Using Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects

Introduction Rasterization Z-buffering Shading. Graphics 2012/2013, 4th quarter. Lecture 09: graphics pipeline (rasterization and shading)

Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

CS 563 Advanced Topics in Computer Graphics QSplat. by Matt Maziarz

Recall: Indexing into Cube Map

Transcription:

Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Lecture 1: Real-time Rendering The Graphics Rendering Pipeline Three conceptual stages of the pipeline: Application (executed on the CPU) collision detection, speed-up techniques, animation Geometry Compute lighting at vertices of triangle Project onto screen (3D to 2D) Rasterizer Texturing Interpolation over triangle Z-buffering Application Geometry Rasterizer Image input 3D scene output

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

Cannot use same matrix to transform normals Use : N = ( M 1 ) T instead of M Homogeneous notation Projections Quaternions Know what they are good for. Not knowing the mathematical rules. represents a rotation of 2φ radians 2φ r around axis uq of point p Ulf Assarsson 2004

02. Vectors and Transforms A point: Translation becomes: Translationsdelen rotationsdelen A vector (direction): Translation of vector: Also allows for projections (later) Tomas Akenine-Mőller 2002

02. Vectors and Transforms M model-to-world : Change of Frames (0,5,0) y a o b z world space x model space c E.g.: p world = M m w p model = M m w (0,5,0) T = 5 b (+ o)

02. Vectors and Transforms Orthogonal (parallel) and Perspective Tomas Akenine-Mőller 2002

02. Vectors and Transforms Simple, just skip one coordinate Say, we re looking along the z-axis Then drop z, and render z z Tomas Akenine-Mőller 2002

02. Rasterization, Depth Sorting and Culling: DDA Algorithm Digital Differential Analyzer DDA was a mechanical device for numerical solution of differential equations Line y=kx+ m satisfies differential equation dy/dx = k = Δy/Δx = y 2 -y 1 /x 2 -x 1 Along scan line Δx = 1 y=y1; For(x=x1; x<=x2,ix++) { write_pixel(x, round(y), line_color) y+=k; }

02. Rasterization, Depth Sorting and Culling: Using Symmetry Use for 1 k 0 For k > 1, swap role of x and y For each y, plot closest x

02. Rasterization, Depth Sorting and Culling: Very Important! The problem with DDA is that it uses floats which was slow in the old days Bresenhams algorithm only uses integers You do not need to know Bresenham s algorithm by heart. It is enough that you understand it if you see it.

Said on the lecture: Painter s Algorithm Render polygons a back to front order so that polygons behind others are simply painted over B behind A as seen by viewer Requires ordering of polygons first O(n log n) calculation for ordering Not every polygon is either in front or behind all other polygons Fill B then A I.e., : Sort all triangles and render them back-to-front.

Said on the lecture: z-buffer Algorithm Use a buffer called the z or depth buffer to store the depth of the closest object at each pixel found so far As we render each polygon, compare the depth of each pixel to depth in z buffer If less, place shade of pixel in color buffer and update z buffer

Lecture 3 : Shading + + = Know how to compute components. Also, Blinns and Phongs highlight model Ulf Assarsson 2004

Light: Ambient (r,g,b,a) Diffuse (r,g,b,a) Specular (r,g,b,a) Material: Ambient (r,g,b,a) Diffuse (r,g,b,a) Specular (r,g,b,a) DIFFUSE SPECULAR AMBIENT EMISSION SHININESS Base color Highlight Color Low-light Color Glow Color Surface Smoothness Emission (r,g,b,a) = självlysande färg

03. Shading: I.e.: i=iamb+idiff+ispec+iemission Phong s reflection model: Blinn s reflection model: Tomas Akenine-Mőller 2002

03. Shading: i=iamb+idiff+ispec+iemission Diffuse is Lambert s law: Photons are scattered equally in all directions Tomas Akenine-Mőller 2002

03. Shading: Diffuse is dull (left) Specular: simulates a highlight Tomas Akenine-Mőller 2002

03. Shading: Phong specular highlight model Reflect l around n: r n l -l Next: Blinns highlight formula: (n. h) m Tomas Akenine-Mőller 2002

03. Shading: 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 are coplanar: ψ = φ/2 Must then adjust exponent so that (n h) e (r v) e (e 4e)

03. Shading: Flat Gouraud Phong Tomas Akenine-Mőller 2002

03. Shading: Transparency Very simple in real-time contexts The tool: alpha blending (mix two colors) Alpha (α) is another component in the frame buffer, or on triangle Represents the opacity 1.0 is totally opaque 0.0 is totally transparent The over operator: Rendered object Tomas Akenine-Mőller 2002

03. Shading: Tomas Akenine-Mőller 2002

When does it occur? In 1) pixels, 2) time, 3) texturing Nyquist Filters Supersampling schemes Jittered sampling Ulf Assarsson 2004

04. Texturing Most important: Texturing, environment mapping Bump mapping 3D-textures, Particle systems Sprites and billboards

FILTERING: For magnification: Nearest or Linear (box vs Tent filter) For minification: Bilinear using mipmapping Trilinear using mipmapping Anisotropic up to 16 mipmap lookups along Ulf line Assarsson of anisotropy 2004

Magnification Minification Ulf Assarsson 2004

Ulf Assarsson 2004

Image pyramid Half width and height when going upwards Average over 4 parent texels to form child texel Depending on amount of minification, determine which image to fetch from Compute d first, gives two images Bilinear interpolation in each v d u Tomas Akenine-Mőller 2002

(u 0,v 0,d 0 ) Interpolate between those bilinear values Gives trilinear interpolation Level n+1 d v u Level n Constant time filtering: 8 texel accesses Tomas Akenine-Mőller 2002

Not twice the number of bytes! 1/4 1/16 1/64 1/1 Rather 33% more not that much Modified by Ulf Assarsson 2004 Tomas Akenine-Mőller 2002

Ulf Assarsson 2004

Assumes the environment is infinitely far away Sphere mapping Cube mapping is the norm nowadays Advantages: no singularities as in sphere map Much less distortion Gives better result Not dependent on a view position Modified by Ulf Assarsson 2004 Tomas Akenine-Mőller 2002

eye n y z x Simple math: compute reflection vector, r Largest abs-value of component, determines which cube face. Example: r=(5,-1,2) gives POS_X face Divide r by abs(5) gives (u,v)=(-1/5,2/5) If your hardware has this feature, then it does all the work Tomas Akenine-Mőller 2002

by Blinn in 1978 Inexpensive way of simulating wrinkles and bumps on geometry Too expensive to model these geometrically Instead let a texture modify the normal at each pixel, and then use this normal to compute lighting per pixel geometry + = Bump map Bump mapped geometry Stores heights: can derive normals Tomas Akenine-Mőller 2002

3D textures: Feasible on modern hardware as well Texture filtering is no longer trilinear Rather quadlinear (linear interpolation 4 times) Enables new possibilities Can store light in a room, for example Tomas Akenine-Mőller 2002

05. Texturing: Just know what sprites is (i.e., similar to a billboard) GLbyte M[64]=! {!127,0,0,127, 127,0,0,127, 127,0,0,127, 127,0,0,127,!!0,127,0,0, 0,127,0,127, 0,127,0,127, 0,127,0,0,!!0,0,127,0, 0,0,127,127, 0,0,127,127, 0,0,127,0,!!127,127,0,0, 127,127,0,127, 127,127,0,127, 127,127,0,0};! Sprites Sprites (=älvor) was a technique on older home computers, e.g. VIC64. As opposed to billboards sprites does not use the frame buffer. They are rasterized directly to the screen using a special chip. (A special bitregister also marked colliding sprites.) void display(void) {!!glclearcolor(0.0,1.0,1.0,1.0);!!glclear(gl_color_buffer_bit);!!glenable (GL_BLEND);!!glBlendFunc (GL_SRC_ALPHA,!GL_ONE_MINUS_SRC_ALPHA);!!glRasterPos2d(xpos1,ypos1);!!glPixelZoom(8.0,8.0);!!glDrawPixels(width,height,!!!GL_RGBA,!GL_BYTE, M);!!glPixelZoom(1.0,1.0);!!glutSwapBuffers();! }!

Billboards 2D images used in 3D environments Common for trees, explosions, clouds, lens flares

Billboards Rotate them towards viewer Either by rotation matrix or by orthographic projection

Billboards Fix correct transparency by blending AND using alphatest In fragment shader: if (color.a < 0.1) discard; Color Buffer Depth Buffer With blending If alpha value in texture is lower than this threshold value, the pixel is not rendered to. I.e., neither frame buffer nor z-buffer is updated. Which is what we want to achieve. E.g. here: so that objects behind show through the hole With alpha test

n axial billboarding The rotation axis is fixed and disregarding the view position (Also called Impostors)

Uses OpenGL (or DirectX) Will not ask about syntax. Know how to use. E.g. how to achieve Transparency Fog(start, stop, linear/exp/exp-squared) Specify a material, a triangle, how to translate or rotate an object. Ulf Assarsson 2004

All geometric primitives are specified by vertices 43 Ulf Assarsson 2003

Stack depth: 32 Stack depth: 2 modelviewmatrix = lookat(viewpos[x],viewpos [Y],viewpos[Z], viewat[x], viewat[y], viewat[z], viewup[x], viewup[y], viewup[z]); projectionmatrix = perspectivematrix(45.0,winwidth/mwinheight, 0.2,1000); glviewport(0,0,800,600); 44 Ulf Assarsson 2003

Uses the active texture as an environment map VERTEX SHADER in vec3 vertex; in vec3 normalin; // The normal out vec3 normal; out vec3 eyevector; uniform mat4 normalmatrix; uniform mat4 modelviewmatrix; uniform mat4 modelviewprojectionmatrix; void main() { gl_position = modelviewprojectionmatrix *vec4(vertex,1); normal = (normalmatrix * vec4(normalin,0.0)).xyz; eyevector = (modelviewmatrix * vec4(vertex, 1)).xyz; } FRAGMENT SHADER in vec3 normal; in vec3 eyevector; uniform samplercube tex1; out vec4 fragmentcolor; 45 void main() { vec3 reflectionvector = normalize(reflect(normalize(eyevector), normalize(normal))); fragmentcolor = texture(tex1, reflectionvector); } Ulf Assarsson 2003

Frame buffer Back/front/left/right gldrawbuffers() Depth buffer (z-buffer) For correct depth sorting Instead of BSP-algorithm, painters algorithm gldepthfunc(), gldepthmask Stencil buffer Shadow volumes, glstencilfunc(), glstencilmask, glstencilmaskseparate, glstencilop General commands: glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT) Specify clearing value:, glclearstencil(), glclearcolor() 46 Ulf Assarsson 2003

4 techniques to compute intersections: Analytically Geometrically e.g. ray vs box (3 slabs) SAT (Separating Axis Theorem) Test: 1. axes orthogonal to side of A, 2. axes orthogonal to side of B 3. crossprod of edges of A and B Dynamic tests know what it means. E.g., describe an algorithm for intersection between a ray and a polygon or sphere or plane. Know equations for ray, sphere, cylinder, plane Ulf Assarsson 2004

Ray: r(t)=o+td Plane formula: n p + d = 0 o d n Replace p by r(t) and solve for t: n (o+td) + d = 0 n o+tn d + d = 0 t = (-d -n o) / (n d) Here, one scalar equation and one unknown -> just solve for t. Tomas Akenine-Mőller 2003

d Sphere center: c, and radius r Ray: r(t)=o+td Sphere formula: p-c =r Replace p by r(t): r(t)-c =r o r c This is a standard quadratic equation. Solve for t. Tomas Akenine-Mőller 2003

Intersect the 2 planes of each slab with the ray Keep max of t min and min of t max If t min < t max then we got an intersection Special case when ray parallell to slab Tomas Akenine-Mőller 2003

Insert a point x into plane equation: Negative half space Positive half space origin Tomas Akenine-Mőller 2003

Sphere: compute f (c) is the signed distance (n normalized) abs( f (c)) > r no collision abs( f (c)) = r sphere touches the plane abs( f (c)) < r sphere intersects plane Box: insert all 8 corners If all f s have the same sign, then all points are on the same side, and no collision Tomas Akenine-Mőller 2003

Ray: r(t)=o+td Triangle vertices: v 0, v 1, v 2 A point in the triangle: t(u,v)=v 0 +u(v 1 - v 0 ) +v(v 2 - v 0 )= v 2 -v 0 v 0 v 1 -v 0 = (1-u-v)v 0 +uv 1 +vv 2 [u,v>=0, u+v<=1] Set t(u,v)=r(t), and solve! v 2 v 1 Tomas Akenine-Mőller 2003

Intersect ray with polygon plane Project from 3D to 2D How? Find max( n x, n y, n z ) Skip that coordinate! Then, count crossing in 2D Tomas Akenine-Mőller 2003

outside frustum intersecting frustum Algo: if sphere is outside any of the 6 frustum planes -> report outside. Else report intersect. Not exact test, but not incorrect A sphere that is reported to be inside, can be outside Not vice versa, so test is conservative Tomas Akenine-Mőller 2003

Speed-up techniques Culling Backface View frustum (hierarchical) Portal Occlusion Culling Detail Levels-of-detail: How to construct and use the spatial data structures BVH, BSP-trees (polygon aligned + axis aligned) Ulf Assarsson 2004

Assume we click on screen, and want to find which object we clicked on click! 1) Test the root first 2) Descend recursively as needed 3) Terminate traversal when possible In general: get O(log n) instead of O(n) Tomas Akenine-Mőller 2002

AABB = Axis Aligned Bounding Box BVH = Bounding Volume Hierarchy Find minimal box, then split along longest axis x is longest Find minimal boxes Split along longest axis Find minimal boxes Called TOP-DOWN method More complex for other BVs Tomas Akenine-Mőller 2002

Test the planes against the point of view Test recursively from root Continue on the hither side to sort front to back 1a 0 2 1b eye A 1a B 4 5 0 1b C 2 Works in the same way for polygonaligned BSP trees --- but that gives exact sorting 1 D 3 Tomas Akenine-Mőller 2002 E 2

Allows exact sorting Very similar to axis-aligned BSP tree But the splitting plane are now located in the planes of the triangles Know how to build it and how to traverse back-to-front or front-to-back Tomas Akenine-Mőller 2002

A Scene Graph is a hierarchical scene description BVH is the data structure that is used most often Simple to understand Simple code However, BVH stores just geometry Rendering is more than geometry The scene graph is an extended BVH with: Lights Textures Transforms And more Tomas Akenine-Mőller 2002

3 types of algorithms: With rays Fast but not exact With BVH You should be able to write pseudo code for BVH/BVH test, for coll det between two objects. Slower but exact For many many objects. why? Course pruning of obviously non-colliding objects Sweep-and-prune