Changeset 2355


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

Legend:

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

    r2333 r2355  
    115115                @param rq pointer to the filled Renderqueue instance to set material for 
    116116        */ 
    117         void setMaterialForRenderables(String& materialName, RenderQueue* rq, bool solidsonly = false); 
     117        void setMaterialForRenderables(String& materialName, RenderQueue* rq, bool solidsonly = false, String triggerName = ""); 
    118118        /** 
    119119                @brief Sets the given material for each Renderable visible from a given camera. 
     
    130130                @param shadowcastersonly flag to search for only shadow casters 
    131131        */ 
    132         void setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly = false, bool solidsonly = false); 
     132        void setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly = false, bool solidsonly = false, String triggerName = ""); 
    133133        /** 
    134134                @brief Restores previously stored materials. 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/OgreTechniqueGroup.h

    r2320 r2355  
    2929                parentSharedRuns->updateBounds();                
    3030        } 
     31        String getMaterialNameForTrigger(String trigger) 
     32        { 
     33                if(triggeredMaterials.find(trigger) == triggeredMaterials.end()) 
     34                        return ""; 
     35                else return triggeredMaterials[trigger]; 
     36        } 
    3137 
    3238protected: 
     39        std::map<String, String> triggeredMaterials; 
    3340        /** 
    3441                @brief Collection of OgreRenderTechniques 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreColorCubeMapRenderTechnique.h

    r2320 r2355  
    6565                                                                        String minVariableName, 
    6666                                                                        String maxVariableName, 
     67                                                                        String triggerName, 
    6768                                                                        Pass* pass, 
    6869                                                                        OgreRenderable* parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreConvolvedCubeMapRenderTechnique.h

    r2320 r2355  
    6565                                                        String minVariableName, 
    6666                                                        String maxVariableName, 
     67                                                        String triggerName,                                                                                                              
    6768                                                        Pass* pass, 
    6869                                                        OgreRenderable* parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCubeMapRenderTechnique.h

    r2320 r2355  
    6565                                                        String minVariableName, 
    6666                                                    String maxVariableName, 
     67                                                        String triggerName, 
    6768                                                        Pass* pass, 
    6869                                                        OgreRenderable* parentRenderable, 
     
    109110        String maxVariableName; 
    110111 
     112        String triggerName; 
     113 
    111114        //inherited 
    112115        RenderingRun* createCubeMapRun(); 
     
    152155        String minVariableName; 
    153156        String maxVariableName; 
     157        String triggerName; 
    154158}; 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreDistanceCubeMapRenderTechnique.h

    r2320 r2355  
    6565                                                        String minVariableName, 
    6666                                                        String maxVariableName, 
     67                                                        String triggerName, 
    6768                                                        Pass* pass, 
    6869                                                        OgreRenderable* parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderingRuns/OgreCubeMapRenderingRun.h

    r2320 r2355  
    5454                                                                 String selfMaterial, 
    5555                                                                 String environmentMaterial, 
     56                                                                 String envTriggerName, 
    5657                                                                 bool getMinMax, 
    5758                                                                 RenderingRunType cubemapRunType); 
     
    104105        Vector4 max; 
    105106 
     107        String envTriggerName; 
     108 
    106109        /** 
    107110                @brief  
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreRenderingRun.cpp

    r2333 r2355  
    1313private: 
    1414        String materialName; 
     15        String triggerName; 
    1516        std::map<Renderable*, String>* visibleObjects; 
    1617public: 
    1718     
    18         MaterialSetVisitor(String& materialName, std::map<Renderable*, String>* visibleObjects) 
     19        MaterialSetVisitor(String& materialName, std::map<Renderable*, String>* visibleObjects, String trigger = "") 
    1920        { 
    2021                this->materialName = materialName; 
     
    2930                { 
    3031                        (*visibleObjects)[rend] = rend->getMaterial().getPointer()->getName(); 
    31                         rend->setMaterialName(materialName); 
     32                        String materialToSet = materialName; 
     33                        if(triggerName != "")//we have a trigger here 
     34                        { 
     35                                String triggeredMaterial =  
     36                                        ((OgreTechniqueGroup*)rend->getRenderTechniqueGroup()) 
     37                                                ->getMaterialNameForTrigger(triggerName); 
     38                                if(triggeredMaterial != "")//a trigger is associated 
     39                                        materialToSet = triggeredMaterial; 
     40                        }                                
     41                        rend->setMaterialName(materialToSet); 
    3242                } 
    3343        } 
     
    4050                { 
    4151                        (*visibleObjects)[rend] = rend->getMaterial().getPointer()->getName(); 
    42                         rend->setMaterialName(materialName); 
     52                        String materialToSet = materialName; 
     53                        if(triggerName != "")//we have a trigger here 
     54                        { 
     55                                String triggeredMaterial =  
     56                                        ((OgreTechniqueGroup*)rend->getRenderTechniqueGroup()) 
     57                                                ->getMaterialNameForTrigger(triggerName); 
     58                                if(triggeredMaterial != "")//a trigger is associated 
     59                                        materialToSet = triggeredMaterial; 
     60                        }                                
     61                        rend->setMaterialName(materialToSet); 
    4362                } 
    4463        } 
     
    127146} 
    128147 
    129 void OgreRenderingRun::setMaterialForRenderables(String& materialName, RenderQueue* rq,  bool solidsonly) 
     148void OgreRenderingRun::setMaterialForRenderables(String& materialName, RenderQueue* rq,  bool solidsonly, String triggerName) 
    130149{ 
    131150        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
     
    144163                        const QueuedRenderableCollection& solids = pPriorityGrp->getSolidsBasic(); 
    145164                        const QueuedRenderableCollection& transparents = pPriorityGrp->getTransparents(); 
    146                         MaterialSetVisitor visitor(materialName, &visibleObjects);       
     165                        MaterialSetVisitor visitor(materialName, &visibleObjects, triggerName);  
    147166                        solids.acceptVisitor(&visitor, QueuedRenderableCollection::OM_PASS_GROUP); 
    148167                        if(!solidsonly) 
     
    166185} 
    167186 
    168 void OgreRenderingRun::setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly, bool solidsonly) 
     187void OgreRenderingRun::setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly, bool solidsonly, String triggerName) 
    169188{ 
    170189        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
     
    183202        sm->_findVisibleObjects(cam, shadowcastersonly); 
    184203         
    185         setMaterialForRenderables(materialName, sm->getRenderQueue(), solidsonly); 
     204        setMaterialForRenderables(materialName, sm->getRenderQueue(), solidsonly, triggerName); 
    186205} 
    187206 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticCasterRenderTechnique.cpp

    r2320 r2355  
    132132                                                                                true, 
    133133                                                                                "", 
    134                                                                                 "GameTools/DistanceShader", 
     134                                                                                "GTP/Basic/Distance", 
     135                                                                                "ILLUM_TRIGGER_DISTANCE", 
    135136                                                                                false,                                                                           
    136137                                                                                ILLUMRUN_DISTANCE_CUBEMAP); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreColorCubeMapRenderTechnique.cpp

    r1930 r2355  
    2121                                                                                                                String minVariableName, 
    2222                                                                                                                String maxVariableName, 
     23                                                                                                                String triggerName, 
    2324                                                                                                                Pass* pass, 
    2425                                                                                                                OgreRenderable* parentRenderable, 
    2526                                                                                                                OgreTechniqueGroup* parentTechniqueGroup) 
    26                                                                                                                 :OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, pass, parentRenderable, parentTechniqueGroup), 
     27                                                                                                                :OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, triggerName, pass, parentRenderable, parentTechniqueGroup), 
    2728                                                                                                                        ColorCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup), 
    2829                                                                                                                        CubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup), 
     
    128129                                                                                                    minVariableName, 
    129130                                                                                                    maxVariableName, 
     131                                                                                                        triggerName, 
    130132                                                                                                        pass, 
    131133                                                                                                        parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreConvolvedCubeMapRenderTechnique.cpp

    r1886 r2355  
    2222                                                                                                                String minVariableName, 
    2323                                                                                                                String maxVariableName, 
     24                                                                                                                String triggerName, 
    2425                                                                                                                Pass* pass, 
    2526                                                                                                                OgreRenderable* parentRenderable, 
    2627                                                                                                                OgreTechniqueGroup* parentTechniqueGroup) 
    2728                                                        : 
    28                                                         OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, pass, parentRenderable, parentTechniqueGroup), 
     29                                                        OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, triggerName, pass, parentRenderable, parentTechniqueGroup), 
    2930                                                        CubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup), 
    3031                                                        ConvolvedCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, reducedCubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, parentRenderable, parentTechniqueGroup), 
     
    135136                                                                                                minVariableName, 
    136137                                                                                                maxVariableName, 
     138                                                                                                triggerName, 
    137139                                                                                                pass, 
    138140                                                                                                parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCubeMapRenderTechnique.cpp

    r1930 r2355  
    2121                                                                                                                String minVariableName, 
    2222                                                                                                                String maxVariableName, 
     23                                                                                                                String triggerName, 
    2324                                                                                                                Pass* pass, 
    2425                                                                                                                OgreRenderable* parentRenderable, 
     
    9293                                                                                                selfMaterial, 
    9394                                                                                                environmentMaterial, 
     95                                                                                                triggerName, 
    9496                                                                                                getMinMax, 
    9597                                                                                                cubemapLayer); 
     
    221223                OgreCubeMapRenderTechniqueFactory* f = (OgreCubeMapRenderTechniqueFactory*) factory; 
    222224                f->attachToTexUnit =  StringConverter::parseBool(params); 
     225        } 
     226 
     227        void parseTriggerName(String& params, RenderTechniqueFactory* factory) 
     228        { 
     229                OgreCubeMapRenderTechniqueFactory* f = (OgreCubeMapRenderTechniqueFactory*) factory; 
     230                f->triggerName =  params; 
    223231        } 
    224232 
     
    248256        this->attributeParsers.insert(AttribParserList::value_type("min_var_name", (ILLUM_ATTRIBUTE_PARSER) parseMinVarName)); 
    249257        this->attributeParsers.insert(AttribParserList::value_type("max_var_name", (ILLUM_ATTRIBUTE_PARSER) parseMaxVarName)); 
     258        this->attributeParsers.insert(AttribParserList::value_type("trigger_name", (ILLUM_ATTRIBUTE_PARSER) parseTriggerName)); 
    250259 
    251260} 
     
    271280        minVariableName = ""; 
    272281        maxVariableName = ""; 
     282        triggerName = ""; 
    273283 
    274284} 
     
    302312                                                                                                minVariableName, 
    303313                                                                                                maxVariableName, 
     314                                                                                                triggerName, 
    304315                                                                                                pass, 
    305316                                                                                                parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDepthShadowReceiverRenderTechnique.cpp

    r2333 r2355  
    5858                Pass* newpass = techn->createPass(); 
    5959                passes.push_back(newpass); 
    60  
    61                 newpass->setVertexProgram(shadowVertexProgram); 
    62                 newpass->setFragmentProgram(shadowFragmentProgram); 
    63                  
    64                 GpuProgramParameters* Vparams = newpass->getVertexProgramParameters().getPointer(); 
    65                 Vparams->setNamedAutoConstant(WorldViewProjParamName, 
    66                                                                         GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX);         
    67                 Vparams->setNamedAutoConstant(WorldParamName, 
    68                                                                         GpuProgramParameters::ACT_WORLD_MATRIX); 
    69                 GpuProgramParameters* Fparams = newpass->getFragmentProgramParameters().getPointer(); 
    7060                 
    7161                TextureUnitState* st = newpass->createTextureUnitState();                
     
    122112                                        depthRun->getDepthMapTextureName()); 
    123113                         
    124                                 //TODO: set matrices 
     114                                //TODO: ask programs from illummanager 
     115                                passes.at(i)->setVertexProgram(shadowVertexProgram); 
     116                                passes.at(i)->setFragmentProgram(shadowFragmentProgram); 
     117                 
    125118                                GpuProgramParametersSharedPtr fpParams = passes.at(i)->getFragmentProgramParameters(); 
    126119                                GpuProgramParametersSharedPtr vpParams = passes.at(i)->getVertexProgramParameters(); 
    127120 
     121                 
     122                                vpParams->setNamedAutoConstant(WorldViewProjParamName, 
     123                                                                        GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX);         
     124                                vpParams->setNamedAutoConstant(WorldParamName, 
     125                                                                        GpuProgramParameters::ACT_WORLD_MATRIX); 
     126                 
    128127                                if(setLightViewProjMatrix) 
    129128                                        vpParams->setNamedConstant(lightViewProjParamName, depthRun->getLightViewProjMatrix()); 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDistanceCubeMapRenderTechnique.cpp

    r2265 r2355  
    2121                                                                                                                String minVariableName, 
    2222                                                                                                                String maxVariableName, 
     23                                                                                                                String triggerName, 
    2324                                                                                                                Pass* pass, 
    2425                                                                                                                OgreRenderable* parentRenderable, 
    2526                                                                                                                OgreTechniqueGroup* parentTechniqueGroup) 
    2627                                                        : 
    27                                                         OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, pass, parentRenderable, parentTechniqueGroup), 
     28                                                        OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, triggerName, pass, parentRenderable, parentTechniqueGroup), 
    2829                                                        CubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup), 
    2930                                                        DistanceCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup), 
     
    107108        environmentMaterial = "GTP/Basic/Distance"; 
    108109        selfMaterial = "GTP/Basic/Distance"; 
     110        triggerName = "ILLUM_TRIGGER_DISTANCE"; 
    109111        OgreCubeMapRenderTechniqueFactory::parseParams(params);  
    110112        parseParams(params); 
     
    129131                                                                                                minVariableName, 
    130132                                                                                                maxVariableName, 
     133                                                                                                triggerName, 
    131134                                                                                                pass, 
    132135                                                                                                parentRenderable, 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreCubeMapRenderingRun.cpp

    r2321 r2355  
    1818                                                                                                                   String selfMaterial, 
    1919                                                                                                                   String environmentMaterial, 
     20                                                                                                                   String envTriggerName, 
    2021                                                                                                                   bool getMinMax, 
    2122                                                                                                                   RenderingRunType cubemapRunType) 
     
    2526 
    2627{ 
     28        this->envTriggerName = envTriggerName; 
    2729        this->getMinMax = getMinMax; 
    2830        this->cubemapRunType = cubemapRunType; 
     
    8385                        if(useEnvMaterial) 
    8486                        { 
    85                                 setMaterialForVisibles(environmentMaterial, cam); 
     87                                setMaterialForVisibles(environmentMaterial, cam, false, false, envTriggerName); 
    8688                                //sm->_queueSkiesForRendering(cam);                              
    8789                        } 
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderingRuns/OgreSceneCameraDepthRenderingRun.cpp

    r2321 r2355  
    4343{ 
    4444         
    45         setMaterialForVisibles(String("GTP/Basic/CameraDepth"), playerCamera, false, true); 
     45        setMaterialForVisibles(String("GTP/Basic/CameraDepth"), playerCamera, false, true, "ILLUM_TRIGGER_CAMERADEPTH"); 
    4646         
    4747        RenderTarget* rt = depthTexture->getBuffer().getPointer()->getRenderTarget(); 
Note: See TracChangeset for help on using the changeset viewer.