| 732 | } |
| 733 | |
| 734 | void WaterPlane::innerRender( SceneRenderState *state ) |
| 735 | { |
| 736 | GFXDEBUGEVENT_SCOPE( WaterPlane_innerRender, ColorI( 255, 0, 0 ) ); |
| 737 | |
| 738 | const Point3F &camPosition = state->getCameraPosition(); |
| 739 | |
| 740 | Point3F rvec, fvec, uvec, pos; |
| 741 | |
| 742 | const MatrixF &objMat = getTransform(); //getRenderTransform(); |
| 743 | const MatrixF &camMat = state->getCameraTransform(); |
| 744 | |
| 745 | MatrixF renderMat( true ); |
| 746 | |
| 747 | camMat.getColumn( 1, &fvec ); |
| 748 | uvec.set( 0, 0, 1 ); |
| 749 | rvec = mCross( fvec, uvec ); |
| 750 | rvec.normalize(); |
| 751 | fvec = mCross( uvec, rvec ); |
| 752 | pos = camPosition; |
| 753 | pos.z = objMat.getPosition().z; |
| 754 | |
| 755 | renderMat.setColumn( 0, rvec ); |
| 756 | renderMat.setColumn( 1, fvec ); |
| 757 | renderMat.setColumn( 2, uvec ); |
| 758 | renderMat.setColumn( 3, pos ); |
| 759 | |
| 760 | setRenderTransform( renderMat ); |
| 761 | |
| 762 | // Setup SceneData |
| 763 | SceneData sgData = setupSceneGraphInfo( state ); |
| 764 | |
| 765 | // set the material |
| 766 | S32 matIdx = getMaterialIndex( camPosition ); |
| 767 | |
| 768 | if ( !initMaterial( matIdx ) ) |
| 769 | return; |
| 770 | |
| 771 | BaseMatInstance *mat = mMatInstances[matIdx]; |
| 772 | WaterMatParams matParams = mMatParamHandles[matIdx]; |
| 773 | |
| 774 | // render the geometry |
| 775 | if ( mat ) |
| 776 | { |
| 777 | // setup proj/world transform |
| 778 | mMatrixSet->restoreSceneViewProjection(); |
| 779 | mMatrixSet->setWorld(getRenderTransform()); |
| 780 | |
| 781 | setShaderParams( state, mat, matParams ); |
| 782 | |
| 783 | while( mat->setupPass( state, sgData ) ) |
| 784 | { |
| 785 | mat->setSceneInfo(state, sgData); |
| 786 | mat->setTransforms(*mMatrixSet, state); |
| 787 | setCustomTextures( matIdx, mat->getCurPass(), matParams ); |
| 788 | |
| 789 | // set vert/prim buffer |
| 790 | GFX->setVertexBuffer( mVertBuff ); |
| 791 | GFX->setPrimitiveBuffer( mPrimBuff ); |
nothing calls this directly
no test coverage detected