41
3D Rasterization: A Bridge between Rasterization and Ray Casting Tom áš Davidovič T. Engelhardt, I. Georgiev, P. Slusallek , C. Dachsbacher Saarland University, Intel VCI & Karlsruhe Institute of Technology

3D Rasterization: A Bridge between Rasterization and Ray Casting

  • Upload
    tulia

  • View
    66

  • Download
    0

Embed Size (px)

DESCRIPTION

3D Rasterization: A Bridge between Rasterization and Ray Casting. Tom áš Davidovič T. Engelhardt , I. Georgiev , P. Slusallek , C. Dachsbacher Saarland University, Intel VCI & Karlsruhe Institute of Technology. Ray Tracing vs Rasterization. Whitted ray tracing 1979... OptiX 2010. - PowerPoint PPT Presentation

Citation preview

Page 1: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

3D Rasterization: A Bridge between Rasterization

and Ray Casting

Tomáš DavidovičT. Engelhardt, I. Georgiev,

P. Slusallek, C. Dachsbacher

Saarland University, Intel VCI & Karlsruhe Institute of Technology

Page 2: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

Ray Tracing vs Rasterization

Whitted ray tracing 1979... OptiX 2010

Doom 1992

Page 3: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

Ray Tracing vs Rasterization

PBRT – San Miguel ~2010

Crysis 2 by CryTek ~2010

Page 4: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

The main goal

Page 5: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

The main goalEdge functions

p0

p1

p2

> 0

< 0

Page 6: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

The main goal2D rasterization

p0

p1

p2

Page 7: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

The main goalRay casting

Page 8: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

The main goalRay casting

e

p2

p1

p0

n = (p2 – e) × (p0 – e)

n

d

V(d) = n . d

Page 9: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationFrustum tracing

Page 10: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationPseudocodeTraverse( frustum F, node N ) {

Page 11: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationFrustum tracing

Page 12: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationPseudocodeTraverse( frustum F, node N ) {

if ( isOutside or isOccluded ) return;

Page 13: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationFrustum tracing

isOutside

isOccluded

Page 14: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationPseudocodeTraverse( frustum F, node N ) {

if ( isOutside or isOccluded ) return;if ( splitFrustum ) {

split F into sub-frusta Fiforeach ( Fi ) traverse ( Fi, N )

}

Page 15: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationFrustum tracing

Splitting

Page 16: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationFrustum tracing

F1 F2

F3 F4

Page 17: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationPseudocodeTraverse( frustum F, node N ) {

if ( isOutside or isOccluded ) return;if ( splitFrustum ) {

split F into sub-frusta Fiforeach ( Fi ) traverse ( Fi, N )

} else {if ( generateSamples ) {

rasterize ( N, binning )} else {

foreach ( child of N )traverse ( F, child of N )

} }

Page 18: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationBinning – vertex culling

p0

p1

p2

Page 19: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationPsuedocodeTraverse( frustum F, node N ) {

if ( isOutside or isOccluded ) return;if ( splitFrustum ) {

split F into sub-frusta Fiforeach ( Fi ) traverse ( Fi, N )

} else {if ( generateSamples ) {

rasterize ( N, binning )} else {

foreach ( child of N )traverse ( F, child of N )

} }

Page 20: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationAs rasterizationTraverse( frustum F, node N = All Scene ) {

if ( isOutside or isOccluded ) return;if ( splitFrustum ) {

split F into sub-frusta Fiforeach ( Fi ) traverse ( Fi, N )

} else {if ( generateSamples ) {

rasterize ( N, binning )} else {

foreach ( child of N )traverse ( F, child of N )

} }

Page 21: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

3D RasterizationAs ray castingTraverse( frustum F = Single ray, node N ) {

if ( isOutside or isOccluded ) return;if ( splitFrustum ) {

split F into sub-frusta Fiforeach ( Fi ) traverse ( Fi, N )

} else {if ( generateSamples ) {

rasterize ( N, binning )} else {

foreach ( child of N )traverse ( F, child of N )

} }

Page 22: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsWhat can we do Non-planar viewports

Page 23: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsNon-planar viewports

p0

p1

p2

Page 24: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsNon-planar viewports

Page 25: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsNon-planar viewports

Page 26: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsNon-planar viewports

Page 27: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsNon-planar viewports

Page 28: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsWhat can we do Non-planar Viewports Consistency

Page 29: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsConsistency

e

p2

p1

p0

n = (p2 – e) × (p0 – e)

n

d

V(d) = n . dVx= deriv(V(d), x) = n × dx

dx

dy

xV

Page 30: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsConsistency

Page 31: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsConsistency

dy

dx

Vx > 0

Page 32: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsConsistency

dy

dx

Vx = 0

Vy > 0

Page 33: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsConsistency

dy

dx

Vx > 0

Vx > 0

Page 34: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsWhat we can do Non-planar Viewports Consistency Coverage Sampling Antialiasing

Page 35: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsCoverage Sampling Antialiasing

Page 36: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsCoverage Sampling Antialiasing

Page 37: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsCoverage Sampling Antialiasing

Page 38: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsCoverage Sampling Antialiasing

16x OSAATime x11

CSAA (4+12)Time x4.3

No AA

Page 39: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ResultsRaw performance

Page 40: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

T. Davidovič3D Rasterization: A Bridge between Rasterization and Ray Casting

ConclusionsWhat to bring home 3D Rasterization

Poses ray tracing as rasterization Transfer of old ideas

CSAA, binning New ideas

Frustum splitting, Non-planar viewports

Future work More general frusta Unified software rasterization pipeline

Page 41: 3D Rasterization:  A Bridge between Rasterization and Ray Casting

Thank you!

Tomáš Davidovič