# A Corner-Highlighting Method for Ambient Occlusion
## 2 Related Works  
The quality of real-time realistic rendering is often denoted highly dependent on approximating the indirect lighting in the scene [5, 6]. Due to its excessive amount of computation, the game industry has been heavily investing in efficient and scalable illumination methods for decades. _Ambient Occlusion_[3] is one of them: It approximates theintensity of the illumination for surfaces by how much they are blocked from lights and their radiance. In spite of its dated implementation, recent researches about its practical usage such as _VAO++_[7], _TSSAO_[8], and _Gaze-Dependent SSAO_[9] are present due to its infamous expensiveness.  
Many of the current implementations are known to be originated from the _Screen-Space Ambient Occlusion_ (SSAO) technique [10]. It computes illumination intensity depending on its neighbored pixels in the screen-space. While this screen-wide computation is recommended for scenes with complex surfaces, operations on smooth and non-occluded surfaces can be considered unnecessary and redundant.  
Multi-resolution rendering techniques [11; 12; 13] are also applied to these applications. Specifically, the _Multi-resolution Screen-Space Ambient Occlusion_ (MSSAO) [11] computes ambient occlusion by combining occlusion values using multiple _mipmap_ levels of the \(G\)-buffer. It generates high quality results, mainly based on the real-time _mipmap_ processing. The relatively high processing cost can be one of its drawbacks.  
Another multi-resolution method [12] divides the screen-space dynamically, and then, the illumination is rendered for each sub-image in an adequate resolution. This method tried to detect edge regions and focused on those regions for the ambient occlusion processing, which is similar to our method. In contrast, it performs ambient occlusion processing for multi-resolution images, and it also needs relatively-high processing power. The _Line-Sweep Ambient Obscurance_ (LSAO) [13] method represents mathematical equations for the ambient occlusion processing.  
This paper introduces a new way to enhance the performance of the ambient occlusion algorithms. Our algorithm, _Outline-dependent Screen-Space Ambient Occlusion_ (OdSSAO), discards areas in advance where illumination is possibly not occluded. Ambient occlusion mostly occurs in concentrated places where orientations of nearby surfaces are disjoint. This also means places where surfaces are uniform, such as a huge wall, are possibly not occluded, standing as a redundant factor in total operation.  
Our algorithm detects these areas by rendering the outlines of surfaces, derived by its vertex normal vectors over the original surfaces. If multiple outlines are drawn on a single pixel, our algorithm highlights the pixel as a possibly occluded point by storing it in the _stencil mask_. This mask layer is then utilized with the conventional _SSAO_ algorithm [9] to process ambient occlusion only on those highlighted regions.  
Our algorithm is originally aimed at highlighting the potential occlusion area, not computing the ambient occlusion itself. Thus, for comparison purposes, we implemented some of the well-known ambient occlusion algorithms on the top of ours: _Alchemy Ambient Obscurance_ (AAO) [14] and the _Scalable Ambient Obscurance_ (SAO) pixel sampling method [15]. In the following sections, we will represent the details of our method.