diff options
author | Sven Gothel <[email protected]> | 2012-02-18 16:59:52 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-02-18 16:59:52 +0100 |
commit | 390ef63a8da4c3e89b2f61526b641b1b2b82f42d (patch) | |
tree | ba0fd8f3294bc9af8381796efd4a91c871615c86 /src/demos/dualDepthPeeling/shader/wavg_final.fp | |
parent | d7e533dca5c70d7c07d56457764e733085136c0a (diff) |
unify shader names(2)
Diffstat (limited to 'src/demos/dualDepthPeeling/shader/wavg_final.fp')
-rw-r--r-- | src/demos/dualDepthPeeling/shader/wavg_final.fp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/demos/dualDepthPeeling/shader/wavg_final.fp b/src/demos/dualDepthPeeling/shader/wavg_final.fp new file mode 100644 index 0000000..034491c --- /dev/null +++ b/src/demos/dualDepthPeeling/shader/wavg_final.fp @@ -0,0 +1,29 @@ +//-------------------------------------------------------------------------------------- +// Order Independent Transparency with Average Color +// +// Author: Louis Bavoil +// Email: [email protected] +// +// Copyright (c) NVIDIA Corporation. All rights reserved. +//-------------------------------------------------------------------------------------- + +uniform samplerRECT ColorTex0; +uniform samplerRECT ColorTex1; +uniform vec3 BackgroundColor; + +void main(void) +{ + vec4 SumColor = textureRect(ColorTex0, gl_FragCoord.xy); + float n = textureRect(ColorTex1, gl_FragCoord.xy).r; + + if (n == 0.0) { + gl_FragColor.rgb = BackgroundColor; + return; + } + + vec3 AvgColor = SumColor.rgb / SumColor.a; + float AvgAlpha = SumColor.a / n; + + float T = pow(1.0-AvgAlpha, n); + gl_FragColor.rgb = AvgColor * (1 - T) + BackgroundColor * T; +} |