<p>Yes, such a thing is possible. There are a few different ways of doing it, but the basic idea is to split up the scene into chunks and assign these chunks to different machines. Each machine then traces rays locally within their assigned chunk.</p>

<p>The tricky bit is of course when rays leave a chunk, in which case machines need to synchronize and exchange rays that cross the local chunk boundaries. A recent paper from this year's EGSR, <a href="http://vc.cs.ovgu.de/files/publications/2014/Guenther_2014_CGF.pdf">Distributed Out-of-Core
Stochastic Progressive Photon Mapping</a>, describes how to do this efficiently for Progressive Photon Mapping, although other light transport methods might be feasible.</p>

<p>Although such distributed ray tracing is possible, it is certainly not the most efficient form of parallelization, and non-uniform lighting directly translates into non-uniform distribution of the workload. It is really only beneficial when the size of the scene far exceeds the memory of a single machine.</p>

CC BY-SA 3.0
2015-08-09T22:09:49.603Z
2015-08-09T22:09:49.603Z
Benedikt Bitterli
<p>In the general case, no.  Reflection, refraction, and shadows can all generate secondary rays that could go anywhere, requiring the entire scene to be available.</p>

<p>In the special case of rendering with no secondary rays, you can quickly generate a vista buffer (essentially a mapping of your acceleration hierarchy to the screen) to figure out which objects are potentially visible from each pixel and distribute portions of the scene accordingly.</p>

CC BY-SA 3.0
2015-08-09T09:07:40.690Z
2015-08-09T09:07:40.690Z
Mark
<p>Raytracing an image can be performed in parallel by calculating the colour of different pixels on different machines. However, this still requires each machine to have access to the entire scene to be rendered. Is there a way of also subdividing the scene so that different machines have access to different parts of it but can still calculate their assigned pixels correctly?</p>

<p>I cannot imagine a way in which this could be possible in general. Are there any particular circumstances in which this can be achieved?</p>

<raytracing><scene-description>
Can I parallelise the scene for a raytraced image, rather than just the pixels?
trichoplax is on Codidact now
# Can I parallelise the scene for a raytraced image, rather than just the pixels?

(Asked by: username_0 on 2015-08-09)

Raytracing an image can be performed in parallel by calculating the colour of different pixels on different machines. However, this still requires each machine to have access to the entire scene to be rendered. Is there a way of also subdividing the scene so that different machines have access to different parts of it but can still calculate their assigned pixels correctly?

I cannot imagine a way in which this could be possible in general. Are there any particular circumstances in which this can be achieved?

**Tags:** raytracing, scene-description


---

## 2 answers

### Answer by username_1 on 2015-08-09. Score: 6 | Accepted answer

Yes, such a thing is possible. There are a few different ways of doing it, but the basic idea is to split up the scene into chunks and assign these chunks to different machines. Each machine then traces rays locally within their assigned chunk.

The tricky bit is of course when rays leave a chunk, in which case machines need to synchronize and exchange rays that cross the local chunk boundaries. A recent paper from this year's EGSR, [Distributed Out-of-Core
Stochastic Progressive Photon Mapping](http://vc.cs.ovgu.de/files/publications/2014/Guenther_2014_CGF.pdf), describes how to do this efficiently for Progressive Photon Mapping, although other light transport methods might be feasible.

Although such distributed ray tracing is possible, it is certainly not the most efficient form of parallelization, and non-uniform lighting directly translates into non-uniform distribution of the workload. It is really only beneficial when the size of the scene far exceeds the memory of a single machine.


---

### Answer by username_2 on 2015-08-09. Score: 3

In the general case, no. Reflection, refraction, and shadows can all generate secondary rays that could go anywhere, requiring the entire scene to be available.

In the special case of rendering with no secondary rays, you can quickly generate a vista buffer (essentially a mapping of your acceleration hierarchy to the screen) to figure out which objects are potentially visible from each pixel and distribute portions of the scene accordingly.


---

