+ All Categories
Home > Documents > Texture Mapping

Texture Mapping

Date post: 30-Dec-2015
Category:
Upload: kennedy-ramos
View: 44 times
Download: 0 times
Share this document with a friend
Description:
Texture Mapping. CMSC435 UMBC. *With lots of borrowing from the usual victims…. Motivation. Flat and Boring. “ Textured ”. Texture Mapping. Definition: mapping a function onto a surface; function can be: 1, 2, or 3D sampled (image) or mathematical function. Texture Mapping. - PowerPoint PPT Presentation
56
Texture Mapping CMSC435 UMBC *With lots of borrowing from the usual victims…
Transcript

Texture Mapping

CMSC435

UMBC

*With lots of borrowing from the usual victims…

Motivation

Flat and Boring “Textured”

Texture Mapping

“Texture” Boring Geometry

Texture An image that’s mapped onto something

Texel Texture pixel (Also, an island in Denmark…)

Texture Mapping

Interesting Geometry

Kinds of Functions

• Stuff we might want to map– Color– Opacity– Normals– Displacement– Specularity– Precomputed Lighting

Texture Mapping

3D Coordinate

Mapping Function

2D Texture Coordinate

Texture Image

Texture Coordinates

• Normalized 2D space– 0-1 on each axis

• Letters vary:– U,V are most common– GL/RMan specs like

s,t

• Typically periodic

u

v

s

t

D3D

OGL

Texture Coordinates as RGB

Texture Tiling

1,0

0,10,0

4,0

0,40,0

8,0

0,80,0

2,0

0,20,0

Scale UV Coordinates Alter texture frequency

Planar Mapping

• For xy aligned plane

• Reverse projection

9

Planar Mapping

10

Cylindrical Mapping

• For cylinder with point– (r cos Θ, r sin Θ, h z)

• Texture coordinates– (u,v) =(Θ/2π, z)

11

Cylindrical Mapping

12

Spherical Mapping

• For sphere with point– (r cos Θ sin Φ, r sin Θ sin Φ, r cos Φ)

• Texture coordinates

13

Spherical Mapping

14

Mapping onto Parametric Patches

• Use scaled surface u,v parameters for texture u,v

15

Mapping onto Parametric Patches

16

Mapping onto Polygons

Wikipedia

Explicit per-vertex coordinates…

Perspective Correction

Wikipedia

One does not simply interpolate values over a projected triangle…

Perspective Correction

Worldspace midpoint

Screenspace midpoint

The lines sweep out the same points, but at different ‘t’ values

Perspective Correction

tA

A

B

B

A

A

tABA

tABA

P

P

tABAP

tABAP

w

x

w

x

w

x

www

xxx

w

x

wwww

xxxx

)()(

)(

)(

)(

A

B

P

Not with ten thousand interpolators could you do this! It is madness!

Project interpolated points != Interpolate projected points

Perspective Correction

• 1/w will interpolate

• u/w will interpolate

tAwBwAw

tAwAu

BwBu

AwAu

w

wu

u)

