• No results found

Fast and Simple Agglomerative LBVH Construction

N/A
N/A
Protected

Academic year: 2022

Share "Fast and Simple Agglomerative LBVH Construction"

Copied!
25
0
0

Laster.... (Se fulltekst nå)

Fulltekst

(1)

FAST AND SIMPLE

AGGLOMERATIVE LBVH CONSTRUCTION

Ciprian Apetrei

Computer Graphics & Visual Computing (CGVC) 2014

(2)

Introduction

Hierarchies

What are they for?

(3)

Introduction

Hierarchies

What are they for?

Fast Construction or Better Quality?

(4)

Introduction

Hierarchies

What are they for?

Fast Construction or Better Quality?

When do we prefer speed?

View-frustum culling

Collision detection

Particle simulation

Voxel-based global illumination

(5)

Background

Previous GPU methods constructed the hierarchy in 4 steps:

Morton code calculation

Sorting the primitives

Hierarchy generation

Bottom-ul traversal to fit bounding-boxes

(6)

Binary radix tree

The binary representations of each key are in lexicographical order.

The keys are partitioned according to their first differing bit.

Because the keys are ordered, each node covers a linear range of keys.

A radix tree with n keys has n-1 internal

nodes.

(7)

Binary radix tree

The binary representations of each key are in lexicographical order.

The keys are partitioned according to their first differing bit.

Because the keys are ordered, each node covers a linear range of keys.

A radix tree with n keys has n-1 internal nodes.

The parent of a node splits the hierarchy immediately before the first key of its

right child and after the last key of its left child.

The binary representations of each key are in lexicographical order.

The keys are partitioned according to their first differing bit.

Because the keys are ordered, each node covers a linear range of keys.

A radix tree with n keys has n-1 internal nodes.

The parent of a node splits the hierarchy immediately before the first key of its

right child and after the last key of its left child.

(8)

Binary radix tree

0 0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(9)

Algorithm Overview

Define a numbering scheme for the nodes

Establish a connection with the keys

Gain some knowledge about the parent

(10)

Algorithm Overview

Define a numbering scheme for the nodes

Establish a connection with the keys

Gain some knowledge about the parent

Each internal node i splits the hierarchy between keys i and i + 1

i

i

i+1

(11)

Algorithm Overview

We can find the parent of a node by

knowing the range of keys covered by it.

The parent splits the hierarchy either

immediately before the first key or after the last key.

Last key of the left child First key of the right child i

i

i+1

(12)

Algorithm Overview

To determine the parent we have to

analyze the split point of the two nodes.

The one that splits the hierarchy

between two more similar subtrees is the direct parent.

i

The metric distance between two keys indicates the dissimilarity between the left child and the right child of node i.

i i+1

(13)

Algorithm Overview

Algorithm steps:

Start from each leaf node.

(14)

Algorithm Overview

Algorithm steps:

Start from each leaf node.

Choose the parent between the two internal nodes that split the hierarchy at the ends of the range of keys covered by the current

node.

Pass the range of keys to the parent.

(15)

Algorithm Overview

Algorithm steps:

Start from each leaf node.

Choose the parent between the two internal nodes that split the hierarchy at the ends of the range of keys covered by the current

node.

Pass the range of keys to the parent.

Calculate the bounding box of the node.

Advance towards the root.

Only process a node if it has both its children set.

(16)

Binary Radix Tree Construction

2

0 1 3 4 5 6

0 1 2 3 4 5 6 7

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0

0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(17)

Binary Radix Tree Construction

2 0

1

4

3

5

6

0 1 2 3

4

5 6

7

0 1 2 3 4 5 6 7

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7

0 0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(18)

Binary Radix Tree Construction

2 0

1 4

3

5

6

0 1 2 3

4

5 6

7 0 3

5

0 1 2 3 4 5 6 7

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7

0 0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(19)

Binary Radix Tree Construction

2 0

1 4

3

5

6

1 3 6

7

3 7

0

0 2 5

5

0 4

0 1 2 3 4 5 6 7

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7

0 0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(20)

Binary Radix Tree Construction

2 0

1 4

3

5

6

1 3 6

7

3 7

0 7

0 2 5

5

0 4

0 1 2 3 4 5 6 7

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7

0 0 1 0

0 1 0 1

1 0 0 0

1 1 0 0 0

1 0 0 0

0 1 1

1 1 0 1

1 1 1 1

0 1 2 3 4 5 6 7

(21)

Pseudocode

Pseudocode for choosing the parent:

1: def ChooseParent(Left, Right, currentNode)

2: If ( Left = 0 or ( Right != n and δ(Right) < δ(Left-1) ) ) 3: then

4: parent à Right

5: InternalNodesparent.childA à currentNode 6: RangeOfKeysparent.left à Left

7: else

8: parent à Left - 1

9: InternalNodesparent.childB à currentNode 10: RangeOfKeysparent.right à Right

(22)

Outline

General aspects about our algorithm:

Bottom-up construction

Finds the parent at each step

O(n) time complexity

Simple to implement

Can be used for constructing different types of trees

Allows an user-defined distance metric for choosing the parent.

(23)

Results

We used the bottom-up reduction algorithm presented by Karras[2012] for

implementation.

Compare against Karras binary radix tree construction and bounding-box calculation.

Evaluate performance on GeForce GT 745M

CUDA, 30-bit Morton Codes

Used Thrust library radix sort

(24)

Results

Scene Sort Previous Bottom-

up Radix tree

Squared Distance

Stanford Bunny (69K tris)

14.9  

1.78 4.53 5.56 0.85 4.74 Armadillo

(345K tris)

32.1  

5.01 10.0 12.03 2.4 11.9

Skeleton Hand (654k tris)

77.8  

14.1 28.3 32.5 6.54 31.8 Stanford Dragon

(871K tris)

102 19.6 37.1 42.9 8.61 42.2

Happy Buddha (1087K tris)

125  

23.2 46.8 53.4 10.7 52.7 Turbine Blade

(1765K tris)

210  

37.3 73.9 85.9 17.3 85.3

(25)

Thank You

Questions

Referanser

RELATERTE DOKUMENTER

There had been an innovative report prepared by Lord Dawson in 1920 for the Minister of Health’s Consultative Council on Medical and Allied Services, in which he used his

The ideas launched by the Beveridge Commission in 1942 set the pace for major reforms in post-war Britain, and inspired Norwegian welfare programmes as well, with gradual

As part of enhancing the EU’s role in both civilian and military crisis management operations, the EU therefore elaborated on the CMCO concept as an internal measure for

The dense gas atmospheric dispersion model SLAB predicts a higher initial chlorine concentration using the instantaneous or short duration pool option, compared to evaporation from

In April 2016, Ukraine’s President Petro Poroshenko, summing up the war experience thus far, said that the volunteer battalions had taken part in approximately 600 military

This report documents the experiences and lessons from the deployment of operational analysts to Afghanistan with the Norwegian Armed Forces, with regard to the concept, the main

Based on the above-mentioned tensions, a recommendation for further research is to examine whether young people who have participated in the TP influence their parents and peers in

Azzam’s own involvement in the Afghan cause illustrates the role of the in- ternational Muslim Brotherhood and the Muslim World League in the early mobilization. Azzam was a West