antialiasing and compositing - cornell university · cornell cs4620 fall 2015 • lecture 23...

51
Cornell CS4620 Fall 2015 • Lecture 23 Antialiasing and Compositing CS 4620 Lecture 23 1 © 2015 Kavita Bala w/ prior instructor Steve Marschner •

Upload: others

Post on 15-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing and Compositing

CS 4620 Lecture 23

1© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 2: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Heightfield: Blinn’s original idea• Single scalar, more computation to infer N’

Page 3: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Mapping• Problem with normal mapping

– No self-occlusion– Supposed to be a height field but never see this

occlusion across different viewing angles

• Parallax mapping– Positions of objects move relative to one other

as viewpoint changes

Page 4: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Mapping

• Want Tideal

• Use Tp to approximate it

v

h

Page 5: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Offset Limiting• Problem: at steep viewing, can offset too

much• Limit offset

Page 6: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Offset Limiting• Widely used in games

– the standard in bump mapping

Normal Mapping Parallax Mapping Offset Limiting

Page 7: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

1,100 polygon object w/ parallax occlusion mapping

1.5 million polygon

Page 8: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Mapping• Parallax Mapping

Page 9: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Relief Mapping• Aka Parallax occlusion mapping, relief

mapping, steep parallax mapping

• Tries to find where the view ray intersects the height field

Page 10: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Relief Mapping

Page 11: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Sample along ray (green points)Lookup violet points (texture values)

/* Infer the black line shape */Compare green points with black pointsFind intersect between two conditions

prev: green above blacknext: green below black

Page 12: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Parallax Mapping Relief Mapping

Page 13: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Relief Mapping• Box

• Terrain

Page 14: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

© Kavita Bala, Computer Science, Cornell University

Crysis, Crytek

Page 15: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Stepping back to images

• Texture maps are images• Image rasterization quality• Ray tracing quality

• Looking at single samples… need to go beyond• Antialiasing and compositing

15© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 16: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Aliasing

16© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

continuous image definedby ray tracing procedure

continuous image definedby a bunch of black rectangles

point sampling acontinuous image

Page 17: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing

• A name for techniques to prevent aliasing• In image generation, we need to filter

– Boils down to averaging the image over an area– Weight by a filter

• Methods depend on source of image– Rasterization (lines and polygons)– Point sampling (e.g. raytracing)– Texture mapping

17© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 18: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Rasterizing lines

• Define line as a rectangle

• Specify by two endpoints

• Ideal image: black inside, white outside

18© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 19: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Point sampling

• Approximate rectangle by drawing all pixels whose centers fall within the line

• Problem: all-or-nothing leads to jaggies– this is sampling

with no filter (aka. point sampling)

19© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 20: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23 20© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Point samplingin action

Page 21: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing

• Point sampling makes an all-or-nothing choice in each pixel– therefore steps are inevitable when the choice changes

• On bitmap devices this is necessary– hence high resolutions required– 600+ dpi in laser printers to make aliasing invisible

• On continuous-tone devices we can do better

21© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 22: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing

• Basic idea: replace “is the image black at the pixel center?” with “how much is pixel covered by black?”

• Replace yes/no question with quantitative question

22© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 23: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Box filtering

• Pixel intensity is proportional to area of overlap with square pixel area

• Also called “unweighted area averaging”

23© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 24: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Box filtering by supersampling

• Compute coverage fraction by counting subpixels

• Simple, accurate• But slow

24© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 25: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23 25© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Box filteringin action

Page 26: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Box filter

26© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 27: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Weighted filtering

• Box filtering problem: treats area near edge same as area near center– results in pixel turning on “too abruptly”

• Alternative: weight area by a smooth function– unweighted averaging corresponds to using a box function– a Gaussian is a popular choice of smooth filter– important property: normalization (unit integral)

27© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 28: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Gaussian filter

28© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 29: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Weighted filtering by supersampling

• Compute filtering integral by summing filter values for covered subpixels

• Simple, accurate• But really slow

29© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 30: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23 30© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Gaussian filteringin action

Page 31: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23 31© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Box filteringin action

Page 32: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23 32© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Point samplingin action

Page 33: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Filter comparison

33© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Point sampling Box filtering Gaussian filtering

Page 34: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing in ray tracing

34© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

aliased image

Page 35: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing in ray tracing

35© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

aliased image

one sample per pixel

Page 36: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing in ray tracing

36© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

antialiased image

four samples per pixel

Page 37: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing in ray tracing

37© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

one sample/pixel 9 samples/pixel

Page 38: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

// one sample per pixelfor iy = 0 to (ny-1) by 1 for ix = 0 to (nx-1) by 1 { ray = camera.getRay(ix, iy); image.set(ix, iy, trace(ray)); }

// ns^2 samples per pixelfor iy = 0 to (ny-1) by 1 for ix = 0 to (nx-1) by 1 { Color sum = 0; for dx = -(ns-1)/2 to (ns-1)/2 by 1 for dy = -(ns-1)/2 to (ns-1)/2 by 1 { x = ix + dx / ns; y = iy + dy / ns; ray = camera.getRay(x, y); sum += trace(ray); } image.set(ix, iy, sum / (ns*ns)); }

Details of supersampling

• For image coordinates with integer pixel centers:

38© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 39: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Details of supersampling

• For image coordinates in unit square

39© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

// one sample per pixelfor iy = 0 to (ny-1) by 1 for ix = 0 to (nx-1) by 1 { double x = (ix + 0.5) / nx; double y = (iy + 0.5) / ny; ray = camera.getRay(x, y); image.set(ix, iy, trace(ray)); }

// ns^2 samples per pixelfor iy = 0 to (ny-1) by 1 for ix = 0 to (nx-1) by 1 { Color sum = 0; for dx = 0 to (ns-1) by 1 for dy = 0 to (ns-1) by 1 { x = (ix + (dx + 0.5) / ns) / nx; y = (iy + (dy + 0.5) / ns) / ny; ray = camera.getRay(x, y); sum += trace(ray); } image.set(ix, iy, sum / (ns*ns)); }

Page 40: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Supersampling vs. multisampling

• Supersampling is terribly expensive• GPUs use an approximation called multisampling

– Compute one shading value per pixel– Store it at many subpixel samples, each with its own depth

40© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 41: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Multisample rasterization

• Each fragment carries several (color,depth) samples– shading is computed per-fragment– depth test is resolved per-sample– final color is average of sample colors

41© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

[htt

p://w

ww

.lear

nope

ngl.c

om]

single- sample

multi- sample

Page 42: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Antialiasing in textures

• Even with multisampling, we still only evaluate textures once per fragment

• Need to filter the texture somehow!– perspective produces very high image frequencies– (MIP Mapping)

42© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 43: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Compositing

43© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 44: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Compositing

44© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

[Tita

nic

; Dig

italD

omai

n; v

fxhq

.com

]

Page 45: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Combining images

• Often useful to combine elements of several images• Trivial example: video crossfade

– smooth transition from one scene to another

– note: weights sum to 1.0• no unexpected brightening or darkening• no out-of-range results– this is linear interpolation

45© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

A B t = 0t = .3t = .6t = .8t = 1

Page 46: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Foreground and background

• In many cases just adding is not enough• Example: compositing in film production

– shoot foreground and background separately– also include CG elements– this kind of thing has been done in analog for decades– how should we do it digitally?

46© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 47: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Foreground and background

• How we compute new image varies with position

• Therefore, need to store some kind of tag to say what parts of the image are of interest

47© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

use foreground

use background

[Chu

ang

et a

l. / C

orel

]

Page 48: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Binary image mask

• First idea: store one bit per pixel– answers question “is this pixel part of the foreground?”

– causes jaggies similar to point-sampled rasterization– same problem, same solution: intermediate values

48© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

[Chu

ang

et a

l. / C

orel

]

Page 49: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Partial pixel coverage

• The problem: pixels near boundary are not strictly foreground or background

– how to represent this simply?– interpolate boundary pixels between the fg. and bg. colors

49© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Page 50: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Alpha compositing

• Formalized in 1984 by Porter & Duff

• Store fraction of pixel covered, called α

– this is exactly like a spatially varying crossfade

• Convenient implementation– 8 more bits makes 32– 2 multiplies + 1 add per pixel for compositing

50© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

A coversarea α

B showsthrougharea (1 − α)

E = A over B

rE = ↵ArA + (1� ↵A)rB

gE = ↵AgA + (1� ↵A)gB

bE = ↵AbA + (1� ↵A)bB

Page 51: Antialiasing and Compositing - Cornell University · Cornell CS4620 Fall 2015 • Lecture 23 Weighted filtering • Box filtering problem: treats area near edge same as area near

Cornell CS4620 Fall 2015 • Lecture 23

Alpha compositing—example

51© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

[Chu

ang

et a

l. / C

orel

]