11(

1

)(

1

Perspective Correction

• Given vertices (x,y,z,w) and UV coords (u,v)– Compute 1/w at each vertex– Compute u/w, v/w at each vertex

• Use multiplication!

– Interpolate 1/w, u/w, v/w in screenspace– Divide u/w,v/w by 1/w at each pixel

• “Perspective Divide”

Texture Atlas

• Properties of good UV layout:– Minimizes stretch– Maximize packing

efficiency– Easy for artist to paint

into • Unlike that one…

– Automatic is possible, but manual often preferred

Zhou et al.

Texture Atlas

• Not always a 1:1 mapping

Texture Seams

• Discontinuity at UV chart boundaries

• Solutions:– Fix them:

• Copy/Blend texels across boundary

– Hide them• Armpits, ankles, backs

of heads, under clothing

Peter Kojesta (Gamasutra)

26

Environment Mapping

• Surround scene with maps simulating surrounding detail

27

Distant Reflection

• Look up reflection direction in reflection or environment map

Cubic Environment Maps

• Pick a face based on largest normal component

• Project onto the face– Divide through

• Use resulting coordinates for 2D lookup

DirectX Documentation

Spherical Environment Maps

• Photograph of shiny sphere– Lookup based on x/y

coordinates of normal

DirectX Documentation

Texture Sampling

• Point Sampling– Map UV coordinate

onto texel grid, grab corresponding texel

• i = floor(u*width)• j = floor(v*height)

– Just like in 1995

Point Sampling

Point sampling under magnification

Filtered Sampling

• Bilinear Filtering– Interpolate texels in

2x2 neighborhood• Top-left texel:

– floor(u*(width-1)), floor(v*(height-1))

• Weight by fractional coordinates

Point Sampling

Point sampling under magnification

Linear Sampling

Linear sampling under magnification

3D Textures

• Array of 2D slices• 3D Coordinates

(u,v,w)• Bilinear tap in each

slice using u,v• Blend using w

Minification

Aliasing!

Pixels:Texels > 1: Magnification

Pixels:Texels < 1: Minification

Pixels:Texels ~= 1

Minification Filtering

• Anti-aliasing problem

Projected pixel footprint

Texel grid Large jumps between pixels. Texture is undersampled…

Minification Filtering

• One solution:– Just super-sample it

Problems: - Expensive - Guessing the right sampling rate - Performance death spiral for heavy minification

Mip-Mapping

• Prefiltering:– Precalculate chain of

filtered images• Each level is ½

previous resolution

From Latin: "multum in parvo" (much in little)

Mip-Mapping

• Memory overhead is 33%– Level i+1 is ½

resolution of i:• W/2*H/2=WH/4

– So…

3

4

...)16

1

4

11(

...164

WHSize

WHSize

WHWHWHSize

Geometric series

Mip-Mapping

• Derive footprint using UV derivatives in screenspace du/dy,

dv/dy

du/dx, dv/dx

Mip-Mapping

• Approximate footprint with a square– W = Width of square in

texels

• Find mip level matching footprint size

w

Mip-Mapping

Level of detail0 …

)(log)(log

2

12

22 wiiw

w

w

i

i

Width of square in texels

Base texels per ith level texel

Finest level that won’t alias

Aliasing Magnification“Just Right”

Mip-Mapping

);),1(),((

)(log2

iLODibilerpibilerplerpC

LODi

wLOD

Level i

Level i+1

Increasing footprint size

Blend bilinear taps at two nearest levels (8 texels accessed)

Sometimes incorrectly called “Trilinear”

Without

With

Getting Derivatives

• Rasterizer: 2x2 Quads + Differencing

Each 2x2 quad is self-contained

Missing pixels are extrapolated…

This is a collosal pain in the collective necks of hardware architects

Getting Derivatives

• Raytracer– Intersect “differential”

rays with tangent plane

– Track derivatives during secondary bounces

Mip-Mapping

• Advantages:– Cheap approximation to super-sampling– Ensures 1:1 pixel/texel ratio

• May actually be FASTER than bilinear– Avoids cache thrashing

Mip-Mapping

• Disadvantages:– Needs derivatives

• Complicates renderer

– 33% Memory overhead– Needs some preprocessing

Anisotropic Filtering

• Mipmapping is isotropic– Same in all directions

• At oblique angles, footprint is NOT isotropic– Result: Too much blur

Anisotropic Filtering

• Ideal solution:– Elliptical Weighted

Average (EWA)– Anisotropic gaussian

kernel– “Gold Standard”

Anisotropic Filtering

• Actual Solution: – Approximate ellipse

with rectangle• Box kernel

– Minor axis picks level– Multiple filter taps

along major axis

4x Anisotropic

No mipmapping

Trilinear

4x Anisotropic


Recommended