Changeset 3105


Ignore:
Timestamp:
11/06/08 15:14:49 (16 years ago)
Author:
mattausch
Message:

now strafing up not working anymore!!!!

Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp

    r3104 r3105  
    394394        //const float filterWidth = 10.0f; 
    395395        const float filterWidth = 5.0f; 
     396        //const float filterWidth = 60.0f; 
    396397 
    397398        //const float xoffs = filterWidth / mDownSampleFbo->GetWidth(); 
    398399        //const float yoffs = filterWidth / mDownSampleFbo->GetHeight(); 
    399         const float xoffs = (float)filterWidth / 1024.0f; 
    400         const float yoffs = (float)filterWidth / 768.0f; 
     400        const float xoffs = (float)filterWidth / mWidth; 
     401        const float yoffs = (float)filterWidth / mHeight; 
    401402 
    402403        for (int i = 0; i < NUM_SSAO_FILTERSAMPLES; ++ i) 
     
    543544        sCgSsaoProgram->SetMatrix(i ++, mOldProjViewMatrix); 
    544545 
    545         Vector3 de = mOldEyePos - mEyePos; 
     546        //Vector3 de = mOldEyePos - mEyePos; 
     547        Vector3 de; 
     548        de.x = mOldEyePos.x - mEyePos.x; 
     549        de.y = mOldEyePos.y - mEyePos.y;  
     550        de.z = mOldEyePos.z - mEyePos.z; 
    546551        //Vector3 de = mEyePos - mOldEyePos; 
    547552 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3103 r3105  
    175175bool descendKeyPressed = false; 
    176176bool ascendKeyPressed = false; 
     177bool leftStrafeKeyPressed = false; 
     178bool rightStrafeKeyPressed = false; 
     179 
    177180bool altKeyPressed = false; 
    178181 
     
    844847 
    845848 
     849void KeyStrafe(float shift) 
     850{ 
     851        Vector3 viewDir = camera->GetDirection(); 
     852        Vector3 pos = camera->GetPosition(); 
     853 
     854        // the 90 degree rotated view vector  
     855        // z zero so we don't move in the vertical 
     856        Vector3 rVec(viewDir[0], viewDir[1], 0); 
     857 
     858        Matrix4x4 rot = RotationZMatrix(M_PI * 0.5f); 
     859        rVec = rot * rVec; 
     860        pos += rVec * shift; 
     861 
     862        camera->SetPosition(pos); 
     863} 
     864 
     865 
    846866/** Initialize the deferred rendering pass. 
    847867*/ 
     
    899919        if (descendKeyPressed) 
    900920                KeyVerticalMotion(-KeyShift()); 
     921        if (leftStrafeKeyPressed) 
     922                KeyStrafe(KeyShift()); 
     923        if (rightStrafeKeyPressed) 
     924                KeyStrafe(-KeyShift()); 
     925 
    901926 
    902927        // place view on ground 
     
    12181243                downKeyPressed = true; 
    12191244                break; 
     1245        case 'j': 
     1246        case 'J': 
     1247                leftStrafeKeyPressed = true; 
     1248                break; 
     1249        case 'k': 
     1250        case 'K': 
     1251                rightStrafeKeyPressed = true; 
     1252                break; 
    12201253        case 'r': 
    12211254        case 'R': 
     
    12971330                ascendKeyPressed = false; 
    12981331                break; 
    1299          
     1332        case 'j': 
     1333        case 'J': 
     1334                leftStrafeKeyPressed = false; 
     1335                break; 
     1336        case 'k': 
     1337        case 'K': 
     1338                rightStrafeKeyPressed = false; 
     1339                break; 
    13001340        default: 
    13011341                return; 
     
    15051545 
    15061546 
    1507 // strafe 
     1547/** strafe 
     1548*/ 
    15081549void MiddleMotion(int x, int y)  
    15091550{ 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaderenv.h

    r3103 r3105  
    4343#define MAX_LOD_LEVEL 10 
    4444 
    45 //#define MIN_DEPTH_DIFF 1e-2f 
    46 #define MIN_DEPTH_DIFF 0.1f 
     45#define MIN_DEPTH_DIFF 1e-3f 
     46//#define MIN_DEPTH_DIFF 1e-3f 
    4747#define PRECISION_SCALE 1e-1f 
    4848 
     
    5555#define NUM_DOWNSAMPLES 9 
    5656 
    57 #define NUM_SSAO_FILTERSAMPLES 28 
     57//#define NUM_SSAO_FILTERSAMPLES 28 
     58#define NUM_SSAO_FILTERSAMPLES 40 
    5859 
    5960 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg

    r3104 r3105  
    44// Screen Spaced Ambient Occlusion shader 
    55// based on shader of Alexander Kusternig 
     6 
     7#define USE_EYESPACE_DEPTH 0 
     8 
     9 
    610 
    711struct fragment 
     
    118122                                                                float2 texcoord0, 
    119123                                                                float3 oldEyePos, 
    120                                                                 sampler2D oldTex, 
    121                                                                 float4x4 oldModelViewProj, 
    122                                                                 float temporalCoherence, 
    123                                                                 float2 samples[NUM_SAMPLES], 
    124                                                                 sampler2D colors, 
    125                                                                 sampler2D noiseTex, 
     124                                                                uniform sampler2D oldTex, 
     125                                                                uniform float4x4 oldModelViewProj, 
     126                                                                uniform float temporalCoherence, 
     127                                                                uniform float2 samples[NUM_SAMPLES], 
     128                                                                uniform sampler2D colors, 
     129                                                                uniform sampler2D noiseTex, 
    126130                                                                float scaleFactor, 
    127                                                                 float3 bl, 
    128                                                                 float3 br, 
    129                                                                 float3 tl, 
    130                                                                 float3 tr,  
    131                                                                 float3 oldbl, 
    132                                                                 float3 oldbr, 
    133                                                                 float3 oldtl, 
    134                                                                 float3 oldtr 
     131                                                                uniform float3 bl, 
     132                                                                uniform float3 br, 
     133                                                                uniform float3 tl, 
     134                                                                uniform float3 tr,  
     135                                                                uniform float3 oldbl, 
     136                                                                uniform float3 oldbr, 
     137                                                                uniform float3 oldtl, 
     138                                                                uniform  float3 oldtr, 
     139                                                                float invW 
    135140                                                                //,const uniform float4x4 inverseModelTrafo 
    136141                                                                //, float id 
     
    147152        //else trafo = inverseModelTrafo * oldModelViewProj; 
    148153 
    149         float3 translatedPt = worldPos.xyz - oldEyePos; 
     154        //float3 translatedPt = float3(worldPos.xy - oldEyePos.xy, worldPos.z + oldEyePos.z); 
     155        //float3 translatedPt = float3(worldPos.x - oldEyePos.x, worldPos.y - oldEyePos.y, worldPos.z - oldEyePos.z); 
     156        const float3 translatedPt = worldPos.xyz - oldEyePos; 
    150157 
    151158        // reproject into old frame and calculate texture position of sample in old frame 
     
    158165        // retrieve the sample from the last frame 
    159166        const float4 oldPixel = tex2Dlod(oldTex, float4(oldTexCoords, .0f, .0f)); 
     167 
     168#if USE_EYESPACE_DEPTH 
    160169        // calculate eye space position of sample in old frame 
    161170        const float oldEyeSpaceDepth = oldPixel.w; 
     
    163172        // vector from eye pos to old sample  
    164173        const float3 viewVec = Interpol(oldTexCoords, oldbl, oldbr, oldtl, oldtr); 
    165          
    166174        const float invlen = 1.0f / length(viewVec); 
    167175        const float projectedEyeSpaceDepth = length(translatedPt) * invlen; 
     
    169177        const float depthDif = abs(oldEyeSpaceDepth - projectedEyeSpaceDepth); 
    170178        //const float depthDif = abs(oldEyeSpaceDepth - projectedEyeSpaceDepth) / projectedEyeSpaceDepth; 
    171          
     179#else 
     180        // calculate eye space position of sample in old frame 
     181        const float oldDepth = oldPixel.w; 
     182 
     183        float3 projectedPos = worldPos.xyz * invW; 
     184        const float projectedDepth = worldPos.z; 
     185 
     186        // vector from eye pos to old sample  
     187        const float depthDif = abs(projectedDepth - oldDepth); 
     188        //const float depthDif = abs(oldEyeSpaceDepth - projectedEyeSpaceDepth) / projectedEyeSpaceDepth; 
     189#endif 
     190 
    172191        float notValid = 0.5f; 
    173192 
     
    219238 
    220239        illum_col.y = newWeight; 
     240 
     241#if USE_EYESPACE_DEPTH 
    221242        illum_col.w = eyeSpaceDepth; 
     243#else 
     244        illum_col.w = projectedDepth; 
     245        illum_col.z = invW; 
     246#endif 
     247         
    222248        //illum_col.y = depthDif; 
    223249 
     
    337363         
    338364        float4 projPos = mul(modelViewProj, eyeSpacePos); 
    339         float w = SAMPLE_RADIUS / projPos.w; 
     365        const float w = 1 / projPos.w; 
     366        float scaleFactor = SAMPLE_RADIUS * w; 
    340367         
    341368        const float2 ao = ssao(IN, colors, noiseTex, samples, normal,  
    342                                    eyeSpacePos.xyz, w, bl, br, tl, tr, normalize(viewDir)); 
     369                                   eyeSpacePos.xyz, scaleFactor, bl, br, tl, tr, normalize(viewDir)); 
    343370 
    344371 
     
    349376                                              oldTex, oldModelViewProj, temporalCoherence, 
    350377                                              samples, colors, noiseTex, w, bl, br, tl, tr, 
    351                                                                           oldbl, oldbr, oldtl, oldtr); 
     378                                                                          oldbl, oldbr, oldtl, oldtr, scaleFactor); 
    352379 
    353380        //OUT.illum_col.xyz = normal * 0.5f + 0.5f; 
     
    358385                         uniform sampler2D ssaoTex, 
    359386                         uniform float2 filterOffs[NUM_SSAO_FILTERSAMPLES], 
    360                          uniform float filterWeights[NUM_SSAO_FILTERSAMPLES]) 
     387                         uniform float filterWeights[NUM_SSAO_FILTERSAMPLES], 
     388                         float scale) 
    361389{ 
    362390        float average = .0f; 
     
    365393        for (int i = 0; i < NUM_SSAO_FILTERSAMPLES; ++ i) 
    366394        { 
    367                 average += filterWeights[i] * tex2Dlod(ssaoTex, float4(texCoord + filterOffs[i], 0, 0)).x; 
     395                average += filterWeights[i] * tex2Dlod(ssaoTex, float4(texCoord + filterOffs[i] * scale, 0, 0)).x; 
    368396                w += filterWeights[i]; 
    369397        } 
     
    384412        pixel OUT; 
    385413 
    386         float4 col = tex2Dlod(colorsTex, float4(IN.texCoord, 0, 0)); 
     414        const float4 col = tex2Dlod(colorsTex, float4(IN.texCoord, 0, 0)); 
    387415        float4 ao = tex2Dlod(ssaoTex, float4(IN.texCoord, 0, 0)); 
    388416 
    389         //if (ao.y < 10.0f) ao.x = Filter(IN.texCoord, ssaoTex, filterOffs, filterWeights); 
    390  
    391         //OUT.illum_col = col * ao.x; 
     417        if ((ao.y < 10.0f) && (col.w < 1e10f)) 
     418                ao.x = Filter(IN.texCoord, ssaoTex, filterOffs, filterWeights, 1.0f / (1.0f + ao.y));//ao.z); 
     419 
     420        OUT.illum_col = col * ao.x; 
    392421        //OUT.illum_col = float4(ao.y, ao.y, ao.y, col.w); 
    393422        //OUT.illum_col = float4(ao.x, ao.x, ao.x, col.w); 
Note: See TracChangeset for help on using the changeset viewer.