Changeset 3048


Ignore:
Timestamp:
10/20/08 02:29:28 (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/Material.cpp

    r3047 r3048  
    3333        mColorWriteEnabled = true; 
    3434        /// if lighting is used 
    35         bool mLightingEnabled = true; 
     35        mLightingEnabled = true; 
    3636} 
    3737 
     
    9292 
    9393 
     94Technique Technique::GetQueryTechnique() 
     95{ 
     96        Technique tech; 
     97 
     98        tech.Init(); 
     99 
     100        tech.SetColorWriteEnabled(false); 
     101        tech.SetLightingEnabled(false); 
     102 
     103        return tech; 
     104} 
     105 
     106 
    94107/***********************************************/ 
    95108/*        class Material implementation        */ 
     
    99112void Material::Render(RenderState *state) 
    100113{ 
    101         if (state->GetRenderPassType() == RenderState::DEFERRED) 
    102                 mTechniques[1]->Render(state); 
    103         else 
    104                 mTechniques[0]->Render(state); 
     114        mTechniques[state->GetRenderTechnique()]->Render(state); 
    105115} 
    106116 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Material.h

    r3047 r3048  
    105105        GPUProgramParameters * const GetVertexProgramParameters() { return &mVertexProgramParameters; } 
    106106 
     107        static Technique GetQueryTechnique(); 
    107108 
    108109protected: 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.cpp

    r3047 r3048  
    1717 
    1818RenderState::RenderState(): 
    19 mRenderType(FORWARD), 
     19mRenderTechnique(FORWARD), 
    2020mUseAlphaToCoverage(true), 
    2121mLockCullFaceEnabled(false) 
     
    8585        if (mode == QUERY) 
    8686        { 
    87                 if (mRenderType != DEPTH_PASS) 
    88                 { 
     87                if (mLightingEnabled) 
    8988                        glDisable(GL_LIGHTING); 
     89 
     90                if (mColorWriteEnabled) 
    9091                        glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 
    91                 } 
    9292 
    9393                if (mFragmentProgramEnabled) 
    94                 { 
    9594                        ResourceManager::GetSingleton()->DisableFragmentProfile(); 
    96                 } 
    9795                         
    9896                if (mVertexProgramEnabled) 
    99                 { 
    10097                        ResourceManager::GetSingleton()->DisableVertexProfile(); 
    101                 } 
    10298                 
    10399                glDepthMask(GL_FALSE); 
    104100 
    105                 static Technique defaultTech; 
    106                 SetState(&defaultTech); 
     101                /// the query box material 
     102                static Technique queryTech = Technique::GetQueryTechnique(); 
     103                SetState(&queryTech); 
    107104        } 
    108105        else // mode returns to render 
     
    111108                //-- restore render state 
    112109 
    113                 if (mRenderType != DEPTH_PASS) 
    114                 { 
     110                if (mLightingEnabled) 
    115111                        glEnable(GL_LIGHTING); 
     112 
     113                if (mColorWriteEnabled) 
    116114                        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
    117                 } 
    118115                 
    119116                if (mFragmentProgramEnabled) 
    120                 { 
    121117                        ResourceManager::GetSingleton()->EnableFragmentProfile(); 
    122                 } 
    123118                         
    124119                if (mVertexProgramEnabled) 
    125                 { 
    126120                        ResourceManager::GetSingleton()->EnableVertexProfile(); 
    127                 } 
    128121 
    129122                glDepthMask(GL_TRUE); 
     
    175168        } 
    176169 
    177         if (mTexturesEnabled &&  
    178                 (!texturing || (mRenderType == DEPTH_PASS) && !mAlphaTestEnabled)) 
     170        if (mTexturesEnabled && !texturing) 
    179171        { 
    180172                mTexturesEnabled = false; 
     
    187179        else if (!mTexturesEnabled && texturing) 
    188180        { 
    189                 // support only alpha textures in depth pass 
    190                 if ((mRenderType != DEPTH_PASS) || mAlphaTestEnabled) 
     181                if (mAlphaTestEnabled) 
    191182                { 
    192183                        mTexturesEnabled = true; 
     
    282273 
    283274 
    284 void RenderState::SetRenderPassType(RenderPassType t)  
     275void RenderState::SetRenderTechnique(RenderTechnique t)  
    285276{  
    286         mRenderType = t;  
    287 } 
    288  
    289  
    290 RenderState::RenderPassType RenderState::GetRenderPassType() const  
    291 { 
    292         return mRenderType;  
     277        mRenderTechnique = t;  
     278} 
     279 
     280 
     281RenderState::RenderTechnique RenderState::GetRenderTechnique() const  
     282{ 
     283        return mRenderTechnique;  
    293284} 
    294285 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.h

    r3047 r3048  
    2525        }; 
    2626 
    27         /// the used render type for this render pass 
    28         enum RenderPassType 
     27        /// the used render technique 
     28        enum RenderTechnique 
    2929        { 
    3030                FORWARD, 
    31                 DEPTH_PASS, 
    32                 DEFERRED 
     31                DEFERRED, 
     32                DEPTH_PASS 
    3333        }; 
    3434 
     
    5858        */ 
    5959        inline int GetCurrentVboId() const { return mCurrentVboId; } 
    60         /** Sets the type of rendering used (foreward, depth pass, deferred) 
     60        /** Sets the render technique (foreward, depth pass, deferred) 
    6161        */ 
    62         void SetRenderPassType(RenderPassType t); 
     62        void SetRenderTechnique(RenderTechnique t); 
    6363        /** See Set 
    6464        */ 
    65         RenderPassType GetRenderPassType() const; 
     65        RenderTechnique GetRenderTechnique() const; 
    6666        /** If alpha to coverage is instead of alpha testing 
    6767        */ 
     
    8484 
    8585        int mCurrentVboId; 
    86  
    87         RenderPassType mRenderType; 
     86        /// the current render technique 
     87        RenderTechnique mRenderTechnique; 
    8888 
    8989        bool mUseAlphaToCoverage; 
     
    9999        bool mVertexProgramEnabled; 
    100100 
    101         bool mUseLighting; 
     101        bool mLightingEnabled; 
    102102        bool mColorWriteEnabled; 
    103103}; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp

    r3047 r3048  
    118118 
    119119        /////////////// 
    120         //-- load lod levels 
     120        //-- load LOD levels 
    121121 
    122122        // note: lods must be ordered from smallest distance to largest 
     
    126126        for (int i = 0; i < numLODs; ++ i) 
    127127        { 
     128                // the distance until the next LOD level is used 
    128129                float dist; 
    129130                str.read(reinterpret_cast<char *>(&dist), sizeof(float)); 
     
    158159        //-- hack: add tree animation (should be done per material script!) 
    159160 
    160         if (numLODs > 1) 
     161        if (0)//numLODs > 1) 
    161162        { 
    162163                ShapeContainer::iterator sstart, send; 
     
    320321        deferred->SetVertexProgram(mMrtDefaultVertexProgram); 
    321322         
     323 
     324        /////////// 
     325        //-- add depth pass 
     326 
     327        Technique *depthPass = new Technique(*tech); 
     328        depthPass->SetColorWriteEnabled(false); 
     329        depthPass->SetLightingEnabled(false); 
     330 
    322331        mat->AddTechnique(deferred); 
     332        mat->AddTechnique(depthPass); 
    323333 
    324334        return mat; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SkyPreetham.cpp

    r3045 r3048  
    121121        Technique *tech; 
    122122 
    123         if (state->GetRenderPassType() == RenderState::DEFERRED) 
    124                 tech = mat->GetTechnique(1); 
    125         else 
    126                 tech = mat->GetTechnique(0); 
     123        tech = mat->GetTechnique(state->GetRenderTechnique()); 
    127124 
    128125        GPUProgramParameters *vtxParams = tech->GetVertexProgramParameters(); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3046 r3048  
    485485        visualization = new Visualization(bvh, camera, NULL, &state); 
    486486         
    487         state.SetRenderPassType(RenderState::FORWARD); 
     487        state.SetRenderTechnique(RenderState::FORWARD); 
    488488 
    489489        // frame time is restarted every frame 
     
    819819        glDisable(GL_MULTISAMPLE_ARB); 
    820820 
    821         state.SetRenderPassType(RenderState::DEFERRED); 
     821        state.SetRenderTechnique(RenderState::DEFERRED); 
    822822 
    823823        loader->EnableVertexProfile(); 
     
    905905                glEnable(GL_MULTISAMPLE_ARB); 
    906906                 
    907                 state.SetRenderPassType(RenderState::FORWARD); 
     907                state.SetRenderTechnique(RenderState::FORWARD); 
    908908                glEnable(GL_LIGHTING); 
    909909 
     
    919919                state.SetUseAlphaToCoverage(false); 
    920920 
    921                 state.SetRenderPassType(RenderState::DEPTH_PASS); 
     921                state.SetRenderTechnique(RenderState::DEPTH_PASS); 
    922922 
    923923                if (!fbo) InitFBO(); fbo->Bind(); 
     
    939939                glEnable(GL_MULTISAMPLE_ARB); 
    940940                 
    941                 state.SetRenderPassType(RenderState::DEPTH_PASS); 
     941                state.SetRenderTechnique(RenderState::DEPTH_PASS); 
    942942 
    943943                // the scene is rendered withouth any shading    
     
    951951                break; 
    952952         
    953         case RenderState::DEFERRED: 
     953        case RENDER_DEFERRED: 
    954954 
    955955                if (showShadowMap && !renderLightView) 
     
    10121012        // this would conveniently solves some issues (e.g, skys without shadows) 
    10131013 
    1014         RenderSky(); 
     1014        //RenderSky(); 
    10151015 
    10161016 
     
    10481048 
    10491049 
    1050         state.SetRenderPassType(RenderState::FORWARD); 
     1050        state.SetRenderTechnique(RenderState::FORWARD); 
    10511051        state.Reset(); 
    10521052 
     
    18631863{ 
    18641864        if ((renderMethod == RENDER_DEFERRED) || (renderMethod == RENDER_DEPTH_PASS_DEFERRED)) 
    1865                 state.SetRenderPassType(RenderState::DEFERRED); 
     1865                state.SetRenderTechnique(RenderState::DEFERRED); 
    18661866 
    18671867        const bool useToneMapping =  
     
    18701870 
    18711871        preetham->RenderSkyDome(-light->GetDirection(), camera, &state, !useToneMapping); 
    1872  
     1872        /// once again reset the state 
    18731873        state.Reset(); 
    18741874} 
     
    18901890                glDisable(GL_LIGHTING); 
    18911891                glViewport(0, 0, texWidth, texHeight); 
    1892  
     1892                // rese the state before the final visible objects pass 
    18931893                state.Reset(); 
    18941894                InitDeferredRendering(); 
     
    18971897        { 
    18981898                glEnable(GL_LIGHTING); 
    1899                 state.SetRenderPassType(RenderState::FORWARD); 
     1899                state.SetRenderTechnique(RenderState::FORWARD); 
     1900                // rese the state before the final visible objects pass 
    19001901                state.Reset(); 
    19011902        } 
     
    19551956        glDisableClientState(GL_NORMAL_ARRAY); 
    19561957 
    1957         state.SetRenderPassType(RenderState::DEPTH_PASS); 
     1958        state.SetRenderTechnique(RenderState::DEPTH_PASS); 
    19581959         
    19591960        // hack: disable cull face because of alpha textured balconies 
Note: See TracChangeset for help on using the changeset viewer.