Real-Time Rendering (Echtzeitgraphik) Dr. Michael Wimmer

Similar documents
Real-time Graphics 6. Reflections, Refractions

CMSC427 Advanced shading getting global illumination by local methods. Credit: slides Prof. Zwicker

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

CSE528 Computer Graphics: Theory, Algorithms, and Applications

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

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

Lab 9 - Metal and Glass

Interactive Methods in Scientific Visualization

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

Complex Shading Algorithms

3D Rasterization II COS 426

Lighting and Shading

Reflection and Transmission

Computer Graphics. - Texturing Methods -

Computergrafik. Matthias Zwicker. Herbst 2010

Advanced Shading and Texturing

Pipeline Operations. CS 4620 Lecture 14

Introduction Ray tracing basics Advanced topics (shading) Advanced topics (geometry) Graphics 2010/2011, 4th quarter. Lecture 11: Ray tracing

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

Parallax Bumpmapping. Whitepaper

CS 325 Computer Graphics

Homework #2. Shading, Ray Tracing, and Texture Mapping

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

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

Introduction to Visualization and Computer Graphics

Interactive Cloth Simulation. Matthias Wloka NVIDIA Corporation

CS 450: COMPUTER GRAPHICS TEXTURE MAPPING SPRING 2015 DR. MICHAEL J. REALE

CS GPU and GPGPU Programming Lecture 7: Shading and Compute APIs 1. Markus Hadwiger, KAUST

CS GPU and GPGPU Programming Lecture 12: GPU Texturing 1. Markus Hadwiger, KAUST

CIS 536/636 Introduction to Computer Graphics. Kansas State University. CIS 536/636 Introduction to Computer Graphics

Overview. Hierarchy. Level of detail hierarchy Texture maps Procedural shading and texturing Texture synthesis and noise.

Computer Graphics. Illumination and Shading

Computer Graphics (CS 543) Lecture 10: Normal Maps, Parametrization, Tone Mapping

CS 130 Final. Fall 2015

CS 354R: Computer Game Technology

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

Pipeline Operations. CS 4620 Lecture 10

Homework 3: Programmable Shaders

lecture 18 - ray tracing - environment mapping - refraction

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

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

Einführung in Visual Computing

CS GPU and GPGPU Programming Lecture 11: GPU Texturing 1. Markus Hadwiger, KAUST

Advanced Lighting Techniques Due: Monday November 2 at 10pm

CPSC GLOBAL ILLUMINATION

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

CS 431/636 Advanced Rendering Techniques

CS452/552; EE465/505. Intro to Lighting

Render all data necessary into textures Process textures to calculate final image

Topic 12: Texture Mapping. Motivation Sources of texture Texture coordinates Bump mapping, mip-mapping & env mapping

Topic 11: Texture Mapping 11/13/2017. Texture sources: Solid textures. Texture sources: Synthesized

Surface Rendering. Surface Rendering

Objectives. Introduce Phong model Introduce modified Phong model Consider computation of required vectors Discuss polygonal shading.

INF3320 Computer Graphics and Discrete Geometry

3D Programming. 3D Programming Concepts. Outline. 3D Concepts. 3D Concepts -- Coordinate Systems. 3D Concepts Displaying 3D Models

CS GPU and GPGPU Programming Lecture 16+17: GPU Texturing 1+2. Markus Hadwiger, KAUST

Topic 11: Texture Mapping 10/21/2015. Photographs. Solid textures. Procedural

CHAPTER 1 Graphics Systems and Models 3

The Rasterization Pipeline

Programmable GPUS. Last Time? Reading for Today. Homework 4. Planar Shadows Projective Texture Shadows Shadow Maps Shadow Volumes

x ~ Hemispheric Lighting

CPSC / Texture Mapping

Texture Mapping II. Light maps Environment Maps Projective Textures Bump Maps Displacement Maps Solid Textures Mipmaps Shadows 1. 7.

AMCS / CS 247 Scientific Visualization Lecture 10: (GPU) Texture Mapping. Markus Hadwiger, KAUST

Comp 410/510 Computer Graphics. Spring Shading

LEVEL 1 ANIMATION ACADEMY2010

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

So far, we have considered only local models of illumination; they only account for incident light coming directly from the light sources.

Mach band effect. The Mach band effect increases the visual unpleasant representation of curved surface using flat shading.

