Dear all,

I am currently working on a project to compute radiative energy transfer across complex geometries. In order to do so between any two objects, one needs to compute the view factor between those objects or - in other words - the amount of surface of one object as seen from the other object.

Traditionally, a lot of this is performed via ray tracing methods. For performance reasons, I would like to use the `OcclusionQuery`

function offered by Monogame / XNA. This function returns the number of pixels which passed the z test after a draw call. To compute the surface area of Object2 visible to Object1, for example, I would perform the following steps:

- Place the camera at Object1, facing Object2
- Draw the complete scene (every single object in the scene has a specific color)
- Perform an
`OcclusionQuery`

and redraw Object2 - The number of pixels returned from the
`OcclusionQuery`

can now be computed into the visible surface area (in orthographic projection)

This works pretty well as long as the objects in question are far apart and only span a small angle. For point-source type illumination, e.g., by the sun, this approach hence works fine.

Now, I would like to compute the radiative energy transfer between objects a lot closer to each other, e.g., between individual components inside a satellite. So, again, I would like to find the view factors / visible surface areas of all the surrounding objects. Since in this case, those objects can span a larger viewing angle, things are getting a bit trickier.

One possible way would be to look into many different directions from each radiating point. If assuming a field of view of pi/2, that would mean 8 different perspectives.

It would be way easier, however, to simply use two FoVs which span pi or a single one spanning 2pi (or 4 pi sr, if you like). As soon as I get close to a FoV of pi, Monogame is seemingly getting in trouble and stops drawing things at all. I assume this has to do with the planar image plane of Monogame and is hence a limitation of the algorithm?

Would you have any ideas on how to solve this problem? E.g., rendering to a spherical image plane or sth.?

Thanks!

Max