Ignore:
Timestamp:
11/25/08 18:14:48 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r3164 r3167  
    3030                                                  uniform sampler2D normalsTex, 
    3131                                                  uniform sampler2D colorsTex, 
    32                                                   uniform float2 filterOffs[NUM_SSAO_FILTERSAMPLES], 
    33                                                   uniform float filterWeights[NUM_SSAO_FILTERSAMPLES], 
     32                                                  uniform float2 filterOffs[NUM_SSAO_FILTER_SAMPLES], 
     33                                                  uniform float filterWeights[NUM_SSAO_FILTER_SAMPLES], 
    3434                                                  float scale 
    3535                                                  ) 
     
    4040        const float eyeSpaceDepth = color.w; 
    4141 
    42         const float3 centerNormal = normalize(tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz); 
    43         //const float3 centerNormal = tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz; 
     42        const float3 centerNormal = tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz; 
    4443 
    4544        float4 aoSample; 
     
    5352        float sampleDepth; 
    5453 
    55         for (int i = 0; i < NUM_SSAO_FILTERSAMPLES; ++ i) 
     54        for (int i = 0; i < NUM_SSAO_FILTER_SAMPLES; ++ i) 
    5655        { 
    5756                sampleTexCoord = float4(texCoord + filterOffs[i] * scale, 0, 0); 
    5857 
    5958                aoSample = tex2Dlod(ssaoTex, sampleTexCoord); 
    60                 sampleNorm = normalize(tex2Dlod(normalsTex, sampleTexCoord).xyz); 
    61                 //sampleNorm = tex2Dlod(normalsTex, sampleTexCoord).xyz; 
     59                sampleNorm = tex2Dlod(normalsTex, sampleTexCoord).xyz; 
    6260 
    6361                // check depth discontinuity 
     
    9694                                                   uniform sampler2D normalsTex, 
    9795                                                   uniform sampler2D colorsTex, 
    98                                                    uniform float2 filterOffs[NUM_SSAO_FILTERSAMPLES], 
     96                                                   uniform float2 filterOffs[NUM_SSAO_FILTER_SAMPLES], 
    9997                                                   float scale, 
    10098                                                   float3 bl, 
     
    107105 
    108106        const float3 centerPos = ReconstructSamplePos(ssaoTex, texCoord, bl, br, tl, tr); 
    109         const float3 centerNormal = normalize(tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz); 
    110         //const float3 centerNormal = tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz; 
     107        const float3 centerNormal = tex2Dlod(normalsTex, float4(texCoord, 0, 0)).xyz; 
    111108 
    112109        float4 aoSample; 
     
    118115        float normalFactor; 
    119116        float convergenceFactor; 
    120         float sampleDepth; 
    121  
    122         for (int i = 0; i < NUM_SSAO_FILTERSAMPLES; ++ i) 
     117        float len; 
     118 
     119        for (int i = 0; i < NUM_SSAO_FILTER_SAMPLES; ++ i) 
    123120        { 
    124121                sampleTexCoord = float4(texCoord + filterOffs[i] * scale, 0, 0); 
    125122 
    126123                aoSample = tex2Dlod(ssaoTex, sampleTexCoord); 
    127                 sampleNorm = normalize(tex2Dlod(normalsTex, sampleTexCoord).xyz); 
    128                 //sampleNorm = tex2Dlod(normalsTex, sampleTexCoord).xyz; 
     124                sampleNorm = tex2Dlod(normalsTex, sampleTexCoord).xyz; 
    129125 
    130126                // check spatial discontinuity 
    131127                samplePos = ReconstructSamplePos(ssaoTex, sampleTexCoord.xy, bl, br, tl, tr); 
    132                 float len = SqrLen(centerPos - samplePos); 
     128                len = min(SqrLen(centerPos - samplePos), 1e2f); 
    133129 
    134130                spatialFactor = 1.0f / max(len, 1e-3f); 
     
    159155                          uniform sampler2D ssaoTex, 
    160156                          uniform sampler2D normalsTex, 
    161                           uniform float2 filterOffs[NUM_SSAO_FILTERSAMPLES], 
    162                           uniform float filterWeights[NUM_SSAO_FILTERSAMPLES], 
     157                          uniform float2 filterOffs[NUM_SSAO_FILTER_SAMPLES], 
     158                          uniform float filterWeights[NUM_SSAO_FILTER_SAMPLES], 
    163159                          uniform float4x4 modelViewProj, 
    164160                          uniform float3 bl, 
     
    180176*/ 
    181177 
     178        // filter up to a certain convergance value and leave out background (sky) by checking depth 
    182179        if ((ao.y < 100.0f) && (col.w < 1e10f)) 
    183180        //if (col.w < 1e10f) 
     
    189186 
    190187                const float convergence = ao.y; 
    191                 const float adaptWeight = 5.0f; 
    192                 const float convergenceScale = adaptWeight / (convergence + adaptWeight); 
    193  
    194                 const float scale = convergenceScale * distanceScale; 
    195  
    196  
     188                const float adaptWeight = 25.0f; 
     189                const float convergenceScale = SSAO_CONVERGENCE_WEIGHT / (convergence + SSAO_CONVERGENCE_WEIGHT); 
     190 
     191                const float scale = NUM_SSAO_FILTER_WIDTH * convergenceScale * distanceScale; 
     192 
     193                // the filtered ssao value 
    197194                ao.x = DiscontinuityFilter2(IN.texCoord, ao, col, ssaoTex, normalsTex, colorsTex, filterOffs, scale, bl, br, tl, tr); 
    198195        } 
Note: See TracChangeset for help on using the changeset viewer.