Implementing GPU-based ray tracing
To this point, all of the recipes rendered 3D geometry using rasterization. In this recipe, we will implement another method for rendering geometry, which is called ray tracing. Simply put, ray tracing uses a probing ray from the camera position into the graphical scene. The intersections of this ray are obtained for each geometry. The good thing with this method is that only the visible objects are rendered.
The ray tracing algorithm can be given in pseudocode as follows:
For each pixel on screen
Get the eye ray origin and direction using camera position
For the amount of traces required
Cast the ray into scene
For each object in the scene
Check eye ray for intersection
If intersection found
Determine the hit point and surface normal
For each light source
Calculate diffuse and specular comp. at hit point
Cast shadow ray from hit point to light
End For
Darken diffuse component...