1. A method, comprising: receiving scene model data including a scene geometry model and a plurality of pixel data describing objects arranged in a scene; selecting a first pixel data of the plurality of pixel data; generating a primary pixel color based on the first pixel data, without also generating or tracing a ray; generating a primary ray based on the first pixel data; determining whether the primary ray intersects an object in the scene; if the primary ray intersects an object in the scene, determining an intersection point, P; determining a surface normal, N, based on the object intersected and the intersection point, P; determining a primary hit color based on the intersection point, P; modifying the primary pixel color based on the primary hit color; generating a plurality of ambient occlusion (AO) rays, based on the intersection point, P and the surface normal, N, each AO ray having a direction, D; for each AO ray, reversing the AO ray direction, D, and setting the AO ray origin, O, to a point outside the scene; setting a maximum traversal distance for each AO ray, wherein the maximum traversal distance is a distance between the origin, O, of the respective AO ray and the intersection point, P; marching each AO ray from the AO ray origin into the scene to the intersection point, P; if an AO ray intersects an object before traveling its respective maximum traversal distance, excluding that AO ray from ambient occlusion calculations; if an AO ray does not intersect an object before traveling its respective maximum traversal distance, including that ray in ambient occlusion calculations; estimating ambient occlusion based on included AO rays; shading the primary pixel color based on the ambient occlusion and the primary hit color; and generating an image based on the primary pixel color for the pixel data.