Changeset 2475 for GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticReceiverRenderTechnique.cpp
- Timestamp:
- 07/02/07 04:12:36 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreCausticReceiverRenderTechnique.cpp
r2366 r2475 15 15 String casterCenterVariableName, 16 16 String attenuationVariableName, 17 bool bindDistanceMap, 17 18 Pass* pass, 18 19 OgreRenderable* parentRenderable, … … 31 32 this->casterCenterVariableName = casterCenterVariableName; 32 33 this->attenuationVariableName = attenuationVariableName; 34 this->bindDistanceMap = bindDistanceMap; 35 bindAttenuation = false; 36 if(attenuationVariableName != "") 37 bindAttenuation = true; 33 38 34 39 if(createNewPasses) … … 66 71 67 72 TextureUnitState* st = newpass->createTextureUnitState(); 68 TextureUnitState* st2 = newpass->createTextureUnitState();69 70 73 st->setTextureFiltering(TFO_BILINEAR); 71 st2->setTextureFiltering(TFO_BILINEAR); 74 if(bindDistanceMap) 75 { 76 TextureUnitState* st2 = newpass->createTextureUnitState(); 77 st2->setTextureFiltering(TFO_BILINEAR); 78 } 72 79 73 80 newpass->setSceneBlending(passBlendingSRC, passBlendingDEST); … … 109 116 110 117 Pass* passToSet = this->pass; 111 int textureUnit = startTextureUnitID + i; 118 int p = bindDistanceMap?i*2:i; 119 int textureUnit = startTextureUnitID + p; 112 120 if(createNewPasses) 113 121 { … … 119 127 passToSet->getTextureUnitState(textureUnit)->setTextureName( 120 128 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 } 121 138 122 139 //set caster position nad caustic attenuation … … 126 143 if(!createNewPasses) 127 144 { 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); 130 147 } 131 148 Fparams->setNamedConstant(centerVarName, 132 149 causticCasters.at(i)->getRootPosition(ILLUMRUN_CAUSTIC_CUBEMAP)); 150 if(bindAttenuation) 133 151 Fparams->setNamedConstant(attenuationVarName, 134 152 cauCubeRun->getAttenuation()); … … 247 265 f->attenuationVariableName = params; 248 266 } 267 268 void parseBindDistanceMap(String& params, RenderTechniqueFactory* factory) 269 { 270 OgreCausticReceiverRenderTechniqueFactory* f = (OgreCausticReceiverRenderTechniqueFactory*) factory; 271 f->bindDistanceMap = StringConverter::parseBool(params); 272 } 249 273 } 250 274 … … 263 287 this->attributeParsers.insert(AttribParserList::value_type("center_var_name", (ILLUM_ATTRIBUTE_PARSER) parseCenterVarName)); 264 288 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)); 265 290 } 266 291 … … 280 305 startTextureUnitID = 0; 281 306 casterCenterVariableName = "cubeMapCameraPosition"; 282 String attenuationVariableName = "attenuation"; 307 attenuationVariableName = ""; 308 bindDistanceMap = false; 283 309 284 310 parseParams(params); … … 294 320 casterCenterVariableName, 295 321 attenuationVariableName, 322 bindDistanceMap, 296 323 pass, 297 324 parentRenderable,
Note: See TracChangeset
for help on using the changeset viewer.