Ignore:
Timestamp:
10/23/06 23:26:11 (18 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule
Files:
8 edited

Legend:

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

    r1639 r1670  
    7474        bool blurSM; 
    7575        bool focusingSM; 
     76        String shadowMapMaterialName; 
    7677        unsigned int phaseTextureSize; 
    7778        std::map<RenderingRunType,float> maxRads; 
     
    315316        void setFocusingSM(bool use){focusingSM = use;} 
    316317        void setBlurShadowMap(bool use){blurSM = use;} 
     318        void setShadowMapMaterialName(String name){shadowMapMaterialName = name;} 
    317319}; 
    318320 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreDepthShadowRecieverRenderTechnique.h

    r836 r1670  
    4747                                                        String shadowVertexProgram, 
    4848                                                        String shadowFragmentProgram, 
     49                                                        bool setLightViewMatrix, 
     50                                                        bool setLightViewProjMatrix, 
     51                                                        bool setLightProjFarPlane, 
     52                                                        String lightViewProjParamName, 
     53                                                        String lightViewParamName, 
     54                                                        String lightFarPlaneParamName, 
    4955                                                        Pass* pass, 
    5056                                                        OgreRenderable* parentRenderable, 
     
    7985                @breif new passes created by this technique 
    8086        */ 
    81         std::vector<Pass*> passes;       
     87        std::vector<Pass*> passes; 
     88        bool setLightViewMatrix; 
     89        bool setLightViewProjMatrix; 
     90        bool setLightProjFarPlane; 
     91        String lightViewProjParamName; 
     92        String lightViewParamName; 
     93        String lightFarPlaneParamName; 
    8294}; 
    8395 
     
    98110        String shadowVertexProgram; 
    99111        String shadowFragmentProgram; 
     112        bool setLightViewMatrix; 
     113        bool setLightViewProjMatrix; 
     114        bool setLightProjFarPlane; 
     115        String lightViewProjParamName; 
     116        String lightViewParamName; 
     117        String lightFarPlaneParamName; 
    100118 
    101119}; 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreDepthShadowMapRenderingRun.h

    r1628 r1670  
    5656        */ 
    5757        Matrix4 getLightViewProjMatrix(); 
     58        Real getLightFarPlane(){return lightFarPlane;} 
    5859 
    5960protected:       
     
    8485        Texture* depthMapTexture; 
    8586        Texture* blurredDepthMapTexture; 
     87        Real lightFarPlane; 
    8688         
    8789        //inherited 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreIlluminationManager.cpp

    r1639 r1670  
    8686        blurSM = false; 
    8787        focusingSM = true; 
    88          
     88        shadowMapMaterialName = "GameTools/ShadowMapDepth"; 
     89 
    8990        for(int i = 0; i < RUN_TYPE_COUNT; i++) 
    9091        { 
     
    605606                                shadowMapSize, 
    606607                                shadowMapSize, 
    607                                 "GameTools/ShadowMapDepth" //TODO 
     608                                shadowMapMaterialName //TODO 
    608609                                ); 
    609610                        runs->addRun(ILLUMRUN_DEPTH_SHADOWMAP, run); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreRenderingRun.cpp

    r1647 r1670  
    11#include "OgreRenderingrun.h" 
    22#include "OgreIlluminationManager.h" 
    3 #include "OgreTerrainSceneManager.h" 
    43 
    54MovablePlane* OgreRenderingRun::fullScreenQuad = NULL; 
     
    163162        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
    164163         
    165         if(sm->getTypeName() == "TerrainSceneManager") 
    166         { 
    167                 terrainMaterial = ((TerrainSceneManager*)sm)->getTerrainMaterial()->getName(); 
    168                 ((TerrainSceneManager*)sm)->setCustomMaterial(materialName); 
    169         } 
    170  
    171164        RenderQueue* rq = sm->getRenderQueue(); 
    172165        rq->clear(); 
     
    187180{ 
    188181        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
    189         if(sm->getTypeName()== "TerrainSceneManager") 
    190                 ((TerrainSceneManager*)sm)->setCustomMaterial(terrainMaterial); 
    191          
    192  
     182         
    193183        std::map<Renderable*, String>::iterator it = visibleObjects.begin(); 
    194184        std::map<Renderable*, String>::iterator itend = visibleObjects.end(); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDepthShadowRecieverRenderTechnique.cpp

    r1628 r1670  
    88                                                                                                String shadowVertexProgram, 
    99                                                                                                String shadowFragmentProgram, 
     10                                                                                                bool setLightViewMatrix, 
     11                                                                                                bool setLightViewProjMatrix, 
     12                                                                                                bool setLightProjFarPlane, 
     13                                                                                                String lightViewProjParamName, 
     14                                                                                                String lightViewParamName, 
     15                                                                                                String lightFarPlaneParamName, 
    1016                                                                                                Pass* pass, 
    1117                                                                                                OgreRenderable* parentRenderable, 
     
    1824        this->shadowVertexProgram = shadowVertexProgram ; 
    1925        this->shadowFragmentProgram = shadowFragmentProgram; 
    20  
     26        this->setLightViewMatrix = setLightViewMatrix; 
     27        this->setLightViewProjMatrix = setLightViewProjMatrix; 
     28        this->setLightProjFarPlane = setLightProjFarPlane; 
     29        this->lightViewProjParamName = lightViewProjParamName; 
     30        this->lightViewParamName = lightViewParamName; 
     31        this->lightFarPlaneParamName = lightFarPlaneParamName; 
    2132                 
    2233        //insert new passes 
     
    5768                newpass->setSceneBlending(SBT_MODULATE); 
    5869                //newpass->setSceneBlending(SBF_ONE, SBF_ZERO); 
     70 
    5971                newpass->setDepthBias(1); 
    6072                techn->movePass(lastpass, index);                        
     
    108120                         
    109121                                //fpParams->setNamedConstant("lightViewProj", depthRun->getLightViewProjMatrix());  
    110                                 vpParams->setNamedConstant("lightViewProj", depthRun->getLightViewProjMatrix()); 
     122                                if(setLightViewProjMatrix) 
     123                                        vpParams->setNamedConstant(lightViewProjParamName, depthRun->getLightViewProjMatrix()); 
     124                                if(setLightViewMatrix) 
     125                                        vpParams->setNamedConstant(lightViewParamName, depthRun->getLightViewMatrix()); 
     126                                if(setLightProjFarPlane) 
     127                                        fpParams->setNamedConstant(lightFarPlaneParamName, depthRun->getLightFarPlane()); 
     128                                 
    111129                                 
    112130                                passes.at(i)->setActive(true); 
     
    139157                OgreDepthShadowRecieverRenderTechniqueFactory* f = (OgreDepthShadowRecieverRenderTechniqueFactory*) factory; 
    140158                f->shadowFragmentProgram =  params; 
     159        } 
     160 
     161        void parseSetLightViewProj(String& params, RenderTechniqueFactory* factory) 
     162        { 
     163                OgreDepthShadowRecieverRenderTechniqueFactory* f = (OgreDepthShadowRecieverRenderTechniqueFactory*) factory; 
     164                StringVector vecparams = StringUtil::split(params, " \t"); 
     165                f->setLightViewProjMatrix = StringConverter::parseBool(vecparams[0]); 
     166                if(f->setLightViewProjMatrix && vecparams.size() > 1) 
     167                        f->lightViewProjParamName =  vecparams[1]; 
     168        } 
     169 
     170        void parseSetLightView(String& params, RenderTechniqueFactory* factory) 
     171        { 
     172                OgreDepthShadowRecieverRenderTechniqueFactory* f = (OgreDepthShadowRecieverRenderTechniqueFactory*) factory; 
     173                StringVector vecparams = StringUtil::split(params, " \t"); 
     174                f->setLightViewMatrix = StringConverter::parseBool(vecparams[0]); 
     175                if(f->setLightViewMatrix && vecparams.size() > 1) 
     176                        f->lightViewParamName =  vecparams[1]; 
     177        } 
     178 
     179        void parseSetLightFarPlane(String& params, RenderTechniqueFactory* factory) 
     180        { 
     181                OgreDepthShadowRecieverRenderTechniqueFactory* f = (OgreDepthShadowRecieverRenderTechniqueFactory*) factory; 
     182                StringVector vecparams = StringUtil::split(params, " \t"); 
     183                f->setLightProjFarPlane = StringConverter::parseBool(vecparams[0]); 
     184                if(f->setLightProjFarPlane && vecparams.size() > 1) 
     185                        f->lightFarPlaneParamName =  vecparams[1]; 
    141186        } 
    142187} 
     
    151196        this->attributeParsers.insert(AttribParserList::value_type("vertex_program_name", (ILLUM_ATTRIBUTE_PARSER) parseVertexProgram)); 
    152197        this->attributeParsers.insert(AttribParserList::value_type("fragment_program_name", (ILLUM_ATTRIBUTE_PARSER) parseFragmentProgram)); 
     198        this->attributeParsers.insert(AttribParserList::value_type("set_light_viewproj", (ILLUM_ATTRIBUTE_PARSER) parseSetLightViewProj)); 
     199        this->attributeParsers.insert(AttribParserList::value_type("set_light_view", (ILLUM_ATTRIBUTE_PARSER) parseSetLightView)); 
     200        this->attributeParsers.insert(AttribParserList::value_type("set_light_farplane", (ILLUM_ATTRIBUTE_PARSER) parseSetLightFarPlane)); 
    153201} 
    154202 
     
    163211        shadowVertexProgram = "GameTools/ShadowMap/ShadowVS"; 
    164212        shadowFragmentProgram = "GameTools/ShadowMap/ShadowPS"; 
     213        setLightViewMatrix = false; 
     214        setLightViewProjMatrix = true; 
     215        setLightProjFarPlane = false; 
     216        lightViewProjParamName = "lightViewProj"; 
     217        lightViewParamName = "lightView"; 
     218        lightFarPlaneParamName = "lightFarPlane"; 
    165219 
    166220        parseParams(params); 
     
    170224                                                                                                shadowVertexProgram, 
    171225                                                                                                shadowFragmentProgram, 
     226                                                                                                setLightViewMatrix , 
     227                                                                                                setLightViewProjMatrix, 
     228                                                                                                setLightProjFarPlane, 
     229                                                                                                lightViewProjParamName, 
     230                                                                                                lightViewParamName, 
     231                                                                                                lightFarPlaneParamName, 
    172232                                                                                                pass, 
    173233                                                                                                parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreDepthShadowMapRenderingRun.cpp

    r1639 r1670  
    2020         
    2121        this->materialName = materialName; 
    22  
     22        lightFarPlane = 0; 
    2323        createDepthMap();        
    2424} 
     
    320320                        if(!usefocusing) 
    321321                        { 
    322                                 depthMapCamera->setFarClipDistance(light->getAttenuationRange() ); 
     322                                lightFarPlane = light->getAttenuationRange(); 
     323                                depthMapCamera->setFarClipDistance(lightFarPlane); 
     324                                 
    323325                        } 
    324326                        else 
     
    336338                                        float farP= -1.5 * min.z; 
    337339                                        if(farP < 0.2) farP = 0.2; 
    338                                         depthMapCamera->setFarClipDistance(farP); 
    339  
     340                                                depthMapCamera->setFarClipDistance(farP); 
     341                                        lightFarPlane = farP; 
     342                                 
    340343                                        Vector3 scale = (max - min); 
    341344                                        scale *= 1.5; // just for safety 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreSceneCameraDepthRenderingRun.cpp

    r1425 r1670  
    5858        rt->update();    
    5959 
    60         //rt->writeContentsToFile("cameraDepth.dds"); 
     60        //rt->writeContentsToFile("cameraDepth.bmp"); 
    6161         
    6262        restoreMaterials(); 
Note: See TracChangeset for help on using the changeset viewer.