![]() |
![]() |
![]() |
Processors |
Motherboards |
Chipsets |
Memory |
Graphics Cards |
Storage |
Cases and Cooling |
Mobile |
Systems |
Displays |
Shows and Expos |
|
|
:: PC Perspective . Graphics Card . Caustic Graphics Ray Tracing Acceleration Technology Review . Who is Caustic Graphics?
The PC Perspective Podcast is your weekly stop for the latest PC tech news and reviews! Give it a listen!
Who is Caustic Graphics?Ray tracing. Many have said that graphics rendering by ray tracing is the only way to truly achieve the imagery end-game we all seek. Many have disagreed. PC Perspective has been here covering both sides of this debate for quite some time.
Another interesting place where ray tracing is used is in game development itself, even if it isn’t used during game playback on consoles or PCs. Game studios will very often use ray tracing to produce the “pre-baked” data sets used in rasterization for visual effects like spherical harmonics or light maps. Caustic Graphics hopes to entice these developers to at least start playing with its hardware by saving them time in the creative process. Rasterization and Ray Tracing: that age-old debate I have discussed the basic differences between rasterization and ray tracing many times before, but the basics of the debate bear repeating. In rasterization triangles are created and then broken up into sets of screen pixels that become threaded and processed on a GPU. The beauty of rasterization is that these screen pixels are processed in small groups and adjacent pixels will likely be running the same, or similar, shader code and thus you have a lot of threads doing the same thing to each pixel. Because of this, the SIMD nature of a GPU is well utilized and the smaller caches on-board perform very well with a strong locality of reference – GPUs are very efficient at rasterization. Ray tracing works quite differently in that rays are “shot” from the camera (traditionally at least) to every pixel on the screen. When a ray intersects with an object in 3D space, as the triangle configuration remains the same as with rasterization, a shader will run. That shader has the ability to spawn additional rays and will sometimes create a LOT of new rays bouncing off in different directions. The more rays a shader is allowed to create, the more detailed the rendered image will be. But of course as the number of rays increases the performance hit on ray tracing increases quickly. If each of those rays created by the first shader hits another object that runs yet another shader creating individual rays then it is easy to see how complex this tree of ray tracing data can become. The problem for GPUs processing this type of data set is that the strong locality of reference of rasterization no longer exists – rays that bounced off the first object will likely not follow the same path and thus proceeding shaders will diverge into randomness. GPUs do not handle randomness very efficiently. In the past, and even today, there is a lot of discussion on the ability to solve ray tracing with current generation hardware and with mainstream existing algorithms. Most of the current ray tracing implementations are based on the idea of “packet tracing” where blocks of pixels are grouped together to trace a set of rays that start out adjacent to each other. That will definitely increase efficiency of ray tracing for the first bounce or so but as the number of bounces increases and the randomness returns, the packets aren’t able to “stay together” in terms of their memory locality. Even with advancements in shader processor development to include inter-thread communication (DX9 required this move) modern GPUs do not have enough bandwidth to handle the data shuffling required for RTRT (real-time ray tracing) processing, at least according to Caustic. In most cases for rasterization, pixels are completely independent of each other but in ray tracing that is not the case – with many rays being traced inside each pixel they becoming massively DEpendent. |
|
|||||||||||
![]() |
Legal - Contact - Advertising | ![]() |