| 29 | //----------------------------------------------------------------------------- |
| 30 | |
| 31 | SceneRenderState::SceneRenderState( SceneManager* sceneManager, |
| 32 | ScenePassType passType, |
| 33 | const SceneCameraState& view, |
| 34 | RenderPassManager* renderPass /* = NULL */, |
| 35 | bool usePostEffects /* = true */ ) |
| 36 | : mSceneManager( sceneManager ), |
| 37 | mScenePassType( passType ), |
| 38 | mRenderPass( renderPass ? renderPass : sceneManager->getDefaultRenderPass() ), |
| 39 | mCullingState( sceneManager, view ), |
| 40 | mUsePostEffects( usePostEffects ), |
| 41 | mRenderLightmappedMeshes( true ), |
| 42 | mRenderNonLightmappedMeshes( true ), |
| 43 | mRenderArea( view.getFrustum().getBounds() ), |
| 44 | mDisableAdvancedLightingBins( false ), |
| 45 | mSceneRenderStyle( SRS_Standard ), |
| 46 | mAmbientLightColor( sceneManager->getAmbientLightColor() ) |
| 47 | { |
| 48 | // Setup the default parameters for the screen metrics methods. |
| 49 | mDiffuseCameraTransform = view.getHeadWorldViewMatrix(); |
| 50 | mDiffuseCameraTransform.inverse(); |
| 51 | |
| 52 | // The vector eye is the camera vector with its |
| 53 | // length normalized to 1 / zFar. |
| 54 | getCameraTransform().getColumn( 1, &mVectorEye ); |
| 55 | mVectorEye.normalize( 1.0f / getFarPlane() ); |
| 56 | |
| 57 | // TODO: What about ortho modes? Is near plane ok |
| 58 | // or do i need to remove it... maybe ortho has a near |
| 59 | // plane of 1 and it just works out? |
| 60 | |
| 61 | const Frustum& frustum = view.getFrustum(); |
| 62 | const RectI& viewport = view.getViewport(); |
| 63 | |
| 64 | mWorldToScreenScale.set( ( frustum.getNearDist() * viewport.extent.x ) / ( frustum.getNearRight() - frustum.getNearLeft() ), |
| 65 | ( frustum.getNearDist() * viewport.extent.y ) / ( frustum.getNearTop() - frustum.getNearBottom() ) ); |
| 66 | |
| 67 | // Assign shared matrix data to the render pass. |
| 68 | |
| 69 | mRenderPass->assignSharedXform( RenderPassManager::View, view.getWorldViewMatrix() ); |
| 70 | mRenderPass->assignSharedXform( RenderPassManager::Projection, view.getProjectionMatrix() ); |
| 71 | } |
| 72 | |
| 73 | //----------------------------------------------------------------------------- |
| 74 |
nothing calls this directly
no test coverage detected