Ignore:
Timestamp:
12/26/08 02:44:45 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
7 edited

Legend:

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

    r3214 r3235  
    13261326        { 
    13271327                while (mGeometry[i]->GetWorldCenter()[axis] < position) ++ i; 
     1328                //while ((j > 0) && (position < mGeometry[j]->GetWorldCenter()[axis])) -- j; 
    13281329                while (position < mGeometry[j]->GetWorldCenter()[axis]) -- j; 
    13291330 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp

    r3233 r3235  
    301301mSunVisiblePixels(0), 
    302302mSavedFrameNumber(-1), 
    303 mSavedFrameSuffix("") 
     303mSavedFrameSuffix(""), 
     304mMaxDistance(1e6f) 
    304305{ 
    305306        /////////// 
     
    488489        //////////////// 
    489490         
    490         string dofParams[] = {"colorsTex", "filterOffs", "sceneRange"}; 
    491  
    492         sCgDOFProgram->AddParameters(dofParams, 0, 3); 
     491        string dofParams[] = {"colorsTex", "filterOffs", "sceneRange", "zFocus"}; 
     492 
     493        sCgDOFProgram->AddParameters(dofParams, 0, 4); 
    493494 
    494495 
     
    520521        // todo matt: it is stupid to put num samples and width of kernel into constructor => change this!!! 
    521522        PoissonDiscSampleGenerator2D poisson3(NUM_DOF_TABS, 1.0f); 
    522         poisson2.Generate((float *)dofSamples); 
     523        poisson3.Generate((float *)dofSamples); 
     524 
     525        for (int i = 0; i < NUM_DOF_TABS; ++ i) 
     526        { 
     527                dofSamples[i].x *= 1.0f / mWidth; 
     528                dofSamples[i].y *= 1.0f / mHeight; 
     529        } 
    523530 
    524531        //float dofWeights[NUM_PCF_TABS]; 
     
    567574        } 
    568575 
     576        /// do depth of field 
     577        DepthOfField(fbo); 
     578 
    569579        if (useToneMapping) 
    570580        { 
     
    574584                ToneMap(fbo, imageKey, whiteLum, middleGrey); 
    575585        } 
    576  
    577  
    578         /// do depth of field 
    579         DepthOfField(fbo); 
    580586 
    581587        /// compute lense flare 
     
    13121318        FlipFbos(fbo); 
    13131319 
    1314         float sceneRange = 1.0f; 
    1315  
    13161320        int i = 0; 
     1321 
     1322        const float zFocus = 7.0f; 
    13171323 
    13181324        sCgDOFProgram->SetTexture(i ++, colorsTex); 
    13191325        sCgDOFProgram->SetArray2f(i ++, (float *)dofSamples, NUM_DOF_TABS); 
    1320         sCgDOFProgram->SetValue1f(i ++, mCamera->GetFar() - mCamera->GetNear()); 
     1326        sCgDOFProgram->SetValue1f(i ++, min(mCamera->GetFar(), mMaxDistance) - mCamera->GetNear()); 
     1327        sCgDOFProgram->SetValue1f(i ++, zFocus); 
    13211328 
    13221329        DrawQuad(sCgDOFProgram); 
     
    14421449 
    14431450 
     1451void DeferredRenderer::SetMaxDistance(float maxDist)  
     1452{ 
     1453        mMaxDistance = maxDist; 
     1454} 
     1455 
     1456 
    14441457void DeferredRenderer::SetSaveFrame(const string &suffix, int frameNumber) 
    14451458{ 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.h

    r3232 r3235  
    8888        void SetSaveFrame(const std::string &suffix, int frameNumber); 
    8989 
     90        void SetMaxDistance(float maxDist); 
     91 
    9092 
    9193        // hack: store the color buffer idx for the currently used flip flop-MRT here 
     
    158160 
    159161 
     162 
    160163        //////////// 
    161164 
     
    205208        int mSavedFrameNumber; 
    206209        std::string mSavedFrameSuffix; 
     210 
     211        float mMaxDistance; 
    207212}; 
    208213 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SampleGenerator.cpp

    r3234 r3235  
    109109        } 
    110110 
    111         cout << "minDist after= " << (float)minDist / mNumSamples<< " #tries: " << tries << endl; 
     111        //cout << "minDist after= " << (float)minDist / mNumSamples<< " #tries: " << tries << endl; 
    112112} 
    113113 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3227 r3235  
    541541        //LoadModel("fisch.dem", dynamicObjects); 
    542542        LoadModel("hbuddha.dem", dynamicObjects); 
     543 
    543544        //LoadModel("venusm.dem", dynamicObjects); 
    544545        //LoadModel("camel.dem", dynamicObjects); 
     
    575576                dynamicObjects.push_back(ent); 
    576577        } 
     578 
     579 
     580        //LoadModel("vienna_full_hp.dem", dynamicObjects); 
     581        //dynamicObjects.back()->GetTransform()->SetMatrix(transl); 
    577582 
    578583 
     
    22762281                { 
    22772282                        // usethe maximal visible distance to focus shadow map 
    2278                         float maxVisibleDist = min(camera->GetFar(), traverser->GetMaxVisibleDistance()); 
    2279                         RenderShadowMap(maxVisibleDist); 
     2283                        const float newFar = min(camera->GetFar(), traverser->GetMaxVisibleDistance()); 
     2284                        RenderShadowMap(newFar); 
    22802285                } 
    22812286                // initialize deferred rendering 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/irradiance.cpp

    r3216 r3235  
    11531153                deferredShader->SetUseTemporalCoherence(useTemporalCoherence); 
    11541154                deferredShader->SetSortSamples(sortSamples); 
     1155                deferredShader->SetMaxDistance(traverser->GetMaxVisibleDistance()); 
    11551156 
    11561157                ShadowMap *sm = showShadowMap ? shadowMap : NULL; 
     
    20172018                { 
    20182019                        // usethe maximal visible distance to focus shadow map 
    2019                         float maxVisibleDist = min(camera->GetFar(), traverser->GetMaxVisibleDistance()); 
     2020                        const float maxVisibleDist = min(camera->GetFar(), traverser->GetMaxVisibleDistance()); 
    20202021                        RenderShadowMap(maxVisibleDist); 
    20212022                } 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/depthOfField.cg

    r3232 r3235  
    77 
    88 
    9 float2 ComputeBlurFactors(float4 color, float sceneRange) 
     9float2 ComputeBlurFactors(float4 color, float sceneRange, float zFocus) 
    1010{ 
    1111        float2 result; 
    1212 
     13        const float m = 1.0f; 
     14        const float focalLen = 1.0f; 
     15 
     16        const float scale = 5e4f; 
     17 
    1318        // Compute blur factor based on the CoC size scaled and normalized to 0..1 range 
    14         //float pixCoC = abs(Dlens * focalLen * (Zfocus - v.fDepth) / (Zfocus * (v.fDepth - focalLen))); 
     19        //float blur = abs(dLens * focalLen * (zFocus - color.w)) / (1e-6f + abs(zFocus * (color.w - focalLen))); 
     20 
     21        const float dist = abs(zFocus - color.w); 
     22        const float blur = scale * m * focalLen * dist / (sceneRange * (1e-6f + abs(color.w + dist * step(0, zFocus - color.w)))); 
    1523         
    16         //float blur = saturate(pixCoC * scale / maxCoC); 
     24        //float blur = saturate(blur * scale / maxCoC); 
    1725         
    1826        // Depth/blurriness value scaled to 0..1 range 
    19         //result = float2(v.fDepth / sceneRange, blur); 
     27        result = float2(color.w / sceneRange, blur); 
    2028 
    2129        return result; 
     
    3038                        ) 
    3139{ 
    32         float average = .0f; 
     40        float4 avgCol = float4(.0f); 
    3341        float total_w = .0f; 
    3442 
    3543        for (int i = 0; i < NUM_DOF_TABS; ++ i) 
    3644        { 
    37                 float2 sampleTexCoord = texCoords + filterOffs[i]; 
     45                float2 sampleTexCoord = texCoords + filterOffs[i] * blurFactors.y; 
    3846                float4 sampleCol = tex2Dlod(colorsTex, float4(sampleTexCoord, 0, 0)); 
    3947                 
     
    4149                float w = 1; 
    4250                 
    43                 average += sampleCol * w; 
     51                avgCol += sampleCol * w; 
    4452                total_w += w; 
    4553        } 
    4654 
    47         average /= max(total_w, 1e-6f); 
     55        avgCol /= max(total_w, 1e-6f); 
    4856 
    49         return saturate(average); 
     57        return avgCol; 
    5058} 
    5159 
     
    5462                                        uniform sampler2D colorsTex, 
    5563                                        uniform float2 filterOffs[NUM_DOF_TABS], 
    56                                         uniform float sceneRange 
     64                                        uniform float sceneRange, 
     65                                        uniform float zFocus 
    5766                                         ): COLOR 
    5867{ 
     
    6069        const float4 color = tex2Dlod(colorsTex, float4(IN.texCoords, 0, 0)); 
    6170         
    62         float2 blurFactors = ComputeBlurFactors(color, sceneRange); 
     71        zFocus = min(zFocus, sceneRange * 0.5f); 
     72        float2 blurFactors = ComputeBlurFactors(color, sceneRange, zFocus); 
     73 
     74        //float4 outCol = float4(color.x, color.y, blurFactors.y, color.w); 
    6375        float4 outCol = Blur(color, IN.texCoords, blurFactors, colorsTex, filterOffs); 
    6476         
Note: See TracChangeset for help on using the changeset viewer.