| 440 | } |
| 441 | |
| 442 | F32 CubeReflector::calcFaceScore( const ReflectParams ¶ms, U32 faceidx ) |
| 443 | { |
| 444 | if ( Parent::calcScore( params ) <= 0.0f ) |
| 445 | return score; |
| 446 | |
| 447 | VectorF vLookatPt(0.0f, 0.0f, 0.0f); |
| 448 | |
| 449 | switch( faceidx ) |
| 450 | { |
| 451 | case 0 : // D3DCUBEMAP_FACE_POSITIVE_X: |
| 452 | vLookatPt = VectorF( 1.0f, 0.0f, 0.0f ); |
| 453 | break; |
| 454 | case 1 : // D3DCUBEMAP_FACE_NEGATIVE_X: |
| 455 | vLookatPt = VectorF( -1.0f, 0.0f, 0.0f ); |
| 456 | break; |
| 457 | case 2 : // D3DCUBEMAP_FACE_POSITIVE_Y: |
| 458 | vLookatPt = VectorF( 0.0f, 1.0f, 0.0f ); |
| 459 | break; |
| 460 | case 3 : // D3DCUBEMAP_FACE_NEGATIVE_Y: |
| 461 | vLookatPt = VectorF( 0.0f, -1.0f, 0.0f ); |
| 462 | break; |
| 463 | case 4 : // D3DCUBEMAP_FACE_POSITIVE_Z: |
| 464 | vLookatPt = VectorF( 0.0f, 0.0f, 1.0f ); |
| 465 | break; |
| 466 | case 5: // D3DCUBEMAP_FACE_NEGATIVE_Z: |
| 467 | vLookatPt = VectorF( 0.0f, 0.0f, -1.0f ); |
| 468 | break; |
| 469 | } |
| 470 | |
| 471 | VectorF cameraDir; |
| 472 | params.query->cameraMatrix.getColumn( 1, &cameraDir ); |
| 473 | |
| 474 | F32 dot = mDot( cameraDir, -vLookatPt ); |
| 475 | |
| 476 | dot = getMax( ( dot + 1.0f ) / 2.0f, 0.1f ); |
| 477 | |
| 478 | score *= dot; |
| 479 | |
| 480 | return score; |
| 481 | } |
| 482 | |
| 483 | F32 CubeReflector::CubeFaceReflector::calcScore( const ReflectParams ¶ms ) |
| 484 | { |