## 1 Introduction  
To be able to meet an increasing demand in renewable energies, due to the ubiquity of sunlight, the placement of photovoltaic (PV) panels on roofs is well indicated. As such, mapping out the places with the best solar potential can yield more solar power at a given cost. One of the main aspects of mapping out the solar potential is the determination of obstructions from the environment (buildings, trees, relief) in a straight line from any given point (which we will call \"shadow casting\"). Shadow casting is a very computationally demanding effort. Each point must be treated independently, and obstructions must be determined in many directions in order to get a satisfactory result. Using conventional computing, which relies on the performance of Central Processing Units (CPUs) is expensive in terms of time and energy. However, Graphics Processing Units (GPUs), which traditionally have been used for rendering 3D scenes in real time, are very adapted by their massively parallel nature. They solve problems where the same computation is applied to different inputs, which is the case for shadow casting. We define shadow casting broadly, as the determination of the existence of an obstruction from a given point of a scene along a given line, whether this line corresponds to the position of the physical sun or any other point in the sky. Shadow casting is used both for determining the direct sunlight exposure on a given day of the year and at a specific time, and for calculating the Sky View Factor, which is the proportion of sky that is visible from a given point. Several approaches to shadow casting exist, and they can be broadly categorized into vector-based approaches and raster-based approaches. Some of these approaches, coupled with GPU techniques, are presented below. Vector-based approaches look at an environment in terms of 3D shapes for each wall, floor, roof, and whatever other feature is desirable to include in the model. Many of those approaches related to shadow casting have been proposed. [PERSON] et al. [1] describe a pipeline that uses the GPU in a conventional manner, via 3D-rendered primitives, to determine obstruction of PV panels by representing the sun's position as an orthographic camera. [PERSON] et al. [2; 3] present an interactive tool that is used for computing the solar potential on simplified vector-based buildings, with the processing being done with CUDA (Compute Unified Device Architecture) [4]. [PERSON] et al. [5] describe a pipeline based around GPU shaders to compute temporal maps for a given PV surface (with the time of day as the \(X\)-axis and the day of the year in the \(Y\)-axis). Those approaches have the advantage of allowing an arbitrary amount of detail, but have the disadvantage of being computationally expensive for large-scale analysis. Obtaining the data for a detailed vector-based model can be problematic as well, because it may require a significant amount of manual labor by 3D-modelling every building and feature. Raster-based models on the other hand use the elevation map of the area as the definition of their environment. Even if lacking all the potential detail that a vector model can provide, a raster model can be acquired more easily with less human labor (for instance using LiDAR surveying), and can, due to the simplicity of the data structure, lead to performant algorithms that can be applied at a large scale and at high resolution. For these reasons, we went with the raster approach for the purposes of the solar cadaster in the Greater Geneva area as presented in this article. Raster-based approaches that have been attempted by other authors include the following; [PERSON] and [PERSON] [6] perform an analysis of shadow casting on a graphical processing unit (GPU). Their analysis only computes the direct sunlight path and does not take into account the obstructions of the sky from a given point. The latter is used to compute the diffuse component of the solar irradiation.