summaryrefslogtreecommitdiffstats
path: root/src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2012-02-18 16:59:10 +0100
committerSven Gothel <[email protected]>2012-02-18 16:59:10 +0100
commitd7e533dca5c70d7c07d56457764e733085136c0a (patch)
tree33623050fb5dd3967de8fd455549c15ae4c0097e /src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl
parentabe9a0f08f45513017f272d61572421b93e3231a (diff)
unify shader names
Diffstat (limited to 'src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl')
-rw-r--r--src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl67
1 files changed, 0 insertions, 67 deletions
diff --git a/src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl b/src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl
deleted file mode 100644
index 2d61b89..0000000
--- a/src/demos/dualDepthPeeling/shaders/dual_peeling_peel_fragment.glsl
+++ /dev/null
@@ -1,67 +0,0 @@
-//--------------------------------------------------------------------------------------
-// Order Independent Transparency with Dual Depth Peeling
-//
-// Author: Louis Bavoil
-//
-// Copyright (c) NVIDIA Corporation. All rights reserved.
-//--------------------------------------------------------------------------------------
-
-#extension ARB_draw_buffers : require
-
-uniform samplerRECT DepthBlenderTex;
-uniform samplerRECT FrontBlenderTex;
-
-#define MAX_DEPTH 1.0
-
-vec4 ShadeFragment();
-
-void main(void)
-{
- // window-space depth interpolated linearly in screen space
- float fragDepth = gl_FragCoord.z;
-
- vec2 depthBlender = textureRect(DepthBlenderTex, gl_FragCoord.xy).xy;
- vec4 forwardTemp = textureRect(FrontBlenderTex, gl_FragCoord.xy);
-
- // Depths and 1.0-alphaMult always increase
- // so we can use pass-through by default with MAX blending
- gl_FragData[0].xy = depthBlender;
-
- // Front colors always increase (DST += SRC*ALPHA_MULT)
- // so we can use pass-through by default with MAX blending
- gl_FragData[1] = forwardTemp;
-
- // Because over blending makes color increase or decrease,
- // we cannot pass-through by default.
- // Each pass, only one fragment writes a color greater than 0
- gl_FragData[2] = vec4(0.0);
-
- float nearestDepth = -depthBlender.x;
- float farthestDepth = depthBlender.y;
- float alphaMultiplier = 1.0 - forwardTemp.w;
-
- if (fragDepth < nearestDepth || fragDepth > farthestDepth) {
- // Skip this depth in the peeling algorithm
- gl_FragData[0].xy = vec2(-MAX_DEPTH);
- return;
- }
-
- if (fragDepth > nearestDepth && fragDepth < farthestDepth) {
- // This fragment needs to be peeled again
- gl_FragData[0].xy = vec2(-fragDepth, fragDepth);
- return;
- }
-
- // If we made it here, this fragment is on the peeled layer from last pass
- // therefore, we need to shade it, and make sure it is not peeled any farther
- vec4 color = ShadeFragment();
- gl_FragData[0].xy = vec2(-MAX_DEPTH);
-
- if (fragDepth == nearestDepth) {
- gl_FragData[1].xyz += color.rgb * color.a * alphaMultiplier;
- gl_FragData[1].w = 1.0 - alphaMultiplier * (1.0 - color.a);
- } else {
- gl_FragData[2] += color;
- }
-}