A method for texturing and shading a 3D computer graphic image on a plurality of shading engines comprising the steps of: a) subdividing the image into a plurality of rectangular areas; b) subdividing each rectangular area into a plurality of smaller rectangular areas, wherein each of the shading engines is allocated to a respective smaller rectangular area; c) allocating an object list to each rectangular area of the plurality of rectangular areas of step a), the object list containing data defining objects visible in the rectangular area; d) for one smaller rectangular area, determining which pixels in the smaller rectangular area are intersected by a next object from the object list which is visible in the smaller rectangular area and which has not had pixel intersection data already determined for any smaller rectangular areas in the rectangular area, and determining which pixels in the smaller rectangular area are intersected by at least one other object in the object list, the at least one other object comprising objects in the object list which have each had pixel intersection data determined for a respective number of other smaller rectangular areas between one and the number of the smaller rectangular areas in the rectangular area except one; e) in parallel with step d), outputting pixel intersection data for an object for which all intersection determinations for each of the smaller rectangular areas in a selected rectangular area have been performed, to the shading engine or engines allocated to those smaller rectangular area or areas in which the object is visible; f) texturing and shading the pixels corresponding to the pixel intersection data for the object with said shading engine or engines; g) repeating steps d) e) and f) for each smaller rectangular area in the selected rectangular area in which there are visible objects; and h) storing data derived by texturing and shading step f). a) subdividing the image into a plurality of rectangular areas; b) subdividing each rectangular area into a plurality of smaller rectangular areas, wherein each of the shading engines is allocated to a respective smaller rectangular area; c) allocating an object list to each rectangular area of the plurality of rectangular areas of step a), the object list containing data defining objects visible in the rectangular area; d) for one smaller rectangular area, determining which pixels in the smaller rectangular area are intersected by a next object from the object list which is visible in the smaller rectangular area and which has not had pixel intersection data already determined for any smaller rectangular areas in the rectangular area, and determining which pixels in the smaller rectangular area are intersected by at least one other object in the object list, the at least one other object comprising objects in the object list which have each had pixel intersection data determined for a respective number of other smaller rectangular areas between one and the number of the smaller rectangular areas in the rectangular area except one; e) in parallel with step d), outputting pixel intersection data for an object for which all intersection determinations for each of the smaller rectangular areas in a selected rectangular area have been performed, to the shading engine or engines allocated to those smaller rectangular area or areas in which the object is visible; f) texturing and shading the pixels corresponding to the pixel intersection data for the object with said shading engine or engines; g) repeating steps d) e) and f) for each smaller rectangular area in the selected rectangular area in which there are visible objects; and h) storing data derived by texturing and shading step f).