Ignore:
Timestamp:
04/04/06 23:55:38 (19 years ago)
Author:
mattausch
Message:

improved performance of TerrainSceneManager?
revisit octreescenemanager

Location:
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgrePlatformHierarchyInterface.h

    r187 r726  
    153153        std::vector<PlatformOcclusionQuery *> mOcclusionQueries; 
    154154 
     155        Vector3 mCameraPosition; 
    155156        bool mOnlyShadowCasters; 
    156157        int mLeavePassesInQueue; 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreVisibilityTerrainSceneManager.h

    r347 r726  
    1111#include "OgrePlatformQueryManager.h" 
    1212#include "VisibilityManager.h" 
    13  
    1413 
    1514namespace Ogre { 
     
    5655        virtual void renderObjects(const RenderPriorityGroup::TransparentRenderablePassList& objs,  
    5756            bool doLightIteration, const LightList* manualLightList = 0); 
    58  
    5957        /** Writes out stats into the Ogre log file. 
    6058        */ 
    6159        void WriteLog(); 
    6260 
    63         /** Override pass so we can do the z-fail pass.  
     61        /** We override this because we want to include the z-fail pass.  
    6462        */ 
    6563        Pass* setPass(Pass* pass); 
    66  
    6764        /** Override from SceneManager so we can skip all but first pass for depth pass.  
    6865        */ 
    6966        bool validatePassForRendering(Pass* pass); 
    70  
     67        /** This function renders renderables using false color ids. 
     68        */ 
    7169        void RenderItemBuffer(RenderPriorityGroup* pGroup); 
     70        /** Renders a single object using false color id. 
     71        */ 
    7272        void RenderSingleObjectForItemBuffer(Renderable *rend, Pass *pass); 
     73        /** Overritten from scene manager to include the false color id rendering of the 
     74                scene objects. 
     75        */ 
    7376        void renderQueueGroupObjects(RenderQueueGroup* pGroup); 
    7477 
     
    8992        void endFrame(); 
    9093 
     94        /** Override this because we must handle shadows differently. 
     95        */ 
    9196        void renderAdditiveStencilShadowedQueueGroupObjects(RenderQueueGroup* pGroup); 
     97        /** Override this because we must handle shadows differently. 
     98        */ 
    9299        void renderModulativeStencilShadowedQueueGroupObjects(RenderQueueGroup* pGroup); 
    93  
    94         /** Override standard function so octree boxes are always of equal side length. 
    95                 This has advantages for CHC, because terrain tiles are in different octree nodes 
    96                 and can be culled. 
    97         */ 
    98         void setWorldGeometry( const String& filename ); 
    99100 
    100101protected: 
     
    161162 
    162163        bool mIsHierarchicalCulling; 
     164 
     165        std::ofstream mDummyLog; 
    163166}; 
    164167 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/scripts/Plugin_VisibilitySceneManager.vcproj

    r722 r726  
    9494                                BufferSecurityCheck="FALSE" 
    9595                                EnableFunctionLevelLinking="TRUE" 
    96                                 RuntimeTypeInfo="TRUE" 
     96                                RuntimeTypeInfo="FALSE" 
    9797                                UsePrecompiledHeader="0" 
    9898                                WarningLevel="3" 
     
    227227                                        RelativePath="..\include\OgreVisibilitySceneManager.h"> 
    228228                                </File> 
     229                                <File 
     230                                        RelativePath="..\include\VspBspTree.h"> 
     231                                </File> 
    229232                        </Filter> 
    230233                        <Filter 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp

    r720 r726  
    380380 
    381381        getRenderQueue()->clear(); // finally clear render queue 
    382         OGRE_DELETE(mRenderQueue); // HACK: should be cleared before... 
     382        OGRE_DELETE(mRenderQueue); // HACK: should be cleared before ... 
    383383        WriteLog(); // write out stats 
    384384 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionQueriesQueryManager.cpp

    r645 r726  
    2727        // we need access to the scene manager and the rendersystem 
    2828        PlatformHierarchyInterface *pfHierarchyInterface =  
    29                 dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
     29                //dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
     30                static_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
    3031 
    3132        // disable overlays, reset them later 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOctreeHierarchyInterface.cpp

    r722 r726  
    2121 
    2222        // if we come across some renderable geometry => render it 
    23         if (octree->mNodes.size() > 0) 
     23        if (!octree->mNodes.empty()) 
    2424        { 
    2525                RenderNode(node); 
    2626        } 
    2727         
    28         //if (octree->numNodes() > (int)octree->mNodes.size()) // if not all subtrees are empty 
     28        // if not all subtrees are empty 
    2929        if (!IsLeaf(node)) 
    3030        { 
    31                 for(int i=0; i<8; ++i) 
    32                 { 
    33                         Octree *nextChild =  
    34                                 octree->mChildren[(i & 4) >> 2][(i & 2) >> 1][i & 1]; 
    35                          
    36                         if (nextChild) 
    37                         { 
    38                                 mDistanceQueue->push(nextChild); 
    39                         } 
    40                 } 
     31                Octree *nextChild; 
     32 
     33                if ((nextChild = octree->mChildren[0][0][0]) != NULL) 
     34                        mDistanceQueue->push(nextChild); 
     35                if ((nextChild = octree->mChildren[0][0][1]) != NULL) 
     36                        mDistanceQueue->push(nextChild); 
     37                if ((nextChild = octree->mChildren[0][1][0]) != NULL) 
     38                        mDistanceQueue->push(nextChild); 
     39                if ((nextChild = octree->mChildren[0][1][1]) != NULL) 
     40                mDistanceQueue->push(nextChild); 
     41                if ((nextChild = octree->mChildren[1][0][0]) != NULL) 
     42                        mDistanceQueue->push(nextChild); 
     43                if ((nextChild = octree->mChildren[1][0][1]) != NULL) 
     44                        mDistanceQueue->push(nextChild); 
     45                if ((nextChild = octree->mChildren[1][1][0]) != NULL) 
     46                        mDistanceQueue->push(nextChild); 
     47                if ((nextChild = octree->mChildren[1][1][1]) != NULL) 
     48                        mDistanceQueue->push(nextChild); 
    4149        } 
    4250} 
     
    5664float OctreeHierarchyInterface::GetSquaredDistance(GtpVisibility::HierarchyNode *node) const 
    5765{ 
    58         LogManager::getSingleton().logMessage("here4"); 
     66        const Vector3 bmin = static_cast<Octree *>(node)->mBox.getMinimum(); 
     67        const Vector3 bmax = static_cast<Octree *>(node)->mBox.getMaximum(); 
    5968 
    60         const AxisAlignedBox &box = static_cast<Octree *>(node)->mBox; 
    61         const Vector3 pos = ((box.getMaximum() - box.getMinimum()) * 0.5) + box.getMinimum(); 
     69        const Vector3 pos = (bmax - bmin) * 0.5 + bmin; 
    6270         
    63         return (mCullCamera->getDerivedPosition() - pos).squaredLength(); 
     71        return (mCameraPosition - pos).squaredLength(); 
    6472} 
    6573//----------------------------------------------------------------------- 
     
    101109        { 
    102110                octant->setLastRendered(mFrameId); 
    103  
    104                 dynamic_cast<OctreeSceneManager *>(mSceneManager)->_renderOctant(mCamera,  
    105                         octant, mOnlyShadowCasters, mLeavePassesInQueue); 
     111                OctreeSceneManager *ocm =  
     112                        //dynamic_cast<OctreeSceneManager *>(mSceneManager); 
     113                        static_cast<OctreeSceneManager *>(mSceneManager); 
     114                ocm->_renderOctant(mCamera, octant, mOnlyShadowCasters, mLeavePassesInQueue); 
    106115 
    107116                mVisibleNodes.push_back(node); 
     
    155164        } 
    156165 
    157         dynamic_cast<OctreeSceneManager *>(mSceneManager)->getBoxes()->push_back(box); 
     166        //dynamic_cast<OctreeSceneManager *>(mSceneManager)->getBoxes()->push_back(box); 
     167        static_cast<OctreeSceneManager *>(mSceneManager)->getBoxes()->push_back(box); 
    158168} 
    159169//----------------------------------------------------------------------- 
    160 void OctreeHierarchyInterface::GetNodeGeometryList(GtpVisibility::HierarchyNode *node,   
    161                                                                                    GtpVisibility::GeometryVector *geometryList,  
    162                                                                                    bool includeChildren) 
     170void OctreeHierarchyInterface::GetNodeGeometryList(GtpVisibility::HierarchyNode *node, 
     171                                                                                                   GtpVisibility::GeometryVector *geometryList,  
     172                                                                                                   bool includeChildren) 
    163173{ 
    164174        NodeList::const_iterator nodeIt, nodeIt_end; 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformHierarchyInterface.cpp

    r316 r726  
    1111 
    1212//----------------------------------------------------------------------- 
    13 PlatformHierarchyInterface::PlatformHierarchyInterface(SceneManager *sm, RenderSystem *rsys): 
    14 mSceneManager(sm), mRenderSystem(rsys), mSolidBoundingBox(NULL), mCamera(NULL),  
    15 mCullCamera(NULL), mOnlyShadowCasters(false), mLeavePassesInQueue(0), 
    16 mIsBoundingBoxQuery(false) 
     13PlatformHierarchyInterface::PlatformHierarchyInterface(SceneManager *sm,  
     14                                                                                                           RenderSystem *rsys): 
     15mSceneManager(sm),  
     16mRenderSystem(rsys),  
     17mSolidBoundingBox(NULL),  
     18mCamera(NULL),  
     19mCullCamera(NULL),  
     20mOnlyShadowCasters(false),  
     21mLeavePassesInQueue(0), 
     22mIsBoundingBoxQuery(false), 
     23mCameraPosition(Vector3(0, 0, 0)) 
    1724{ 
    1825} 
     
    131138        mCullCamera = cullCam ? cullCam : cam; 
    132139 
     140        mCameraPosition = mCullCamera->getDerivedPosition(); 
    133141        // create materials for node visualization 
    134142        CreateNodeVizMaterials(); 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformQueryManager.cpp

    r316 r726  
    3131                               bool relativeVisibility) 
    3232{ 
    33         SceneManager *sm = dynamic_cast<PlatformHierarchyInterface *> 
     33        SceneManager *sm = //dynamic_cast<PlatformHierarchyInterface *> 
     34                static_cast<PlatformHierarchyInterface *> 
    3435                (mHierarchyInterface)->GetSceneManager(); 
    3536 
     
    9394        // we need access to the scene manager and the rendersystem 
    9495        PlatformHierarchyInterface *pfHierarchyInterface =  
    95                 dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
     96                //dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
     97                static_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
    9698 
    9799        SceneManager *sm = pfHierarchyInterface->GetSceneManager(); 
     
    189191 
    190192        SceneManager *sm =  
    191                 dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface)->GetSceneManager(); 
     193                //dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface)->GetSceneManager(); 
     194                static_cast<PlatformHierarchyInterface *>(mHierarchyInterface)->GetSceneManager(); 
    192195 
    193196        SceneManager::EntityIterator it = sm->getEntityIterator(); 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilityOctreeSceneManager.cpp

    r720 r726  
    2424mLeavePassesInQueue(0), 
    2525mDelayRenderTransparents(true), 
    26 //mDelayRenderTransparents(false), 
    27 //mUseDepthPass(true), 
    2826mUseDepthPass(false), 
    2927mIsDepthPassPhase(false), 
    3028mUseItemBuffer(false), 
    31 //mUseItemBuffer(true), 
    3229mIsItemBufferPhase(false), 
    3330mCurrentEntityId(1), 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilityTerrainSceneManager.cpp

    r720 r726  
    1010#include <OgreSubEntity.h> 
    1111 
    12 // HACK 
    13 const static DEBUG_CHC = false; 
     12 
     13// normal terrain rendering 
     14const static NORMAL_RENDER_HACK = false; 
    1415 
    1516namespace Ogre { 
     
    1718//----------------------------------------------------------------------- 
    1819VisibilityTerrainSceneManager::VisibilityTerrainSceneManager( 
    19                                                         GtpVisibility::VisibilityManager *visManager):  
     20        GtpVisibility::VisibilityManager *visManager): 
     21TerrainSceneManager(), 
    2022mVisibilityManager(visManager),  
    2123mShowVisualization(false), 
     
    2830mIsDepthPassPhase(false), 
    2931mUseItemBuffer(false), 
    30 //mUseItemBuffer(true), 
    3132mIsItemBufferPhase(false), 
    3233mCurrentEntityId(1), 
     
    101102        //mItemBufferPass->setAmbient(1, 1, 0); 
    102103} 
    103 //------------------------------------------------------------------------- 
    104 void VisibilityTerrainSceneManager::setWorldGeometry( const String& filename ) 
    105 { 
    106     // Clear out any existing world resources (if not default) 
    107     if (ResourceGroupManager::getSingleton().getWorldResourceGroupName() !=  
    108         ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME) 
    109     { 
    110         ResourceGroupManager::getSingleton().clearResourceGroup( 
    111             ResourceGroupManager::getSingleton().getWorldResourceGroupName()); 
    112     } 
    113  
    114     mTerrainPages.clear(); 
    115          
    116         // Load the configuration 
    117     loadConfig(filename); 
    118  
    119     // Resize the octree, allow for 1 page for now 
    120     float max_x = mOptions.scale.x * mOptions.pageSize; 
    121     float max_y = mOptions.scale.y; 
    122     float max_z = mOptions.scale.z * mOptions.pageSize; 
    123  
    124         float maxAxis = std::max(max_x, max_y); 
    125         maxAxis = std::max(maxAxis, max_z); 
    126         resize(AxisAlignedBox(0, 0, 0, maxAxis, maxAxis, maxAxis)); 
    127      
    128     setupTerrainMaterial(); 
    129     setupTerrainPages(); 
    130 } 
    131  
    132104//----------------------------------------------------------------------- 
    133105void VisibilityTerrainSceneManager::PrepareVisualization(Camera *cam) 
     
    146118        // ignore 
    147119    } 
     120        // add bounding boxes of rendered objects 
    148121        for (BoxList::iterator it = mBoxes.begin(); it != mBoxes.end(); ++it) 
    149122        { 
    150123                getRenderQueue()->addRenderable(*it); 
    151124        } 
     125         
    152126        if (mRenderNodesForViz || mRenderNodesContentForViz) 
    153127        { 
     
    182156Pass *VisibilityTerrainSceneManager::setPass(Pass* pass) 
    183157{ 
     158        if (NORMAL_RENDER_HACK) 
     159        { 
     160                return SceneManager::setPass(pass); 
     161        } 
     162 
    184163        // TODO: setting vertex program is not efficient 
    185164        //Pass *usedPass = ((mIsDepthPassPhase && !pass->hasVertexProgram()) ? mDepthPass : pass);  
    186165         
    187166        // set depth fill pass if we currently do not make an aabb occlusion query 
    188         const bool useDepthPass = 1 && 
     167        const bool useDepthPass =  
    189168                (mIsDepthPassPhase && !mHierarchyInterface->IsBoundingBoxQuery()); 
    190169 
     
    196175        // set illumination stage to NONE so no shadow material is used  
    197176        // for depth pass or for occlusion query 
    198         if (1 &&  
    199                 (mIsDepthPassPhase || mHierarchyInterface->IsBoundingBoxQuery())) 
     177        if (mIsDepthPassPhase || mHierarchyInterface->IsBoundingBoxQuery()) 
    200178        { 
    201179                mIlluminationStage = IRS_NONE; 
     
    203181         
    204182        // --- set vertex program of current pass in order to set correct depth 
    205         if (mExecuteVertexProgramForAllPasses  
    206                 && mIsDepthPassPhase  
    207                 && pass->hasVertexProgram()) 
     183        if (mExecuteVertexProgramForAllPasses &&  
     184                mIsDepthPassPhase &&  
     185                pass->hasVertexProgram()) 
    208186        { 
    209187                // add vertex program of current pass to depth pass 
     
    254232                                                                                                                bool onlyShadowCasters) 
    255233{ 
     234        if (NORMAL_RENDER_HACK) 
     235        { 
     236                TerrainSceneManager::_findVisibleObjects(cam, onlyShadowCasters); 
     237                return; 
     238        } 
     239 
    256240        //-- show visible scene nodes and octree bounding boxes from last frame 
    257241        if (mShowVisualization) 
     
    273257 
    274258                // only shadow casters will be rendered in shadow texture pass 
    275                 if (0) 
    276                         mHierarchyInterface->SetOnlyShadowCasters(onlyShadowCasters); 
     259                if (0) mHierarchyInterface->SetOnlyShadowCasters(onlyShadowCasters); 
    277260        } 
    278261         
     
    285268void VisibilityTerrainSceneManager::_renderVisibleObjects() 
    286269{ 
     270        if (NORMAL_RENDER_HACK) 
     271        { 
     272                TerrainSceneManager::_renderVisibleObjects(); 
     273 
     274                return; 
     275        } 
     276 
    287277        InitDepthPass();          // create material for depth pass 
    288278        InitItemBufferPass(); // create material for item buffer pass 
     
    309299        } 
    310300        else //-- the hierarchical culling algorithm 
    311         { 
     301        {  
     302                // from TerrainSceneManager 
     303                mDestRenderSystem -> setLightingEnabled(false); 
     304 
    312305                // don't render backgrounds for item buffer 
    313306                if (mUseItemBuffer) 
     
    327320                setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE); 
    328321 
    329                 TerrainSceneManager::_renderVisibleObjects(); 
     322                OctreeSceneManager::_renderVisibleObjects(); 
    330323                ///////////////////////////////////////////////// 
    331324 
     
    356349                mVisibilityManager->ApplyVisibilityCulling(); 
    357350 
    358                 // delete remaining renderables from queue (all not in mLeavePassesInQueue) 
     351                // delete remaining renderables from queue: 
     352                // all which are not in mLeavePassesInQueue) 
    359353#ifdef GTP_VISIBILITY_MODIFIED_OGRE 
    360354                _deleteRenderedQueueGroups(mLeavePassesInQueue); 
     
    367361                mLeavePassesInQueue = 0; 
    368362                 
    369  
     363#if 1    
    370364                // add visible nodes found by the visibility culling algorithm 
    371 #if 1 
    372365                if (mUseDepthPass) 
    373366                { 
    374                         for (NodeList::iterator it = mVisible.begin(); it != mVisible.end(); ++ it) 
     367                        NodeList::const_iterator it, it_end = mVisible.end(); 
     368 
     369                        //getRenderQueue()->clear(); 
     370                        for (it = mVisible.begin(); it != it_end; ++ it) 
    375371                        { 
    376372                                (*it)->_addToRenderQueue(mCameraInProgress, getRenderQueue(), false); 
     
    382378                clearSpecialCaseRenderQueues(); 
    383379         
    384                 if (!DEBUG_CHC) 
    385                         TerrainSceneManager::_renderVisibleObjects(); 
     380                OctreeSceneManager::_renderVisibleObjects(); 
    386381        } 
    387382                 
     
    394389 
    395390        getRenderQueue()->clear(); // finally clear render queue 
    396         OGRE_DELETE(mRenderQueue); // HACK: should rather only be cleared... 
    397  
    398         //WriteLog(); // write out stats 
     391        if (0) OGRE_DELETE(mRenderQueue); // HACK: should rather only be cleared ... 
     392 
     393        if (0) WriteLog(); // write out stats 
    399394} 
    400395 
     
    402397void VisibilityTerrainSceneManager::_updateSceneGraph(Camera* cam) 
    403398{ 
     399        if (NORMAL_RENDER_HACK) 
     400        { 
     401                TerrainSceneManager::_updateSceneGraph(cam); 
     402                return; 
     403        } 
     404 
    404405        mVisibilityManager->GetCullingManager()->SetHierarchyInterface(mHierarchyInterface); 
    405406        mHierarchyInterface->SetRenderSystem(mDestRenderSystem); 
     
    531532} 
    532533//----------------------------------------------------------------------- 
    533 GtpVisibility::VisibilityManager *VisibilityTerrainSceneManager::getVisibilityManager( void ) 
     534GtpVisibility::VisibilityManager *VisibilityTerrainSceneManager::getVisibilityManager() 
    534535{ 
    535536        return mVisibilityManager; 
     
    549550          << "Query culled nodes: " << mVisibilityManager->GetCullingManager()->GetNumQueryCulledNodes() << ", " 
    550551          << "Frustum culled nodes: " << mVisibilityManager->GetCullingManager()->GetNumFrustumCulledNodes() << ", " 
    551       << "Queries issued: " << mVisibilityManager->GetCullingManager()->GetNumQueriesIssued() << "\n"; 
     552      << "Queries issued: " << mVisibilityManager->GetCullingManager()->GetNumQueriesIssued() << ", " 
     553          << "Found objects: " << (int)mVisible.size() << "\n"; 
    552554 
    553555        LogManager::getSingleton().logMessage(d.str()); 
     
    560562{ 
    561563        // for correct rendering, transparents must be rendered after hierarchical culling 
    562         if (1 && !mSkipTransparents) 
    563         { 
    564                 OctreeSceneManager::renderObjects(objs, doLightIteration, manualLightList); 
     564        // => do nothing 
     565        if (NORMAL_RENDER_HACK || !mSkipTransparents) 
     566        { 
     567                SceneManager::renderObjects(objs, doLightIteration, manualLightList); 
    565568        } 
    566569} 
    567570//----------------------------------------------------------------------- 
    568571bool VisibilityTerrainSceneManager::validatePassForRendering(Pass* pass) 
    569 { 
     572{        
     573        if (NORMAL_RENDER_HACK) 
     574        { 
     575                return SceneManager::validatePassForRendering(pass); 
     576        } 
     577 
    570578        // skip all but first pass if we are doing the depth pass 
    571579        if ((mIsDepthPassPhase || mIsItemBufferPhase) && (pass->getIndex() > 0)) 
     
    584592void VisibilityTerrainSceneManager::renderQueueGroupObjects(RenderQueueGroup* pGroup) 
    585593{ 
    586         if (!mIsItemBufferPhase) 
    587         { 
    588                 TerrainSceneManager::renderQueueGroupObjects(pGroup); 
     594        if (NORMAL_RENDER_HACK || !mIsItemBufferPhase) 
     595        { 
     596                SceneManager::renderQueueGroupObjects(pGroup); 
    589597                return; 
    590598        } 
     
    616624                        continue; 
    617625 
    618                 // Render only first pass 
     626                // Render only first pass of renderable as false color 
    619627                if (ipass->first->getIndex() > 0) 
    620628                        continue; 
     
    627635                for (irend = rendList->begin(); irend != irendend; ++irend) 
    628636                { 
    629                         std::stringstream d; d << "itembuffer, pass name: " <<  
     637                        if (0) 
     638                        { 
     639                                std::stringstream d; d << "itembuffer, pass name: " <<  
    630640                                ipass->first->getParent()->getParent()->getName(); 
    631                                  
    632                         //LogManager::getSingleton().logMessage(d.str()); 
     641                                LogManager::getSingleton().logMessage(d.str()); 
     642                        } 
    633643                         
    634644                        RenderSingleObjectForItemBuffer(*irend, ipass->first); 
     
    636646        } 
    637647 
    638         // -- TRANSPARENT LOOP: must be handled differently  
     648        //-- TRANSPARENT LOOP: must be handled differently from solids 
    639649 
    640650        // transparents are treated either as solids or completely discarded 
     
    729739        mLeavePassesInQueue = 0; 
    730740 
    731         if (!DEBUG_CHC && !mUseDepthPass && !mUseItemBuffer) 
     741        if (!mUseDepthPass && !mUseItemBuffer) 
    732742        { 
    733743                if (mShadowTechnique == SHADOWTYPE_STENCIL_ADDITIVE) 
     
    760770        // skip rendering transparents during the hierarchical culling 
    761771        // (because they will be rendered afterwards) 
    762         mSkipTransparents = !DEBUG_CHC &&  
     772        mSkipTransparents =  
    763773                (mIsDepthPassPhase || (mLeavePassesInQueue & RenderPriorityGroup::TRANSPARENT_PASSES)); 
    764774 
     
    800810} 
    801811//----------------------------------------------------------------------- 
    802 void VisibilityTerrainSceneManager::renderAdditiveStencilShadowedQueueGroupObjects(RenderQueueGroup* pGroup) 
     812void VisibilityTerrainSceneManager::renderAdditiveStencilShadowedQueueGroupObjects( 
     813        RenderQueueGroup* pGroup) 
    803814{ 
    804815        // only render solid passes during hierarchical culling 
     
    832843} 
    833844//----------------------------------------------------------------------- 
    834 void VisibilityTerrainSceneManager::renderModulativeStencilShadowedQueueGroupObjects(RenderQueueGroup* pGroup) 
     845void VisibilityTerrainSceneManager::renderModulativeStencilShadowedQueueGroupObjects( 
     846        RenderQueueGroup* pGroup) 
    835847{ 
    836848   if (mIsHierarchicalCulling) 
Note: See TracChangeset for help on using the changeset viewer.