Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial...

100
A Ray Tracing Hardware Architecture for Dynamic Scenes by Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer Science) Completed under the supervision of J¨org Schmittler and Prof. Dr.-Ing. Philipp Slusallek at the Universit¨ at des Saarlandes Fachrichtung 6.2 - Informatik Computer Graphik Im Stadtwald - Geb. 36.1, Raum 018 66123 Saarbr¨ ucken March 29, 2004 [email protected] Copyright c 2004, by Sven Woop

Transcript of Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial...

Page 1: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

A Ray Tracing

Hardware Architecture

for Dynamic Scenes

by

Sven Woop

A thesis submitted in partial fulfillment of the requirements

for the degree of

Diplom-Informatiker

(Diploma in Computer Science)

Completed under the supervision of

Jorg Schmittler and Prof. Dr.-Ing. Philipp Slusallek

at the

Universitat des Saarlandes

Fachrichtung 6.2 - Informatik

Computer Graphik

Im Stadtwald - Geb. 36.1, Raum 018

66123 Saarbrucken

March 29, 2004

[email protected]

Copyright c© 2004, by Sven Woop

Page 2: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

2

Page 3: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

i

Eidesstattliche Erklarung

Hiermit erklare ich an Eides Statt, dass ich die vorliegende Arbeit selbstandig

verfasst und außer den angegebenen keine weiteren Hilfsmittel verwendet

habe.

Saarbrucken den 29. Marz, 2004

Sven Woop

Page 4: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

ii

Acknowledgements

I would like to thank Jorg Schmittler for his assistance and for spending

several nights to get the prototype working. Thanks to Prof. Slusallek for

his support and constructive criticism.

Page 5: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

iii

Abstract

This thesis describes a ray tracing hardware architecture for dynamic

scenes that makes it possible to ray trace highly complex scenes in real

time. Ray tracing of dynamic scenes does not seem to be efficiently possi-

ble, as ray tracing requires an acceleration structure whose creation is very

costly. The well-known solution to this problem is to partition the scene

into movable objects, which causes to use a top-level acceleration structure

over the objects, and a bottom-level acceleration structure in each object.

The presented architecture efficiently supports such partitioned scenes by

using one transformation unit for both the triangle intersection and the ob-

ject space transformation. A prototype of the hardware architecture has

been implemented into an FPGA which is in fact the first working special

purpose real time ray tracing hardware available today. The performance

and implementation details of this prototype are discussed in detail at the

end of this thesis.

Page 6: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

iv

Page 7: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Contents

1 Introduction 1

2 Previous Work 5

3 The Basic Ray Tracing Algorithm 7

3.1 k-D Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.1 k-D Tree Creation . . . . . . . . . . . . . . . . . . . . 11

3.1.2 Recursive k-D Tree Traversal . . . . . . . . . . . . . . 13

3.1.3 Packet k-D Tree Traversal . . . . . . . . . . . . . . . . 17

4 The Dynamic Ray Tracing Algorithm 21

4.1 Top-Level k-D Tree Creation . . . . . . . . . . . . . . . . . . 24

4.2 Bounding Box Clipping . . . . . . . . . . . . . . . . . . . . . 25

4.3 Overlapping Objects . . . . . . . . . . . . . . . . . . . . . . . 27

4.3.1 Hierarchical k-D Trees . . . . . . . . . . . . . . . . . . 28

4.3.2 Mailboxing . . . . . . . . . . . . . . . . . . . . . . . . 29

4.3.3 Multiple Scenes . . . . . . . . . . . . . . . . . . . . . . 29

4.4 Ray Transformation . . . . . . . . . . . . . . . . . . . . . . . 30

4.5 Hit-Distance Transformation . . . . . . . . . . . . . . . . . . 31

4.6 Normal Transformation . . . . . . . . . . . . . . . . . . . . . 32

5 Triangle Intersection 35

5.1 Affine Triangle Transformation . . . . . . . . . . . . . . . . . 36

5.1.1 Memory Efficient Triangle Transformation . . . . . . . 36

5.1.2 Normal Consistent Triangle Transformation . . . . . . 38

5.2 Unit Triangle Intersection . . . . . . . . . . . . . . . . . . . . 38

v

Page 8: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

vi CONTENTS

6 The Dynamic SaarCOR Architecture 41

6.1 Dynamic Ray Tracing Core . . . . . . . . . . . . . . . . . . . 43

6.1.1 Traversal Unit . . . . . . . . . . . . . . . . . . . . . . 44

6.1.2 Mailboxed List Unit . . . . . . . . . . . . . . . . . . . 46

6.1.3 Transformation Unit . . . . . . . . . . . . . . . . . . . 47

6.1.4 Intersection Unit . . . . . . . . . . . . . . . . . . . . . 49

6.1.5 Balancing . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.2 Shading Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.2.1 Primary Rays . . . . . . . . . . . . . . . . . . . . . . . 51

6.2.2 Light Rays . . . . . . . . . . . . . . . . . . . . . . . . 52

6.2.3 Reflection Rays . . . . . . . . . . . . . . . . . . . . . . 52

7 FPGA Prototype 55

7.1 Implementation Statistics . . . . . . . . . . . . . . . . . . . . 60

7.1.1 Gate Count . . . . . . . . . . . . . . . . . . . . . . . . 60

7.1.2 Complexity . . . . . . . . . . . . . . . . . . . . . . . . 61

7.2 Performance Statistics . . . . . . . . . . . . . . . . . . . . . . 63

7.2.1 Hardware Quality Index . . . . . . . . . . . . . . . . . 63

7.2.2 Graphics Hardware Quality Index . . . . . . . . . . . 64

7.2.3 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

7.2.4 Cache Hit Rate . . . . . . . . . . . . . . . . . . . . . . 67

7.2.5 Memory Bandwidth . . . . . . . . . . . . . . . . . . . 68

7.2.6 Performance . . . . . . . . . . . . . . . . . . . . . . . 70

8 Conclusion 71

9 Future Work 73

10 Appendix A 75

10.1 Office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

10.2 Gael . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

10.3 Conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

10.4 Trees4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Page 9: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

List of Figures

3.1 Ray Tracing Basics . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2 k-D Tree Semantics . . . . . . . . . . . . . . . . . . . . . . . . 10

3.3 k-D Tree Example . . . . . . . . . . . . . . . . . . . . . . . . 11

3.4 k-D Tree Traversal Example . . . . . . . . . . . . . . . . . . . 13

3.5 Hit-Distance Computation . . . . . . . . . . . . . . . . . . . . 14

3.6 Traversal Decisions . . . . . . . . . . . . . . . . . . . . . . . . 16

3.7 Packet Traversal . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.8 Example of an Invalid Packet . . . . . . . . . . . . . . . . . . 19

4.1 Dynamic Acceleration Structure . . . . . . . . . . . . . . . . 22

4.2 Ray Transformation into Object Space . . . . . . . . . . . . . 23

4.3 Bounding Box of Object Instances . . . . . . . . . . . . . . . 24

4.4 Bounding Box Clipping . . . . . . . . . . . . . . . . . . . . . 25

4.5 Bounding Box Clipping Example . . . . . . . . . . . . . . . . 26

4.6 Overlapping Objects . . . . . . . . . . . . . . . . . . . . . . . 27

4.7 Room Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.8 Hierarchical k-D Trees as Solution to the Room Problem . . . 28

4.9 Normal Transformation . . . . . . . . . . . . . . . . . . . . . 32

5.1 Unit Triangle Intersection . . . . . . . . . . . . . . . . . . . . 35

6.1 Dynamic Ray Tracing Architecture . . . . . . . . . . . . . . . 43

6.2 Traversal Unit . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.3 Mailboxed List Unit . . . . . . . . . . . . . . . . . . . . . . . 47

6.4 Transformation Unit . . . . . . . . . . . . . . . . . . . . . . . 48

6.5 Compressable Packets . . . . . . . . . . . . . . . . . . . . . . 49

6.6 Reflection Matrix Illustration . . . . . . . . . . . . . . . . . . 54

vii

Page 10: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

viii LIST OF FIGURES

7.1 ADMXRC Development Platform . . . . . . . . . . . . . . . . 55

7.2 ADMXRC Top-Level Flowchart . . . . . . . . . . . . . . . . . 55

7.3 Dynamic SaarCOR Prototype . . . . . . . . . . . . . . . . . . 56

7.4 Hardware Optimized Hilbert Curve . . . . . . . . . . . . . . . 59

7.5 Cache Hit Rate using the Hardware Optimized Hilbert Curve 59

7.6 Hardware Quality Index . . . . . . . . . . . . . . . . . . . . . 64

7.7 Graphics Hardware Quality Index . . . . . . . . . . . . . . . . 65

7.8 Usage of Units . . . . . . . . . . . . . . . . . . . . . . . . . . 66

7.9 Frame Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

7.10 Cache Hit Rate . . . . . . . . . . . . . . . . . . . . . . . . . . 67

7.11 Memory Bandwidth . . . . . . . . . . . . . . . . . . . . . . . 68

7.12 Scalability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Page 11: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

List of Tables

4.1 Millions of operations for various strategies . . . . . . . . . . 30

7.1 Maximum Cache Size per Unit . . . . . . . . . . . . . . . . . 58

7.2 Gate Count Computation . . . . . . . . . . . . . . . . . . . . 60

7.3 Complexity of one Ray Tracing Pipeline . . . . . . . . . . . . 61

7.4 Gate Count and Memory Bits per Unit using 32 Packets . . . 61

7.5 Gate Count and Memory Bits per Unit using 512 Cache Lines 62

ix

Page 12: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

x LIST OF TABLES

Page 13: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 1

Introduction

Ray tracing is in fact one of the most popular rendering techniques to create

highly realistic images. However, because it is a computationally expensive

recursive algorithm that requires large memory bandwidth, it is a challenging

task to implement it in hardware.

As a consequence, the state of the art in interactive 3D computer graph-

ics is still rasterization hardware. The rasterization algorithm is efficient

for scenes consisting of few triangles, while ray tracing is not. Thus, to-

days computer graphics hardware can handle scenes with several hundred

thousand triangles. This is made possible by high memory bandwidth and

high floating point performance. For instance Nvidia’s GeForce 3[1] offers

76 GFlops at a clock rate of 200 MHz and has a 256 bit wide memory

interface running at 230 MHz, delivering a memory bandwidth of 7.2 GB/s.

In recent years the scenes of standard computer games have become

more and more detailed. Indeed, computer games are developed based on

the current graphics card standard, but rasterization hardware will become

a limiting factor in the near future. Because the main concept behind ras-

terization hardware is to project each triangle of the scene to a frame- and

z-buffer, the rasterization algorithm scales linearly in the number of trian-

gles of the scene. Furthermore it is difficult to parallelize the rasterization

algorithm, as the bandwidth to the frame- and z-buffer becomes critical.

This is because each triangle that is projected onto the image plane involves

many memory accesses to the frame- and z-buffer. If the triangles of the

scene are large the performance consequently drops. For a detailed descrip-

tion of the rasterization algorithm see any standard textbook for computer

1

Page 14: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

2 CHAPTER 1. INTRODUCTION

graphics, for example that by Shirley [2].

Ray tracing does not suffer from these problems, as the tracing of single

rays can trivially be parallelized, because they are not dependent on each

other. On the other hand, it can be shown that the ray tracing algorithm

scales logarithmically in the number of triangles in the scene [3]. The only

problem might be that the initial hardware cost for ray tracing is high and

the memory interface to the scene database has to deliver sufficient band-

width to the parallel working ray tracing units. Later in this thesis it will

be shown that it is possible to deliver the required bandwidth using fairly

small caches.

A main advantage of the ray tracing algorithm is that it simulates reality,

by supporting different kinds of lighting effects like reflections, refractions,

shadows and even real-time global illumination [4]. For a human viewer

these effects are very important to understand the three dimensional relation

between the objects of the scene. Here, shadows play an especially important

role.

Indeed rasterization hardware supports some of these effects, but only by

using multi-pass rasterization tricks to fake them. These multi-pass raster-

ization techniques (to produce shadows for instance) are often non-obvious

and difficult to implement. In contrast, ray tracing offers an extremely sim-

ple and intuitive shading model. For instance, it is simple to shoot a ray

from a point in the scene to a light source to check whether it lies in the

shadow of the light source or not.

Particularly the large number of memory accesses (which are more or less

randomly distributed over the scene data) and the expensive computation

made it impossible to create a real-time ray tracing system recently. Lately a

lot of work has been done to cope with these problems. Taking advantage of

the coherence between neighboring rays to reduce the memory bandwidth

and using a cluster of processors to provide enough computational power

made real-time ray tracing possible. Such a software based real-time ray

tracing system has been developed by the Computer Graphics Lab of the

Saarland University [5, 6, 7].

However these techniques require a lot of costly, but standard hardware.

The SaarCOR project follows a different way. Instead of using standard PC

hardware for the computation, it is more efficient to create special purpose

hardware that is optimized to the ray tracing application. Jorg Schmit-

Page 15: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3

tler designed such an architecture which is called SaarCOR (Saarbrucken’s

Coherence Optimized Ray Tracer). This architecture has been fully simu-

lated with really nice results [8].

Up to now SaarCOR has been limited to static scenes and to a standard

k-D tree as acceleration structure. In such a static scene the camera can be

moved around, but no object can be moved itself. This is a hard limitation

which makes it impossible to develop a computer game for the standard

SaarCOR architecture for instance.

In this thesis a ray tracing hardware architecture for dynamic scenes is

presented based on the SaarCOR architecture. As ray tracing heavily relies

on precomputations it seems to be difficult to ray trace dynamic scenes.

Thus a data structure is required that allows as many precomputations as

possible to be done, but also to move objects in the scene around. This

can be achieved by partitioning the scene into movable objects and build-

ing a top-level acceleration structure over them. This top-level acceleration

structure needs to be recomputed each time an object has been moved. Each

object itself contains a precomputed bottom-level acceleration structure that

stays static forever. To traverse a ray in the bottom-level acceleration struc-

ture of the object, the ray has to be transformed to its local coordinate

system. This requires a transformation unit, which can be used as a kind of

precomputation too, if using a new triangle intersection method, described

in Section 5.

Using the structured scene representation it is possible to share geometry

by placing the same object at several positions. This reduces the represen-

tation of most scenes. A prototype of the hardware architecture has been

implemented into an FPGA which is in fact the first working special purpose

real-time ray tracing hardware available today.

Most of the concepts of this thesis can be understood without a detailed

knowlege of FPGAs or ASICs, but a short description will be given here.

An FPGA (field programmable gate array) can be seen as a CLB ar-

ray (configurable logic block) with some programmable routing resources to

connect the single CLBs. The internal structure of these CLBs differs from

architecture to architecture. In Xilinx FPGAs, the CLBs mainly consist of

some registers and LUTs (look up tables). LUTs are programmable 4 to

Page 16: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4 CHAPTER 1. INTRODUCTION

