Ignore:
Timestamp:
05/11/06 10:19:54 (19 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreIlluminationManager.cpp

    r874 r949  
    158158} 
    159159 
     160void OgreIlluminationManager::initTechniques(Entity* e) 
     161{ 
     162        OgreSharedRuns* sharedruns = 0; 
     163         
     164        for(unsigned int s = 0; s < e->getNumSubEntities(); s++) 
     165        { 
     166                SubEntity* sube = e->getSubEntity(s); 
     167 
     168                Material* mat = sube->getMaterial().getPointer(); 
     169                 
     170                OgreRenderable* rend = 0;        
     171                OgreTechniqueGroup* group = 0; 
     172         
     173                for(unsigned int t = 0 ; t < mat->getNumTechniques() ; t++) 
     174                { 
     175                        Technique* tech = mat->getTechnique(t); 
     176 
     177                        for(unsigned int p = 0; p< tech->getNumPasses(); p++) 
     178                        { 
     179                                Pass* pass = tech->getPass(p); 
     180 
     181                                std::vector<IllumTechniqueParams*>& techniques = pass->getIllumTechniques(); 
     182                                std::vector<IllumTechniqueParams*>::iterator i = techniques.begin();  
     183                                std::vector<IllumTechniqueParams*>::iterator iend = techniques.end(); 
     184                                 
     185                                while( i != iend) 
     186                                { 
     187                                        IllumTechniqueParams* params = *i; 
     188                                         
     189                                        if(rend == 0) 
     190                                        { 
     191                                                rend = new OgreRenderable(e, s); 
     192                                                group = new OgreTechniqueGroup(); 
     193                                                sube->setRenderTechniqueGroup(group);                                                    
     194                                                 
     195                                                if( sharedruns == 0) 
     196                                                {                                                                        
     197                                                        sharedruns  = new OgreSharedRuns(); 
     198                                                        addSharedRuns(sharedruns); 
     199                                                } 
     200 
     201                                                group->addSharedRun(sharedruns); 
     202                                                sharedruns->addRenderable(rend); 
     203                                                sharedruns->updateBounds(); 
     204                                        } 
     205                                         
     206                                        createTechnique(params, pass, rend, sharedruns);  
     207 
     208                                        i++; 
     209                                } 
     210                        } 
     211                } 
     212        } 
     213 
     214                 
     215} 
    160216 
    161217void OgreIlluminationManager::initTechniques() 
     
    170226                        Entity* e = (Entity*) o; 
    171227 
    172                         OgreSharedRuns* sharedruns = 0; 
     228                /*      OgreSharedRuns* sharedruns = 0; 
    173229                         
    174230                        for(unsigned int s = 0; s < e->getNumSubEntities(); s++) 
     
    222278                        } 
    223279 
     280                */ 
     281                        initTechniques(e); 
    224282                } 
    225283        } 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreSharedRuns.cpp

    r790 r949  
    3636                sharedRuns[runType]->update(frameNum); 
    3737        */ 
    38         getRun(runType)->update(frameNum); 
     38        RenderingRun* run = getRun(runType); 
     39         
     40        if(run->update(frameNum)) 
     41                runUpdated(runType, run); 
    3942} 
    4043 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticCasterRenderTechnique.cpp

    r874 r949  
    2323{        
    2424        this->photonMapMaterialName = photonMapMaterialName; 
    25         this->causticMapMaterialName = causticMapMaterialName; 
     25         
     26        String newMaterialName = causticMapMaterialName + parentRenderable->getName() + "_clone"; 
     27        Material* mat = (Material*) MaterialManager::getSingleton().getByName(causticMapMaterialName).getPointer(); 
     28        Material* newMat = mat->clone(newMaterialName).getPointer(); 
     29        this->causticMapMaterialName = newMat->getName(); 
     30        //this->causticMapMaterialName =causticMapMaterialName; 
     31                 
    2632        this->photonMapTexID = photonMapTexID; 
    2733         
     
    6369        } 
    6470} 
    65  
     71void OgreCausticCasterRenderTechnique::distanceCubeMapRunUpdated(RenderingRun* run) 
     72{ 
     73        if(useDistance) 
     74        { 
     75                OgrePhotonMapRenderingRun* photonrun = (OgrePhotonMapRenderingRun*)  
     76                                        sharedRuns->getRun(ILLUMRUN_PHOTONMAP)->asOgreRenderingRun(); 
     77                photonrun->distanceCubeMapUpdated(sharedRuns->getRun(ILLUMRUN_DISTANCE_CUBEMAP)); 
     78        } 
     79} 
    6680void OgreCausticCasterRenderTechnique::causticCubeMapRunChanged(RenderingRun* run) 
    6781{ 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticRecieverRenderTechnique.cpp

    r836 r949  
    5858 
    5959                newpass->setSceneBlending(SBF_DEST_COLOUR, SBF_ONE); 
     60                newpass->setDepthBias(5); 
    6061                //newpass->setSceneBlending(SBT_ADD); 
    6162                 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDepthShadowRecieverRenderTechnique.cpp

    r836 r949  
    5454 
    5555                newpass->setSceneBlending(SBT_MODULATE); 
    56                  
     56                newpass->setDepthBias(5); 
    5757                techn->movePass(lastpass, index);                        
    5858        } 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreCausticCubeMapRenderingRun.cpp

    r790 r949  
    2121        this->materialName =  materialName; 
    2222        this->photonMapTexId = photonMapTexId; 
     23 
     24        spriteSetName = name + String("_pixelSpriteSet"); 
    2325         
    2426        createCausticCubeMap(); 
     
    4042        String photonMapName = ((OgrePhotonMapRenderingRun*) run->asOgreRenderingRun())->getPhotonMapTextureName(); 
    4143        mat->getTechnique(0)->getPass(0)->getTextureUnitState(photonMapTexId)->setTextureName(photonMapName); 
     44 
     45        //rt = TextureManager::getSingleton().getByName(photonMapName); 
     46        LogManager::getSingleton().logMessage(LML_NORMAL, name + " map: " + photonMapName + " material: " + mat->getName()); 
    4247} 
    4348 
     
    5964        renderPixelSprites(materialName, rt, tex->getWidth(), tex->getHeight()); 
    6065 
    61         //rt->writeContentsToFile("caucube" + StringConverter::toString(facenum) + ".dds"); 
     66        //rt->writeContentsToFile("caucube" + this->name + StringConverter::toString(facenum) + ".dds"); 
    6267} 
    6368 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgrePhotonMapRenderingRun.cpp

    r808 r949  
    7878        static int framecount = 0; 
    7979        String filename = "photon"; 
    80         filename.append(StringConverter::toString(framecount)); 
     80        filename.append(this->name); 
     81        //filename.append(StringConverter::toString(framecount)); 
    8182        filename.append(".png"); 
    8283        rt->writeContentsToFile(filename); 
     
    135136        mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(cubemapname); 
    136137} 
     138 
     139void OgrePhotonMapRenderingRun::distanceCubeMapUpdated(RenderingRun* run) 
     140{ 
     141        Material* mat = (Material*) MaterialManager::getSingleton().getByName(materialName).getPointer(); 
     142        OgreDistanceCubeMapRenderingRun* cuberun =(OgreDistanceCubeMapRenderingRun*) (run->asOgreRenderingRun()); 
     143        String cubemapname = cuberun->getDistanceCubeMapTextureName(); 
     144        GpuProgramParametersSharedPtr fpParams = mat->getTechnique(0)->getPass(0)->getFragmentProgramParameters(); 
     145        Vector3 center = ((OgreSharedRuns*) sharedRuns)->getRootPosition(ILLUMRUN_DISTANCE_CUBEMAP); 
     146        fpParams->setNamedConstant("lastCenter",center); 
     147} 
    137148  
Note: See TracChangeset for help on using the changeset viewer.