Changeset 2379 for GTP/trunk/Lib/Illum


Ignore:
Timestamp:
05/16/07 08:37:09 (18 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/OgreIlluminationManager.h

    r2333 r2379  
    44#include "OgreTechniqueGroup.h" 
    55#include "OgreRenderable.h" 
    6 #include "OgreColorCubeMapRenderTechnique.h" 
    7 #include "OgreDistanceCubeMapRenderTechnique.h" 
    8 #include "OgreConvolvedCubeMapRenderTechnique.h" 
    9 #include "OgreCausticCasterRenderTechnique.h" 
    10 #include "OgreCausticReceiverRenderTechnique.h" 
    11 #include "OgreSceneCameraDepthRenderingRun.h" 
    12 #include "OgreSBBRenderTechnique.h" 
    13 #include "OgreDepthShadowMapRenderingRun.h" 
    14 #include "OgreDepthShadowReceiverRenderTechnique.h" 
    15 #include "OgreFireRenderTechnique.h" 
    16 #include "OgreHierarchicalParticleSystemTechnique.h" 
    17 #include "OgreIllumVolumeRenderTechnique.h" 
    18 #include "OgrePhaseTextureRenderingRun.h" 
    19 #include "OgrePathMapRenderTechnique.h" 
    206 
    217 
     
    680666                @brief Sets the fire rendertarget - frame buffer resolution ratio 
    681667        */ 
    682         void setFireRenderTargetSize(int size){FireRenderTarget::targetsize = size;} 
     668        inline void setFireRenderTargetSize(int size); 
    683669 
    684670        void freeAllResources(); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/OgreRenderingRun.h

    r2375 r2379  
    99        @brief Base class of a RenderingRun in an OGRE environment.      
    1010*/ 
    11 class OgreRenderingRun : virtual public RenderingRun 
     11class OgreRenderingRun : virtual public RenderingRun, public RenderQueue::RenderableListener 
    1212{        
    1313        friend class OgreIlluminationManager; 
     
    3333        */ 
    3434        OgreRenderingRun* asOgreRenderingRun(){return this;} 
     35        //inherited 
     36        bool  renderableQueued (Renderable *rend, uint8 groupID, ushort priority, Technique **ppTech){return true;} 
    3537 
    3638protected: 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreDepthShadowMapRenderingRun.h

    r2320 r2379  
    6666        void freeAllResources(); 
    6767 
     68        bool  renderableQueued (Renderable *rend, uint8 groupID, ushort priority, Technique **ppTech); 
     69 
    6870protected:       
    6971        /** 
     
    100102        Texture* blurredDepthMapTexture; 
    101103        Real lightFarPlane; 
     104        String triggerName; 
    102105         
    103106        //inherited 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreSceneCameraDepthRenderingRun.h

    r2320 r2379  
    4040 
    4141        void freeAllResources(); 
     42 
     43        bool  renderableQueued (Renderable *rend, uint8 groupID, ushort priority, Technique **ppTech); 
     44 
    4245         
    4346protected: 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreIlluminationManager.cpp

    r2366 r2379  
    66#include "OgrePMWeightComputeRenderingRun.h" 
    77#include "OgreTriggersRenderTechnique.h" 
     8#include "OgreColorCubeMapRenderTechnique.h" 
     9#include "OgreDistanceCubeMapRenderTechnique.h" 
     10#include "OgreConvolvedCubeMapRenderTechnique.h" 
     11#include "OgreCausticCasterRenderTechnique.h" 
     12#include "OgreCausticReceiverRenderTechnique.h" 
     13#include "OgreSceneCameraDepthRenderingRun.h" 
     14#include "OgreSBBRenderTechnique.h" 
     15#include "OgreDepthShadowMapRenderingRun.h" 
     16#include "OgreDepthShadowReceiverRenderTechnique.h" 
     17#include "OgreFireRenderTechnique.h" 
     18#include "OgreHierarchicalParticleSystemTechnique.h" 
     19#include "OgreIllumVolumeRenderTechnique.h" 
     20#include "OgrePhaseTextureRenderingRun.h" 
     21#include "OgrePathMapRenderTechnique.h" 
     22 
    823 
    924OgreIlluminationManager* OgreIlluminationManager::instance = NULL; 
     
    787802} 
    788803 
     804void OgreIlluminationManager::setFireRenderTargetSize(int size) 
     805{ 
     806        FireRenderTarget::targetsize = size; 
     807} 
     808 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreRenderingRun.cpp

    r2375 r2379  
    4343                                if(triggerName != "")//we have a trigger here 
    4444                                { 
    45                                         OgreTechniqueGroup* tg = (OgreTechniqueGroup*)rend->getRenderTechniqueGroup(); 
    46                                         if(tg) 
     45                                        OgreTechniqueGroup* TG = (OgreTechniqueGroup*)rend->getRenderTechniqueGroup(); 
     46                                        if(TG) 
    4747                                        { 
    48                                                 String triggeredMaterial = tg->getMaterialNameForTrigger(triggerName); 
     48                                                String triggeredMaterial = TG->getMaterialNameForTrigger(triggerName); 
    4949                                                if(triggeredMaterial != "")//a trigger is associated 
    5050                                                        materialToSet = triggeredMaterial; 
     
    6969                                if(triggerName != "")//we have a trigger here 
    7070                                { 
    71                                         String triggeredMaterial =  
    72                                                 ((OgreTechniqueGroup*)rend->getRenderTechniqueGroup()) 
    73                                                         ->getMaterialNameForTrigger(triggerName); 
    74                                         if(triggeredMaterial != "")//a trigger is associated 
    75                                                 materialToSet = triggeredMaterial; 
     71                                        OgreTechniqueGroup* TG = (OgreTechniqueGroup*)rend->getRenderTechniqueGroup(); 
     72                                        if(TG) 
     73                                        { 
     74                                                String triggeredMaterial = TG->getMaterialNameForTrigger(triggerName); 
     75                                                if(triggeredMaterial != "")//a trigger is associated 
     76                                                        materialToSet = triggeredMaterial; 
     77                                        } 
    7678                                }                                
    7779                                rend->setMaterialName(materialToSet); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreSharedRuns.cpp

    r2320 r2379  
    11#include "..\include\OgreSharedRuns.h" 
    22#include "OgreIlluminationManager.h" 
     3#include "OgreRenderingRun.h" 
    34 
    45void OgreSharedRuns::freeAllResources() 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreFireRenderTechnique.cpp

    r2320 r2379  
    22#include "OgreTechniqueGroup.h" 
    33#include "OgreIlluminationManager.h" 
     4#include "OgreSceneCameraDepthRenderingRun.h" 
    45 
    56int FireRenderTarget::targetsize = 2; 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreSBBRenderTechnique.cpp

    r1055 r2379  
    22#include "OgreTechniqueGroup.h" 
    33#include "OgreIlluminationManager.h" 
     4#include "OgreSceneCameraDepthRenderingRun.h" 
    45 
    56 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreDepthShadowMapRenderingRun.cpp

    r2375 r2379  
    7575} 
    7676 
     77bool  OgreDepthShadowMapRenderingRun::renderableQueued (Renderable *rend, uint8 groupID, ushort priority, Technique **ppTech) 
     78{ 
     79        OgreTechniqueGroup* TG = (OgreTechniqueGroup*) rend->getRenderTechniqueGroup(); 
     80        if(TG) 
     81        { 
     82                String materialToSet = materialName; 
     83                String triggeredMaterial = TG->getMaterialNameForTrigger(triggerName); 
     84                if(triggeredMaterial != "")//a trigger is associated 
     85                        materialToSet = triggeredMaterial; 
     86                Technique* techn = ((Material*)MaterialManager::getSingleton().getByName(       materialToSet ).getPointer())->getTechnique(0); 
     87                *ppTech = techn;         
     88        } 
     89        return true; 
     90} 
     91 
    7792void OgreDepthShadowMapRenderingRun::updateFrame(unsigned long frameNum) 
    7893{ 
    7994        refreshLight(frameNum); 
    8095 
     96        RenderQueue* rq = Root::getSingleton()._getCurrentSceneManager()->getRenderQueue();              
     97        rq->setRenderableListener(this); 
     98 
    8199        if(light->getType() == Light::LT_POINT) 
    82         { 
    83                 //static int currentFace = 0; 
    84                 //updateDepthCubeFace(currentFace); 
    85                 //currentFace = (currentFace+1)%6; 
     100        {                
    86101                 
    87  
    88                 //Timer* t = Root::getSingleton().getTimer(); 
    89                 //unsigned long  start =  t->getMicroseconds();          
    90                 //setMaterialForRenderables(materialName, true);                                 
    91                 //unsigned long  end =  t->getMicroseconds(); 
    92                 //double elapsed = (double) (end - start) / 1000.0; 
    93                 //LogManager::getSingleton().logMessage(String("MaterialSetTime: ") + name + " : " + StringConverter::toString(Real(elapsed)) + " ms"); 
    94                 //visibleObjects.clear(); 
    95  
    96102                for(int i = 0; i < 6 ; i++) 
    97                         updateDepthCubeFace(i); 
    98  
    99                 //start =  t->getMicroseconds(); 
    100                  
    101                 restoreMaterials(); 
    102  
    103                 //end =  t->getMicroseconds(); 
    104                 //elapsed = (double) (end - start) / 1000000.0; 
    105                 //LogManager::getSingleton().logMessage(String("MaterialRestoreTime: ") + name + " : " +  StringConverter::toString(Real(elapsed)) + " ms");     
     103                        updateDepthCubeFace(i);          
     104 
     105                //restoreMaterials(); 
    106106        } 
    107107        else 
     
    109109                updateDepthMap(); 
    110110        }        
     111 
     112        rq->setRenderableListener(0); 
    111113} 
    112114 
     
    114116{        
    115117        Vector3 lightpos = light->getDerivedPosition();                  
    116         String triggerName = "ILLUM_TRIGGER_SM_POINT";   
    117118                 
    118119        RenderTarget* rt = depthMapTexture->getBuffer(facenum, 0).getPointer()->getRenderTarget();       
     
    122123         
    123124         
    124         setMaterialForVisibles(materialName, cam, true, false, triggerName); 
     125        //setMaterialForVisibles(materialName, cam, true, false, triggerName); 
    125126         
    126127        rt->update(); 
     
    144145void OgreDepthShadowMapRenderingRun::updateDepthMap() 
    145146{ 
    146         String triggerName; 
    147         switch(light->getType()) 
    148         { 
    149         case Light::LT_DIRECTIONAL: 
    150                 triggerName = "ILLUM_TRIGGER_SM_DIRECTIONAL"; 
    151                 break; 
    152         case Light::LT_SPOTLIGHT: 
    153                 triggerName = "ILLUM_TRIGGER_SM_SPOT"; 
    154                 break;   
    155         } 
    156         setMaterialForVisibles(materialName, depthMapCamera, true, false, triggerName);  
     147         
    157148        RenderTarget* rt = depthMapTexture->getBuffer().getPointer()->getRenderTarget();         
    158149        Viewport* vp = rt->getViewport(0); 
    159150         
     151        //setMaterialForVisibles(materialName, depthMapCamera, true, false, triggerName);        
     152         
    160153        rt->update(); 
    161         restoreMaterials(); 
     154         
     155        //restoreMaterials(); 
    162156         
    163157        if(OgreIlluminationManager::getSingleton().getBlurShadowMap(light->getType())) 
     
    184178void OgreDepthShadowMapRenderingRun::refreshLight(unsigned long frameNum) 
    185179{ 
    186          
    187180        if(light!= 0) 
    188181        { 
     
    191184                if(light->getType() == Light::LT_DIRECTIONAL) 
    192185                { 
     186                        triggerName = "ILLUM_TRIGGER_SM_DIRECTIONAL"; 
    193187                        Camera* viewcam = OgreIlluminationManager::getSingleton().getMainCamera();                       
    194188                         
     
    296290                else if(light->getType() == Light::LT_SPOTLIGHT) 
    297291                { 
     292                        triggerName = "ILLUM_TRIGGER_SM_SPOT"; 
    298293                        Camera* viewcam = OgreIlluminationManager::getSingleton().getMainCamera();                       
    299294                         
     
    428423                { 
    429424                        lightFarPlane = light->getAttenuationRange(); 
     425                        triggerName = "ILLUM_TRIGGER_SM_POINT";          
    430426                        //no other adjustment needed                     
    431427                } 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreSceneCameraDepthRenderingRun.cpp

    r2355 r2379  
    11#include "OgreSceneCameraDepthRenderingRun.h" 
     2#include "OgreTechniqueGroup.h" 
    23 
    34 
     
    4041} 
    4142 
     43bool  OgreSceneCameraDepthRenderingRun::renderableQueued (Renderable *rend, uint8 groupID, ushort priority, Technique **ppTech) 
     44{ 
     45        if((*ppTech)->isTransparent()) 
     46                return false; 
     47 
     48        OgreTechniqueGroup* TG = (OgreTechniqueGroup*) rend->getRenderTechniqueGroup(); 
     49        if(TG) 
     50        { 
     51                String materialToSet = String("GTP/Basic/CameraDepth"); 
     52                String triggeredMaterial = TG->getMaterialNameForTrigger("ILLUM_TRIGGER_CAMERADEPTH"); 
     53                if(triggeredMaterial != "")//a trigger is associated 
     54                        materialToSet = triggeredMaterial; 
     55                Technique* techn = ((Material*)MaterialManager::getSingleton().getByName(       materialToSet ).getPointer())->getTechnique(0); 
     56                *ppTech = techn;         
     57        } 
     58        return true; 
     59} 
     60 
    4261void OgreSceneCameraDepthRenderingRun::updateFrame(unsigned long frameNum) 
    4362{ 
    4463         
    45         setMaterialForVisibles(String("GTP/Basic/CameraDepth"), playerCamera, false, true, "ILLUM_TRIGGER_CAMERADEPTH"); 
    46          
     64        //setMaterialForVisibles(String("GTP/Basic/CameraDepth"), playerCamera, false, true, "ILLUM_TRIGGER_CAMERADEPTH"); 
     65        RenderQueue* rq = Root::getSingleton()._getCurrentSceneManager()->getRenderQueue();              
     66        rq->setRenderableListener(this); 
     67 
    4768        RenderTarget* rt = depthTexture->getBuffer().getPointer()->getRenderTarget(); 
    4869 
     
    6081        //rt->writeContentsToFile("cameraDepth.bmp"); 
    6182         
    62         restoreMaterials(); 
     83        //restoreMaterials(); 
    6384 
    6485        sharedRuns->getRoot()->restoreVisibility(); 
     86        rq->setRenderableListener(0); 
    6587} 
    6688 
Note: See TracChangeset for help on using the changeset viewer.