|
float | aoValueFromPositionsAndNormal (vec3 C, vec3 n_C, vec3 Q) |
| Compute the occlusion due to sample point Q about camera-space point C with unit normal n_C. More...
|
|
float | CSZToKey (float z) |
| Used for packing Z into the GB channels. More...
|
|
float | fallOffFunction (float vv, float vn, float epsilon) |
| Smaller return value = less occlusion. More...
|
|
int | getMipLevel (float ssR) |
|
vec3 | getOffsetPosition (ivec2 ssC, vec2 unitOffset, float ssR, sampler2D cszBuffer, float invCszBufferScale) |
| Read the camera-space position of the point at screen-space pixel ssP + unitOffset * ssR. More...
|
|
void | getOffsetPositions (ivec2 ssC, vec2 unitOffset, float ssR, sampler2D cszBuffer, out vec3 P0, out vec3 P1) |
| Read the camera-space position of the points at screen-space pixel ssP + unitOffset * ssR in both channels of the packed csz buffer. More...
|
|
vec3 | getPosition (ivec2 ssP, sampler2D cszBuffer) |
| Read the camera-space position of the point at screen-space pixel ssP. More...
|
|
float | lowPrecisionHash (vec2 p) |
|
void | main () |
|
float | sampleAO (in ivec2 ssC, in vec3 C, in vec3 n_C, in float ssDiskRadius, in int tapIndex, in float randomPatternRotationAngle, in sampler2D cszBuffer, in float invCszBufferScale) |
| Compute the occlusion due to sample with index i about the pixel at ssC that corresponds to camera-space point C with unit normal n_C, using maximum screen-space sampling radius ssDiskRadius. More...
|
|
vec2 | tapLocation (int sampleNumber, float spinAngle, out float ssR) |
| Returns a unit vector and a screen-space radius for the tap on a unit disk (the caller should scale by the actual disk radius) More...
|
|
Reference implementation of the Scalable Ambient Obscurance (AmbientOcclusion) screen-space ambient obscurance algorithm.
The optimized algorithmic structure of AmbientOcclusion was published in McGuire, Mara, and Luebke, Scalable Ambient Obscurance, HPG 2012, and was developed at NVIDIA with support from Louis Bavoil.
The mathematical ideas of AlchemyAO were first described in McGuire, Osman, Bukowski, and Hennessy, The Alchemy Screen-Space Ambient Obscurance Algorithm, HPG 2011 and were developed at Vicarious Visions.
DX11 HLSL port by Leonardo Zide of Treyarch
Open Source under the "BSD" license: http://www.opensource.org/licenses/bsd-license.php
Copyright (c) 2011-2012, NVIDIA All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.