Ignore:
Timestamp:
11/25/08 00:56:01 (16 years ago)
Author:
mattausch
Message:

working quite well, put filter size adaptation factor from 10 to 5, still
small popping artifact when switching from no filter to filter for convergence 100.
problems with balconies, transition between low convergence regions and high convergence

File:
1 edited

Legend:

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

    r3159 r3160  
    8989                          uniform sampler2D ssaoTex, 
    9090                          uniform sampler2D normalsTex, 
    91                           uniform sampler2D offsetTex, 
    9291                          uniform float2 filterOffs[NUM_SSAO_FILTERSAMPLES], 
    93                           uniform float filterWeights[NUM_SSAO_FILTERSAMPLES] 
     92                          uniform float filterWeights[NUM_SSAO_FILTERSAMPLES], 
     93                          uniform float4x4 modelViewProj 
    9494                          ) 
    9595{ 
     
    9999        float4 ao = tex2Dlod(ssaoTex, float4(IN.texCoord, 0, 0)); 
    100100 
    101         if ((ao.y < 70.0f) && (col.w < 1e10f)) 
     101        // reconstruct position from the eye space depth 
     102        const float eyeSpaceDepth = col.w; 
     103        const float4 worldPos = float4(-IN.view * eyeSpaceDepth, 1.0f); 
     104        // compute w factor from projection in order to control filter size 
     105        const float4 projPos = mul(modelViewProj, worldPos); 
     106        const float distanceScale = 1.0f / projPos.w; 
     107 
     108        const float convergence = ao.y; 
     109 
     110        if ((ao.y < 100.0f) && (col.w < 1e10f)) 
    102111        //if (col.w < 1e10f) 
    103112        { 
    104113                const float scaleFactor = 1.0f; 
    105                 const float adaptFactor = 10.0f; 
    106                 const float scale =     adaptFactor * scaleFactor * ao.z  / (adaptFactor + ao.y); 
     114                const float adaptFactor = 5.0f; 
     115                const float scale =     adaptFactor * scaleFactor * distanceScale / (adaptFactor + convergence); 
    107116 
    108                 //ao.x = DiscontinuityFilter(IN.texCoord, ao, col, ssaoTex, normalsTex, colorsTex, filterOffs, filterWeights, scale); 
     117                ao.x = DiscontinuityFilter(IN.texCoord, ao, col, ssaoTex, normalsTex, colorsTex, filterOffs, filterWeights, scale); 
    109118        } 
    110119 
Note: See TracChangeset for help on using the changeset viewer.