| 328 | } |
| 329 | |
| 330 | void ProcessedCustomMaterial::setTextureStages( SceneRenderState *state, const SceneData &sgData, U32 pass ) |
| 331 | { |
| 332 | LightManager* lm = state ? LIGHTMGR : NULL; |
| 333 | ShaderRenderPassData* rpd = _getRPD(pass); |
| 334 | ShaderConstHandles* handles = _getShaderConstHandles(pass); |
| 335 | GFXShaderConstBuffer* shaderConsts = _getShaderConstBuffer(pass); |
| 336 | |
| 337 | const NamedTexTarget *texTarget; |
| 338 | GFXTextureObject *texObject; |
| 339 | |
| 340 | for( U32 i=0; i<mMaxTex; i++ ) |
| 341 | { |
| 342 | U32 currTexFlag = rpd->mTexType[i]; |
| 343 | if ( !lm || !lm->setTextureStage(sgData, currTexFlag, i, shaderConsts, handles ) ) |
| 344 | { |
| 345 | GFXShaderConstHandle* handle = handles->mTexHandlesSC[i]; |
| 346 | if ( !handle->isValid() ) |
| 347 | continue; |
| 348 | |
| 349 | S32 samplerRegister = handle->getSamplerRegister(); |
| 350 | |
| 351 | switch( currTexFlag ) |
| 352 | { |
| 353 | case 0: |
| 354 | default: |
| 355 | break; |
| 356 | |
| 357 | case Material::Mask: |
| 358 | case Material::Standard: |
| 359 | case Material::Bump: |
| 360 | case Material::Detail: |
| 361 | { |
| 362 | GFX->setTexture( samplerRegister, rpd->mTexSlot[i].texObject ); |
| 363 | break; |
| 364 | } |
| 365 | |
| 366 | case Material::Lightmap: |
| 367 | { |
| 368 | GFX->setTexture( samplerRegister, sgData.lightmap ); |
| 369 | break; |
| 370 | } |
| 371 | case Material::Cube: |
| 372 | { |
| 373 | GFX->setCubeTexture( samplerRegister, rpd->mCubeMap ); |
| 374 | break; |
| 375 | } |
| 376 | case Material::SGCube: |
| 377 | { |
| 378 | GFX->setCubeTexture( samplerRegister, sgData.cubemap ); |
| 379 | break; |
| 380 | } |
| 381 | case Material::BackBuff: |
| 382 | { |
| 383 | GFX->setTexture( samplerRegister, sgData.backBuffTex ); |
| 384 | //if ( sgData.reflectTex ) |
| 385 | // GFX->setTexture( samplerRegister, sgData.reflectTex ); |
| 386 | //else |
| 387 | //{ |
nothing calls this directly
no test coverage detected