1 function generators that can be used together with the routing resources

to encode each circuit. The circuit in the FPGA can be reconfigured ar-

bitrarily often. For a detailed description on FPGAs see the book “Field

Programmable Gate Arrays” [9].

In contrast an ASIC (application specific integrated circuit) consists of

an array of NAND gates. The interconnection between different gates is

done by some extra silicon layers that are added to the chip. Thus a main

difference from FPGAs is that ASICs are in no way reconfigurable. The ad-

vantage of ASICs are their high gate capacity, low price at a high number of

pieces and high speed compared to FPGAs. A description on ASIC design

can be found in the book “Application-Specific Integrated Circuits” [10].

At the beginning of this thesis the basics of the ray tracing algorithm

using k-D trees are explained. To achieve dynamics, the standard k-D trees

are extended to 2-level k-D trees and the transformations needed for the 2-

level traversal algorithm are discussed as well as some problems that might

occur. The next Section describes a new triangle intersection method that is

used in the hardware architecture. These Sections form the basics to under-

stand the ray tracing hardware architecture for dynamic scenes, presented

in the following Chapter. The prototype implementation of the architecture

is described and a detailed analysis of the performance is given. The last

part finally summarizes this thesis and shows areas of future work.

Page 17: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 2

Previous Work

The state of the art in interactive ray tracing are in fact software based

systems. Several approaches have already been realized on MIMD and SIMD

architectures [11, 12, 13] exploiting the coherence between neighboring rays.

By parallelization of the algorithm on supercomputers [14, 15, 16, 17, 18, 19]

and recently standard PCs [6, 7] interactive ray tracing has become possible.

Besides these software based ray tracing systems some special purpose

hardware has been developed. As the most costly operation of the ray trac-

ing algorithm is the ray triangle intersection, the first commercially available

ray tracing accelerator performed this operation only [20, 21]. This ray trac-

ing accelerator has no hardware support for the traversal operation thus it

is not able to do ray tracing in real-time. In 1999, Pfister et al. published

the VolumePro 500 architecture which is a single-chip real-time volume ren-

dering hardware [22].

A different approach is to map the ray tracing application to a multi-

processor architecture on a single chip [23], which should be available in

the near future. Purcell has simulated a ray tracer for such an architec-

ture delivering real-time performance [24]. A kind of multi-processor vector

architecture is present in todays high end graphics cards too, in form of pro-

grammable pixel shaders. It has been shown that the ray tracing application

can be mapped to these shaders [25].

Ray tracing of dynamic scenes is a new topic of research. The paper “Dis-

tributed Interactive Ray Tracing of Dynamic Scenes” [26] discusses basics

of the 2-level ray tracing algorithm for dynamic scenes used in the hardware

architecture presented in this thesis. Instead of rebuilding the acceleration

5

Page 18: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6 CHAPTER 2. PREVIOUS WORK

structure to achieve dynamics it is possible to use special algorithms to up-

date it. Thus using a hierarchical grid as an acceleration structure, it is

possible to update an object’s position in the scene in constant time [27].

Page 19: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 3

The Basic Ray Tracing

Algorithm

Ray Tracing is a simulation technique to create realistic images of 3 dimen-

sional scenes. This is done by shooting imaginary rays through a scene and

interpreting the resulting intersection, as described in this Section.

In a real environment light is emitted by some light sources and then

distributed to the scene in a manner consistent with physical laws. If a

camera is positioned into this environment some light enters it and an im-

age is projected onto the image plane. The physical theory of this light

distribution is well-known today, but to simulate it exactly is difficult, since

available computational power is strongly limited. Thus in practice some

approximations need to be made.

In contrast to reality, ray tracing goes the opposite way and follows the

light back from the camera to the light sources. This is done by shooting

so called primary rays for each pixel of the image from the camera into the

scene and computing the closest object that is hit by the ray, the hit-object.

This shooting of a ray to determine the hit-object is called ray casting and

the origin of the primary rays is the projection center of the camera. The

point in 3D space where the object is hit is called the hit-point of the ray

(see Figure 3.1).

After computing the hit-object and hit-point to a primary ray it is known

which object is visible through the pixel, thus the algorithm does a kind of

visible surface computation. At this stage a shader corresponding to the

material of the hit-object is called, which has the task of computing the

7

Page 20: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

8 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

Figure 3.1: A 2 dimensional example of the ray tracing algorithm. For eachpixel of the image a primary ray is shot into the scene and the closest objectthat is hit by the ray is computed.

color of the pixel using the intersection results of the ray with the hit-object.

The shader computes the pixel color based on several material proper-

ties of the hit-object, like the object’s color, surface normal, reflectivity and

transparency, and using scene properties such as the light sources. More ad-

vanced shaders would shoot secondary rays to simulate several light effects.

Thus it is possible to shoot light rays from the light sources of the scene to

the hit-point of the ray to compute whether the hit-point lies in the shadow

of a light source or not. Even reflections can be computed by using the

surface normal to compute a reflection ray to determine which geometry is

seen through the reflective surface.

The shading computation in detail is out of the scope of this thesis. For

further information about shading see the book ”Fundamentals of Computer

Graphics” [2].

A costly part of the algorithm is the ray casting operation to find the

closest hit-object. To do this efficiently a data structure which subdivides the

space of the scene into subspaces is required. This allows objects to be found

efficiently at a given location. Such a data structure is called an acceleration

structure as it accelerates the ray casting operation. Many acceleration

structures exists, some are recursive and others flat data structures [28]. In

Page 21: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 9

the hardware architecture presented in this thesis only k-D trees are used

as acceleration structure, thus the basics of k-D trees are explained in the

next Section.

3.1 k-D Trees

A k-D tree is an acceleration structure that is typically used for ray tracing

to accelerate the ray casting operation. It subdivides a k-dimensional space

containing some objects recursively and axis aligned into subspaces, and

stores for each of these subspaces the contained geometry. Because ray

tracing is applied to a 3D space, only this case will be discussed here.

The scene subdivision is encoded as a binary tree, the k-D tree. Each

leaf node of this tree specifies one of the subspaces and contains a list of all

objects that lie in the subspace.

Using this recursive data structure it is possible to efficiently find the

closest object hit by a ray. This is done by determining the subspaces

through which the ray traverses. In the order the ray traverses these sub-

spaces, it is intersected with the geometry in each subspace. This walking

through the subspaces is called the traversal operation and it terminates if a

hit-point in the current subspace has been found. This traversal operation

is very efficient, as only the geometry in the subspaces the ray traverses,

need to be used in the intersection calculation. Geometry far away from the

ray will never be touched if the subspacing is fine enough.

Definition 3.1.1. A plane h in R3 can be defined by an implicit function

H(x) = n · x − d = 0, if n 6= 0, n ∈ R3 and d ∈ R. We define h+ = {x ∈

R3 | H(x) ≥ 0} and h− = {x ∈ R

3 | H(x) < 0} to be the positive and

negative half-space bounded by h, respectively. Let k ∈ {1, 2, 3} be the so

called splitting axis and n = ek be the k-th unit vector, then we call the

plane h an axis aligned splitting plane and the value d the splitting position.

Definition 3.1.2. A k-D tree T is defined by the following grammar:

T = Node((k, d), Tleft, Tright)

| Leaf({Object1, . . . , Objectn})

Object ⊂ R3 closed

Page 22: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

10 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

On the one hand, a node of a k-D tree can be a normal Node containing

an axis aligned splitting plane (k, d) and a left and right subtree (Tleft and

Tright). On the other hand, it can be a Leaf node containing a set of objects.

This set can be empty if the number of objects n is 0. An object is a closed

subset of R3. In practice mostly triangles or cubes will be used as objects.

The semantics of the k-D tree defines a subspace S(T ) to each node T

of a k-D tree. The subspace of the root node is defined as R3. If S(T ) is the

subspace of the node T = Node((k, d), Tleft, Tright) and h the plane defined

by (k, d) then the subspace of the left subtree is S(Tleft) = S(T ) ∩ h− and

the subspace of the right subtree S(Tright) = S(T ) ∩ h+. Figure 3.2 shows

this subdivision scheme of the space.

Figure 3.2: This Figure shows how the space is recursively subdivided byk-D trees. The large box is the subspace of node T and is split into twohalves by the splitting plane p1 = (1, d). The normal of this splitting planeis parallel to the x-axis and goes through the point (d, 0, 0).

As the splitting planes in the nodes of the k-D tree are axis aligned, it is

called an axis aligned BSP tree (binary space subdivision tree). It is possible

to use other non axis aligned splitting planes too, which yields to BSP trees

in general and more complex traversal computations. In the following only

the case of axis aligned splitting planes will be considered.

Page 23: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 11

3.1.1 k-D Tree Creation

The task of the k-D tree creation algorithm is to build a k-D tree for a

scene consisting of several objects. Thus it has to subdivide the space of

the scene recursively into subspaces. It starts with the complete space R3

containing all the geometry of the scene. Then an axis aligned splitting

plane is selected which splits the space into the left and the right subspace

according to the semantics of the k-D tree. For each of both subspaces the

objects that intersect with it are computed. Note that objects can belong to

both subspaces. The subspaces together with the objects intersecting them

are handled recursively by the algorithm. If some termination criteria is

fulfilled, the subdivision of the current subspace is terminated and a leaf

node, containing all objects in it, is created.

This is the main concept for each k-D tree creation algorithm. Different

algorithms mostly differ only in the heuristics that are used to search the

splitting plane and in the termination criteria.

The algorithm 3.1.3 defines the createKDTree function in an abstract

way. It gets a subspace S and a set O of objects and returns a k-D tree. The

subspaces can be represented as simple bounding boxes (that are possibly

infinite) and the set of objects as arrays or lists. For an example of a simple

k-D tree in 2 dimensions see Figure 3.3.

Figure 3.3: Figure (b) shows a k-D tree for the simple 2D scene of Figure(a). The labels on the inner nodes of the k-D tree tell the splitting planeand the leaf nodes contain a list of objects.

Page 24: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

12 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

Algorithm 3.1.3. k-D Tree Creation

function createKDTree (S, O)

begin

if termination criteria is fulfilled then

return Leaf(O)

Select an axis aligned splitting plane h by some criteria.

Sleft = S ∩ h−

Sright = S ∩ h+

Oleft = {x ∈ O | x ∩ Sleft 6= ∅}

Oright = {x ∈ O | x ∩ Sright 6= ∅}

Tleft = createKDTree (Sleft,Oleft)

Tright = createKDTree (Sright,Oright)

return Node(h,Tleft,Tright)

end

There are two issues we have not dealt with yet. The first one is how to

select the splitting plane and the second one is what the termination criteria

looks like. As a simple approach the splitting plane can be selected such that

the largest dimension of the subspace is split exactly in the middle. It can

be shown that this is not very efficient especially if the objects in the scene

are not equally distributed [3]. As termination criteria a maximal tree depth

in conjunction with a minimal number of objects in the leaves can be used,

for instance.

A different more advanced approach is to search the optimal splitting

plane related to a cost function. Such a function was proposed by Havran

[3] and can be used as a termination criteria too, by comparing the cost of

a split and no split.

Page 25: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 13

3.1.2 Recursive k-D Tree Traversal

The reason why we introduced k-D trees was to optimize the ray casting

operation, which means to compute the closest hit-point of a ray with the

scene. The k-D tree subdivides the scene into subspaces. Thus the sequence

of subspaces a ray traverses can be determined to intersect the ray with the

geometry stored in them. The algorithm that performs this enumeration

of the subspaces is called the k-D tree traversal algorithm. In conjunction

with an object intersection algorithm, the closest hit-point of the ray with

the scene can be computed.

Definition 3.1.4. A ray R is represented by a tuple R = (org, dir) ∈ (R3)2.

The first component org of the tuple is a point of R3 and represents the origin

of the ray. The second component is a vector of R3 and specifies the direction

of the ray. The points on the ray can be computed by R(x) = org + x · dir

if 0 ≤ x.

