Changeset 2870


Ignore:
Timestamp:
08/26/08 18:17:06 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg

    r2869 r2870  
    181181        return float4(total_color, 1.0f - total_ao); 
    182182} 
    183  
    184  
    185 float ComputeSmoothedColor(float4 centerPosition,  
    186                                                    uniform sampler2D oldTex, 
    187                                                    uniform float maxDepth,   
    188                                                    uniform float expFactor, 
    189                                                    const uniform float4x4 oldModelViewProj, 
    190                                                    float4 currentCol 
    191                                                    ) 
    192 { 
    193         float4 realPos = centerPosition * maxDepth; 
    194         realPos.w = 1.0f; 
    195  
    196         float4 oldPos = mul(oldModelViewProj, realPos); 
    197  
    198         float newDepth = oldPos.z / oldPos.w; 
    199  
    200         float2 tex = (oldPos.xy / oldPos.w) * 0.5f + 0.5f; 
    201         float4 oldCol = tex2D(oldTex, tex); 
    202  
    203         float oldDepth = oldCol.w; 
    204         float depthDif = 1.0f - newDepth / oldDepth; 
    205  
    206         float4 col; 
    207  
    208         if ((tex.x >= 0.0f) && (tex.x < 1.0f) &&  
    209                 (tex.y >= 0.0f) && (tex.y < 1.0f) &&  
    210                 (abs(depthDif)  < 1e-4f)) 
    211         { 
    212                 col = currentCol * expFactor + oldCol * float4(1.0f - expFactor); 
    213         } 
    214         else 
    215         { 
    216                 col = currentCol; 
    217         } 
    218  
    219         return col; 
    220  } 
    221183 
    222184 
     
    251213        float4 centerPosition = tex2D(positions, IN.texCoord.xy); 
    252214         
    253         float4 col = tex2D(colors, IN.texCoord.xy); 
    254         float currentDepth = col.w; 
     215        // the current color 
     216        float4 currentCol = tex2D(colors, IN.texCoord.xy); 
     217        float currentDepth = currentCol.w; 
    255218 
    256219        float ao = ssao(IN, positions, noiseTexture, samples, normal.xyz, viewDir, noiseMultiplier, centerPosition); 
    257         //float4 attenuated_color = ao * col; 
    258         //float4 attenuated_color = ao; 
    259220 
    260221        //float4 new_col = globIllum(IN, colors, positions, noiseTexture, samples, normal.xyz, viewDir, noiseMultiplier, centerPosition);  
    261         //float4 attenuated_color = ao * col + new_col; 
    262222         
    263223        // compute temporally smoothed color 
    264         OUT.color = ComputeSmoothedColor(centerPosition, oldTex, maxDepth, expFactor, oldModelViewProj, float4(ao)); 
     224        float4 realPos = centerPosition * maxDepth; 
     225        realPos.w = 1.0f; 
     226 
     227        float4 oldPos = mul(oldModelViewProj, realPos); 
     228 
     229        float newDepth = oldPos.z / oldPos.w; 
     230 
     231        float2 tex = (oldPos.xy / oldPos.w) * 0.5f + 0.5f; 
     232        float4 oldCol = tex2D(oldTex, tex); 
     233 
     234        float oldDepth = oldCol.w; 
     235        float depthDif = 1.0f - newDepth / oldDepth; 
     236 
     237        if ((tex.x >= 0.0f) && (tex.x < 1.0f) &&  
     238                (tex.y >= 0.0f) && (tex.y < 1.0f) &&  
     239                (abs(depthDif)  < 1e-4f)) 
     240        { 
     241                OUT.color = float4(ao * expFactor + oldCol * float4(1.0f - expFactor)); 
     242        } 
     243        else 
     244        { 
     245                OUT.color = (float4)ao; 
     246        } 
     247 
    265248 
    266249        //OUT.color.xyz = viewDir; 
Note: See TracChangeset for help on using the changeset viewer.