The problem of rendering 3D graphics can be conceptually presented as finding all intersections between a set of "primitives" (typicallytriangles orpolygons) and a set of "rays" (typically one or more per pixel).[1]
Up to 2010, all typical graphic acceleration boards, calledgraphics processing units (GPUs), usedrasterization algorithms. Theray tracing algorithm solves therendering 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 astream 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 asreflections andshadows are difficult; andrefractions[2] nearly impossible to compute.
The ray tracing algorithm is inherently suitable for scaling byparallelization of individual ray renders.[3] However, anything other thanray casting requires recursion of the ray tracing algorithm (and random access to thescene 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 ofphysically 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 intoBSP trees or similar structures, and only being analyzed if a ray intersects with thebounding volume of the binary space partition.[5][d]
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 withAutodesk Maya andMax 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 atSaarland University headed by Dr.-Ing. Philipp Slusallek has produced prototype ray tracing hardware including the FPGA based fixed function data drivenSaarCOR (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 theIntel 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 acceleratedglobal 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 2013Imagination Technologies, after acquiringCaustic 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 MicrosoftDirectX, announced the Nvidia RTX developer library,[25] which promised fast GPU software ray tracing solutions in theVolta-generation GPUs.[26]
In September 2018, Nvidia introduced theirGeForce RTX and Quadro RTX GPUs, based on theTuring 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 featuresBVH 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 theRDNA micro-architecture. According to the company, theRDNA 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 releasedArc Alchemist GPU in 2022,[31][32][33] in which the GPU featured ray tracing acceleration core that are performing comparatively withRTX 3000 series mid-range GPU.[34]
On September 12, 2023, Apple announced theirApple A17 with hardware-accelerated ray tracing.[41] A month later Apple announced theM3 chip family for Mac computers with support for hardware-accelerated ray tracing.[42]
^For additional visualizations 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.
^Rasterization 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 usingnormal 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 largerviewing frustum (more advanced implementations including those that implementocclusion culling orpredicated rendering scale better than linearly for complex (especially high occluded) scenes (note in common APIs: DirectX 10D3D10_QUERY_OCCLUSION_PREDICATE[1], in OpenGL 3.0HP_occlusion_query ). With ray tracing the viewing frustum is replaced by the volume enclosed by a single ray (or ray bundle).
^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 fromthe original(PDF) on 2011-08-14. Retrieved2011-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.
^Kilgariff, Emmett; Moreton, Henry; Stam, Nick; Bell, Brandon (2018-09-14)."NVIDIA Turing Architecture In-Depth".Nvidia Developer.Archived from the original on 2022-11-13. Retrieved2022-11-13.