A method of reducing the number of intersection tests in ray tracing a three dimensional scene using a bounding volume hierarchy, the method comprising: in a voxelization stage: segmenting the scene into a plurality of voxels; dividing the scene using bounding volume hierarchy, BVH; for each voxel of the scene, associating the voxel with a deepest common ancestor node of the BVH comprising: determining for the voxel a smallest set of bounding volumes, wherein the smallest set encompasses those primitives which are included in the space represented by the voxel; for each bounding volume of the smallest set of bounding volumes determining a node in the hierarchy to form a set of determined nodes; determining a first deepest common ancestor node of the set of determined nodes; and associating the voxel with the first deepest common ancestor node; for each ray determining a starting node for traversal of the BVH by: determining a set of voxels through which the ray passes; determining a set of the first deepest common ancestor nodes of the set of voxels; determining the starting node as a second deepest common ancestor node, wherein the second deepest common ancestor node is the deepest common ancestor node of the set of first deepest common ancestors nodes; performing ray tracing by traversing the hierarchy starting at the second deepest common ancestor node to determine a point of intersection between the ray and one of the one or more object primitives. in a voxelization stage: segmenting the scene into a plurality of voxels; dividing the scene using bounding volume hierarchy, BVH; for each voxel of the scene, associating the voxel with a deepest common ancestor node of the BVH comprising: determining for the voxel a smallest set of bounding volumes, wherein the smallest set encompasses those primitives which are included in the space represented by the voxel; for each bounding volume of the smallest set of bounding volumes determining a node in the hierarchy to form a set of determined nodes; determining a first deepest common ancestor node of the set of determined nodes; and associating the voxel with the first deepest common ancestor node; segmenting the scene into a plurality of voxels; dividing the scene using bounding volume hierarchy, BVH; for each voxel of the scene, associating the voxel with a deepest common ancestor node of the BVH comprising: determining for the voxel a smallest set of bounding volumes, wherein the smallest set encompasses those primitives which are included in the space represented by the voxel; for each bounding volume of the smallest set of bounding volumes determining a node in the hierarchy to form a set of determined nodes; determining a first deepest common ancestor node of the set of determined nodes; and associating the voxel with the first deepest common ancestor node; determining for the voxel a smallest set of bounding volumes, wherein the smallest set encompasses those primitives which are included in the space represented by the voxel; for each bounding volume of the smallest set of bounding volumes determining a node in the hierarchy to form a set of determined nodes; determining a first deepest common ancestor node of the set of determined nodes; and associating the voxel with the first deepest common ancestor node; for each ray determining a starting node for traversal of the BVH by: determining a set of voxels through which the ray passes; determining a set of the first deepest common ancestor nodes of the set of voxels; determining the starting node as a second deepest common ancestor node, wherein the second deepest common ancestor node is the deepest common ancestor node of the set of first deepest common ancestors nodes; determining a set of voxels through which the ray passes; determining a set of the first deepest common ancestor nodes of the set of voxels; determining the starting node as a second deepest common ancestor node, wherein the second deepest common ancestor node is the deepest common ancestor node of the set of first deepest common ancestors nodes; performing ray tracing by traversing the hierarchy starting at the second deepest common ancestor node to determine a point of intersection between the ray and one of the one or more object primitives.