source: GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/temporal.cg @ 2868

Revision 2868, 1.5 KB checked in by mattausch, 16 years ago (diff)

changed ssao to multipass algorithm

Line 
1
2/** Computes the temporally smoothed indirect illumination buffer and combines it
3        with the color buffer
4*/
5pixel main(fragment IN,
6                   uniform sampler2D colors,
7                   uniform sampler2D ssao,
8                   uniform sampler2D oldssao,
9                   uniform sampler2D positions
10                   const uniform float4x4 oldModelViewProj,
11                   uniform float maxDepth,
12                   uniform float expFactor
13                   )
14{
15        pixel OUT;
16
17        float4 centerPosition = tex2D(positions, IN.texCoord.xy);
18       
19        float4 col = tex2D(colors, IN.texCoord.xy);
20
21        float ao = tex2D(ssao, IN.texCoord.xy);
22        float4 attenuated_color = ao * col;
23        //float4 attenuated_color = ao;
24
25        //float4 new_col = globIllum(IN, colors, positions, noiseTexture, samples, normal.xyz, viewDir, noiseMultiplier, centerPosition);
26        //float4 attenuated_color = ao * col + new_col;
27       
28        const float x = expFactor;
29
30        float4 dummy = centerPosition * maxDepth;
31        dummy.w = 1.0f;
32
33        float4 oldPos = mul(oldModelViewProj, dummy);
34
35        float newDepth = oldPos.z / oldPos.w;
36 
37        float2 tex = (oldPos.xy / oldPos.w) * 0.5f + 0.5f;
38        float4 col1 = tex2D(oldTex, tex);
39
40        float oldDepth = col1.w;
41        float depthDif = 1.0f - newDepth / oldDepth;
42
43        if ((tex.x >= 0.0f) && (tex.x < 1.0f) &&
44                (tex.y >= 0.0f) && (tex.y < 1.0f) &&
45                (abs(depthDif)  < 1e-4f))
46        {
47                OUT.color = attenuated_color * expFactor + col1 * float4(1.0f - expFactor);
48        }
49        else
50        {
51                OUT.color = attenuated_color;
52        }
53
54        //OUT.color.xyz = viewDir;
55        //OUT.color = attenuated_color;
56       
57        //OUT.color.w = tex2D(colors, IN.texCoord.xy).w;
58
59        return OUT;
60}
Note: See TracBrowser for help on using the repository browser.