Definition 3.1.5. Such a ray R hits an object obj if there is a λ ∈ [0, +∞[

such that R(λ) ∈ obj. A minimal λ with this property is called the hit-

distance of the ray to the object and R(λ) the hit-point. Because an axis

aligned splitting plane is a closed subset of R3, we can define the terms

hit-distance and hit-point the same way for rays and splitting planes.

Figure 3.4: The ray R of Figure (a) is traversed according to Figure (b)through the k-D tree.

Since a k-D tree is a recursive data structure, the k-D tree traversal

algorithm is a completely recursive algorithm as well. It works recursively

on the nodes of the k-D tree and makes a traversal decision at each node.

Page 26: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

14 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

The traversal decision determines whether the ray traverses the subspace of

the left and/or right subtree and the order it traverses them. Using this

traversal decision the algorithm follows the ray through the k-D tree data

structure by working on the subtree that is traversed first and putting the

other one onto the stack. If a leaf node is reached the intersection algorithm

is called to intersect the ray with each object stored in the leaf node and the

closest hit-point is determined. If this hit-point lies in the subspace of the

leaf node a valid hit-point is found and the ray is called a terminated ray.

In such a case or if the stack is empty the algorithm terminates. Otherwise,

it continues by obtaining the next node from the stack.

To compute the traversal decision the algorithm needs the near and

far-value which is the distance to the the entry-point and exit-point of the

ray with the subspace of the current node. Using this near and far-value

together with the distance d to the splitting plane of the current node the

traversal decision can be computed.

If δ is the splitting position and k the splitting axis, then the intersection

distance d of the ray R = (org, dir) to the splitting plane can be computed

according to the formula of Figure 3.5.

d =δ − orgk

dirk

Figure 3.5: Hit-Distance Computation

To compute the traversal order the algorithm determines the half-space

of the splitting plane that is closer to the origin of the ray. If orgk ≤ δ this

is the negative half-space (corresponding to the left subtree) or otherwise

the positive half-space. The closer subspace is traversed first, if the ray

intersects it. The farther one follows later. In the first case the so called

traversal order is from left to right, otherwise from right to left.

Page 27: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 15

Algorithm 3.1.6. k-D Tree Traversal

function traverseKDTree (R, T )begin

λ = ∞near = −∞ far = ∞

while truebegin

while T is of Node((k,split),Tleft,Tright)begin

d = (split − R.orgk)/R.dirk

if R.orgk ≤ split thenTnear = Tleft, Tfar = Tright

elseTfar = Tleft, Tnear = Tright

go near = d ≥ near ∨ d ≤ 0go far = d ≤ far ∧ d ≥ 0

if go near ∧ go far thenpush far and Tfar to the stackT = Tnear, far = d

else if go near ∧ not go far thenT = Tnear

else if not go near ∧ go far thenT = Tfar

end

T is of Leaf({Object1, . . . , Objectn})compute closest hit-distance λ for {Object1, . . . , Objectn}

if λ ≤ far then return λif stack is empty then return λnear = farpop far and T from stack

endend

Page 28: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

16 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

Figure 3.6: Traversal Decisions

Whether the ray really traverses through the nearer and/or farther side

is computed by the following formulas, which are illustrated in Figure 3.6.

go near = d ≥ near ∨ d ≤ 0 go far = d ≤ far ∧ d ≥ 0

One important invariant of the algorithm is that the near and far-

value is exactly the distance to the entry and exit point of the ray with

the subspace of the current node. This property is essential and has to be

maintained through the complete algorithm. Thus the near and far-values

have to be updated at each traversal step of the algorithm. If only one of

the subtrees is traversed by the ray, then the near and far values stay the

same (see Figure 3.6), but if both children have to be traversed, the near

and far values need to be updated. As the algorithm first traverses into the

closer child node the near value can be maintained but the far value has

to be set to the hit distance d. To restore the far-value later, it is pushed

onto the far-stack and the farther node onto the node-stack. If later a leaf

node is reached and no hit has been found in it a node is popped from the

node-stack and the near and far values are updated by setting near = far

Page 29: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 17

and taking the far value from the far-stack as the new far value.

Using the near and far value it is possible to determine whether there

is a valid hit-point which is necessary to terminate the ray. A valid hit-point

is found if a leaf is encountered and the hit-distance to the current closest

hit-point is smaller than the current far-value, since then the found hit-

point lies in (or before) the leaf node’s subspace. Alternatively the ray can

be terminated at the next traversal step by testing if the closest hit-distance

is smaller than the current near-value.

Figure 3.6 shows the most important situations that occur in the traver-

sal algorithm. Besides these cases there are some degenerate ones that have

to be handled carefully. These cases occur if the ray does not have got a

well-defined single hit-point with the splitting plane. If so the hit-distance

cannot be computed and the traversal decision formulas cannot be applied.

This can happen if the ray is parallel to the splitting plane or if it lies com-

pletely in it. The later hardware approach solves this problem by using

a normalized floating point representation that cannot represent the value

zero. Thus each ray has a hit-point with each possible splitting plane.

3.1.3 Packet k-D Tree Traversal

A drawback of ray tracing is the large memory bandwidth that is needed for

the computation. Reducing this bandwidth is possible by exploiting the ray

coherence between rays corresponding to neighboring pixels on the screen.

This coherence derives from the fact that rays traversing through a similar

region of the 3D space, traverse similar nodes of the k-D tree and intersect

many of the same objects.

It is possible to take advantage of this ray coherence by traversing a

packet of some neighboring rays in parallel as if they were one single ray.

This strategy reduces the required memory bandwidth, as data is fetched for

a complete packet of rays instead of a single ray. Furthermore when imple-

menting such a packet traversal algorithm in software, SIMD architectures

available in todays standard PCs can be taken advantage of. Because these

SIMD architectures allow 4 computations to be done in parallel packets of

4 rays can be handled efficiently using these special instructions.

The packet traversal algorithm is closely related to the standard traversal

algorithm, but instead of computing a traversal decision for a single ray it

computes a similar packet traversal decision for a packet of rays. In the

Page 30: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

18 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

computation of this packet traversal decision, only so called active rays of

the packet are involved. A ray of a packet is active in the current node if it

is not terminated and if it intersects with the subspace of the node. Because

this active value is required for each ray in the packet an active vector for

the packet is needed. Although this active vector needs to be recomputed

at each traversal step this is quite simple since a ray is active in the left

child of a node if it is active in the current node and if it wants to traverse

through the left child. The same holds for the right child.

If one of the active rays of the packet wants to traverse through the left

child, then the packet traverses through the left child as well. The same

holds for the right child. The traversal order for the packet is inherited from

the active rays of the packet that traverse through both children, if it is the

same for each of these rays. The packet is terminated if each of its rays is

terminated.

If a pop operation is done, the active vector has to be updated, and

therefore needs to be pushed onto the stack together with a node. A further

situation that might occur is that a node is reached and ray R1 traverses

through both children and R2 through the farther child only. Here, the

farther node is pushed onto the stack and R1 traversed through the nearer

child. Later a pop operation obtains the farther node from the stack, and

each of both rays is active in this node. However ray R1 needs to update its

near and far values, as it traversed the nearer and farther child, unlike R2.

Thus a kind of both vector needs to be pushed to the stack also, indicating

if a ray wants to traverse through both children to update the near and far

values correctly.

Figure 3.7: The packet is traversed from left to right, as the rays R1 andR2, traverse from left to right. Thus the right node is pushed onto the stackand the operation continues in the left child. The rays R1 and R2 are activein both children, but R3 only in the right one.

Page 31: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

3.1. K-D TREES 19

A problem occurs if the traversal order is not the same for each active

ray of the packet that wants to traverse both children. Such a packet is

called an invalid packet. It is invalid since no valid packet traversal decision

can be computed. No matter which child is handled first there is always

a ray in the packet that wants to handle the other one first. If the packet

terminates in the first traversed child, a possible closer hit-point in the other

child is forgotten (see Figure 3.8).

In practice this case occurs very rarely and it can be shown that this

does not happen if there are no two rays of the packet that cross in at leat

one of the 3 projections to the xy-,yz- or xz-plane. This never occurs for

primary rays and light rays, since rays with the same origin never cross.

Therefore the algorithm can handle these types of packets correctly.

Figure 3.8: The Figure shows a situation in which no packet traversal deci-sion exists. No matter which child is handled first, either ray R1 or ray R2is not intersected with triangle tri3.

If no such packet traversal decision exists this situation can be handled as

a kind of special case. If a node for which no packet traversal decision exists

is reached, the left child is traversed first. The right child is remembered

and traversed later by treating it as a special case.

A different possibility is to split the packet before the traversal into sub

packets, in which the rays do not cross as explained above. To split the

packet this way, only the signs of the three components of the ray directions

must be compared. If there are two rays whose direction sign is different

in one dimension then the rays cross and have to be put in different sub

packets.

One of these solutions needs only to be applied if a shader produces

invalid packets. This for instance can happen if a packet is reflected by a

curved surface. However, if only primary rays and light rays are allowed,

Page 32: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

20 CHAPTER 3. THE BASIC RAY TRACING ALGORITHM

the problem never can occur. In the hardware architecture to be described

later only primary rays are used and the problem of crossing rays can be

safely ignored.

Page 33: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 4

The Dynamic Ray Tracing

Algorithm

In this Chapter a ray tracing algorithm for dynamic scenes is presented that

allows the movement of a huge number of triangles in the scene.

On the first view the efficient ray tracing of dynamic scenes does not

seem to be possible since fast ray tracing relies so much on precomputations.

In particular, the precomputed acceleration structure is a problem since it

has to be rebuilt or updated if the geometry of the scene has changed.

For a dynamic real-time ray tracing system this update must work even

if the complete scene consists of several million triangles. Here standard

acceleration structures cannot be used since the construction of a k-D tree

for instance is at least in O(n) in the number of triangles in the scene (each

triangle has to be visited at least once). It is possible to build acceleration

structures that allow updating the position of triangles in constant time [27],

but several million triangles cannot be moved around this way.

There exists a simple solution to this problem if the scene is restricted to

some kind of structured motion [26]. The case of unstructured motion, that

is if triangles are moved around arbitrarily, is not covered in this thesis. In

contrast to unstructured motion, structured motion is if some triangles are

moved around in some sense as one single object. For instance, in a scene

consisting of a table and a chair, normally all triangles in the chair or table

are moved around at once.

For such structured motion, the structure of the motion can be exploited

by packing the triangles into movable objects. These objects internally stay

21

Page 34: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

22 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

static, thus a local bottom-level acceleration structure and a local bounding

volume can be precomputed for them. The local bounding volume contains

all the geometry of the object.

The object can be positioned, rotated and scaled in the scene by an

affine transformation. Such a positioned object is called an object instance

and consists of the affine transformation used and a reference to the object.

This concept of having some objects and one or more object instances to

each object leads to a kind of geometry sharing, as an object needs to be

saved only once.

To traverse rays efficiently through the object instances a dynamic top-

level acceleration structure must be built over them. Only this top-level

acceleration structure needs to be updated, if the position of an object in-

stance has changed. This is possible as long as the number of objects in the

scene stays small.

As there is a dynamic top-level acceleration structure over the object

instances and a bottom-level acceleration structures in the objects, this is a

kind of 2-level acceleration structure (see Figure 4.1).

In the example of the chair and table, two objects have to be modeled:

one chair and one table. These two objects inside stay static over time but

they can be instantiated at several positions in the scene. Thus the top-

level acceleration structure is quite simple (it consists of few objects) but

the objects themselves can be fairly complex.

Figure 4.1: The Figure shows a dynamic top-level acceleration structureover 4 object instances i1, . . . , i4 of 3 objects o1, o2, o3. The objects consistof their static bottom level acceleration structure.

The traversal algorithm for 2-level acceleration structures first traverses

through the top-level acceleration structure until an object instance needs to

Page 35: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

23

be intersected. This is done by transforming the ray to the local coordinate

system of the object and traversing through the local acceleration structure

to find the hit-triangle in the object. The transformation of the ray to the

local coordinate system is necessary as the acceleration structure of the ob-

ject is only valid in the coordinate system in which it has been created. Thus

the positioning of the object instance needs to be reversed by transforming

the ray. Thus the inverse of the transformation that was used to position

the object is required to transform the ray to the local coordinate system of

the object.

An important property of the concept is that the internal geometry of the

object is hidden from the rest of the world. Thus from outside the object’s

geometry is only represented by its local bounding volume, which needs

to be as accurate as possible to avoid unnecessary ray object intersections,

which are normally very costly.

Figure 4.2: Figure (a) shows a simple scene consisting of two instances ofthe same object. The drawn ray hits the left chair thus it is transformed toits local coordinate system, as can be seen in Figure (b). There the splittingplanes are again axis aligned so that the traversal can be continued in theobject.

The concepts of the dynamic ray tracing algorithm does not depend on

a special acceleration structure or kind of local bounding volume, but in the

following only k-D trees and axis aligned bounding volumes will be used.

Furthermore no update strategy for the top-level k-D tree will be used it is

simply rebuilt each time the object positions have changed.

The following Sections describe some details of the dynamic ray tracing

algorithm. Some special properties of the top-level k-D tree creation will be

discussed as well as problems that might occur using local bounding volumes.

As affine transformations are used to position objects in the scene, the way

Page 36: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

24 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

a ray is transformed under an affine transformation needs to be analysed.

Furthermore we show that the hit-distance is maintained under an arbitrary

affine transformation which dramatically simplifies an implementation of the

algorithm. As most shading models need the normal of the geometry in the

world coordinate system, normal transformation is also discussed.

4.1 Top-Level k-D Tree Creation

The basic k-D tree creation algorithm has been described in Section 3.1.1.

This algorithm can be applied the same way to compute a top-level k-D

tree for a set of object instances by using the transformed local bounding

volume of the object instances as their simplified geometry. Because this

transformed bounding volume is no longer axis aligned determining if it

intersects with a subspace or not is very costly to compute.

As it is mostly required to rebuild the top-level acceleration structure

for each frame, some optimization needs to be done to speed up the top-

level k-D tree construction. This is done by computing the smallest axis

aligned bounding box that encloses the transformed bounding volume. This

is called the instance bounding volume and is used as the geometry of the

object instance in the k-D tree creation algorithm (see Figure 4.3). To

compute the intersection of the axis aligned instance bounding volume and

the subspace (which can be represented as an possibly infinite axis aligned

bounding box also) is trivial.

Figure 4.3: Figure (a) shows an object with its bounding box. In Figure (b)this object is instantiated using a rotation. The estimated bounding boxfor the object instance is drawn dotted. Figure (c) shows the best possiblebounding box estimation for the object instance if the exact geometry of theobject is used in the estimation.

This simplification has some disadvantages since the axis aligned instance

Page 37: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4.2. BOUNDING BOX CLIPPING 25

bounding volume is not optimal (see Figure 4.3). Although a best estimation

for the axis aligned instance bounding volume exists, it is not a good idea

to compute it, because then the internal structure of the object would have

to be involved in the computation, which might be too costly.

What can be done is to search for a better representation of the local

bounding volume of an object. Instead of an axis aligned box an ellipsoid

can be used which often is a better approximation. Such an elliptic bounding

volume of an object can be computed in O(n) [29]. A different optimization

would be to rotate the object in such a way that its initial bounding box

fits as well as possible. A situation like in the left most image of Figure 4.3

is in fact the worst case.

4.2 Bounding Box Clipping

Intersections with object instances are mostly very expensive, as this re-

quires one ray transformation and some traversal steps in the object. One

possibility to avoid and optimize ray object intersections is to perform a kind

of bounding box clipping on the instance bounding volume in the top-level

k-D tree and on the local bounding volume of the object at the beginning

of the bottom-level k-D tree.

Figure 4.4: Figure (a) shows a 2 dimensional rectangle with its clippingplanes. The corresponding clipping tree is shown in Figure (b). Figure (c)shows the clipping tree to to a box in 3 dimensions.

Using traversal steps this bounding box clipping has the task of determin-

ing if the ray intersects with an axis aligned bounding box or not. This can

Page 38: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

26 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

be done by using 6 clipping planes that exactly correspond to the bounding

planes of the axis aligned bounding box (see Figure 4.4).

The bounding box clipping to the instance bounding volume in the top-

level k-D tree guarantees that the bounding box of the object’s instance is

really hit if a leaf node containing this object is encountered.

The bounding box clipping at the beginning of the bottom-level traversal

is useful too, as the local bounding box available there is much more accu-

rate than the bounding box of the instance. Furthermore this bottom-level

bounding box clipping should be performed since many unnecessary traver-

sal steps can be avoided. This is due to the fact that otherwise the infinitely

large empty space around the object is not handled optimally as the clip-

ping planes at the border of the object reach to infinity. This causes many

traversal steps if the ray does not hit the object and traverses to infinity

(see Figure 4.5).

Figure 4.5: Figure (a) shows a chair without bounding box clipping, whoseclipping planes reach to infinity. Here the drawn ray would traverse throughmany subspaces of the acceleration structure. In Figure (b) some bold extraclipping planes clip against the bounding box of the chair. Here the raytraverses only 2 subspaces of the acceleration structure.

Because of the same reason it is better to perform a kind of scene bound-

ing clipping at the beginning of the top-level acceleration structure other-

wise ray losses (that is if rays traverse to infinity and produce no hit) will

be costly. Only if no ray losses can occur in the scene, this scene bounding

clipping should not be performed.

Page 39: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4.3. OVERLAPPING OBJECTS 27

4.3 Overlapping Objects

Overlapping objects play a crucial role in 2-level k-D trees since in the

overlapping area each of the objects need to be intersected. Consider a

scene consisting of n objects that overlap completely. A ray that intersects

this region in space needs to traverse through each of the n objects. For

such worst case scenes, the dynamic ray tracing algorithm scales linearly in

the number of objects. Thus overlapping of objects should be avoided as

often as possible, if modelling a scene.

If two objects overlap only slightly it is usually best to partition the scene

in such a way that the area filled by both objects is separated by the clipping

planes (see Figure 4.6). Thus only in the overlapping area both objects need

to be intersected. The overlapping area cannot be handled more efficiently

since each of both objects could generate the closer hit-point, which is not

known in advance.

Figure 4.6: Figure (a) shows two object instances that overlap a bit. Bythe clipping planes h1, . . . , h4, the overlapping area is separated. The corre-sponding k-D tree is shown in Figure (b).

Much more critical is the case where there are a lot of objects in a

different object like in Figure 4.7. If the standard algorithm to create an

acceleration structure is used, then the large object 1 (which contains the

other ones) is in each leaf node of the tree. This is a problem as during

traversal each time a leaf node is encountered the algorithm intersects with

object o1, but one intersection with it would be sufficient. This problem is

called the room problem, as it typically occurs, if a room is modeled with

Page 40: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

28 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

some objects inside.

The resulting k-D tree for such a scene can be seen, as a degenerate case

of the space subdivision because after each subdivision, the object o1 is in

each of both subspaces.

Figure 4.7: Figure (a) shows a large object o1 containing 3 other objects.The corresponding k-D tree in Figure (b) has object o1 in each leaf node.

4.3.1 Hierarchical k-D Trees

Several possible solutions to the room problem exist. One possibility is to

allow objects to be in k-D tree nodes too and not only in the leaves. This

concept is called hierarchical k-D trees as the hierarchy of the objects is

encoded to the k-D tree.

Figure 4.8: Figure (a) shows the same scene as in Figure 4.7. The corre-sponding hierarchical k-D tree can be seen in Figure (b). The difference to anormal k-D tree is that object o1 is in the inner object list of the root nodeof the hierarchical k-D tree.

Page 41: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4.3. OVERLAPPING OBJECTS 29

Figure 4.8 shows a hierarchical k-D tree. Each node of it has a set of

so called inner objects which are intersected if this node is handled during

traversal. The structure of the k-D tree in Figure 4.8 forces the traversal

algorithm to intersect object o1 exactly one time.

Note that the size of the hierarchical k-D tree is reduced compared to

the last version, as the leaves are smaller. This is a principal property of the

concept, as each time an object is in all or almost all leaf nodes reachable

from a node N , it is more optimal to put the object in the inner object list

of node N , which reduces the size of the tree.

4.3.2 Mailboxing

A different solution to the problem is known as mailboxing which is a kind

of object intersection cache. In a small cache the objects the ray has been

intersected with are saved. If an object needs to be intersected by the

traversal algotithm, the mailbox system looks up the cache. If the ray has

already been intersected with this object no further intersection is done.

Otherwise the object is intersected and added to the cache.

There are several possible strategies to handle the cache. The most

popular is to save the last n objects intersected with. Another would be to

use a hashing function to map the objects to slots.

The mailboxing approach has been shown to be more efficient than using

hierarchical k-D trees. The reason is that hierarchical k-D trees alone only

solve the special room problem. However there are many more situations

where an object is intersected more than once since each object is mostly in

several leaf nodes.

4.3.3 Multiple Scenes

In some cases it is sufficient to use a much simpler solution to the problem.

Imagine a level of a standard shooting game where is mostly a large main

scene, modelled as a single object, and perhaps some dynamic objects. The

main scene object is an object containing a lot of other objects which is a

problem, as described earlier. Instead of putting the main scene object to

the root node of a k-D tree (which the hierarchical k-D tree concept had

done) first the main scene is traversed and then the other geometry. If there

is only one large object containing many other ones, this concept is nearly

Page 42: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

30 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

equivalent to the hierarchical k-D tree concept but simpler.

In the following table some simulation results of the conference scene at

a resolution of 1024x768 are listed. The first line shows a simulation without

any of the optimizations followed by hierarchical k-D trees. Mailboxing is

simulated such that the last 8 objects are saved and in the last simulations

the main scene object (room) of the conference scene is traversed before

the objects (chairs). The number of traversal operations (Trav-Ops), object

intersection operations (Obj-Int-Ops) and triangle intersections (Triangle-

Int-Ops) can be seen.

Optimization Trav-Ops Obj-Int-Ops Triangle-Int-Ops

None 295.4 6.4 57.6Hierarchical k-D tree 70.3 2.0 10.9Mailboxing 63.2 1.6 10.3Multiple Scenes 71.5 2.1 11.3

Table 4.1: Millions of operations for various strategies

It can bee seen that mailboxing is the best of the three optimizations,

thus the later hardware architecture implements this strategy.

4.4 Ray Transformation

If an object instance is hit during traversal, the ray is first transformed into

the local coordinate system of that object. This is done by applying an

affine transformation to the ray. In this Section we show how a ray has to

be transformed using such an affine transformation.

The affine transformation is given by f(v) = Av+B with A ∈ MatR(3×

3) and B ∈ R3 and maps points of R

3 to points of R3. The ray is given

by a tuple R = (org, dir) ∈ (R3)2. The origin of the ray can easily be

transformed by plugging it into v, as it is a point. The direction of the ray

represents a vector not a point, thus it has to be transformed in a different

way. As vectors represent directions, this property has to be maintained by

the transformation. Assume there are two points X and Y given, then there

Page 43: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4.5. HIT-DISTANCE TRANSFORMATION 31

is a vector V = Y − X connecting X to Y . The transformed vector f(V )

has to fulfill the equation:

f(V ) = f(Y ) − f(X) = A Y + B − (A X + B) = A(Y − X) = A V

Thus the transformation of a complete ray looks like:

f(R) = (f(org), f(dir))

= (A · org + B, A · dir)

4.5 Hit-Distance Transformation

Some hit-point information needs to be computed during the traversal al-

gorithm: the hit-point with the splitting plane and the hit-point with the

scene.

One possibility would be to save the hit-point as a real point of R3 but

this has the disadvantage that it has to be transformed back to the world

coordinate system if the hit-point lies in an instantiated object. A much

better way is to store a hit-point with a ray R = (org, dir) indirectly as

a λ-value or hit-distance such that the real hit-point H ∈ R3 fulfills the

following equation:

H = R(λ) = org + λ · dir

On the one hand this hit-distance can be used to compute a traversal

decision (see Section 3.1.2) and on the other hand no back transformation

of the hit-distance is required, which the following equations show. Let f

be an affine transformation f(x) = A · x + B then it yields:

f(H) = f(org + λ · dir)

= A · (org + λ · dir) + B

= (A · org + B) + λ · A · dir

= f(org) + λ · f(dir)

=⇒ org + λ · dir = f−1(f(org) + λ · f(dir))

This means that the same λ-value can be used to represent the hit-

Page 44: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

32 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

point in both coordinate systems. Computing the hit-point in the object

and transforming it back to the world coordinate system is the same as

using the same λ to compute the hit-point in the world-coordinate system.

Thus the value λ is in some sense invariant under the application of affine

transformations.

With this background it can be explained why only affine transforma-

tions are used in the 2-level k-D tree algorithm. The relevant point is that if

intersecting with an object instance not the object in the instance is trans-

formed, but the ray itself. If the object’s geometry had been transformed

(which is too costly) it would be possible to use an arbitrary transformation.

But transforming the ray has to result in a ray again. Affine transformations

fulfill this property and map rays to rays as the above equations show.

4.6 Normal Transformation

Most shading models (like Phong shading for example) need the normal of

the geometry at the hit-point to approximate the surface lighting behavior.

However, this normal is needed in the world coordinate system, but normals

are present only in the local coordinate system of the hit-object. Therefore,

the shader has to transform these normals back to the world coordinate

system using the inverse of the transformation that was used to position

the object. Thus we need to analyse how a normal is transformed under

an arbitrary affine transformation f(x) = Ax + B. Like for vectors, this

transformation has to be applied in a special way to preserve the normal

property. It is trivial to see that affine transformations map tangents to

tangents. This fact will be used to derive a transformation for normals.

Figure 4.9: Figure (a) shows a box and the normal n of the right side. Ifthe box is transformed under an affine transformation like in Figure (b), thecorrectly transformed normal nf is different from An.

Page 45: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

4.6. NORMAL TRANSFORMATION 33

The tangent in the source space is called t and the transformed one

in the destination space tf , which is equal to A t as tangents are vectors.

Analogously the normal in the source space is called n and the searched one

in the destination space nf . As n is a normal, nf is not the same as A n as

seen in Figure 4.9. The following shows that a matrix A′ can be found such

that nf = A′ n. The vectors n and t are perpendicular, which means that

the scalar product is zero nT t = 0. Doing some transformations yields:

nT t = nT A−1A t = (nT A−1)(A t) = (nT A−1)TT tf = ((A−1)Tn)T tf = 0

This equation shows that (A−1)Tn is a vector that is perpendicular to

tf , thus it has to be the searched normal. The transformation matrix A′ is

given by A′ = (A−1)T

and the complete mapping of a normal looks like:

nf = (A−1)Tn

Even if the normal n was normalized, nf is usually not normalized.

Page 46: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

34 CHAPTER 4. THE DYNAMIC RAY TRACING ALGORITHM

Page 47: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 5

Triangle Intersection

In order to decrease the required floating point resources of the hardware

architecture described later in this thesis, I developed a special triangle

intersection method that is based on affine ray transformations. Because

such affine ray transformations are necessary in the dynamic ray tracing

algorithm using this intersection method will make it possible to save a lot

of hardware resources by sharing one transformation unit for two purposes.

The so called unit triangle intersection method consists of two stages.

First the ray is transformed, using a triangle specific affine triangle trans-

formation, to a coordinate system, in which the triangle looks like the unit

triangle ∆unit with the edge points (1, 0, 0), (0, 1, 0) and (0, 0, 0). In the sec-

ond stage, a simple intersection test of the transformed ray with the unit

triangle is done.

Figure 5.1: Unit Triangle Intersection

35

Page 48: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

36 CHAPTER 5. TRIANGLE INTERSECTION

5.1 Affine Triangle Transformation

The affine triangle transformation to a triangle ∆ = (a, b, c) is an affine

transformation T∆(x) = m · x + n with m ∈ MatR(3 × 3) and n ∈ R3

that maps the triangle ∆ to the unit triangle ∆unit. The inverse T−1∆

(x) =

m′ · x + n′ of T∆ can easily be described by the following equations:

T−1∆

1

0

0

= a T−1

0

1

0

= b T−1

0

0

0

= c

These equations map the edge points of the unit triangle to the edge

points of the triangle. If q ∈ R3 is an arbitrary vector, then the solution

T−1∆

of the equations takes the form:

m′ =

ax − cx bx − cx qx

ay − cy by − cy qy

ax − cz bz − cz qz

n′ =

cx

cy

cz

Unfortunately the vector q is undetermined but there are two useful

possibilities to choose q. The first concept is to minimize the memory needed

to store a triangle matrix and the second one allows to do some dot product

computations for free.

5.1.1 Memory Efficient Triangle Transformation

The representation of the triangle transformation can be minimized by

choosing q in such a way that the triangle transformation matrix m of T∆

has the first column equal to (1, 1, 1)T , which can be achieved by setting

q = −(a − c) − (b − c) + (1, 0, 0)T . Here it is not necessary to save the first

column of the matrix.

m′ =

ax − cx bx − cx −(ax − cx) − (bx − cx) + 1

ay − cy by − cy −(ay − cy) − (by − cy) + 0

ax − cz bz − cz −(az − cz) − (bz − cz) + 0

n′ =

cx

cy

cz

It needs to be shown that the inverse T∆ of T−1∆

is of the form:

Page 49: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

5.1. AFFINE TRIANGLE TRANSFORMATION 37

m =

1 βx γx

1 βy γy

1 βz γz

n =

δx

δy

δz

Using properties of affine transformations, it can be shown that n =

−m′−1 · n′. Thus it is equivalent to prove:

T∆ ·

1

0

0

=

1

1

1

+ n =

1

1

1

− m′−1 · n′

This can be shown using the inverse of T∆:

1

0

0

= T−1

1

1

1

− m′−1 · n′

= m′ ·

1

1

1

− n′ + n′ =

1

0

0

This proof requires the existence of T∆ and it turns out that this inverse

does not always exist. The choice of q geometrically means to map the

normal Nunit = (0, 0, 1)T of the unit triangle to the point T−1∆

(Nunit) =

−(a− c)− (b− c)+ e1 + c. In fact the part −(a− c)− (b− c)+ c of this sum

lies in the triangle plane. Thus the triangle transformation does not exist if

the triangle normal is perpendiculer to e1, since then −(a−c)−(b−c)+e1+c

lies in the triangle plane too. This problem can be solved by choosing q in

such a way that one of the other two columns of m is (1, 1, 1)T . The n-th

column can be set to zero if q = −(a − c) − (b − c) + en. The proof of this

is analogous to above.

To store the minimized representation of the triangle transformation it

is necessary to save the number of the column that is equal to (1, 1, 1)T . But

this can simply be encoded in 2 bits.

Furthermore a criteria is required that chooses the column to be set to

(1, 1, 1)T . But this is quite simple, since n is optimal if the normal Nunit

is mapped to a point as far away from the triangle as possible. Thus n is

choosen such that the angle between en and the normal of the triangle ∆ is

minimal.

Page 50: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

38 CHAPTER 5. TRIANGLE INTERSECTION

5.1.2 Normal Consistent Triangle Transformation

A different possibility is to choose q in such a way that the normalized

normal N = (a− c)× (b− c)/|(a− c)× (b− c)| of the triangle is mapped to

the normal of the unit triangle.

T−1∆

(Nunit) = T−1∆

0

0

1

= N

The solution to T−1∆

looks like:

m′ =

ax − cx bx − cx Nx

ay − cy by − cy Ny

az − cz bz − cz Nz

n′ =

cx

cy

cz

The transformation T−1∆

is completely defined and the inversion of T−1∆

yields again an affine transformation if the triangle is not degenerate. Thus

T∆ exists for each not degenerate triangle ∆.

5.2 Unit Triangle Intersection

To intersect a ray R = (org, dir) with a triangle ∆ the ray R is trans-

formed using T∆ to the unit triangle space. The intersection distance λ and

the barycentric (u,v)-coordinates do not change under an arbitrary bijective

affine transformation. As the triangle transformation is bijective for not de-

generate triangles, it is equivalent to compute the ray-triangle intersection

in the world coordinate system between R and ∆, or in the unit triangle co-

ordinate system between the transformed ray R′ and ∆unit. The advantage

of the second method, is that the intersection computation of an ray with

the unit triangle is quite simple, since the unit triangle lies in the xy-plane.

Let R′ = T∆(R) = T∆(org, dir) = (m · org + n, m · dir) = (org′, dir′) be

the ray transformed to the unit triangle space, then the intersection can be

computed by:

Page 51: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

5.2. UNIT TRIANGLE INTERSECTION 39

λ = −org′zdir′z

u = λ · dir′x + org′x

v = λ · dir′y + org′y

The hit-point lies in the triangle, if the so called in-triangle test u ≥

0 ∧ v ≥ 0 ∧ u + v ≤ 1 is fulfilled and has the barycentric triangle

coordinates (u, v, 1 − u − v).

If the second triangle transformation that maps the geometry normal

of the triangle to the normal of the unit triangle is used, it is possible to

compute the dot product between the ray direction and the triangle normal

in both coordinate systems. In the unit triangle system the computation is

extremely simple:

dir′ ·

0

0

1

= dir′z

Thus the z-component of the transformed ray direction, is the dot-

product between the ray direction and the geometry normal of the triangle.

If the ray direction of R was normalized, then dir′z is exactly the cosine

between the ray direction and the normal vector.

It is not obvious to see that the dot product is maintained under the unit

triangle transformation, but this special transformation has this property as

it can be written as:

T∆ = Txy ◦ TR ◦ TT

The transformation TT is a translation that maps the triangle edge point

c to (0, 0, 0). The rotation TR rotates the triangle to the xy-plane and the

last transformation Txy is a composition of transformations that maps the

triangle in the xy-plane to the correct form. This last transformation does

not change the z-component of its input vector.

The translation and rotation does not change any angle nor length and

the transformation Txy does not change the result of the dot product with

the normal vector (0, 0, 1) as the transformation is perpendicular to the

Page 52: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

40 CHAPTER 5. TRIANGLE INTERSECTION

normal. Thus the complete triangle transformation does not change the dot

product. Note that because the last transformation Txy changes the length

of the vectors the angle between the ray direction and the normal is not

maintained by the triangle transformation, only the dot product.

The described method can be used to compute the cosine between the

ray direction and triangle normal only if the direction of the initial ray is

normalized. Thus in conjunction with the dynamic ray tracing algorithm

the only transformations that can be used to instantiate objects are compo-

sitions of translation and rotation matrices, as otherwise the length of the

direction is changed.

Of course this concept to transform the ray first and then to intersect

with a unit object can be applied to many other types of objects like ellipses

or rectangles too. An advantage is that only one representation is required

for a wide range of objects, as the transformation to the unit object is

described by an affine transformation in each case. Additionally only the

type of the object has to be stored, to call the correct unit intersection

function.

A drawback of this triangle intersection method is that the triangle ma-

trix depends on each of the edge points of the triangle. Thus because of

computation accuracy rays can be shot through two triangles that lie beside

each other and have two vertices in common. This problem can be solved by

using a small epsilon in the comparisons of the in-triangle test. Nevertheless

most triangle intersection methods suffer from this problem.

Page 53: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 6

The Dynamic SaarCOR

Architecture

The architecture presented in this Section is a general approach for a dy-

namic ray tracing hardware architecture which has many aspects in common

with the standard SaarCOR architecture [8]. A main difference is that the

Dynamic SaarCOR Architecture supports dynamic scenes but the standard

SaarCOR architecture not.

Dynamics is achieved by partitioning the scene into movable objects as

described in Section 4. The geometry in the objects remains static but the

objects themselves can be moved around. This requires the rebuilding of

a top-level acceleration structure over the objects in each frame, if some

objects have been moved. The architecture gives no hardware support to

rebuild the top-level acceleration structure, as this is sufficiently possible

using the host PC, if the number of objects is less than 50000.

Hardware support is given for the triangle intersection, traversal through

the dynamic 2-level acceleration structure and the shading computation as

these are the most expensive operations. To support this a costly affine

ray transformation unit to transform rays to the local coordinate system of

an object is required. Because this unit is almost of the same complexity

as a standard triangle intersection unit a naive approach would double the

required chip area. But using the special unit triangle intersection method

as described in Section 5, it is possible to share the transformation unit for

two purposes. Furthermore the shader can use the transformation unit to

perform the primary or secondary ray computation.

41

Page 54: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

42 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

The reasons why the special triangle intersection method is used, is to

share the transformation unit mainly for the object space transformation

and the triangle intersection. On principle, it would be possible, to separate

the transformation and intersection using two independent units. But this

has some disadvantages because the transformation unit would be used only

20% of time if it would by fully pipelined. A lot of computational power

is wasted this way. Increasing the usage of the transformation unit would

be possible if the operation is done sequentially, such that approximately

5 cycles are required per ray transformation. But then the transformation

could slow down the complete pipeline, if at some parts of the scene it is

used much more frequently. This slowing down is a typical behavior if too

many special purpose units are used in the design.

To exploit coherence between neighboring rays the architecture handles

packets of rays as described in Section 3.1.3. By doing so data is always

accessed for a packet of rays reducing the size of the memory interface.

At a given time there are always several independent packets in the ray

tracing system to increase the usage of the units. This is necessary as the

special purpose pipelines needed for the computation are fairly deep. On the

other hand, memory latency can be hidden since during a memory request

of one packet, the other packets can do operations in the chip.

Because each packet can be seen as a single thread running in the system

this concept is a kind of multi-threading. Each packet corresponds to a

complete data-set in the chip, consisting of near and far value, stacks and

other required internal data. In order to guarantee that each packet accesses

only its data-set, a unique packet-id (pid) identifies it and is used to address

the correct data-set. This packet-id is passed from unit to unit, as a kind

of job-passing. If the traversal unit reaches a leaf node for instance, the

packet-id is delivered to a different unit that handles the list of objects.

A very important topic in ray tracing is the shading computation. Due to

the variety of possible shading models, the corresponding shading hardware

should be a fully programmable special purpose CPU. As shading is out of

the scope of this thesis shading will be marginally mentioned only.

The Dynamic Ray Tracing Architecture (see Fig. 6.1) consits of one or

more Dynamic Ray Tracing Pipelines (DynRTP) which are subdivided to

a Ray Generation and Shading unit (RGS) and the Dynamic Ray Tracing

Core (DynRTC). The main task of the RGS unit is to do the shading com-

Page 55: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.1. DYNAMIC RAY TRACING CORE 43

Figure 6.1: Dynamic Ray Tracing Architecture

putations, using the Dynamic Ray Tracing Core (DynRTC) to shoot rays

through the scene, and to compute primary rays.

The Dynamic Ray Tracing Core consists of four main parts. First there

is the traversal unit that traverses a packet of rays through the acceleration

structure. The lists of objects of the acceleration structure are handled by

the list unit. The transformation unit applies an affine transformation to a

packet of rays and the intersection unit intersects rays with the unit triangle.

The Ray Generation Controller tells the DynRTP units which pixels

to render next. The scene data as well as some other configuration data

(camera position, acceleration structure, etc.) are sent through a PCI or

AGP interface to the chip. Each Dynamic Ray Tracing pipeline has access

to the scene data through a cache interface. This cache interface consists of

four independent caches for each type of data that is used.

6.1 Dynamic Ray Tracing Core

The ray tracing core is the basic ray casting unit of the architecture. Thus

it is responsible for tracing packets of rays through the scene and returning

the information in the object that was hit. As a fundamental concept of the

dynamic ray tracing approach is the partitioning of the scene into movable

objects, the dynamic ray tracing core has to traverse the packet through a

Page 56: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

44 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

top-level acceleration structure to find a possible hit-object and then trans-

form it to the local coordinate system of that object. There the traversal

needs to be continued to find a possible hit-triangle.

The Dynamic Ray Tracing Core is used by the shader unit (RGS) to

shoot rays through the scene. To do so the shader first needs to initialize

the dynamic ray tracing core by sending the k-D tree root node for the

next packet and the transformation to apply first. For a primary ray, this

transformation is a simple camera transformation. After that, the shader

sends the packet of rays in sequence to the pipeline. It always passes the

transformation unit first, which applies the stored transformation to it.

Because the transformed ray has to traverse through the scene it is saved

in the traversal and transformation unit for later use. The traversal unit

starts the top-level traversal of the packet until a leaf node is reached. It

sends the list of objects, saved in the leaf node, to the list unit which has

the task to handle the list. Thus it reads the first list entry out of the list

and sends it to the transformation unit. This one fetches the object, stores

the object’s root node into the traversal unit and applies the stored inverse

object transformation to the packet of rays. At this point the inverse of the

object transformation is required, since we do not position the object, but

transform the ray into the object.

The transformed ray is now in the local coordinate system of the object

and is saved in the traversal and transformation unit. The traversal starts

with the bottom-level traversal in the object with the transformed ray until

a leaf node is reached. The list unit handles the list again but the trans-

formation unit now reads unit triangle matrices out of memory and applies

these transformations to the packet.

The packet transformed to the unit triangle space is intersected with the

unit triangle by the intersection unit. The intersection result is stored in

the traversal unit which in particular needs the hit-distance to compute the

ray termination correctly. If the list of triangles was empty, the operation

is continued at the list unit or otherwise at the traversal unit.

6.1.1 Traversal Unit

The traversal unit traverses packets of rays in parallel through the scene.

This is done using a k-D tree and k-D tree traversal algorithm as explained

in the Sections 3.1.2 and 3.1.3.

Page 57: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.1. DYNAMIC RAY TRACING CORE 45

The traversal unit consists of a memory interface, to load k-D tree nodes,

and a special purpose pipeline. This one is internally subdivided into some

traversal slices to handle the single rays of the packet in parallel. In each

pass through the pipeline a packet traversal step is computed.

Figure 6.2: The Figure shows the traversal unit consisting of the memoryinterface, 4 traversal slices, a packet traversal decision unit and the collecthits unit. For each of the units the necessary internal data is shown.

Figure 6.2 shows the internal structure of the traversal unit. The opera-

tion always starts at the memory interface which fetches the next or first k-D

tree node out of memory. If this node was a leaf then the packet together

with the list address is sent to the list unit to compute intersection results.

Otherwise the node is sent to the traversal slices which compute a traversal

decision for each of the rays in the packet. These single traversal decisions

are combined into a packet traversal decision by the packet traversal deci-

sion unit. The packet traversal decision is sent to the memory interface and

back to the traversal slices as these have to do stack operations depending

on it. Using the packet traversal decision the memory interface can fetch

the next node to process and do push/pop operations of the nodes.

Because the memory interface is responsible for the computation of the

Page 58: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

46 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

node addresses it saves the current node and handles the node stack. In

contrast because the traversal slices compute the traversal decision for a ray

they need to store and update the near and far values, the ray and handle

the far-stack needed for the computations.

The collect hits unit computes the closest intersection for each ray of

the packet. If this unit gets a new intersection result, it determines whether

the new hit-distance is closer than the one saved. If so, the new intersection

result is saved and the one stored is deleted. The intersection result typically

consists of the hit-distance, hit-object and hit-triangle. Because the local

barycentric uv-coordinates of the hit-point are required to support textures

they need to be saved as intersection result too. As the special unit triangle

intersection method is used, the cosine between ray direction and triangle

normal can be computed for free. Therefore it is saved as intersection result

for later usage in the shader.

An important point is that the collect hits unit gives the traversal slices

access to the current hit-distance of their ray of the packet. Using this

information the traversal slices can terminate a ray. A ray is terminated if

there is a hit closer than the far value of the leaf node, where the hit occured.

As the traversal unit terminates the ray at the next traversal step the hit-

distance is compared against the current near value. If it is before the near

value each further hit would be farther away than the stored one. If each

ray of the packet is finished or the stack is empty the traversal operation is

finished.

6.1.2 Mailboxed List Unit

The mailboxed list unit has the task of handling a list of object or triangle

addresses, filtering the addresses in a kind of intersection cache (mailbox)

and sending the passed addresses to the transformation unit.

This mailboxing is necessary as most objects are present in several leaf

nodes of the k-D tree. Therefore it can happen that an object is intersected

several times which greatly reduces the performance (see Section 4.3). Espe-

cially the room problem decreases the performance. Therefore it is required

to avoid multiple intersections with objects and triangles. This is the task

of the mailbox unit, which saves already intersected objects in slots and

preserves packets to be intersected twice with an object.

The list unit gets a job from the traversal unit consisting of a single

Page 59: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.1. DYNAMIC RAY TRACING CORE 47

Figure 6.3: Mailboxed List Unit

address of the list to handle. The first entry of the list is read and sent to

the mailbox unit. This one is a packet based mailbox which checks if the

packet has already been intersected with this object. If so control is returned

to the list unit to read the next list entry or to continue at the traversal unit

if this was the last list entry. If the list entry was not yet intersected, it is

sent to the transformation unit to be intersected.

The operation at the list unit is continued if a triangle intersection or

object intersection operation is done and the list was not empty. If the list

was empty the traversal operation is continued.

6.1.3 Transformation Unit

An essential part of the algorithm is the ray transformation which is done

by a specialized transformation unit. This unit performs the transformation

of the rays to the object’s coordinate system and transforms the rays to

the unit triangle system as a kind of precomputation for the intersection

unit. Furthermore the shader can use the transformation unit to apply the

camera transformation to compute a primary ray and to compute secondary

rays like light rays or reflection rays. The transformation of a packet is done

sequentially, which allows for a good balancing between the traversal unit

and the transformation unit (see Section 6.1.5).

Because most ray packets have a single ray origin, this origin needs to

be transformed only once. The transformation unit exploits this property

Page 60: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

48 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

by a kind of packet compression that transforms a packet of n rays into

n + 1 vectors. The first vector is the common ray origin and the other

ones the direction vectors of the packet. Such a compressed packet can be

transformed by a fairly cheap transformation unit for vectors and decoded

to a normal packet of rays by a decompression unit.

Figure 6.4: Transformation Unit

A transformation job starts at the load matrix unit which reads the ma-

trix of an object or triangle column by column out of memory and stores

them in the transform unit. If the matrix was completely read, the send

packet unit gets the job. This unit has a copy of the rays of the packet to

process and sends these to the compress packet unit. This unit compresses

the packet and sends the vectors and points to be transformed sequentially

to the transform unit. This unit applies the previously stored affine trans-

formation to its input vectors. Finally, the packet is combined into a valid

packet again by the decompress packet unit.

Page 61: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.1. DYNAMIC RAY TRACING CORE 49

There is an important path of the transformed packet to the send packet

unit. This path is needed if a packet was transformed to the local coordinate

system of an object, because then the transformed ray needs to be saved to

be intersected with the triangles in the object later.

There exist two modes for the transformation, one to transform points

and a different one to transform vectors. This is important as both have to

be transformed differently as explained in Section 4.4. Furthermore, there

exist two compression modes that indicate whether the packet has a common

origin or not. If so the packet is compressed. Otherwise, each origin and

direction of the packet is transformed, resulting in 2n transformations. The

compression mode is set by the shader, as it has the necessary information

about the type of the packet.

Figure 6.5: The Figure shows that primary rays as well as light rays aretypes of packets with a single origin. Even reflections at planar surfacesmaintain this property, as the virtual origin can be seen as the commonorigin of the packet.

It figures out that most kinds of packets can be compressed (see Figure

6.5). Packets of primary rays are trivially compressable, since their origin

is the projection center of the camera. Light rays that shoot from the light

source to the hit-points have a common light source origin. Even reflected

packets of rays retain their single origin if the packet was reflected by exactly

one planar surface. The reflection at curved surfaces yields a compressable

packet only in special cases.

6.1.4 Intersection Unit

The intersection unit is a simple pipeline that intersects rays with the unit

triangle, applying the formulas of Section 5.2. As inputs it gets rays trans-

Page 62: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

50 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

formed to the unit triangle space and computes an intersection result consist-

ing of the hit-distance, barycentric coordinates and the dot product between

the ray direction and the triangle normal vector. This intersection result is

combined with the hit-object and hit-triangle and then saved in the collect

hits unit of the traversal.

6.1.5 Balancing

The subdivision of an algorithm into special purpose units may become a

problem if the units are too special and used very rarely. Thus the balancing

between the individual units of the dynamic ray tracing core need to be

analysed.

The most expensive units of the design are the traversal unit and the

transformation unit. Simulations showed that a balancing of 4 to 1 between

the traversal and intersection operation is optimal for the k-D tree algorithm

[8]. The same ratio can be used for the ratio between the traversal and the

transformation unit too, which means that 4 times more traversal operations

as ray transformations need to be done.

This ratio can approximately be achieved using a packet size of 4 rays per

packet, which are traversed in parallel and transformed sequentially. Thus

the transformation unit requires five times more cycles to handle a packet

than the traversal unit if the packet can be compressed. Thus we have a

ratio of 5 to 1 if the packet can be compressed, or 8 to 1, otherwise. This

ratio of 5 to 1 has been shown to be optimal for the dynamic architecture,

as can be seen in the usage statistics in Appendix A.

6.2 Shading Unit

The shading unit should consist of several programmable special purpose

shading CPUs, because of the wide range of possible shading models. This

concept of the programmable shading unit will not be discussed, but rather

the interface between the shader unit and the Dynamic RTC.

This interface consists (besides a channel to send the k-D tree root node)

of a channel to store a transformation in the RTC. Because this stored

transformation is always applied to the packet sent to the ray tracing core,

the shader can compute primary rays, light rays or reflection rays, using

the transformation unit. Each of these computations can be performed by

Page 63: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.2. SHADING UNIT 51

storing a suitable transformation in the RTC and by sending a special ray

to be transformed. If all rays of the packet have been transformed, the RTC

starts with the traversal operation.

6.2.1 Primary Rays

Primary rays are rays from the camera to the scene, which are computed for

each pixel of the image. A camera can be represented by three orthogonal

vectors u, v, w and its position p. The vectors u, v and w define the local

coordinate system of the camera, such that u shows to the right, v to the

top and w in the viewing direction of the camera. To a pixel (x,y) on the

screen belongs the primary ray:

x′ =x

xmax−

1

2y′ =

y

ymax−

1

2

prim ray = (p , x′ · u + y′ · v + w)

This primary ray can also be computed by the following ray transforma-

tion:

Tshear =

1xmax

0 −12

0

0 1ymax

−12

0

0 0 1 0

Tc =

ux vx wx px

uy vy wy py

uz vz wz pz

pre prim ray =

0

0

0

,

x

y

1

prim ray = Tc(Tshear(pre prim ray))

The shown 4x3 matrices represent affine transformations where the left

3x3 minor stands for the linear part and the fourth column for the affine part.

The transformation Tshear is a shearing transformation that performs the

mapping of the pixel coordinates to the x′ and y′ values. The transformation

Tc performs the affine composition of the u, v, w and p vectors with the x′, y′

values. If the special ray pre prim ray is transformed first with Tshear and

Page 64: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

52 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

then with Tc, the primary ray computation is performed.

Thus the RGS unit stores the camera matrix Tc ◦ Tshear as a transfor-

mation to the RTC and sends the pre-primary rays pre prim ray to it.

6.2.2 Light Rays

Light rays are secondary rays that are computed to determine the amount

of light that illuminates the hit-point of a primary ray for instance. Such a

light ray goes from the light source to the hit-point of the primary ray.

To compute a light ray for a primary ray, the shader has to read back the

primary ray R = (org, dir) and the intersection result from the RGC. The

intersection result consists among other things of the hit-distance λ which

is needed to compute the hit-point R(λ). If L is the position of the light

source, the light ray can be computed by:

Rlight = (L, R(λ) − L) = (L, org + λ · dir − L)

The same computation can be done by the following ray transformation:

Tlight =

orgx dirx Lx Lx

orgy diry Ly Ly

orgz dirz Lz Lz

R′ =

0

0

0

,

1

λ

−1

The transformation of the ray R′ by Tlight yields the light ray from the

light source to the hit-point of the ray. Note that because this transformation

Tlight depends on the ray R the shader has to load a special matix for each

of the rays of the packet. Furthermore the real hit-point of the ray does not

need to be computed in the shader.

6.2.3 Reflection Rays

Reflection rays are computed to simulate reflective surfaces. Thus a ray

that hits a reflective surface is reflected by it and traversed further into the

Page 65: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

6.2. SHADING UNIT 53

reflection direction. The geometry the reflected ray hits, is exactly what is

seen through the reflective surface.

The reflection of a ray at a planar surface can be performed by an affine

reflection transformation. Such a reflection transformation can be precom-

puted for each triangle of the scene using the normal consisting triangle

transformation. The concept is to transform the ray first to the unit trian-

gle space, then to reflect it at the xy-plane and to transform it back again.

This precomputation can be done by the following composition of 3 affine

transformations:

Treflect = T−1∆

1 0 0 0

0 1 0 0

0 0 −1 0

◦ T∆

This reflection transformation depends on the triangle and maps each

ray to the reflected ray. The reflected ray starts at the reflected origin and

has the reflected ray direction as can be seen in Figure 6.6. To use a ray

reflected this way, the traversal of the reflected ray has to start at the hit-

distance of the unreflected ray. This can be done by setting the near value

of the traversal algorithm to the hit-distance of it and ignoring each hit that

is closer than this distance.

Page 66: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

54 CHAPTER 6. THE DYNAMIC SAARCOR ARCHITECTURE

If the triangle lies in an object (which is always the case for the dynamic

ray tracing algorithm) two additional transformations have to be done. First

the ray has to be transformed into the object coordinate system, then to be

reflected, and at last to be transformed back again to the world coordinate

system. These additional transformations increase the cost of a reflection

ray, but can be performed in 3 passes by the transformation unit as well.

Figure 6.6: The Figure shows how the reflection matrix reflects a packet ofrays at a surface.

Page 67: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 7

FPGA Prototype

In this Section the prototype implementation of the dynamic ray tracing

architecture is described. As development platform the ADM-XRC-II PCI

board from Alpha Data [30] has been used. This board contains a Xilinx

Virtex-II 6000-4 [31] FPGA, 6 SRAM chips each with 4 MB of memory, a

PCI controller and some IO-adapters.

Figure 7.1: ADMXRC DevelopmentPlatform

Figure 7.2: ADMXRC Top-LevelFlowchart

These IO-adapters are used as a VGA-out interface by generating a dig-

ital RGB-signal in the chip which is translated by an external digital-to-

analog converter to an analog video signal.

My work on the prototype was the development of the dynamic ray trac-

ing core which has been completely developed using JHDL [32] as hardware

55

Page 68: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

56 CHAPTER 7. FPGA PROTOTYPE

description language. JHDL has been used as it has a powerful debugging

infrastructure that allows the simulation of the complete RTC at one part

and to log data buses into files. The system was completely developed under

Linux.

Some limitation had to be done mapping the architecture to the Xilinx

Virtex-II 6000 FPGA. Unfortunately there were only enough resources to

implement one ray tracing pipeline. The main problem was the strongly

limited memory resources (blockrams) in the chip.

Another limitation was the dedicated multipliers of the Virtex-II plat-

form which are only 18 bits wide. Thus a floating point representation with

a 16 bit mantisse size, 7-bit exponent and 1 sign-bit is used. It turned out

that this accuracy is sufficient to do ray tracing even for complex and highly

detailed standard scenes.

The number of packets in the ray tracing chip can be adjusted from 1 to

64 packets for simulation purposes. Later it is shown that a number of 32

packets in the system is in some sense optimal.

Because the prototype is not capable of rebuilding the top-level k-D tree

on the chip it has to be computed by the host PC the PCI-card is connected

to. After each frame, the updated top-level k-D tree is written to the ray

tracing prototype.

Figure 7.3: The Figure shows the Dynamic SaarCOR Prototype Top-LevelChart. The numbers at the busses are the used data and address bits.

The traversal unit is subdivided into 4 traversal slices as packets of 4

rays per packet are handled in parallel. The two traversal levels (top-level

Page 69: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

57

and bottom-level) are done by using an internal depth bit. This bit is 0 in

the top-level operation and 1 in the bottom-level operation. Some of the

internal registers need to be duplicated for both traversal levels, since they

are more or less unrelated. Because even the stack is duplicated both the

top-level and bottom-level operations support a stack depth of 31 entries. If

one of the stacks is full the traversal operation cannot be continued correctly.

This problem can partially be solved by doing no further push operations

and continuing the traversal operation. This strategy works quite well, as

errors occur only in tiny details of the scene.

The traversal unit works on k-D tree nodes of 64 bit width. Thus a 64

bit wide memory interface is required, delivering a bandwidth of 0.68 GB/s

at 85 MHz.

The list unit reads 19 bit wide addresses out of a list and is one of the

most trivial units of the design, as it mainly consists of an address counter.

A special bit marks the last list entry.

The mailbox unit is implemented as a mailbox with 8 slots. Each time

an object is handled which is not already present in the mailbox, it is saved

into an empty slot. Because no strategy is implemented to clear the slots

again a full mailbox stays full. This simple mailbox has been very efficient

in the prototype. It is used at the top-level and bottom-level, thus works

for objects and triangles.

The transformation unit can store an affine transformation for each

packet in the system. This strategy is wasteful, but allows transforma-

tions to be read out of memory independently of the transformation, which

simplified the low level design.

The object and triangle transformations are represented by a 4x3 matrix

and only normal consistent triangle matrices that map the triangle normal to

the unit triangle normal are used. Thus the cosine between the ray direction

and triangle normal can be computed in the intersection unit.

The memory interface consists of three caches: one for the k-D tree

nodes, one for the lists and one for the matrices. The FPGA has access to

six 32 bit wide SRAM chips with a 20 bit address space. Three of these

SRAM chips are used by the ray tracing core. The matrix columns are

mapped to all three SRAMS, the 64 bit wide nodes to two of the SRAMS

and the 32 bit wide list entries to one SRAM as shown in Figure 6.1.

Thus the prototype has the following limitations for the scene size. The

Page 70: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

58 CHAPTER 7. FPGA PROTOTYPE

maximum number of k-D tree nodes as well as the number of list entries is

limited to 524288 nodes. Triangles and/or objects can be 131072 in total.

Note, that it is possible to support scenes with more than 131072 triangles if

using objects and instantiating the same object several times. Thus scenes

with several billions of triangles can be visualized.

The used small direct mapped caches (see table 7.1) showed to be suf-

ficient for a wide range of scenes. The cache size can be adjusted in 10

steps from 20 to 29 cache lines for simulation purposes. The use of a direct

mapped cache (as opposed to a 2-way cache for instance) was caused by

the coarse internal granulation of the memory blocks of the FPGA to 2 kB

blocks.

Unit Cache

Traversal 4 kBList 2 kBTransformation 6 kB

Total 12 kB

Table 7.1: Maximum Cache Sizes per Unit (without index structure)

The prototype shader is a simple eye light shading pipeline that uses

a color per triangle and the cosine between the ray direction and triangle

normal which is computed by the RTC. Light rays and reflection rays are

supported in the latest version too. The standard resolution of the prototype

is 512x384.

To increase the cache hit rate, the RGC unit performs no scanline ray

generation, but uses a kind of hardware optimized hilbert curve. Computing

the image line by line results in bad cache hit rates, as the 2D image space

is not scanned locally. If there is a triangle on the left of the image, it

is very probable that it no longer is in the cache if the complete line is

finished. Therefore it is important to work locally on the image like the

hilbert curve does. But this is not suitable to be computed in hardware as

it is too complicated.

Page 71: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

59

Figure 7.4: Figure (a) shows the recursive pattern that is used to computethe hardware optimized hilbert curve in Figure (b).

The curve used in the prototype can be efficiently computed in hardware

but fulfills the same purpose as the hilbert curve. The curve is computed by a

simple counter whose destination bits are interpreted as . . . y3x3y2x2y1x1y0x0.

The coordinates (x[3 : 0], y[3 : 0]) generate a curve like in Figure 7.4.

By using this curve to generate primary rays the cache hit rate is in-

creased by approximately 10% to 20%, especially for the list and matrix

cache (see Figure 7.5).

0

20

40

60

80

100

0 100 200 300 400 500 600

Hitrate

Cachelines

Scene Gael

TraversalList

Transformation 0

20

40

60

80

100

0 100 200 300 400 500 600

Hitrate

Cachelines

Scene Gael

TraversalList

Transformation

Figure 7.5: Both figures show the Cache hit rate depending on the numberof cache lines, once with scanline on the left and the hardware optimizedhilbert curve on the right.

Page 72: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

60 CHAPTER 7. FPGA PROTOTYPE

7.1 Implementation Statistics

In this Section some statistics about the complexity of the ray tracing proto-

type are given. The presented numbers are in each case worst case numbers

that are computed out of some statistics of the Xilinx routing software.

7.1.1 Gate Count

The complexity of hardware circuits is usually measured in number of gates.

This gate count tells how many NAND gates are necessary to implement the

circuit. In the following Sections gate counts are stated for the prototype,

which are computed using the following mapping.

Unit gate count

full adder 9D flip-flop 6D flip-flop with clock enable 84-input LUT 1 to 93-input LUT 1 to 6memory bit 4

Table 7.2: Gate Count Computation

The source of this data is the Xilinx application note XAPP059 [33].

In addition dual port memory bits are counted as two single port memory

bits and the embedded 18-bit multipliers with 7000 gates per unit. In the

computations the worst case gate count for the LUTs are used and gates

necessary to address the memory bits are ignored.

Page 73: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

7.1. IMPLEMENTATION STATISTICS 61

7.1.2 Complexity

The table 7.3 lists the complexity of one ray tracing pipeline measured in the

number of floating-point units for addition, multiplication, division and com-

parison, respectively. The rightmost column additionally lists the amount of

internal memory each unit uses to store ray-data, stacks and further needed

internal data.

Unit Add Mul Div Comp Mem

Traversal 4 0 4 13 44.5 kBList 0 0 0 0 0.8 kBTransformation 9 9 0 0 9.3 kBIntersection 3 2 1 3 0.0 kBCache (with index structure) 0 0 0 0 15.6 kB

Total 16 11 5 16 70.2 kB

Table 7.3: Complexity of one ray tracing pipeline with 32 packets and 512cache lines (dual port memory bits counted as 2 bits)

DynamicRTC logicgates

bits perpacket

memorybits

memorygates

DynamicRTC 21,338 0 0 0Traversal 8,470 0 0 0TraversalMemoryInterface 5,060 1,292 41,344 165,376TraversalStackPointer 2,568 12 384 1,536TraversalSlice0 43,107 2,352 75,264 301,056TraversalSlice1 43,107 2,352 75,264 301,056TraversalSlice2 43,107 2,352 75,264 301,056TraversalSlice3 43,107 2,352 75,264 301,056PacketTraversalDecision 309 0 0 0CollectHits 4,155 688 22,016 88,064List 2,743 76 2,432 9,728Mailbox 7,108 136 4,352 17,408LoadObject 4,557 19 608 2,432SendPacket 2,262 1,152 36,864 147,456PacketEncoder 1,316 0 0 0Transformation 148,040 1,152 36,864 147,456PacketDecoder 694 72 2,304 9,216Intersection 105,972 0 0 0

Total 487,020 14,007 448,224 1,792,896

Table 7.4: Gate Count and Memory Bits per Unit using 32 Packets

Table 7.4 shows the estimated number of gates for each of the units of

Page 74: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

62 CHAPTER 7. FPGA PROTOTYPE

MemoryInterface logicgates

bits percacheline

cachememorybits

cachememorygates

MemoryInterface 4,323 0 0 0NodeCache 4,152 83 42,496 169,984ListCache 3,704 51 26,112 104,448MatrixCache 5,624 115 58,880 235,520

Total 17,803 249 127,488 509,952

Total gates 2,807,671

Table 7.5: Gate Count and Memory Bits per Unit using 512 Cache Lines

the design. Further it shows the number of memory bits required per packet

in the system as well as the required memory gates for the on chip memory

for a system with 32 packets. Table 7.5 shows the gate count of the memory

interface and caches, as well as the number of bits required per cache line.

A system with 512 cache lines and 32 packets requires at most a number of

2,807,671 gates.

If P is the number of packets in the system and CL the number of cache

lines, then the gate count CRTC for the complete Dynamic RTC can be

estimated by the following formula:

CRTC = 487, 020 + 56, 028 · P + 996 · CL

The necessary internal memory bits can be computed by:

BitsRTC = 14, 007 · P + 249 · CL

Page 75: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

7.2. PERFORMANCE STATISTICS 63

7.2 Performance Statistics

This Section discusses the performance achieved with the ray tracing proto-

type. On the one hand the maximal performance is shown as well as some

analysis to estimate the quality of the design. These quality estimates are

based on gate level computations, thus only of interest for a mapping to an

ASIC, not for an FPGA.

The Section describes several kinds of statistics that are listed in Ap-

pendix A for 4 test scenes.

7.2.1 Hardware Quality Index

It is easy to develop arithmetic units in hardware, but to feed these units is

very difficult. To feed them on-chip memory in the form of registers stacks

and caches is required. This on-chip memory is necessary but most of its

gates are idle during the computations in contrast to the arithmetic units.

Thus the definition of the following hardware quality index QHW describes

the percentage of gates that are working in the chip.

QHW =UAU · CAU

CAU + CIM

· 100

The value UAU is the usage ratio of the arithmetic units and CAU the

cost of them in gates. Analogous CIM is the cost of the internal memory in

gates.

The hardware quality index can be used to compare two different versions

of the same hardware algorithm. The version with the higher quality index

is to be preferred, as it uses the gates more efficiently. Optimal system

parameters, such as cache size and the number of internal packets, can be

computed using this index.

Figure 7.6 shows the hardware quality index dependent on the number

of packets in the system for two scenes. The best gate usage of about 9.5%

can be achieved with a number of 32 packets in the system.

This means that it is more efficient to put several ray tracing pipelines

with 32 packets onto the chip than a smaller number of pipelines with more

than 32 packets. Because the same yields in the other direction it is better

to use 32 packets than more units with a smaller number of them.

The computed maximum is not optimal for an FPGA architecture as

Page 76: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

64 CHAPTER 7. FPGA PROTOTYPE

0

1

2

3

4

5

6

7

8

9

10

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene Gael, 512x384, 85 MHz

Hardware Quality Index 0

1

2

3

4

5

6

7

8

9

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene Conference, 512x384, 85 MHz

Hardware Quality Index

Figure 7.6: This Figure shows the Hardware Quality Index of the DynamicRay Tracing Core for the scene Gael and Conference dependent on the num-ber of packets in the system.

there the cost should not be counted in gates. This is because todays FPGAs

consist (beside CLBs) of some special resources like blockrams and multiplier

blocks. Thus memory can be much cheaper if these memory blocks can be

used efficiently by the design.

The optimal values for several system parameters depend on each other.

Thus for the ray tracing architecture it is required to take into account

the available memory bandwidth, memory latency and delay, cache size,

packets in the system, pipeline depth of the internal pipelines and the kind

of scene to be handled efficiently. Therefore, in practice it is difficult to build

the perfect system, but using the described index it is possible to compare

different configurations of the hardware.

7.2.2 Graphics Hardware Quality Index

The hardware quality index described in the last Chapter has the disad-

vantage that it makes no statement about the quality of the ray tracing

algorithm used, only whether the algorithm is computed efficiently.

But in fact a different ray tracing algorithm might require less traversal

steps to achieve the same result, but much more sleeping memory resources.

Nevertheless it could be the better choice. The following graphics hardware

quality index QGHW can be used to compare different kinds of ray trac-

ing and rasterization hardware algorithms, since it takes into account the

performance in rays shot per cycle achieved by the algorithm.

QGHW =rays per cycle

CAU + CIM

· 1, 000, 000

Page 77: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

7.2. PERFORMANCE STATISTICS 65

The index QGHW describes the number of rays a single gate of the circuit

can shoot in 1,000,000 clock cycles through the scene. For rasterization

hardware, the number of shot rays per cycle has to be replaced by the

number of pixels that are rendered per cycle.

0

0.002

0.004

0.006

0.008

0.01

0.012

0.014

0.016

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene Gael, 512x384, 85 MHz

Ray Tracing Quality Index 0

0.002

0.004

0.006

0.008

0.01

0.012

0.014

0.016

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene Conference, 512x384, 85 MHz

Ray Tracing Quality Index

Figure 7.7: This Figure shows the Graphics Hardware Quality Index of theDynamic Ray Tracing Core for the scene Gael and Conference dependenton the number of packets in the system.

Figure 7.7 shows the ray tracing quality of the prototype for two scenes.

The maximal quality is again achieved at a number of 32 packets in the

system. As the rays shot per cycle are proportional to the usage of the

arithmetic units, the hardware quality index and graphics hardware quality

index yield the maximum at the same position.

Unfortunately it is difficult to compute a fair quality index for todays

rasterization hardware, as these chips support many extra features besides

simple rasterization of triangles. But in general it can be said that for scenes

consisting of little triangles, the quality index for rasterization hardware will

be much higher. In contrast if considering scenes with several million of

triangles ray tracing will become more efficient at some point.

7.2.3 Usage

The usage of a unit is the percentage of cycles where it is working. This

usage can be computed for the 4 most important units of the design and it

directly corresponds to the achieved performance.

Therefore it is an important task to adjust the system parameters in such

a way that the usage is fairly high. The usage can be increased by using

more packets in the system to fill the pipeline stages, or by larger caches, to

prevent long wait cycles for memory requests. Both parameters have to be

Page 78: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

66 CHAPTER 7. FPGA PROTOTYPE

increased carefully, as too much internal memory may be a drawback too,

as the required gates compute nothing.

Figure 7.8 shows the usage of the individual units dependent on the

number of packets in the system. The usage increases with the number of

packets in the system as each packet can fill stages of the pipelines.

0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene Gael, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene Conference, 512x384, 85 MHz

TraversalList

TransformationIntersection

Figure 7.8: Usage of Units

There are several pipelines in the system that are separated by FIFO

queues (first in first out queues) and memory interfaces, and filled differently

by one packet. Thus a packet fills one pipeline stage in the traversal unit,

since the 4 rays of the packet are traversed in parallel, but normally 5 stages

in the transformation pipeline. This is because the rays of the packet are

transformed in sequence, which means first transforming the ray origin and

then the 4 ray directions.

It seems that the usage scales linearly in the number of packets in the

system. But this is only true if there are few packets in the system as the

number of total pipeline stages limits the linear scaling. Thus it is impossible

to increase the usage any more if the usage of one unit reaches nearly 100%.

Even the usage of the other units that is normally far below 100% cannot

be increased any more, as there is always a fixed ratio between the usage

values of the units for a given image.

The curves of Figure 7.8 approximate to the maximal theoretical usage

for each unit in the limit and there is a fixed factor between each 2 curves

that is independent of the number of packets in the system.

The frames per second dependent on the number of packets in the system,

directly corresponds to the usage of the single units. This is because the

usage of the units is proportional to the performance achieved.

Page 79: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

7.2. PERFORMANCE STATISTICS 67

0

5

10

15

20

25

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene Gael, 512x384, 85 MHz

fps 0

5

10

15

20

25

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene Conference, 512x384, 85 MHz

fps

Figure 7.9: Frame Rate

7.2.4 Cache Hit Rate

The cache hit rates are an important aspect of ray tracing hardware al-

gorithms, since the required bandwidth behind the caches determines the

number of parallel working units that can be connected to the available

memory interface.

0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene Gael, 512x384, 85 MHz

TraversalList

Transformation 0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene Conference, 512x384, 85 MHz

TraversalList

Transformation

Figure 7.10: Cache Hit Rate

Figure 7.10 shows the cache hit rate of the 3 types of caches dependent

on the number of cache lines for the Gael and Conference scenes. The size of

the required direct mapped caches is extremely low especially for the nodes.

This is because 4 cache lines are required to map a complete matrix but only

one to map a k-D tree node and because the coherence of k-D tree nodes at

the top of the k-D tree is much higher than for nodes at the bottom. This is

because the subspace a node at the top of the tree represents is much larger

than near its leaf nodes.

The cache hit rates for the triangle matrices is not satisfactory, but can be

improved using more advanced cache strategies. Thus 2-way or 4-way caches

Page 80: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

68 CHAPTER 7. FPGA PROTOTYPE

should achieve much better cache hit rates in an ASIC implementation of

the design.

7.2.5 Memory Bandwidth

One of the most critical points of most types of hardware is the memory

interface as it has to deliver the required bandwidth, otherwise the chip

cannot work to its limit.

One strategy that the ray tracing prototype uses to decrease the required

memory bandwidth is to traverse packets of rays in parallel. Here the k-D

tree nodes, list entries and matrices are fetched only once for 4 rays of a

packet. In spite of this optimization, the required memory bandwidth is

fairly high. Therefore it is necessary to use caches for each of the units in

the pipeline.

0

5

10

15

20

25

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene Gael, 512x384, 85 MHz

fps 0

5

10

15

20

25

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene Conference, 512x384, 85 MHz

fps

Figure 7.11: Achieved performance using 64 packets and 512 cache lines ifthe memory bandwidth is scaled by the memory clock ratio factor.

A point of interest is the memory bandwidth needed behind the caches,

which is analysed by Figure 7.11. The maximal memory bandwidth of the

RTC to the 3 SRAM chips, is 1.02 GB/s at 85 MHz. The Figure shows

how the performance drops if the memory bandwidth behind the caches is

reduced to the specified value. Note that for most scenes it is possible to use

4 ray tracing pipelines in parallel as a scaling of the memory bandwidth of 14

produces a drop in the performance of only about 20%. The conference scene

is a exception as the performance drops extremely if the memory bandwidth

is limited. This shows that larger or more efficient caches are required for

this scene.

The data of figure 7.11 can be used to compute a worst case frame

rate, if several parallel prototype RTCs together with their small caches are

Page 81: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

7.2. PERFORMANCE STATISTICS 69

connected to the 1.02 GB/s memory interface. For instance the performance

of two RTC units at the 1.02 GB/s memory interface is higher than twice the

performance that reaches one unit at a 0.5 GB/s memory interface. Figure

7.12 shows the possible performance if there would be the specified number

of pipelines working in parallel at the memory interface of 1.02 GB/s.

0

10

20

30

40

50

60

70

0 2 4 6 8 10 12 14 16

Frames per Second

RTC Units

Scalability, Scene Gael, 512x384, 85 MHz

fps 0

10

20

30

40

50

60

70

80

90

0 2 4 6 8 10 12 14 16Frames per Second

RTC Units

Scalability, Scene Conference, 512x384, 85 MHz

fps

Figure 7.12: Scalability

Page 82: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

70 CHAPTER 7. FPGA PROTOTYPE

7.2.6 Performance

The ray tracing prototype is able to achieve a real time performance of 10 to

30 frames per second for a wide range of scenes at a resolution of 512x384.

For a detailed overview of the reached performance for 4 test scenes see

Appendix A.

Dependent on the routing achieved by the Xilinx software maximal fre-

quencies of 85 to 92 MHz are possible. For the statistics in Appendix A and

the following performance values, the lower value of 85 MHz is used.

At a frequency of 85 MHz, the prototype has a floating point performance

of 4.08 billion flops, which when compared to todays rasterization hardware

is a fairly low value. The frequency of the prototype cannot be increased

much more because the used internal 18-bit wide multiplier blocks allow a

scaling to maximally 110 MHz.

Maximally 85 million packet traversal steps per second can be done,

which is equivalent to 340 million single ray traversal steps. The transfor-

mation unit can transform approximately 68 million rays per second (if the

packets are compressable) and consequently the same number of triangle

intersections can be done.

Page 83: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 8

Conclusion

This thesis has shown that creating a special purpose real-time hardware for

ray tracing is possible, even on FPGAs with their limited CLB and memory

resources. The used FPGA is not the best available today as there are

new FPGA chips with about 60% more CLBs and four times more memory

and multiplier blocks. Especially these memory and multiplier resources

have been the most limiting factor in the prototype. Thus using these new

FPGAs a ray tracing chip with two or four ray tracing pipelines should be

possible.

By mapping the architecture to an ASIC it would be possible to do ray

tracing at a resolution of 1024x768 in real-time, even if some secondary rays

are shot. This is as the capacity of todays high end ASICs is in the range of

52 million gates using a 0.095 µm silicon gate CMOS process. Since a ray

tracing pipeline requires 2.8 million gates, at most 18 ray tracing units could

be placed on the chip. But because programmable shaders are required, as

well as some larger caches to provide the parallel working units, a number of

8 ray tracing pipelines per ASIC would be realistic. In conjunction with an

increasing of the frequency to about 266 MHz, the performance of a high end

ASIC implementation would have about 20 times more performance than

the prototype.

Because the described hardware architecture supports structured motion

the scene has to be partitioned into movable objects. A main part of the

traversal algorithm for such partitioned scenes is to transform the ray to the

local coordinate system of the object to continue the traversal in it. This

operation requires an affine ray transformation unit, which is fairly costly.

71

Page 84: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

72 CHAPTER 8. CONCLUSION

To reduce the required floating point resources on the chip, this transforma-

tion unit is also used to intersect with triangles. This is possible using the

described unit triangle intersection method. One further optimization was

to exploit the fact that since most packets of rays have the same ray origin

it needs only be transformed once for the packet.

The last Sections showed how optimal values for several system param-

eters like number of packets and cache lines can be computed. This is im-

portant to map the architecture to an ASIC, since there for cost reduction

purposes, it is necessary to use the available gates as efficiently as possible.

Inspite of the small caches it would be possible to use 2 or 4 ray tracing

cores in parallel at the described memory interface delivering 1.02 GB per

second. Using larger more advanced caches and some cache hierarchy it will

be possible to use many more units in parallel.

Page 85: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 9

Future Work

Of course the development of the ray tracing prototype is not yet finished.

To support larger scenes, cheaper DRAM resources should be used as a

scene database. The used alpha data development platform contains 256

MB of DRAM memory on a 64 bit wide interface, but because of the simpler

protocol, the SRAM resources have been used only.

Inspite of the fact that the top-level k-D tree was rebuilt fast enough

on the host PC for our test scenes, hardware support for this operation

should be supported, especially if the number of objects gets too large. This

hardware support should be available for k-D trees consisting of triangles

too, because then vertex shaders can be used to modify the position of the

vertex edge points of the triangles, followed by a k-D tree reconstruction.

Up to now the ray tracing prototype supports only a simple fixed eye

light shading model. This shader should be replaced by some programmable

special purpose shading CPUs that perform the color and secondary ray

computation. Shading CPUs are necessary because of the wide range of

shading models available for the ray tracing application.

The prototype uses a k-D tree as acceleration structure, but in fact

no analysis have been done, if this is the best for a hardware ray tracing

approach. Indeed the k-D tree algorithm seems to be the best choice in

software based systems [3], but some other acceleration structures can be

implemented using fairly simple traversal units. For the regular grid accel-

eration structure for instance there exist simple traversal algorithms based

on integer arithmetic. This integer arithmetic causes a much flater traversal

unit, which consequently requires less packets in the system. Furthermore

73

Page 86: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

74 CHAPTER 9. FUTURE WORK

no stack is required in the grid traversal algorithm.

Page 87: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Chapter 10

Appendix A

The following Sections show statistics of four test scenes used to test the

prototype. The shown statistic diagramms are discussed in detail in Section

7.2. The standard configuration for the statistics is a resolution of 512x384,

a number of 64 packets in the system, 512 cache lines and using the hardware

optimized hilbert curve if not specified differently.

The last two statistics of each image show a walk through the scene, to

show typical frame rates that are achieved.

75

Page 88: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

76 CHAPTER 10. APPENDIX A

10.1 Office

Objects 1Total Triangles 34,313FPGA Szene Size 3.7 MBTypical Frame Rate 20-30 fpsResolution 512x384

0

5

10

15

20

25

30

35

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene Office, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene Office, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

1

2

3

4

5

6

7

8

9

10

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene Office, 512x384, 85 MHz

Hardware Quality Index 0

0.005

0.01

0.015

0.02

0.025

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene Office, 512x384, 85 MHz

Ray Tracing Quality Index

0

50

100

150

200

250

0 2 4 6 8 10 12 14 16

Frames per Second

RTC Units

Scalability, Scene Office, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene Office, 512x384, 85 MHz

TraversalList

Transformation

Page 89: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

10.1. OFFICE 77

0

5

10

15

20

25

30

35

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene Office, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 200 400 600 800 1000 1200

Usage

Memory Bandwidth [MB/s]

Scene Office, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

5

10

15

20

25

30

35

40

0 20 40 60 80 100 120 140 160 180 200

Frames per Second

Frame Number

Scene Office, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 20 40 60 80 100 120 140 160 180 200

Usage

Frame Number

Scene Office, 512x384, 85 MHz

TraversalList

TransformationIntersection

Page 90: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

78 CHAPTER 10. APPENDIX A

10.2 Gael

Objects 1Total Triangles 68,624FPGA Szene Size 7.0 MBTypical Frame Rate 17-25 fpsResolution 512x384

0

5

10

15

20

25

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene Gael, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene Gael, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

1

2

3

4

5

6

7

8

9

10

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene Gael, 512x384, 85 MHz

Hardware Quality Index 0

0.002

0.004

0.006

0.008

0.01

0.012

0.014

0.016

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene Gael, 512x384, 85 MHz

Ray Tracing Quality Index

0

10

20

30

40

50

60

70

0 2 4 6 8 10 12 14 16

Frames per Second

RTC Units

Scalability, Scene Gael, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene Gael, 512x384, 85 MHz

TraversalList

Transformation

Page 91: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

10.2. GAEL 79

0

5

10

15

20

25

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene Gael, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 200 400 600 800 1000 1200

Usage

Memory Bandwidth [MB/s]

Scene Gael, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

5

10

15

20

25

30

0 20 40 60 80 100 120 140 160 180 200

Frames per Second

Frame Number

Scene Gael, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 20 40 60 80 100 120 140 160 180 200

Usage

Frame Number

Scene Gael, 512x384, 85 MHz

TraversalList

TransformationIntersection

Page 92: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

80 CHAPTER 10. APPENDIX A

10.3 Conference

Objects 54Total Triangles 282,801FPGA Szene Size 5.3 MBTypical Frame Rate 17-20 fpsResolution 512x384

0

5

10

15

20

25

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene Conference, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene Conference, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

1

2

3

4

5

6

7

8

9

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene Conference, 512x384, 85 MHz

Hardware Quality Index 0

0.002

0.004

0.006

0.008

0.01

0.012

0.014

0.016

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene Conference, 512x384, 85 MHz

Ray Tracing Quality Index

0

10

20

30

40

50

60

70

80

90

0 2 4 6 8 10 12 14 16

Frames per Second

RTC Units

Scalability, Scene Conference, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene Conference, 512x384, 85 MHz

TraversalList

Transformation

Page 93: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

10.3. CONFERENCE 81

0

5

10

15

20

25

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene Conference, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 200 400 600 800 1000 1200

Usage

Memory Bandwidth [MB/s]

Scene Conference, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

5

10

15

20

25

30

0 20 40 60 80 100 120 140 160 180 200

Frames per Second

Frame Number

Scene Conference, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 20 40 60 80 100 120 140 160 180 200

Usage

Frame Number

Scene Conference, 512x384, 85 MHz

TraversalList

TransformationIntersection

Page 94: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

82 CHAPTER 10. APPENDIX A

10.4 Trees4000

Objects 4,000Total Triangles 20 MillionFPGA Szene Size 3.4 MBTypical Frame Rate 8-14 fpsResolution 512x384

0

1

2

3

4

5

6

7

8

9

10

0 10 20 30 40 50 60 70

Frames per Second

Packets

Scene trees4000, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 10 20 30 40 50 60 70

Usage

Packets

Scene trees4000, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

1

2

3

4

5

6

7

8

0 10 20 30 40 50 60 70

Hardware Quality Index

Packets

Scene trees4000, 512x384, 85 MHz

Hardware Quality Index 0

0.001

0.002

0.003

0.004

0.005

0.006

0.007

0.008

0 10 20 30 40 50 60 70

Ray Tracing Quality Index

Packets

Scene trees4000, 512x384, 85 MHz

Ray Tracing Quality Index

0

5

10

15

20

25

30

35

0 2 4 6 8 10 12 14 16

Frames per Second

RTC Units

Scalability, Scene trees4000, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 100 200 300 400 500 600

Cache Hit Rate

Cache Lines

Scene trees4000, 512x384, 85 MHz

TraversalList

Transformation

Page 95: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

10.4. TREES4000 83

0

1

2

3

4

5

6

7

8

9

10

0 200 400 600 800 1000 1200

Frames per Second

Memory Bandwidth [MB/s]

Scene trees4000, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 200 400 600 800 1000 1200

Usage

Memory Bandwidth [MB/s]

Scene trees4000, 512x384, 85 MHz

TraversalList

TransformationIntersection

0

2

4

6

8

10

12

14

16

18

20

0 20 40 60 80 100 120 140 160 180 200

Frames per Second

Frame Number

Scene trees4000, 512x384, 85 MHz

fps 0

20

40

60

80

100

0 20 40 60 80 100 120 140 160 180 200

Usage

Frame Number

Scene trees4000, 512x384, 85 MHz

TraversalList

TransformationIntersection

Page 96: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

84 CHAPTER 10. APPENDIX A

Page 97: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

Bibliography

[1] http://www.nvidia.com. Geforce3 - the world’s most advanced proces-

sor, 2001.

[2] Peter Shirley. Fundamentals of Computer Graphics. A K Peters Ltd,

June 2002.

[3] Vlastimil Havran. Heuristic Ray Shooting Algorithms. PhD the-

sis, Department of Computer Science and Engineering, Faculty

of Electrical Engineering, Czech Technical University in Prague,

http://www.cgg.cvut.cz/˜havran/phdthesis.html, November 2000.

[4] Ingo Wald, Thomas Kollig, Carsten Benthin, Alexander Keller, and

Philipp Slusallek. Interactive Global Illumination using Fast Ray Trac-

ing. Rendering Techniques 2002, pages 15–24, 2002. (Proceedings of

the 13th Eurographics Workshop on Rendering).

[5] Ingo Wald and Philipp Slusallek. State-of-the-Art in Interactive Ray-

Tracing. In State of the Art Reports, Eurographics 2001, pages 21–42,

2001.

[6] Ingo Wald, Carsten Benthin, Markus Wagner, and Philipp Slusallek.

Interactive Rendering with Coherent Ray Tracing. Computer Graphics

Forum (Proceedings of EUROGRAPHICS 2001, 20(3), 2001.

[7] Ingo Wald, Philipp Slusallek, and Carsten Benthin. Interactive Dis-

tributed Ray Tracing of Highly Complex Models. In Proceedings of the

12th EUROGRPAHICS Workshop on Rendering, June 2001. London.

[8] Jorg Schmittler, Ingo Wald, and Philipp Slusallek. SaarCOR – A Hard-

ware Architecture for Ray Tracing. In Proceedings of Eurographics

Workshop on Graphics Hardware, pages 27–36, 2002.

85

Page 98: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

86 BIBLIOGRAPHY

[9] John V. Oldfield and Richard C. Dorf. Field Programmable Gate Ar-

rays. Wiley-Interscience, January 1995.

[10] Michael John Sebastian Smith. Application-Specific Integrated Circuits.

Addison-Wesley, June 1997.

[11] Stuart A. Green and Derek J. Paddon. Exploiting coherence for mul-

tiprocessor ray tracing. IEEE Computer Graphics and Applications,

9(6):12–26, 1989.

[12] Stuart A. Green and Derek J. Paddon. A highly flexible multiprocessor

solution for ray tracing. The Visual Computer, 6(2):62–73, 1990.

[13] Tony T.Y. Lin and Mel Slater. Stochastic Ray Tracing Using SIMD

Processor Arrays. The Visual Computer, pages 187–199, 1991.

[14] Michael J. Muuss. Towards real-time ray-tracing of combinatorial solid

geometric models. In Proceedings of BRL-CAD Symposium ’95, June

1995.

[15] M. J. Keates and Roger J. Hubbold. Interactive ray tracing on a vir-

tual shared-memory parallel computer. Computer Graphics Forum,

14(4):189–202, 1995.

[16] Steven Parker, Peter Shirley, Yarden Livnat, Charles Hansen, and Pe-

ter Pike Sloan. Interactive ray tracing. In Interactive 3D Graphics

(I3D), pages 119–126, April 1999.

[17] Steven Parker, Michael Parker, Yaren Livnat, Peter Pike Sloan, Chuck

Hansen, and Peter Shirley. Interactive ray tracing for volume visual-

ization. IEEE Transactions on Computer Graphics and Visualization,

5(3), 1999.

[18] Steven Parker, Peter Shirley, Yarden Livnat, Charles Hansen, and Pe-

ter Pike Sloan. Interactive ray tracing for isosurface rendering. In IEEE

Visualization ’98, 1998.

[19] Matt Pharr, Craig Kolb, Reid Gershbein, and Pat Hanrahan. Rendering

complex scenes with memory-coherent ray tracing. Computer Graphics,

31(Annual Conference Series):101–108, August 1997.

[20] Advanced Rendering Technologies. http://www.art-render.com.

Page 99: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

BIBLIOGRAPHY 87

[21] D. Hall. The AR350: Today’s ray trace rendering processor. In Proceed-

ings of the Eurographics/SIGGRAPH workshop on Graphics hardware

- Hot 3D Session 1, 2001.

[22] Hanspeter Pfister, Jan Hardenbergh, Jim Knittel, Hugh Lauer, and

Larry Seiler. The VolumePro real-time ray-casting system. In Computer

Graphics 31, pages 251–260, 1999.

[23] K. Mai, T. Paaske, N. Jayasena, R. Ho, W. Dally, and M. Horowitz.

Smart Memories: A Modular Recongurable Architecture. IEEE Inter-

national Symposium on Computer Architecture, 2000.

[24] Timothy Purcell. The SHARP Ray Tracing Architecture. SIGGRAPH

course on Interactive Ray Tracing, 2001.

[25] Timothy J. Purcell, Ian Buck, William R. Mark, and Pat Hanrahan.

Ray Tracing on Programmable Graphics Hardware. In Proceedings of

SIGGRAPH 2002, 2002.

[26] Ingo Wald, Carsten Benthin, and Philipp Slusallek. Distributed Interac-

tive Ray Tracing of Dynamic Scenes. In Proceedings of the IEEE Sym-

posium on Parallel and Large-Data Visualization and Graphics (PVG),

2003.

[27] Erik Reinhard, Brian Smits and Chuck Hansen. Dynamic acceleration

structures for interactive ray tracing. In Proceedings of SIGGRAPH,

2002.

[28] Allen Y. Chang. A Survey of Geometric Data Structures for Ray Trac-

ing. Technical report, Polytechnic University, October 2001.

[29] Emo Welzl. Smallest enclosing disks (ball and ellipsoids), chapter New

Results and New Trends in Computer Science (H. Maurer, ed.), pages

359–370. 1991.

[30] Alphadata. www.alpha-data.com.

[31] Xilinx, Virtex2-6000 FPGA. www.xilinx.com/virtex2.

[32] Peter Bellows and Brad Hutchings. JHDL - An HDL for Reconfigurable

Systems. Technical report, Department of Electrical and Computer

Engineering, www.jhdl.org.

Page 100: Sven Woop's Homepage - A Ray Tracing Hardware ...Sven Woop A thesis submitted in partial fulfillment of the requirements for the degree of Diplom-Informatiker (Diploma in Computer

88 BIBLIOGRAPHY

[33] Xilinx. www.xilinx.com.