![Page 1: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/1.jpg)
Collision Detection on the GPU
Mike Donovan
CIS 665
Summer 2009
![Page 2: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/2.jpg)
Overview
Quick Background CPU Methods CULLIDE RCULLIDE QCULLIDE CUDA Methods
![Page 3: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/3.jpg)
Background
Need to find collisions for lots of reasons Physics engines Seeing if a projectile hits an object Ray casting Game engines Etc…
![Page 4: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/4.jpg)
Background
Broad phase: Looks at entire scene Looks at proxy geometry (bounding
shapes) Determines if two objects may intersect Needs to be very fast
![Page 5: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/5.jpg)
Background
Narrow phase: Looks at pairs of objects flagged by
broad phase Looks at the actual geometry of an object Determines if objects are truly
intersecting Generally slower
![Page 6: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/6.jpg)
Background
Resolution Compute forces according to the contact
points returned from the narrow phase Can be non trivial if there are multiple
contact points Returns resulting forces to be added to
each body
![Page 7: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/7.jpg)
CPU Methods
Brute Force Check every object against every other
N(N-1)/2 tests O(N²)
Sweep and Prune Average case: O(N log N) Worst case: O(N²)
Spatial Subdivisions Average case: O(N log N) Worst case: O(N²)
![Page 8: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/8.jpg)
Sweep and Prune Bounding
volume is projected onto x, y, z axis
Determine collision interval for each object [bi, ei]
Two objects who’s collision intervals do not overlap can not collide
O1
O3
O2
Sorting AxisB1 B3 E1 B2 E3 E2
![Page 9: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/9.jpg)
Spatial Subdivisions
1 2
3 4
5 6
7 8
Images from pg 699, 700 GPU Gems III
O1
O2
O3
O4
1 2 3 4
5 6 7 8
Example
![Page 10: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/10.jpg)
CULLIDE
Came out of Dinesh’s group at UNC in 2003
Uses graphics hardware to do a broad-narrow phase hybrid
No shader languages
![Page 11: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/11.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Outline
OverviewPruning AlgorithmImplementation and ResultsConclusions and Future Work
![Page 12: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/12.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Outline
OverviewPruning AlgorithmImplementation and ResultsConclusions and Future Work
![Page 13: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/13.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Overview
Potentially Colliding Set (PCS) computationExact collision tests on the PCS
![Page 14: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/14.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Algorithm
Object LevelPruning
Sub-objectLevel
PruningExact Tests
GPU based PCS computation
Using CPU
![Page 15: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/15.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Potentially Colliding Set (PCS)
PCS
![Page 16: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/16.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Potentially Colliding Set (PCS)
PCS
![Page 17: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/17.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Outline
Problem OverviewOverviewPruning AlgorithmImplementation and ResultsConclusions and Future Work
![Page 18: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/18.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Algorithm
Object LevelPruning
Sub-object Level
PruningExact Tests
![Page 19: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/19.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Visibility Computations
Lemma 1: An object O does not collide with a set of objects S if O is fully visible with respect to S
Utilize visibility for PCS computation
![Page 20: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/20.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
set S
Collision Detection using Visibility Computations
Fully VisibleObject O
![Page 21: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/21.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Pruning
Lemma 2: Given n objectsO1,O2,…,On , an object Oi does notbelong to PCS if it does notcollide with O1,…,Oi-1,Oi+1,…,On
Prune objects that do not collide
![Page 22: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/22.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Pruning
O1 O2 … Oi-1 Oi Oi+1 … On-1 OnO1 O2 … Oi-1 Oi Oi+1 … On-1 OnO1 O2 … Oi-1 Oi Oi+1 … On-1 On
![Page 23: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/23.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Pruning
O1 O2 … Oi-1 Oi
![Page 24: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/24.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Pruning
Oi Oi+1 … On-1 On
![Page 25: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/25.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation
Each object tested against all objects but itselfNaive algorithm is O(n2)Linear time algorithm
Uses two pass rendering approachConservative solution
![Page 26: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/26.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: First Pass
O1 O2 … Oi-1 Oi Oi+1 … On-1 On
Render
![Page 27: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/27.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: First Pass
Fully Visible?
Render
O1
![Page 28: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/28.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
O1 O2 … Oi-1 Oi
PCS Computation: First Pass
Fully Visible?
Render Yes. Does not collide withO1,O2,…,Oi-1
![Page 29: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/29.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: First Pass
O1 O2 … Oi-1 Oi Oi+1 … On-1 On
Render
Fully Visible?
![Page 30: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/30.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: Second Pass
O1 O2 … Oi-1 Oi Oi+1 … On-1 On
Render
On
![Page 31: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/31.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: Second Pass
Render
Fully Visible?
On
![Page 32: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/32.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: Second Pass
Render
Fully Visible?
Oi Oi+1 … On-1 On
Yes. Does not collide with Oi+1,…,On-1,On
![Page 33: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/33.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation: Second Pass
Render
Fully Visible?
O1 O2 … Oi-1 Oi Oi+1 … On-1 On
Yes. Does not collide with O1,…,On-1,On
![Page 34: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/34.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation
O1 O2 … Oi-1 Oi Oi+1 … On-1 On
Fully VisibleFully Visible
![Page 35: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/35.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS Computation
O1 O2 O3 … Oi-1 Oi Oi+1 … On-2 On-1 On
O1 O3 … Oi-1 Oi+1 … On-1
![Page 36: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/36.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
ExampleO1
O2
O3
O4Scene with 4 objectsO1and O2 collideO3, O4 do not collide
Initial PCS = { O1,O2,O3,O4 }
![Page 37: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/37.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
O3
O1
First Pass
O2
Order of rendering: O1 O4
O3
Fully Visible
O1
Fully Visible
O4O4
Fully Visible
Not Fully Visible
![Page 38: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/38.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Second Pass
O1
O3
O2O2
Fully Visible
Order of rendering: O4 O1
O4O4
Fully Visible
O3
Fully Visible
Not Fully Visible
![Page 39: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/39.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
After two passesO1
O2
O3
O4
Fully Visible
Fully Visible
![Page 40: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/40.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Potential Colliding SetO1
O2
PCS ={O1,O2}
![Page 41: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/41.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Algorithm
Object LevelPruning
Sub-object Level
PruningExact Tests
![Page 42: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/42.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Overlap Localization
Each object is composed of sub-objectsWe are given n objects O1,…,On
Compute sub-objects of an object Oi that overlap with sub-objects of other objects
![Page 43: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/43.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Overlap Localization
Our solutionTest if each sub-object of Oi overlaps with sub-objects of O1,..Oi-1
Test if each sub-object of Oi overlaps with sub-objects of Oi+1,...,On
Linear time algorithmExtend the two pass approach
![Page 44: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/44.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Potential Colliding SetO1
O2
PCS = {O1,O2}
![Page 45: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/45.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
O1
Sub-objects
O2
PCS = sub-objects of {O1,O2}
![Page 46: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/46.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
First Pass
Rendering order: Sub-objects of O1 O2
![Page 47: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/47.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully VisibleFirst Pass
![Page 48: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/48.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible First Pass
![Page 49: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/49.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Not Fully Visible
First Pass
![Page 50: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/50.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Fully Visible
First Pass
![Page 51: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/51.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Fully Visible
First Pass
![Page 52: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/52.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Fully Visible
Fully Visible
First Pass
![Page 53: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/53.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Second Pass
Rendering order: Sub-objects of O2 O1
![Page 54: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/54.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Second Pass
![Page 55: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/55.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Second Pass
![Page 56: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/56.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully VisibleSecond Pass
![Page 57: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/57.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Not Fully Visible
Fully Visible
Fully Visible
Fully Visible
Second Pass
![Page 58: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/58.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Fully Visible
Fully VisibleSecond Pass
![Page 59: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/59.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Fully Visible
Fully Visible
Fully Visible
After two passes
![Page 60: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/60.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
PCS
![Page 61: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/61.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Algorithm
Object LevelPruning
Sub-objectlevel
PruningExact Tests
Exact Overlap tests using CPU
![Page 62: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/62.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Visibility Queries
We require a queryTests if a primitive is fully visible or not
Current hardware supports occlusion queries
Test if a primitive is visible or not
Our solutionChange the sign of depth function
![Page 63: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/63.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Visibility Queries
Depth function
GEQUAL LESSAll fragments Pass FailPass
Fail
Fail
PassFail PassFail
Query not supported
Occlusion query
Examples - HP_Occlusion_test, NV_occlusion_query
![Page 64: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/64.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Bandwidth Analysis
Read back only integer identifiers
Independent of screen resolution
![Page 65: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/65.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Optimizations
First use AABBs as object bounding volumeUse orthographic views for pruningPrune using original objects
![Page 66: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/66.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Advantages
No coherenceNo assumptions on motion of objectsWorks on generic modelsA fast pruning algorithmNo frame-buffer readbacks
![Page 67: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/67.jpg)
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Limitations
No distance or penetration depth informationResolution issuesNo self-collisionsCulling performance varies with relative configurations
![Page 68: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/68.jpg)
Assumptions
Makes assumptions that their algorithm will get faster as hardware improves.
Luckily they were right
![Page 69: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/69.jpg)
RCULLIDE
An improvement on CULLIDE in 2004 Resolves issue of screen resolution
precision
![Page 70: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/70.jpg)
Overview
A main issue with CULLIDE was the fact that it wasn’t reliable
Collisions could easily be missed due to screen resolution
![Page 71: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/71.jpg)
Overview
3 kinds of error associated with visibility based overlap Perspective error
Strange shapes from the transformation
Sampling error Pixel resolution isn’t high enough
Depth buffer precision error If distance between primitives is less than the depth
buffer resolution, we will get incorrect results from our visibility query
![Page 72: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/72.jpg)
Reliable Queries
The three errors cause the following: A fragment to not be rasterized A fragment is generated but not sampled
where interference occurs A fragment is generated and sampled
where the interference occurs but the precision of the buffer is not sufficient
![Page 73: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/73.jpg)
Reliable Queries
Use “fat” triangles Generate 2 fragments for each pixel touched by
a triangle (no matter how little it is in the pixel) For each pixel touched by the triangle, the depth
of the 2 fragments must bound the depth of all points of the triangle in that pixel
Causes method to become more conservative (read: slower) but much more accurate
![Page 74: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/74.jpg)
Minkowski Sum
Scary name…easy math
A = { (1, 0), (0, 1), (0, −1)} B = { (0, 0), (1, 1), (1, −1)}
A + B = { (1, 0), (2, 1), (2, −1), (0, 1), (1, 2), (1, 0), (0, −1), (1, 0), (1, −2)}
![Page 75: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/75.jpg)
Reliable Queries
In practice, we use the Minkowski sum of a bounding cube B and the triangle T
B = max(2dx, 2dy, 2dz) where dx,y,z are pixel dimensions
If uniform supersampling is known to occur on the card, we can reduce the size of B We need B to cover at least 1 sampling point for
the triangle it bounds
![Page 76: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/76.jpg)
Reliable Queries
Cubes only work for z-axis projections so in practice use a bounding sphere of radius sqrt(3)p/2
![Page 77: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/77.jpg)
Bounding Offset
So far we’ve just dealt with single triangles but we need whole objects
This is done using a Union of Object-oriented Bounding Boxes(UOBB)
![Page 78: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/78.jpg)
Algorithm
![Page 79: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/79.jpg)
Improvement over CULLIDE
![Page 80: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/80.jpg)
Performance
Still runs faster than CPU implementations
3x slower than CULLIDE due to bounding box rasterization vs triangle rasterization
![Page 81: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/81.jpg)
QCULLIDE
Extends CULLIDE to handle self collisions in complex meshes
All running in real time
![Page 82: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/82.jpg)
Self Collision Culling
Note that only intersecting triangles that don’t share a vertex or edge are considered colliding
![Page 83: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/83.jpg)
Self Collision Culling
Algorithm Include all potentially colliding primitives
and PCS where each primitive is a triangle
Perform the visibility test to see if a triangle is penetrating any other
If completely visible, the object is not colliding
![Page 84: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/84.jpg)
Q-CULLIDE
Sets BFV – Objects fully visible in both passes
and are pruned from the PCS FFV – Fully visible in only the first pass SFV – Fully visible in only the second
pass NFV – Not fully visible in both passes
![Page 85: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/85.jpg)
Q-CULLIDE
Properties of sets FFV and SFV are collision free
No object in FFV collides with any other in FFV…same for SFV
If an object is in FFV and is fully visible in the 2nd pass of the algorithm, we can prune it and vice versa
![Page 86: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/86.jpg)
Algorithm
![Page 87: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/87.jpg)
Algorithm
![Page 88: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/88.jpg)
What’s Happening
![Page 89: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/89.jpg)
Improvement Over CULLIDE
![Page 90: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/90.jpg)
Improvements Over CULLIDE
Sends an order of magnitude less collisions to the CPU than CULLIDE
![Page 91: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/91.jpg)
Spatial Subdivision Partition space
into uniform grid
Grid cell is at least as large as largest object
Each cell contains list of each object whose centroid is in the cell
Collision tests are performed between objects who are in same cell or adjacent cells
1 2
3 4
5 6
7 8
Images from pg 699, 700 GPU Gems III
O1
O2
O3
O4
Implementation:1. Create list of object IDs along
with hashing of cell IDs in which they reside
2. Sort list by cell ID3. Traverse swaths of identical cell
IDs4. Perform collision tests on all
objects that share same cell ID
1 2 3 4
5 6 7 8
Example
![Page 92: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/92.jpg)
Parallel Spatial Subdivision Complications:
1. Single object can be involved in multiple collision tests
2. Need to prevent multiple threads updating the state of an object at the same time
Ways to solve this?
![Page 93: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/93.jpg)
Guaranteed Individual Collision Tests Prove: No two cells updated in parallel may
contain the same object that is being updated Constraints
1. Each cell is as large as the bounding volume of the largest object
2. Each cell processed in parallel must be separated by each other cell by at least one intervening cell
In 2d this takes _____ number of passes In 3d this takes _____ number of passes
4
8
![Page 94: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/94.jpg)
Example of Parallel Spatial Subdivision
O1
O2
O3
O4
1 2 1 2
3 4 3 4O1
O2
O3
O4
1 2 1 2
3 4 3 4
![Page 95: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/95.jpg)
Avoiding Extra Collision Testing1. Associate each object a set of control bits to
test where its centroid resides
2. Scale the bounding sphere of each object by sqrt(2) to ensure the grid cell is at least 1.5 times larger than the largest object
1 2 1 2
3 4 3 4
Case 1Case 2
![Page 96: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/96.jpg)
Implementing in CUDA Store list of object IDs, cell IDs in device
memory Build the list of cell IDs from object’s
bounding boxes Sorting list from previous step Build an index table to traverse the sorted list Schedule pairs of objects for narrow phase
collision detection
![Page 97: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/97.jpg)
InitializationCell ID Array
OBJ 1 Cell ID 1OBJ 1 Cell ID 2OBJ 1 Cell ID 3OBJ 1 Cell ID 4OBJ 2 Cell ID 1OBJ 2 Cell ID 2OBJ 2 Cell ID 3OBJ 2 Cell ID 4...
Object ID Array
OBJ 1 ID, Control BitsOBJ 1 ID, Control BitsOBJ 1 ID, Control BitsOBJ 1 ID, Control BitsOBJ 2 ID, Control BitsOBJ 2 ID, Control BitsOBJ 2 ID, Control BitsOBJ 2 ID, Control Bits...
![Page 98: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/98.jpg)
Construct the Cell ID ArrayHost Cells (H – Cells)
Contain the centroid of the object
Phantom Cells (P-Cells)Overlap with bounding volume but do not contain the centroid
H-Cell Hash = (pos.x / CELLSIZE) << XSHIFT) | (pos.y / CELLSIZE) << YSHIFT) | (pos.z / CELLSIZE) << ZSHIFT)
P P P
P H P
P P P
P-Cells – Test the 3d-1 cells surrounding the H cellThere can be as many as 2d-1 P cells
![Page 99: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/99.jpg)
Sorting the Cell ID Array What we want:
Sorted by Cell ID H cells of an ID occur before P cells of an ID
Starting with a partial sort H cells are before P cells, but array is not sorted by Cell
ID Solution:
Radix Sort Radix Sort ensures identical cell IDs remain in the same
order as before sorting.
![Page 100: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/100.jpg)
Sorting Cell Array
0100
0111
1112
1013
0214
021n
0200
1102
1003
0114
011n
0110
1002
021n
0210
0002
111n
0012
022n
1012
0112
0102
...
Cell ID Array
0002
011n
1013
0012
0200
1012
0100
0214
1102
0102
021n
1112
0111
0210
111n
0110
022n
111n
0112
1002
102n
0114
1003
1033
...
Sorted Cell ID Array
0111
1002
Invalid Cell
Home Cell
Phantom Cell
1033 Object ID
Cell ID
Legend
![Page 101: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/101.jpg)
Spatial Subdivision
1 2
3 4
5 6
7 8
Images from pg 699, 700 GPU Gems III
O1
O2
O3
O4
1 2 3 4
5 6 7 8
Example
1. Assign to each cell the list of bounding volumes whose objects intersect with the cell
2. Perform Collision test only if both objects are in the cell and one has a centroid in the cell
![Page 102: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/102.jpg)
Create the Collision Cell List Scan sorted cell ID array for changes of cell ID
Mark by end of the list of occupants of one cell and beginning of another
1. Count number of objects each collision cell contains and convert them into offsets using scan
2. Create entries for each collision cell in new array1. Start
2. Number of H occupants
3. Number of P occupants
![Page 103: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/103.jpg)
Create Collision Cell List
0002
011n
1013
0012
0200
1012
0100
0214
1102
0102
021n
1112
0111
0210
111n
0110
022n
111n
0112
1002
102n
0114
1003
1033
...
Sorted Cell ID Array Cell Index & Size Array
21 1
41 4
102 1 ...
IDH P
ID = Cell index in sorted Cell ID ArrayH = Number of Home Cell IDsP = Number of Phantom Cell IDs
![Page 104: Collision Detection on the GPU Mike Donovan CIS 665 Summer 2009](https://reader038.vdocuments.us/reader038/viewer/2022110207/56649d435503460f94a1e9d0/html5/thumbnails/104.jpg)
Traverse Collision Cell ListCell Index & Size Array
21 1
41 4
102 1 ...
161 1
191 1
Xp q
T 0 T 1 T 2 ...T 3 T 4 T n
Perform Collision Test Per Cell
Number of Collisions / Thread Array
0 1 0 ...2 1 …