Ignore:
Timestamp:
09/03/08 01:57:45 (16 years ago)
Author:
mattausch
Message:

improved shadow mapping

File:
1 edited

Legend:

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

    r2896 r2897  
    5050static CGparameter sNoiseTexParam; 
    5151static CGparameter sNoiseMultiplierParam; 
    52 static CGparameter sExpFactorParam; 
    53  
     52static CGparameter sTemporalCoherenceParam; 
    5453 
    5554 
     
    6968static CGparameter sNoiseTexGiParam; 
    7069static CGparameter sNoiseMultiplierGiParam; 
    71 static CGparameter sExpFactorGiParam; 
     70static CGparameter sTemporalCoherenceGiParam; 
    7271 
    7372 
     
    299298                cgGLLoadProgram(sCgSsaoProgram); 
    300299 
    301                 // we need size of texture for scaling 
    302300                sPositionsTexParam = cgGetNamedParameter(sCgSsaoProgram, "positions");   
    303301                sColorsTexParam = cgGetNamedParameter(sCgSsaoProgram, "colors");   
     
    308306                sOldModelViewProjMatrixParam = cgGetNamedParameter(sCgSsaoProgram, "oldModelViewProj"); 
    309307                sMaxDepthParam = cgGetNamedParameter(sCgSsaoProgram, "maxDepth"); 
    310                 sExpFactorParam = cgGetNamedParameter(sCgSsaoProgram, "expFactor"); 
     308                sTemporalCoherenceParam = cgGetNamedParameter(sCgSsaoProgram, "temporalCoherence"); 
    311309 
    312310                sOldTexParam = cgGetNamedParameter(sCgSsaoProgram, "oldTex");   
     
    339337                sOldModelViewProjMatrixGiParam = cgGetNamedParameter(sCgGiProgram, "oldModelViewProj"); 
    340338                sMaxDepthGiParam = cgGetNamedParameter(sCgGiProgram, "maxDepth"); 
    341                 sExpFactorGiParam = cgGetNamedParameter(sCgGiProgram, "expFactor"); 
     339                sTemporalCoherenceGiParam = cgGetNamedParameter(sCgGiProgram, "temporalCoherence"); 
    342340 
    343341                sSamplesGiParam = cgGetNamedParameter(sCgGiProgram, "samples"); 
     
    437435 
    438436void DeferredRenderer::Render(FrameBufferObject *fbo,  
    439                                                 const Matrix4x4 &oldProjViewMatrix, 
    440                                                 float expFactor, 
    441                                                 ShadowMap *shadowMap) 
    442 { 
    443          
     437                                                          const Matrix4x4 &oldProjViewMatrix, 
     438                                                          float expFactor, 
     439                                                          ShadowMap *shadowMap) 
     440{ 
    444441        // switch roles of old and new fbo 
    445442        // the algorihm uses two input fbos, where the one 
    446443        // contais the color buffer from the last frame,  
    447444        // the other one will be written 
     445 
     446        mFboIndex = 2 - mFboIndex; 
    448447        //swap(mNewFbo, mOldFbo);        
    449         mFboIndex = 2 - mFboIndex; 
     448 
    450449        FrameBufferObject::Release(); 
    451450 
     
    463462        glLoadIdentity(); 
    464463 
     464        const float offs = 0.5f; 
     465        glOrtho(-offs, offs, -offs, offs, 0, 1); 
     466 
    465467        glMatrixMode(GL_MODELVIEW); 
    466468        glPushMatrix(); 
    467469        glLoadIdentity(); 
    468  
    469         const float offs = 0.5f; 
    470         glOrtho(-offs, offs, -offs, offs, 0, 1); 
    471470 
    472471        if (shadowMap) 
     
    557556        cgGLSetParameter1f(sMaxDepthParam, mScaleFactor); 
    558557         
     558        cgGLSetParameter1f(sTemporalCoherenceParam, (mUseTemporalCoherence && !mRegenerateSamples) ? 255 : 0); 
    559559 
    560560        if (mUseTemporalCoherence || mRegenerateSamples) 
     
    570570        } 
    571571 
    572         cgGLSetParameter1f(sExpFactorParam, mUseTemporalCoherence ? expFactor : 1.0f); 
    573  
    574572        Vector3 tl, tr, bl, br; 
    575573        ComputeViewVectors(tl, tr, bl, br); 
     
    782780        cgGLSetParameter1f(sMaxDepthGiParam, mScaleFactor); 
    783781 
     782        cgGLSetParameter1f(sTemporalCoherenceGiParam, (mUseTemporalCoherence && !mRegenerateSamples) ? 255 : 0); 
     783 
    784784 
    785785        if (mUseTemporalCoherence || mRegenerateSamples) 
     
    787787                mRegenerateSamples = false; 
    788788                cgGLSetParameter1f(sNoiseMultiplierGiParam, RandomValue(3.0f, 17.0f)); 
    789                 cgGLSetParameter1f(sExpFactorGiParam, expFactor); 
    790789 
    791790                // q: should we generate new samples or only rotate the old ones? 
     
    796795        } 
    797796 
    798         cgGLSetParameter1f(sExpFactorParam, mUseTemporalCoherence ? expFactor : 1.0f); 
    799797 
    800798        Vector3 tl, tr, bl, br; 
     
    10041002} 
    10051003 
     1004 
     1005void DeferredRenderer::SetShadingMethod(SHADING_METHOD s) 
     1006{ 
     1007        if (s != mShadingMethod) 
     1008        { 
     1009                mShadingMethod = s;  
     1010                mRegenerateSamples = true; 
     1011        } 
     1012} 
     1013 
    10061014} // namespace 
Note: See TracChangeset for help on using the changeset viewer.