Global Illumination CS334. Daniel G. Aliaga Department of Computer Science Purdue University

CENG 477 Introduction to Computer Graphics. Ray Tracing: Shading

Announcements. Written Assignment 2 is out see the web page. Computer Graphics

Ray Tracer Due date: April 27, 2011

The Traditional Graphics Pipeline

ECS 175 COMPUTER GRAPHICS. Ken Joy.! Winter 2014

Zeyang Li Carnegie Mellon University

Those Delicious Texels or Dynamic Image-Space Per-Pixel

Real-Time Universal Capture Facial Animation with GPU Skin Rendering

Complex Features on a Surface. CITS4241 Visualisation Lectures 22 & 23. Texture mapping techniques. Texture mapping techniques

Wednesday, July 24, 13

Introduction to Computer Graphics 7. Shading

Programming Graphics Hardware

Today. Global illumination. Shading. Interactive applications. Rendering pipeline. Computergrafik. Shading Introduction Local shading models

Parallax Occlusion in Direct3D 11

Topic 9: Lighting & Reflection models 9/10/2016. Spot the differences. Terminology. Two Components of Illumination. Ambient Light Source

Illumination and Shading

Deferred Rendering Due: Wednesday November 15 at 10pm

CMSC427 Final Practice v2 Fall 2017

Relief Mapping in a Pixel Shader using Binary Search Policarpo, Fabio

CS5620 Intro to Computer Graphics

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

Topic 9: Lighting & Reflection models. Lighting & reflection The Phong reflection model diffuse component ambient component specular component

AGDC Per-Pixel Shading. Sim Dietrich

Illumination & Shading: Part 1

Computer Graphics. Lecture 13. Global Illumination 1: Ray Tracing and Radiosity. Taku Komura

TSBK 07! Computer Graphics! Ingemar Ragnemalm, ISY

More Texture Mapping. Texture Mapping 1/46

Overview. Shading. Shading. Why we need shading. Shading Light-material interactions Phong model Shading polygons Shading in OpenGL

Today. Global illumination. Shading. Interactive applications. Rendering pipeline. Computergrafik. Shading Introduction Local shading models

Programming Graphics Hardware. GPU Applications. Randy Fernando, Cyril Zeller

Transcription:

Real-Time Rendering (Echtzeitgraphik) Dr. Michael Wimmer wimmer@cg.tuwien.ac.at

Shading and Lighting Effects

Overview Environment mapping Cube mapping Sphere mapping Dual-paraboloid mapping Reflections, Refractions, Speculars, Diffuse (Irradiance) mapping Normal mapping Parallax normal mapping Advanced Methods Vienna University of Technology 3

Environment Mapping Main idea: fake reflections using simple textures Vienna University of Technology 4

Environment Mapping Assumption: index envmap via orientation Reflection vector or any other similar lookup! Ignore (reflection) position! True if: reflecting object shrunk to a single point OR: environment infinitely far away Eye not very good at discovering the fake Environment Map Viewpoint Vienna University of Technology 5

Environment Mapping Can be an Effect Usually means: fake reflection Can be a Technique (i.e., GPU feature) Then it means: 2D texture indexed by a 3D orientation Usually the index vector is the reflection vector But can be anything else that s suitable! Vienna University of Technology 6

Environment Mapping Uses texture coordinate generation, multitexturing, new texture targets Main task: Map all 3D orientations to a 2D texture Independent of application to reflections Sphere Cube Dual paraboloid Top Top top Left Front Right Left Front Right Back left front right Bottom Back Bottom bottom Vienna University of Technology 7

Cube Mapping OpenGL texture targets Top Left Front Right Back Bottom glteximage2d( GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB8, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, face_px); Vienna University of Technology 8

Cube Mapping Cube map accessed via vectors expressed as 3D texture coordinates (s, t, r) +t -r +s Vienna University of Technology 9

Cube Mapping 3D 2D projection done by hardware Highest magnitude component selects which cube face to use (e.g., -t) Divide other components by this, e.g.: s = s / -t r = r / -t (s, r ) is in the range [-1, 1] remap to [0,1] and select a texel from selected face Still need to generate useful texture coordinates for reflections Vienna University of Technology 10

