Ignore:
Timestamp:
07/02/07 04:12:36 (18 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques
Files:
3 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, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDepthShadowReceiverRenderTechnique.cpp

    r2460 r2475  
    2121                                                                                                int startTextureUnitID, 
    2222                                                                                                bool nearestLightsFromCamera, 
     23                                                                                                bool bindToVertexShader, 
    2324                                                                                                Pass* pass, 
    2425                                                                                                OgreRenderable* parentRenderable, 
     
    2829                                                        DepthShadowReceiverRenderTechnique(parentRenderable, parentTechniqueGroup) 
    2930{ 
     31        this->bindToVertexShader = bindToVertexShader; 
    3032        this->passBlendingSRC = passBlendingSRC; 
    3133        this->passBlendingDEST = passBlendingDEST; 
     
    99101        Vector3 center = OgreIlluminationManager::getSingleton().getMainCamera()->getWorldPosition(); 
    100102        if(!nearestLightsFromCamera) 
    101                 center = ((OgreSharedRuns*) sharedRuns)->getRootPosition(); 
     103                center = ((OgreSharedRuns*) sharedRuns)->getRootRenderable()->getParentSceneNode()->_getDerivedPosition(); 
     104                //center = ((OgreSharedRuns*) sharedRuns)->getRootPosition(); 
    102105        Root::getSingleton()._getCurrentSceneManager()->_populateLightList( 
    103106                                                        center, 
     
    149152                                GpuProgramParametersSharedPtr fpParams = passToSet->getFragmentProgramParameters(); 
    150153                                GpuProgramParametersSharedPtr vpParams = passToSet->getVertexProgramParameters(); 
     154                                GpuProgramParametersSharedPtr variableSetParams = fpParams; 
     155                                if(bindToVertexShader) 
     156                                        variableSetParams = vpParams; 
    151157 
    152158                                String LightViewProjParamName = lightViewProjParamName; 
     
    165171                                        vpParams->setNamedConstant(LightViewProjParamName, depthRun->getLightViewProjMatrix()); 
    166172                                        else 
    167                                         fpParams->setNamedConstant(LightViewProjParamName, depthRun->getLightViewProjMatrix()); 
     173                                        variableSetParams->setNamedConstant(LightViewProjParamName, depthRun->getLightViewProjMatrix()); 
    168174                                } 
    169175                                if(setLightViewMatrix) 
     
    172178                                        vpParams->setNamedConstant(LightViewParamName, depthRun->getLightViewMatrix()); 
    173179                                        else 
    174                                         fpParams->setNamedConstant(LightViewParamName, depthRun->getLightViewMatrix()); 
     180                                        variableSetParams->setNamedConstant(LightViewParamName, depthRun->getLightViewMatrix()); 
    175181                                } 
    176182                                if(setLightProjFarPlane) 
     
    347353                f->nearestLightsFromCamera = StringConverter::parseBool(params); 
    348354        } 
     355        void parseBindToVertexShader(String& params, RenderTechniqueFactory* factory) 
     356        { 
     357                OgreDepthShadowReceiverRenderTechniqueFactory* f = (OgreDepthShadowReceiverRenderTechniqueFactory*) factory; 
     358                f->bindToVertexShader = StringConverter::parseBool(params); 
     359        } 
    349360} 
    350361 
     
    370381        this->attributeParsers.insert(AttribParserList::value_type("start_tex_id", (ILLUM_ATTRIBUTE_PARSER) parseStartTexID));   
    371382        this->attributeParsers.insert(AttribParserList::value_type("nearest_from_camera", (ILLUM_ATTRIBUTE_PARSER) parseNearestFromCamera));     
     383        this->attributeParsers.insert(AttribParserList::value_type("bind_to_vertex_shader", (ILLUM_ATTRIBUTE_PARSER) parseBindToVertexShader));  
    372384} 
    373385 
     
    394406        createNewPasses = true; 
    395407        startTextureUnitID = 0; 
    396         nearestLightsFromCamera = true; 
    397          
     408        nearestLightsFromCamera = false; 
     409        bindToVertexShader = false; 
     410 
    398411        parseParams(params); 
    399412 
     
    415428                                                                                                startTextureUnitID, 
    416429                                                                                                nearestLightsFromCamera, 
     430                                                                                                bindToVertexShader, 
    417431                                                                                                pass, 
    418432                                                                                                parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgrePathMapRenderTechnique.cpp

    r2460 r2475  
    144144        LightList lights; 
    145145        SceneManager* sm = Root::getSingleton()._getCurrentSceneManager(); 
    146         sm->_populateLightList(OgreIlluminationManager::getSingleton().getMainCamera()->getPosition(), 1000, lights); 
     146        sm->_populateLightList(OgreIlluminationManager::getSingleton().getMainCamera()->getWorldPosition(), 1000, lights); 
    147147 
    148148        int found = 0; 
    149         for(int i = 0 ; found < 5 && i < lights.size(); i++) 
     149        for(int i = 0 ; found < 2 && i < lights.size(); i++) 
    150150        { 
    151151                if(lights.at(i)->isAttached()) 
Note: See TracChangeset for help on using the changeset viewer.