Changeset 129 for trunk/VUT/Ogre


Ignore:
Timestamp:
06/10/05 17:28:14 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT/Ogre
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/Ogre/include/OgreVisibilityTerrainSceneManager.h

    r122 r129  
    6868 
    6969        void RenderItemBuffer(RenderPriorityGroup* pGroup); 
    70         void RenderSingleObjectForItemBuffer(Renderable *rend); 
     70        void RenderSingleObjectForItemBuffer(Renderable *rend, Pass *pass); 
    7171        void renderQueueGroupObjects(RenderQueueGroup* pGroup); 
    7272 
  • trunk/VUT/Ogre/src/OgreVisibilityTerrainSceneManager.cpp

    r122 r129  
    7777                mItemBufferPass = itemBufferMat->getTechnique(0)->getPass(0); 
    7878        } 
    79         mItemBufferPass->setAmbient(0, 0, 0); 
     79        mItemBufferPass->setAmbient(1, 1, 0); 
    8080} 
    8181//----------------------------------------------------------------------- 
     
    221221void VisibilityTerrainSceneManager::_renderVisibleObjects() 
    222222{ 
    223     std::stringstream d; 
     223        /* 
     224        std::stringstream d; 
    224225        d << "Terrain render level: " << TerrainRenderable::getCurrentRenderLevelIndex(); 
    225226        LogManager::getSingleton().logMessage(d.str()); 
     
    232233                renderLevel = 0; 
    233234        } 
    234  
     235*/ 
    235236        // visualization: apply standard rendering 
    236237        if (mShowVisualization) 
    237238        {        
    238239                TerrainSceneManager::_renderVisibleObjects(); 
    239                 TerrainRenderable::setCurrentRenderLevelIndex(renderLevel); 
     240        //      TerrainRenderable::setCurrentRenderLevelIndex(renderLevel); 
    240241                return; 
    241242        } 
     
    308309        TerrainSceneManager::_renderVisibleObjects(); 
    309310 
    310         TerrainRenderable::setCurrentRenderLevelIndex(renderLevel); 
     311        //TerrainRenderable::setCurrentRenderLevelIndex(renderLevel); 
    311312        //WriteLog(); // write out stats 
    312313} 
     
    373374        // notifiy that frame has ended so terrain render level can be reset for correct 
    374375        // terrain rendering 
    375         if (key == "TerrainLevelIdx") 
     376/*      if (key == "TerrainLevelIdx") 
    376377        { 
    377378                TerrainRenderable::setCurrentRenderLevelIndex((*static_cast<const int *>(val))); 
    378         } 
     379                return true; 
     380        }*/ 
    379381        return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 
    380382                setOption(key, val) || TerrainSceneManager::setOption(key, val); 
     
    496498                for (irend = rendList->begin(); irend != irendend; ++irend) 
    497499                { 
    498                         RenderSingleObjectForItemBuffer(*irend); 
    499                 } 
    500         } 
    501  
    502         // ----- TRANSPARENT LOOP 
     500                        std::stringstream d; d << "itembuffer, pass name: " <<  
     501                                ipass->first->getParent()->getParent()->getName(); 
     502                                //<< ", renderable name: " << irend-> 
     503 
     504                        LogManager::getSingleton().logMessage(d.str()); 
     505                         
     506                        //if(ipass->first->getParent()->getParent()->getName() == "Examples/Athene") 
     507                                //<< ", renderable name: " << irend-> 
     508                                RenderSingleObjectForItemBuffer(*irend, ipass->first); 
     509                                RenderSingleObjectForOcclusionQuery( 
     510                } 
     511        } 
     512 
     513        // ----- TRANSPARENT LOOP: must be handlet differently altough we don't really 
     514        // care about transparents for the item buffer 
     515        // TODO: HOW TO HANDLE OCCLUDED OBJECTS ???? 
    503516        RenderPriorityGroup::TransparentRenderablePassList 
    504517                transpObjs = pGroup->_getTransparentPasses(); 
     
    508521        for (itrans = transpObjs.begin(); itrans != itransend; ++itrans) 
    509522        { 
    510                 // Render only first pass 
     523                // like for solids, render only first pass 
    511524                if (itrans->pass->getIndex() == 0) 
    512                 {                        
    513                         RenderSingleObjectForItemBuffer(itrans->renderable); 
     525                {        
     526                        RenderSingleObjectForItemBuffer(itrans->renderable, itrans->pass); 
    514527                } 
    515528        }  
    516529} 
    517530//----------------------------------------------------------------------- 
    518 void VisibilityTerrainSceneManager::RenderSingleObjectForItemBuffer(Renderable *rend) 
     531void VisibilityTerrainSceneManager::RenderSingleObjectForItemBuffer(Renderable *rend, Pass *pass) 
    519532{ 
    520533        static LightList nullLightList; 
     534 
    521535        Real col = (Real)rend->getId() / (Real)mCurrentEntityId; 
    522         mItemBufferPass->setAmbient(col, 0, 0); 
    523  
    524         setPass(mItemBufferPass); 
    525  
     536 
     537        mItemBufferPass->setAmbient(ColourValue(0, 1, 1)); 
     538        //mItemBufferPass->setDiffuse(ColourValue(0, col, 0)); 
     539//      mItemBufferPass->setSpecular(ColourValue(0, col, 0)); 
     540//      mItemBufferPass->_load(); 
     541 
     542        // set vertex program of current pass 
     543        if (pass->hasVertexProgram()) 
     544        { 
     545                mItemBufferPass->setVertexProgram(pass->getVertexProgramName()); 
     546 
     547                if (mItemBufferPass->hasVertexProgram()) 
     548                { 
     549                        const GpuProgramPtr& prg = mItemBufferPass->getVertexProgram(); 
     550                        // Load this program if not done already 
     551                        if (!prg->isLoaded()) 
     552                                prg->load(); 
     553                        // Copy params 
     554                        mItemBufferPass->setVertexProgramParameters(pass->getVertexProgramParameters()); 
     555                } 
     556        } 
     557        else if (mItemBufferPass->hasVertexProgram()) 
     558        { 
     559                mItemBufferPass->setVertexProgram(""); 
     560        } 
     561 
     562        //LogManager::getSingleton().logMessage("has vertex program"); 
     563        Pass *usedPass = setPass(mItemBufferPass);  
     564//Pass *usedPass = setPass(pass); 
    526565        std::stringstream d; 
    527566        d << "item buffer id: " << rend->getId() << ", col: " << col; 
    528567        LogManager::getSingleton().logMessage(d.str()); 
     568 
    529569        // Render a single object, this will set up auto params if required 
    530         renderSingleObject(rend, mItemBufferPass, true, &nullLightList); 
     570        renderSingleObject(rend, usedPass, false, &nullLightList); 
    531571} 
    532572//----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.