Cube Maps for Env Mapping Generate views of the environment One for each cube face 90 view frustum Use hardware to render directly to a texture Use reflection vector to index cube map Generated automatically on hardware: gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); Vienna University of Technology 11

Cube Map Coordinates Warning: addressing not intuitive (needs flip) Watt 3D CG Vienna University of Technology 12 Renderman/OpenGL

Cube Mapping Advantages Minimal distortions Creation and map entirely hardware accelerated Can be generated dynamically Optimizations for dynamic scenes Need not be updated every frame Low resolution sufficient Vienna University of Technology 13

Sphere Mapping Earliest available method with OpenGL Only texture mapping required! Texture looks like orthographic reflection from chrome hemisphere Can be photographed like this! Vienna University of Technology 14

Sphere Mapping Maps all reflections to hemisphere Center of map reflects back to eye Singularity: back of sphere maps to outer ring 90 90 180 Top Eye 0 Texture Map Left Front Bottom Right Back Vienna University of Technology 15

Sphere Mapping Texture coordinates generated automatically gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); Uses eye-space reflection vector (internally) Generation Ray tracing Warping a cube map (possible on the fly) Take a photograph of a metallic sphere!! Disadvantages: View dependent has to be regenerated even for static environments! Distortions Vienna University of Technology 16

Vienna University of Technology 17

Dual Paraboloid Mapping Use orthographic reflection of two parabolic mirrors instead of a sphere Vienna University of Technology 18

Dual Paraboloid Mapping Texture coordinate generation: Generate reflection vector using OpenGL Load texture matrix with P M -1 M is inverse view matrix (view independency) P is a projection which accomplishes s = r x / (1-r z ) t = r y / (1-r z ) Texture access across seam: Always apply both maps with multitexture Use alpha to select active map for each pixel Vienna University of Technology 19

Dual Paraboloid mapping Advantages View independent Requires only projective texturing Even less distortions than cube mapping Disadvantages Can only be generated using ray tracing or warping No direct rendering like cube maps No photographing like sphere maps Vienna University of Technology 20

Summary Environment Mapping Sphere Cube Paraboloid View- dependent independent independent Generation warp/ray/ photo direct rendering/ photo warp/ray Hardware required texture mapping cube map support projective texturing, 2 texture units Distortions strong medium little Vienna University of Technology 21

Reflective Environment Mapping Angle of incidence = angle of reflection V N R R = V - 2 (N dot V) N post-modelview view vector V and N normalized! OpenGL uses eye coordinates for R Cube map needs reflection vector in world coordinates (where map was created) Load texture matrix with inverse 3x3 view matrix Best done in fragment shader Vienna University of Technology 22

