Ignore:
Timestamp:
07/02/07 04:12:36 (17 years ago)
Author:
szirmay
Message:
 
File:
1 edited

Legend:

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

    r2366 r2475  
    1515                                                                                                String casterCenterVariableName, 
    1616                                                                                                String attenuationVariableName, 
     17                                                                                                bool bindDistanceMap, 
    1718                                                                                                Pass* pass, 
    1819                                                                                                OgreRenderable* parentRenderable, 
     
    3132        this->casterCenterVariableName = casterCenterVariableName; 
    3233        this->attenuationVariableName = attenuationVariableName; 
     34        this->bindDistanceMap = bindDistanceMap; 
     35        bindAttenuation = false; 
     36        if(attenuationVariableName != "") 
     37                bindAttenuation = true; 
    3338         
    3439        if(createNewPasses) 
     
    6671 
    6772                        TextureUnitState* st = newpass->createTextureUnitState(); 
    68                         TextureUnitState* st2 = newpass->createTextureUnitState(); 
    69  
    7073                        st->setTextureFiltering(TFO_BILINEAR); 
    71                         st2->setTextureFiltering(TFO_BILINEAR); 
     74                        if(bindDistanceMap) 
     75                        { 
     76                                TextureUnitState* st2 = newpass->createTextureUnitState(); 
     77                                st2->setTextureFiltering(TFO_BILINEAR); 
     78                        } 
    7279 
    7380                        newpass->setSceneBlending(passBlendingSRC, passBlendingDEST); 
     
    109116                         
    110117                        Pass* passToSet = this->pass; 
    111                         int textureUnit = startTextureUnitID + i; 
     118                        int p = bindDistanceMap?i*2:i; 
     119                        int textureUnit = startTextureUnitID + p; 
    112120                        if(createNewPasses) 
    113121                        { 
     
    119127                        passToSet->getTextureUnitState(textureUnit)->setTextureName( 
    120128                                cauCubeRun->getCausticCubeMapTextureName()); 
     129                        if(bindDistanceMap) 
     130                        { 
     131                                OgreCubeMapRenderingRun* distCubeRun =  
     132                                (OgreCubeMapRenderingRun*) causticCasters.at(i)-> 
     133                                        getRun(ILLUMRUN_DISTANCE_CUBEMAP)->asOgreRenderingRun(); 
     134                                if(distCubeRun) 
     135                                passToSet->getTextureUnitState(textureUnit + 1)->setTextureName( 
     136                                        distCubeRun->getCubeMapTextureName()); 
     137                        } 
    121138         
    122139                        //set caster position nad caustic attenuation 
     
    126143                        if(!createNewPasses) 
    127144                        { 
    128                                 centerVarName += String("[") + StringConverter::toString(i) + String("]"); 
    129                                 attenuationVarName += String("[") + StringConverter::toString(i) + String("]"); 
     145                                centerVarName += StringConverter::toString(i+1); 
     146                                attenuationVarName += StringConverter::toString(i+1); 
    130147                        } 
    131148                        Fparams->setNamedConstant(centerVarName, 
    132149                                                                                causticCasters.at(i)->getRootPosition(ILLUMRUN_CAUSTIC_CUBEMAP)); 
     150                        if(bindAttenuation) 
    133151                        Fparams->setNamedConstant(attenuationVarName, 
    134152                                                                                cauCubeRun->getAttenuation());                   
     
    247265                f->attenuationVariableName =  params; 
    248266        } 
     267 
     268        void parseBindDistanceMap(String& params, RenderTechniqueFactory* factory) 
     269        { 
     270                OgreCausticReceiverRenderTechniqueFactory* f = (OgreCausticReceiverRenderTechniqueFactory*) factory; 
     271                f->bindDistanceMap =  StringConverter::parseBool(params); 
     272        } 
    249273} 
    250274 
     
    263287        this->attributeParsers.insert(AttribParserList::value_type("center_var_name", (ILLUM_ATTRIBUTE_PARSER) parseCenterVarName)); 
    264288        this->attributeParsers.insert(AttribParserList::value_type("attenuation_var_name", (ILLUM_ATTRIBUTE_PARSER) parseAttenuationVarName));   
     289        this->attributeParsers.insert(AttribParserList::value_type("bind_distance_map", (ILLUM_ATTRIBUTE_PARSER) parseBindDistanceMap));         
    265290} 
    266291 
     
    280305        startTextureUnitID = 0; 
    281306        casterCenterVariableName = "cubeMapCameraPosition"; 
    282         String attenuationVariableName = "attenuation"; 
     307        attenuationVariableName = ""; 
     308        bindDistanceMap = false; 
    283309 
    284310        parseParams(params); 
     
    294320                                                                                                casterCenterVariableName, 
    295321                                                                                                attenuationVariableName, 
     322                                                                                                bindDistanceMap, 
    296323                                                                                                pass, 
    297324                                                                                                parentRenderable, 
Note: See TracChangeset for help on using the changeset viewer.