Ignore:
Timestamp:
02/23/09 18:33:26 (15 years ago)
Author:
mattausch
Message:

strange texture error!!

File:
1 edited

Legend:

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

    r3325 r3326  
    1515        float4 color: COLOR0; 
    1616        float3 normal: COLOR1; 
    17         float3 diffVal: COLOR2; 
     17        //float3 diffVal: COLOR2; 
    1818}; 
    1919 
     
    3737        float4 outColor; 
    3838 
    39         // hack: prevent shading the sky 
     39        // hack: prevent to shade the sky 
    4040        if (color.w > DEPTH_THRESHOLD) 
    4141        { 
     
    171171                lightSpacePos /= lightSpacePos.w; 
    172172 
    173                 float shadowTerm = CalcShadowTerm(IN, shadowMap, sampleWidth, lightSpacePos.xy, lightSpacePos.z, samples, weights, noiseTex); 
     173                float shadowTerm = CalcShadowTerm(IN, shadowMap, sampleWidth,  
     174                                                      lightSpacePos.xy, lightSpacePos.z, samples, weights, noiseTex); 
    174175                diffuse *= shadowTerm; 
    175176        } 
     
    209210        */ 
    210211inline float2 PixelValid(sampler2D oldTex, 
    211                                                  sampler2D oldTex2, 
    212212                                                 float4 color, 
    213213                                                 float3 difVec, 
     
    220220                                                 float3 oldbr, 
    221221                                                 float3 oldtl, 
    222                                                  float3 oldtr 
     222                                                 float3 oldtr, 
     223                                                 sampler2D myTex 
    223224                                                 ) 
    224225{ 
     
    249250         
    250251        // fit from unit cube into 0 .. 1 
    251         const float2 oldTexCoords = backProjPos.xy * 0.5f + 0.5f; 
    252         //const float2 oldTexCoords = texCoord; 
     252        const float2 oldTexCoords = backProjPos.xy * .5f + .5f; 
     253         
    253254        // retrieve the sample from the last frame 
    254         const float4 oldPixel = tex2Dlod(oldTex, float4(oldTexCoords, .0f, .0f)); 
    255         const float4 oldPixel2 = tex2Dlod(oldTex2, float4(oldTexCoords, .0f, .0f)); 
     255        const float4 oldPixel = tex2Dlod(myTex, float4(oldTexCoords, .0f, .0f)); 
     256        const float oldDiff = tex2Dlod(oldTex, float4(oldTexCoords, .0f, .0f)).x; 
    256257 
    257258        // calculate eye space position of sample in old frame 
     
    266267        const float squaredLen = SqrLen(difVec); 
    267268         
     269 
    268270        // test if this pixel was valid in the old frame 
    269271        float isPixelValid; 
    270272 
    271273        // check if the pixel belonged to a dynamic object in the last frame 
    272         const bool newDynamic = (squaredLen > DYNAMIC_OBJECTS_THRESHOLD); 
    273         const bool oldDynamic = (oldPixel2.x > DYNAMIC_OBJECTS_THRESHOLD); 
     274        const bool newDynamic = (squaredLen > 100000);//DYNAMIC_OBJECTS_THRESHOLD); 
     275        const bool oldDynamic = (oldDiff > 1000000);//DYNAMIC_OBJECTS_THRESHOLD); 
     276 
    274277 
    275278        // actually 0 means pixel is valid 
    276         const float pixelIsValid = 0.0f; 
     279        const float pixelIsValid = .0f; 
    277280        // means that we only use slight temporal coherence over some frames 
    278281        // so that there is no noticeable drag 
     
    281284        const float pixelIsNotValid = 100.0f; 
    282285 
     286 
    283287        // check if the pixel was outside of the frame buffer 
    284         if ((oldTexCoords.x <= 0) || (oldTexCoords.x >= 1.0f) ||  
    285                 (oldTexCoords.y <= 0) || (oldTexCoords.y >= 1.0f) 
     288        if ((oldTexCoords.x <= .0f) || (oldTexCoords.x >= 1.0f) ||  
     289                (oldTexCoords.y <= .0f) || (oldTexCoords.y >= 1.0f) 
    286290                ) 
    287291        { 
    288292                isPixelValid = pixelIsNotValid; 
    289293        } 
    290         else if (// check if changed from dynamic to not dynamic object 
    291                 ((oldDynamic && !newDynamic) || (!oldDynamic && newDynamic) || 
    292                 ( 
    293                 (oldEyeSpaceDepth < DEPTH_THRESHOLD) && (projectedEyeSpaceDepth < DEPTH_THRESHOLD) && 
    294                 // check if we have a dynamic object  
    295                 (oldDynamic || newDynamic) &&  
    296                 // and there is a depth discontinuity 
    297                 (depthDif > MIN_DEPTH_DIFF)))) 
     294        else if ( // check if changed from dynamic to not dynamic object 
     295                 ((oldDynamic && !newDynamic) || (!oldDynamic && newDynamic) || 
     296                         ( 
     297                          (oldEyeSpaceDepth < DEPTH_THRESHOLD) && (projectedEyeSpaceDepth < DEPTH_THRESHOLD) && 
     298                          (oldDynamic || newDynamic) &&  // check if we have a dynamic object  
     299                          (depthDif > MIN_DEPTH_DIFF)))) // and there is a depth discontinuity 
    298300        {        
    299                 isPixelValid = pixelCouldBeValid;  
     301                isPixelValid = pixelCouldBeValid; 
    300302        } 
    301303        else  
     
    303305                isPixelValid = pixelIsValid; 
    304306        } 
    305  
     307         
     308        //isPixelValid = 2e20f; 
    306309        return float2(isPixelValid, abs(oldEyeSpaceDepth - projectedEyeSpaceDepth)); 
    307310} 
     
    312315*/ 
    313316pixel PrepareSsao(fragment IN, 
    314                                    uniform sampler2D colorsTex, 
    315                                    uniform sampler2D normalsTex, 
    316                                    uniform sampler2D diffVals, 
    317                                    uniform sampler2D oldTex, 
    318                                    uniform sampler2D oldTex2, 
    319                                    uniform float4x4 modelViewProj, 
    320                                    uniform float4x4 oldModelViewProj, 
    321                                    uniform float3 oldbl, 
    322                                    uniform float3 oldbr, 
    323                                    uniform float3 oldtl, 
    324                                    uniform float3 oldtr, 
    325                                    uniform float3 oldEyePos 
    326                                    ) 
     317                                  uniform sampler2D colorsTex, 
     318                                  uniform sampler2D normalsTex, 
     319                                  uniform sampler2D diffVals, 
     320                                  uniform sampler2D oldTex, 
     321                                  uniform float4x4 modelViewProj, 
     322                                  uniform float4x4 oldModelViewProj, 
     323                                  uniform float3 oldbl, 
     324                                  uniform float3 oldbr, 
     325                                  uniform float3 oldtl, 
     326                                  uniform float3 oldtr, 
     327                                  uniform float3 oldEyePos, 
     328                                  uniform sampler2D myTex 
     329                                  ) 
    327330{    
    328331        pixel pix; 
    329332 
    330         float4 color = tex2Dlod(colorsTex, float4(IN.texCoord, 0, 0)); 
     333        float4 color = tex2Dlod(colorsTex, float4(IN.texCoord, .0f, .0f)); 
    331334        // store scaled view vector so wie don't have to normalize for e.g., ssao 
    332335        color.w /= length(IN.view); 
     
    337340 
    338341        // do reprojection and filter out the pixels that are not save 
    339         float2 pValid = PixelValid(oldTex, 
    340                                        oldTex2, 
    341                                        color,  
    342                                                            difVec.xyz, 
    343                                                            IN.texCoord, 
    344                                                            IN.view, 
    345                                                            oldEyePos, 
    346                                                            modelViewProj, 
    347                                                            oldModelViewProj, 
    348                                                            oldbl, oldbr, oldtl, oldtr 
    349                                                           ); 
     342        const float2 pValid = PixelValid(oldTex, 
     343                                             color,  
     344                                                                         difVec.xyz, 
     345                                                                         IN.texCoord, 
     346                                                                         IN.view, 
     347                                                                         oldEyePos, 
     348                                                                         modelViewProj,                                                    
     349                                                                         oldModelViewProj, 
     350                                                                         oldbl, oldbr, oldtl, oldtr, 
     351                                                                         myTex 
     352                                                                        ); 
    350353 
    351354        pix.color = color; 
Note: See TracChangeset for help on using the changeset viewer.