Definitions

# Path tracing

Path tracing is a photorealistic computer graphics rendering technique by James Kajiya when he presented his paper on the rendering equation in the 1980s. The main goal of path tracing is to fully solve the rendering equation. The image quality provided by path tracing is often superior to that of images produced using conventional ray tracing methods at the cost of much greater computation.

Although path tracing is very general and can simulate nearly all of the effects of light transport, it is a very inefficient algorithm. However, due to its accuracy, it can be used to generate reference images when testing the quality of other rendering algorithms. In order to get high quality images from path tracing, a very large number of rays need to be traced lest the image have lots of visible artifacts in the form of noise.

Path tracing is essentially a form of ray tracing whereby each ray is recursively traced along a path until it reaches a light emitting source where the light contribution along the path is calculated. This recursive tracing helps for solving the lighting equation more accurately than conventional ray tracing.

A simple path tracing pseudocode might look something like this:

` Color TracePath(Ray r,depth) {`
`   if(depth==MaxDepth)`
`     return Black;  // bounced enough times`
`   r.FindNearestObject();`
`   if(r.hitSomething==false)`
`     return Black;  // nothing was hit`
`   Material &m=r.thingHit->material;`
`   Color emittance=m.emittance;`
`   // pick a random direction from here and keep going`
`   Ray newRay;`
`   newRay.origin=r.pointWhereObjWasHit;`
`   newRay.direction=RandomUnitVectorInHemisphereOf(r.normalWhereObjWasHit);`
`   float cost=DotProduct(newRay.direction,r.normalWhereObjWasHit);`
`   Color BRDF=m.reflectance/PI;`
`   float scale=1.0*PI;`
`   Color reflected=TracePath(newRay,depth+1);`
`   return emittance + (BRDF * scale * cost * reflected );`
}

In the above example if every surface of a closed space emitted and reflected (0.5,0.5,0.5) then every pixel in the image would be white.

A variation of this algorithm is to trace rays in the opposite direction, from light sources to the camera, this is called photon tracing. Furthermore, these two algorithms can be combined to enhance the image results, which is called bidirectional path tracing.

Note that path tracing is not simply ray tracing with infinite recursion depth. In conventional ray tracing, lights are sampled directly when a diffuse surface is hit by a ray. In path tracing, a new ray is randomly generated within the hemisphere of the object and then traced until it hits a light(possibly never). This type of path can hit many diffuse surfaces before interacting with a light. This is simply not the case for ray tracing where there can be at most one diffuse interaction per eye ray.

Search another word or see by-pathon Dictionary | Thesaurus |Spanish