Example Vertex Program (CG) void C7E1v_reflection(float4 position : POSITION, float2 texcoord : TEXCOORD0, float3 normal : NORMAL, out float4 oposition : POSITION, out float2 otexcoord : TEXCOORD0, out float3 R : TEXCOORD1, uniform float3 eyepositionw, uniform float4x4 modelviewproj, uniform float4x4 modeltoworld, uniform float4x4 modeltoworldinversetranspose) { oposition = mul(modelviewproj, position); otexcoord = texcoord; // Compute position and normal in world space float3 positionw = mul(modeltoworld, position).xyz; float3 N = mul((float3x3) modeltoworldinversetranspose, normal); N = normalize(n); } // Compute the incident and reflected vectors float3 I = positionw - eyepositionw; R = reflect(i, N); Vienna University of Technology 23

Example Fragment Program void C7E2f_reflection(float2 texcoord : TEXCOORD0, float3 R : TEXCOORD1, out float4 color : COLOR, { uniform float reflectivity, uniform sampler2d decalmap, uniform samplercube environmentmap) // Fetch reflected environment color float4 reflectedcolor = texcube(environmentmap, R); // Fetch the decal base color float4 decalcolor = tex2d(decalmap, texcoord); } color = lerp(decalcolor, reflectedcolor, reflectivity); Vienna University of Technology 24

Refractive Environment Mapping Use refracted vector for lookup: Snells law: Demo Vienna University of Technology 25

Specular Environment Mapping We can prefilter the enviroment map Equals specular integration over the hemisphere Phong lobe (cos^n) as filter kernel R as lookup Phong filtered Vienna University of Technology 26

Irradiance Environment Mapping Prefilter with cos() Equals diffuse integral over hemisphere N as lookup direction Integration: interpret each pixel of envmap as a light source, sum up! Diffuse filtered Vienna University of Technology 27

Environment Mapping OGRE Beach Demo Author: Christian Luksch http://www.ogre3d.org/wiki/index.php/hdrlib Vienna University of Technology 28

Environment Mapping Conclusions Cheap technique Highly effective for static lighting Simple form of image based lighting Expensive operations are replaced by prefiltering Advanced variations: Separable BRDFs for complex materials Realtime filtering of environment maps Fresnel term modulations (water, glass) Used in virtually every modern computer game Vienna University of Technology 29

Environment Mapping Toolset Environment map creation: AMDs CubeMapGen (free) Assembly Proper filtering Proper MIP map generation Available as library for your engine/dynamic environment maps HDRShop 1.0 (free) Representation conversion Spheremap to Cubemap Vienna University of Technology 30

Per-Pixel Lighting Simulating smooth surfaces by calculating illumination at each pixel Example: specular highlights per-pixel evaluation linear intensity interpolation Vienna University of Technology 31

Bump Mapping / Normal Mapping Simulating rough surfaces by calculating illumination at each pixel Vienna University of Technology 32

Normal Mapping Bump/Normalmapping invented by Blinn 1978. Efficient rendering of structured surfaces Enormous visual Improvement without additional geometry Is a local method (does not know anything about surrounding except lights) Heavily used method! Realistic AAA games normal map every surface <insert your name here> 33

Normal Mapping Fine structures require a massive amount of polygons Too slow for full scene rendering Vienna University of Technology 34

Normal Mapping But: perception of illumination is not strongly dependent on position Position can be approximated by carrier geometry Idea: transfer normal to carrier geometry Vienna University of Technology 35

Normal Mapping But: perception of illumination is not strongly dependent on position Position can be approximated by carrier geometry Idea: transfer normal to carrier geometry Vienna University of Technology 36

Normal Mapping Result: Texture that contains the normals as vectors Red Green Blue X Y Z Saved as range compressed bitmap ([-1..1] mapped to [0..1]) Directions instead of polygons! Shading evaluations executed with lookup normals instead of interpolated normal Vienna University of Technology 37

Normal Mapping Additional result is heightfield texture Encodes the distance of original geometry to the carrier geometry Ralf Habel 38

Parallax normal mapping Normal mapping does not use the heightfield No parallax effect, surface is still flattened Idea: Distort texture lookup according to view vector and heightfield Good approximation of original geometry Vienna University of Technology 39

Parallax normal mapping We want to calculate the offset to lookup color and normals from the corrected position T n to do shading there Image by Terry Welsh Vienna University of Technology 40

Parallax normal mapping Rescale heightmap h to appropriate values: h n = h*s -0.5s (s = scale = 0.01) Assume heightfield is locally constant Lookup heightfield at T 0 Trace ray from T 0 to eye with eye vector V to height and add offset: T n = T 0 + (h n * V x,y /V z ) <insert your name here> 41

Offset limited Parallax normal mapping Problem: At steep viewing angles, V z goes to zero Offset values approach infinity Solution: we leave out V z division: T n = T 0 + (h n * V x,y ) Effect: offset is limited Image by Terry Welsh Vienna University of Technology 42

Normalmap Parallax-normalmap Demo Author:Terry Welsh Vienna University of Technology 43

Bump Map Original Bump Mapping idea has theory that is a little more involved! Assume a (u, v)-parameterization I.e., points on the surface P = P(u,v) Surface P is modified by 2D height field h surface P + = height field h offset surface P with perturbed normals N Vienna University of Technology 44

Mathematics P u, P v : Partial derivatives: Easy: differentiate, treat other vars as constant! (or see tangent space) Both derivatives are in tangent plane Careful: normal normalization N(u,v) = P u x P v N n = N / N P u P ( u, v) ( u, v) u Displaced surface: P (u,v) = P(u,v) + h(u,v) N n (u,v) Vienna University of Technology 45

Mathematics Perturbed normal: N (u,v) = P u x P v P u = P u + h u N n + h N nu ~ P u + h u N n (h small) P v = P v + h v N n + h N nv ~ P v + h v N n P = P + h N n N = N + h u (N n x P v ) + h v (P u x N n ) = N + D offset vector (D is in tangent plane) Vienna University of Technology 46

Cylinder Example Goal: N = N + h u (N n x P v ) + h v (P u x N n ) P(u,v) = (r cos u, r sin u, l v), u = 0.. 2 Pi, v = 0..1 r P u = (- r sin u, r cos u, 0), P u = r P v = (0, 0, l), P v = l N = (r l cos u, r l sin u, 0), N = r l l P v P u N n = (cos u, sin u, 0) N n x P v = l (sin u, -cos u, 0) N n x P v Pu x N n N P u x N n = (0, 0, -r) Vienna University of Technology 47

Bump Mapping Issues Dependence on surface parameterization D = f(p u, P v ) Map tied to this surface don t want this! What to calculate where? Preproces, per object, per vertex, per fragment Which coordinate system to choose? Vienna University of Technology 48

Coordinate Systems Problem: where to calculate lighting? Object coordinates Native space for normals (N) World coordinates Native space for light vector (L), env-maps Not explicit in OpenGL! Eye Coordinates Native space for view vector (V) Tangent Space Native space for normal maps Vienna University of Technology 49 Tangent Space TBN Matrix Object Space World Space Eye Space Clip Space Model Matrix View Matrix Proj Matrix

Basic Algorithm (Eye Space) For scene (assume infinite L and V) Transform L and V to eye space and normalize Compute normalized H (for specular) For each vertex Transform N n, P u and P v to eye space Calculate B1 = N n x P v, B2 = P u x N n, N = P u x P v For each fragment Interpolate B1, B2, N Fetch (h u, h v ) = texture(s, t) Compute N = N + h u B1 + h v B2 Normalize N Using N in standard Phong equation Vienna University of Technology 50

Tangent Space Concept from differential geometry Set of all tangents on a surface Orthonormal coordinate system (frame) for each point on the surface: N n (u,v) = P u x P v / P u x P v T = P u / P u B = N n x T A natural space for normal maps Vertex normal N = (0,0,1) in this space! B N T Vienna University of Technology 51

Parametric Example Cylinder Tangent Space: N n (u,v) = P u x P v / P u x P v T = P u / P u B = N n x T r P v Tangent space matrix: TBN column vectors l B N n T P u N Vienna University of Technology 52

Fast Algorithm (Tangent Space) Normal Mapping For each vertex Transform light direction L and eye vector V to tangent space and normalize Compute normalized Half vector H For each fragment Interpolate L and H Renormalize L and H Fetch N = texture(s, t) (Normal Map) Use N in shading Vienna University of Technology 53

Square Patch Assumption B = P v / P v Decouples bump map from surface! Recall formula: Convert to tangent space: N n x P v = - T P v P u x N n = - B P u N = Pu x Pv = Pu Pv sin α N = N + h u (N n x P v ) + h v (P u x N n ) B T N N = N - h u T P v - h v B P u divide by Pu Pv N ~ N n sin α - h u / P u T - h v / P v B Vienna University of Technology 54

Square Patch Assumption N ~ N n sin α - h u / P u T - h v / P v B Square patch sin α = 1 P u and P v assumed constant over patch N ~ N n (h u / k) T (h v / k) B = N n + D Vienna University of Technology 55

Offset Bump Maps N ~ N n (h u / k) T (h v / k) B = N n + D In tangent space (TBN): N n = (0, 0, 1), D = (- h u / k, - h v / k, 0) Scale of bumps: k Apply map to any surface with same scale Alternative: D = (- h u, - h v, 0) Apply k at runtime h u, h v : calculated by finite differencing from height map Vienna University of Technology 56

Normal Maps Also: normal perturbation maps N ~ N n (h u / k) T (h v / k) B = R N n R: rotation matrix In tangent space (TBN): N n = (0, 0, 1) N third row of R N = Normalize(- h u / k, - h v / k, 1) Scale of bumps: k Comparison to offset maps: Need 3 components Better use of precision (normalized vector) Vienna University of Technology 57

Creating Tangent Space Trivial for analytically defined surfaces Calculate P u, P v at vertices Use texture space for polygonal meshes Induce from given texture coordinates per triangle P(u, v) = a u + b v + c = P u u + P v v + c! 9 unknowns, 9 equations (x,y,z for each vertex)! Transformation from object space to tangent space L tx L ty L tz = L ox L oy L oz T x B x N x T y B y N y T z B z N z Vienna University of Technology 58

Creating Tangent Space - Math P(s, t) = a s + b t + c, linear transform! P u (s,t) = a, P v (s,t) = b Texture space: u 1 = (s 1,t 1 )-(s 0,t 0 ), u 2 = (s 2,t 2 )-(s 0,t 0 ) Local space: v 1 = P 1 -P 0, v 2 = P 2 -P 0 [P u P v ] u 1 = v 1, [P u P v ] u 2 = v 2 Matrix notation: [P u P v ] [u 1 u 2 ] = [v 1 v 2 ] Vienna University of Technology 59

Creating Tangent Space - Math [P u P v ] [u 1 u 2 ] = [v 1 v 2 ] [P u P v ] = [v 1 v 2 ] [u 1 u 2 ] -1 [u 1 u 2 ] -1 = 1/ u 1 u 2 [u 2y -u 2x ] [-u 1y u 1x ] Result: very simple formula! Finally: calculate tangent frame (for triangle): T = P u / P u B = N n x T Vienna University of Technology 60

Creating Tangent Space Example for key-framed skinned model Note: average tangent space between adjacent triangles (like normal calculation) bump-skin height field Vienna University of Technology 61 decal skin (unlit!)

Quake 2 Example ( ) + ( ) = Diffuse Decal Specular Gloss Note: Gloss map defines where to apply specular Final result! Vienna University of Technology 62

Normal map Example + Model by Piotr Slomowicz Vienna University of Technology 63

Normal map Example Vienna University of Technology 64

Normal map Example Vienna University of Technology 65

Normal mapping + Environment mapping Normal and Parallax mapping combines beautifully with environment mapping Demo Vienna University of Technology 66

EMNM (World Space) For each vertex Transform V to world space Compute tangent space to world space transform (T, B, N) For each fragment Interpolate and renormalize V Interpolate frame (T, B, N) Lookup N = texture(s, t) Transform N from tangent space to world space Compute reflection vector R (in world space) using N Lookup C = cubemap(r) Vienna University of Technology 67

Normal and Parallax Normal Map Issues Artifacts No shadowing Silhouettes still edgy No parallax for Normal mapping Parallax Normal Mapping No occlusion, just distortion Not accurate for high frequency height-fields (local constant heightfield assumption does not work) No silhouettes Vienna University of Technology 68

Normal Mapping Issues Normal Mapping Effectiveness No effect if neither light nor object moves! In this case, use light maps Exception: specular highlights Vienna University of Technology 69

Horizon Mapping Improve normal mapping with (local) shadows Preprocess: compute n horizon values per texel Runtime: Interpolate horizon values Shadow accordingly v 8 horizon values u Eduard Gröller, Stefan Jeschke 70

Horizon Mapping Examples Eduard Gröller, Stefan Jeschke 71

Relief Mapping At runtime: perform ray casting in the pixel shader Calculate entry (A) and exit point (B) March along ray until intersection with height field is found Binary search to refine the intersection position Vienna University of Technology 72

Relief Mapping Examples Texture mapping Parallax mapping Relief mapping Eduard Gröller, Stefan Jeschke 73

Speed considerations Parallax-normalmapping ~ 20 ALU instructions Relief-mapping Marching and binary search: ~300 ALU instructions + lots of texture lookups Vienna University of Technology 74

Advanced Methods Higher-Order surface approximation relief mapping Surface approximated with polynomes Produces silhouettes Prism tracing Produces near-correct silhouette Many variations to accelerate tracing Cut down tracing cost Shadows in relief Vienna University of Technology 75

Normal and Parallax normal map Toolset DCC Packages (Blender, Maya, 3DSMax) Nvidia Normalmap Filter for Photoshop or Gimp Normalmap filter Create Normalmaps directly from Pictures Not accurate!, but sometimes sufficient NVIDIA Melody xnormal (free) Crazybump (free beta) Much better than PS/Gimp Filters! Tangent space can be often created using graphics/game engine Vienna University of Technology 76

Tipps Download FXComposer and Rendermonkey Tons of shader examples Optimized code Good IDE to play around Books: GPU Gems Series ShaderX Series Both include sample code! Vienna University of Technology 77