Ignore:
Timestamp:
10/19/08 02:07:36 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
6 edited

Legend:

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

    r3042 r3043  
    1717 
    1818RenderState::RenderState(): 
    19 mRenderType(FIXED), 
     19mRenderType(FORWARD), 
    2020mUseAlphaToCoverage(true), 
    2121mLockCullFaceEnabled(false) 
     
    6767        ResourceManager::GetSingleton()->DisableFragmentProfile(); 
    6868        ResourceManager::GetSingleton()->DisableVertexProfile(); 
    69 } 
    70  
    71  
     69 
     70        mFragmentProgramEnabled = false; 
     71        mVertexProgramEnabled = false; 
     72} 
     73 
     74// q matt: is this function really necessary or would it be better 
     75// to just create a query material and use the setstate function? 
    7276bool RenderState::SetMode(Mode mode) 
    7377{ 
     
    8589                        glDisable(GL_LIGHTING); 
    8690                        glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 
    87  
    88                         if (mRenderType == DEFERRED) 
    89                         { 
    90                                 ResourceManager::GetSingleton()->DisableFragmentProfile(); 
    91                                 ResourceManager::GetSingleton()->DisableFragmentProfile(); 
    92                         } 
    93                 } 
    94  
     91                } 
     92 
     93                if (mFragmentProgramEnabled) 
     94                { 
     95                        ResourceManager::GetSingleton()->DisableFragmentProfile(); 
     96                } 
     97                         
     98                if (mVertexProgramEnabled) 
     99                { 
     100                        ResourceManager::GetSingleton()->DisableVertexProfile(); 
     101                } 
     102                 
    95103                glDepthMask(GL_FALSE); 
    96104 
     
    107115                        glEnable(GL_LIGHTING); 
    108116                        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
    109  
    110                         if (mRenderType == DEFERRED) 
    111                         { 
    112                                 ResourceManager::GetSingleton()->EnableFragmentProfile(); 
    113                                 ResourceManager::GetSingleton()->EnableVertexProfile(); 
    114                         } 
     117                } 
     118                 
     119                if (mFragmentProgramEnabled) 
     120                { 
     121                        ResourceManager::GetSingleton()->EnableFragmentProfile(); 
     122                } 
     123                         
     124                if (mVertexProgramEnabled) 
     125                { 
     126                        ResourceManager::GetSingleton()->EnableVertexProfile(); 
    115127                } 
    116128 
     
    168180                mTexturesEnabled = false; 
    169181 
    170                 if (mRenderType != DEFERRED)//!mat->mFragmentProgram) 
     182                if (!tech->GetFragmentProgram()) 
    171183                        glDisable(GL_TEXTURE_2D); 
    172184 
     
    180192                        mTexturesEnabled = true; 
    181193 
    182                         if (mRenderType != DEFERRED)//!mat->mFragmentProgram) 
     194                        if (!tech->GetFragmentProgram()) 
    183195                                glEnable(GL_TEXTURE_2D); 
    184196 
     
    187199        } 
    188200 
    189         if (mRenderType == DEFERRED) 
    190         { 
    191                 ShaderProgram *frag = tech->GetFragmentProgram(); 
    192  
    193                 if (frag) 
    194                 { 
    195                         if (frag != mCurrentFragmentProgram) 
    196                         {                        
    197                                 mCurrentFragmentProgram = frag; 
    198                                 mCurrentFragmentProgram->Bind();                         
    199                         } 
     201        ////////// 
     202        //-- fragment and vertex programs 
     203         
     204        ShaderProgram *frag = tech->GetFragmentProgram(); 
     205 
     206        if (frag) 
     207        { 
     208                if (!mFragmentProgramEnabled) 
     209                { 
     210                        mFragmentProgramEnabled = true; 
     211                        ResourceManager::GetSingleton()->EnableFragmentProfile(); 
     212                } 
     213 
     214                if (frag != mCurrentFragmentProgram) 
     215                {                        
     216                        mCurrentFragmentProgram = frag; 
     217                        mCurrentFragmentProgram->Bind();                         
     218                } 
    200219                         
    201                         tech->GetFragmentProgramParameters()->UpdateParameters(); 
    202  
    203                 } 
    204  
    205                 ShaderProgram *vert = tech->GetVertexProgram(); 
    206  
    207                 if (vert) 
    208                 { 
    209                         if (vert != mCurrentVertexProgram) 
    210                         { 
    211                                 mCurrentVertexProgram = vert; 
    212                                 mCurrentVertexProgram->Bind(); 
    213                         } 
    214                  
    215                         tech->GetVertexProgramParameters()->UpdateParameters(); 
    216                 } 
     220                tech->GetFragmentProgramParameters()->UpdateParameters(); 
    217221        } 
    218222        else 
    219223        { 
    220                 // set fixed texture 
     224                if (mFragmentProgramEnabled) 
     225                { 
     226                        mFragmentProgramEnabled = false; 
     227                        ResourceManager::GetSingleton()->DisableFragmentProfile(); 
     228                } 
     229        } 
     230 
     231        ShaderProgram *vert = tech->GetVertexProgram(); 
     232 
     233        if (vert) 
     234        { 
     235                if (!mVertexProgramEnabled) 
     236                { 
     237                        mVertexProgramEnabled = true; 
     238                        ResourceManager::GetSingleton()->EnableVertexProfile(); 
     239                } 
     240 
     241                if (vert != mCurrentVertexProgram) 
     242                { 
     243                        mCurrentVertexProgram = vert; 
     244                        mCurrentVertexProgram->Bind(); 
     245                } 
     246                 
     247                tech->GetVertexProgramParameters()->UpdateParameters(); 
     248        } 
     249        else 
     250        { 
     251                if (mVertexProgramEnabled) 
     252                { 
     253                        mVertexProgramEnabled = false; 
     254                        ResourceManager::GetSingleton()->DisableVertexProfile(); 
     255                } 
     256        } 
     257 
     258        if (!mFragmentProgramEnabled) 
     259        { 
     260                // set FORWARD texture 
    221261                if (tex) 
    222262                { 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.h

    r3042 r3043  
    2828        enum RenderPassType 
    2929        { 
    30                 FIXED, 
     30                FORWARD, 
    3131                DEPTH_PASS, 
    3232                DEFERRED 
     
    9595        ShaderProgram *mCurrentVertexProgram; 
    9696        ShaderProgram *mCurrentFragmentProgram; 
     97 
     98        bool mFragmentProgramEnabled; 
     99        bool mVertexProgramEnabled; 
    97100}; 
    98101 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderProgram.cpp

    r3041 r3043  
    88namespace CHCDemoEngine  
    99{  
     10 
     11static float sCurrentTimer = 0; 
    1012 
    1113 
     
    222224        { 
    223225                static PerfTimer mytimer; 
    224                 mProgram->SetValue1f(mTimer, mytimer.Elapsedms(false) * M_PI / 180.0f); 
    225         } 
     226                mProgram->SetValue1f(mTimer, sCurrentTimer); 
     227        } 
     228} 
     229 
     230 
     231void GPUProgramParameters::InitFrame() 
     232{ 
     233        static PerfTimer mytimer; 
     234        sCurrentTimer = mytimer.Elapsedms(false) * M_PI / 180.0f; 
    226235} 
    227236 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderProgram.h

    r3041 r3043  
    8686 
    8787 
     88        static void InitFrame(); 
    8889 
    8990protected: 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SkyPreetham.cpp

    r3042 r3043  
    140140                vtxParams->SetValue1f(8, 8e-5f); 
    141141        } 
    142  
     142/* 
    143143        tech->GetVertexProgramParameters()->UpdateParameters(); 
    144144        tech->GetVertexProgram()->Bind(); 
     
    146146        tech->GetFragmentProgramParameters()->UpdateParameters(); 
    147147        tech->GetFragmentProgram()->Bind(); 
    148  
    149         // Render sky dome. 
     148*/ 
     149        // render sky dome 
    150150        mSkyDome->Render(state); 
    151151 
    152         // Render additively blended sun disc. 
     152        // render additively blended sun disc. 
    153153        //RenderSunDisk(sunDir, camera); 
    154154} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3041 r3043  
    112112enum RenderMethod 
    113113{ 
    114         RENDER_FIXED, 
     114        RENDER_FORWARD, 
    115115        RENDER_DEPTH_PASS, 
    116116        RENDER_DEFERRED, 
     
    120120 
    121121/// one of four possible render methods 
    122 int renderMethod = RENDER_FIXED; 
     122int renderMethod = RENDER_FORWARD; 
    123123 
    124124 
     
    485485        visualization = new Visualization(bvh, camera, NULL, &state); 
    486486         
    487         state.SetRenderPassType(RenderState::FIXED); 
     487        state.SetRenderPassType(RenderState::FORWARD); 
    488488 
    489489        // frame time is restarted every frame 
    490490        frameTimer.Start(); 
    491  
    492491        // the rendering loop 
    493492        glutMainLoop(); 
    494  
    495493        // clean up 
    496494        CleanUp(); 
     
    870868        } 
    871869         
     870        GPUProgramParameters::InitFrame(); 
    872871 
    873872 
     
    889888 
    890889        if (renderLightView) 
    891                 renderMethod = RenderState::FIXED; 
     890                renderMethod = RenderState::FORWARD; 
    892891 
    893892        glEnableClientState(GL_VERTEX_ARRAY); 
     
    897896        switch (renderMethod) 
    898897        { 
    899         case RENDER_FIXED: 
     898        case RENDER_FORWARD: 
    900899         
    901900                glEnable(GL_MULTISAMPLE_ARB); 
    902901                 
    903                 state.SetRenderPassType(RenderState::FIXED); 
     902                state.SetRenderPassType(RenderState::FORWARD); 
    904903                glEnable(GL_LIGHTING); 
    905904 
     
    10531052 
    10541053 
    1055         state.SetRenderPassType(RenderState::FIXED); 
     1054        state.SetRenderPassType(RenderState::FORWARD); 
    10561055        state.Reset(); 
    10571056 
     
    19041903        { 
    19051904                glEnable(GL_LIGHTING); 
    1906                 state.SetRenderPassType(RenderState::FIXED); 
     1905                state.SetRenderPassType(RenderState::FORWARD); 
    19071906                state.Reset(); 
    19081907        } 
Note: See TracChangeset for help on using the changeset viewer.