Bachelor Thesis
Refine
Year of publication
- 2017 (2) (remove)
Document Type
- Bachelor Thesis (2) (remove)
Language
- German (2) (remove)
Keywords
- Datenstruktur (2) (remove)
This thesis presents two methods for the computation of global illumination. The first is an extension of Reflective Shadow Maps with an additional shadow test in order to handle occlusion. The second method is a novel, bidirectional Light-Injection approach. Rays originating from the light source are traced through the scene and stored inside the shafts of the Linespace datastructure. These shafts are a discretization of the possible spatial directions. The Linespaces are embedded in a Uniform Grid. When retrieving this pre-calculated lightning information no traversal of datastructures and no additional indirection is necessary in the best-case scenario. This reduces computation time and variance compared to Pathtracing. Areas that are mostly lit indirectly and glas profit the most from this. However, the result is only approximative in nature and produces visible artifacts.
This thesis tests several methods and measures in pathtracing for selecting either the Line Space or the Bounding Volume Hierarchy data structure to make use of the advantages of both. The structures are defined locally around each object and each Line Space shaft contains one candidate ID each. All implementation is done as a C++ and OpenGL framework with compute shaders handling the pathtracing and Line Space generation. The measures include the probability distribution, the effect dependency, as well as a distance threshold and are tested against several different scenes. In most situations, the results show a noticeable increase in performance, partly only with minor visual differences, with the probability measure producing the highest quality images for a given performance. The fundamental problems of the Line Space concering the high memory consumption and a long generation time compared to the BVH still persist, despite the object local structure, a minimal amount of data per shaft and the compute shader implementation.