The problem of rendering 3D graphics can be conceptually presented as finding all intersections between a set of "
primitives" (typically
triangles or
polygons) and a set of "rays" (typically one or more per pixel).[1]
Up to 2010, all typical graphic acceleration boards, called
graphics processing units (GPUs), used
rasterization algorithms. The
ray tracing algorithm solves the
rendering problem in a different way. In each step, it finds all intersections of a ray with a set of relevant primitives of the scene.
Both approaches have their own benefits and drawbacks. Rasterization can be performed using devices based on a
stream computing model, one triangle at the time, and access to the complete scene is needed only once.[a] The drawback of rasterization is that non-local effects, required for an accurate simulation of a scene, such as
reflections and
shadows are difficult; and
refractions[2] nearly impossible to compute.
The ray tracing algorithm is inherently suitable for scaling by
parallelization of individual ray renders.[3] However, anything other than
ray casting requires recursion of the ray tracing algorithm (and random access to the
scene graph) to complete their analysis,[4] since reflected, refracted, and scattered rays require that various parts of the scene be re-accessed in a way not easily predicted. But it can easily compute various kinds of
physically correct effects, providing much more realistic impression than rasterization.[b]
The complexity of a well implemented ray tracing algorithm scales logarithmically;[c] this is due to objects (triangles and collections of triangles) being placed into
BSP trees or similar structures, and only being analyzed if a ray intersects with the
bounding volume of the binary space partition.[5][d]
Implementations
Various implementations of ray tracing hardware have been created, both experimental and commercial:
(1995) Advanced Rendering Technology (ART) founded[6] in Cambridge, UK, based on a 1994 PhD thesis, to produce dedicated ray tracing silicon (initially the "AR250" chip, which accelerated ray-triangle intersection, bounding box traversal and shading), using a "RenderDrive" networked accelerator for off-line rendering.[7] Products were first shipped to customers in 1998.[8] Software provided integration with
Autodesk Maya and
Max data formats, and utilized the Renderman scene description language for sending data to the processors (the .RIB or Renderman Interface Bytestream file format).[9] ART was re-founded as ART-VPS in 2002.[10] As of 2010, ART-VPS no longer produces ray tracing hardware but continues to produce rendering software.[10]
(1996) Researchers at Princeton university proposed using DSPs to build a hardware unit for ray tracing acceleration, named "TigerSHARK".[11]
(2002) The computer graphics laboratory at
Saarland University headed by Dr.-Ing. Philipp Slusallek has produced prototype ray tracing hardware including the FPGA based fixed function data driven
SaarCOR (Saarbrücken's Coherence Optimized Ray Tracer) chip[15][16][17] and a more advanced programmable (2005) processor, the Ray Processing Unit (RPU)[18]
(2009–2010) Intel[19] showcased their prototype "Larrabee" GPU and Knights Ferry MIC at the
Intel Developer Forum in 2009 with a demonstration of real-time ray-tracing.
Caustic Graphics[20] produced a plug in card, the "CausticOne" (2009),[21] that accelerated
global illumination and other ray based rendering processes when coupled to a PC CPU and GPU. The hardware is designed to organize scattered rays (typically produced by global illumination problems) into more coherent sets (lower spatial or angular spread) for further processing by an external processor.[22]
Siliconarts[23] developed a dedicated real-time ray tracing hardware (2010). RayCore (2011), which is the world's first real-time ray tracing semiconductor IP, was announced.
In August 2013
Imagination Technologies, after acquiring
Caustic Graphics, produced the Caustic Professional's R2500 and R2100 plug in cards containing RT2 ray trace units (RTUs). Each RTU was capable of calculating up to 50 million incoherent rays per second.[24]
In January 2018,
Nvidia, partnering with Microsoft
DirectX, announced the Nvidia RTX developer library,[25] which promised fast GPU software ray tracing solutions in the
Volta-generation GPUs.[26]
In September 2018, Nvidia introduced their
GeForce RTX and Quadro RTX GPUs, based on the
Turing architecture, with hardware-accelerated ray tracing using a separate functional block, publicly called an "RT core". This unit is somewhat comparable to a texture unit in size, latency, and interface to the processor core. The unit features
BVH traversal, compressed BVH node decompression, ray-AABB intersection testing, and ray-triangle intersection testing.[27] The GeForce RTX 2080 and 2080 Ti became the first consumer-oriented brand of graphics card that can perform ray tracing in real time,[28].
In October 2020,
AMD announced further information regarding the "refresh" of the
RDNA micro-architecture. According to the company, the
RDNA 2 micro-architecture supports real-time hardware accelerated ray tracing, consisting of BVH node decoding, ray-AABB intersection testing, and ray-triangle intersection testing.[29][30]
Intel released
Arc Alchemist GPU in 2022,[31][32][33] in which the GPU featured ray tracing acceleration core that are performing comparatively with
RTX 3000 series mid-range GPU.[34]
On September 12, 2023, Apple announced their
Apple A17 with hardware-accelerated ray tracing.[41]
Notes
^For additional visualisations such as shadows, or reflections such as produced by a large flat body of water an addition pass of the scene graph is required for each effect.
^Rasterisation methods are capable of generating realistic shadows (including shadows produced by partially transparent objects), and plane reflections easily (as of 2010), but do not easily implement reflections from non planar surfaces (excluding approximations using
normal maps) or refractions.
^That is if X is the number of triangles, then the number of computations to complete the scene is proportional to log(X).
^The same methods can be used in rasterization; in a simplistic implementation, culling is limited to those BSP partitions that lie within the much larger
viewing frustum (more advanced implementations including those that implement
occlusion culling or
predicated rendering scale better than linearly for complex (especially high occluded) scenes (Note in common API's : DirectX 10 D3D10_QUERY_OCCLUSION_PREDICATE[1], in OpenGL 3.0 HP_occlusion_query ). With ray tracing the viewing frustum is replaced by the volume enclosed by a single ray (or ray bundle).
References
^Introduction to real time raytracing[permanent dead link] Course notes, Course 41, Philipp Slusallek,
Peter Shirley, Bill Mark, Gordon Stoll, Ingo Wald, SIGGRAPH 2005, (powerpoint presentation), Slide 26 :Comparison Rasterization vs. Ray Tracing (Definitions)graphics.cg.uni-saarland.de
^A Hardware Accelerated Ray-tracing Engine Greg Humphreys, C. Scott Ananian (Independent Work), Department of Computer Science, Princeton University, 14/5/1996, cscott.net.
^Schmittler, Jörg; Wald, Ingo; Slusallek, Philipp (2002).
"SaarCOR —A Hardware Architecture for Ray Tracing"(PDF). Graphics Hardware. Germany: Computer Graphics Group, Saarland University: 1–11. Archived from
the original(PDF) on 2011-08-14. Retrieved 2011-11-22.
^Jörg Schmittler; Sven Woop; Daniel Wagner; Wolfgang J. Paul; Philipp Slusallek (2004). "Realtime Ray Tracing of Dynamic Scenes on an FPGA Chip". Graphics Hardware. Computer Science, Saarland University, Germany.
CiteSeerX10.1.1.72.2947.