const float interpupillaryDistanceMeters = mStereoBase / 1000.0f;
const float eyeToCenterDistanceMeters = -( interpupillaryDistanceMeters * 0.5f );
- if( mSize.width > mSize.height )
- {
- //todor share code with working section below?
- // Stereo mode with horizontal split is for landscape mode. That's the reason for the cameras being rotated
- // Top camera renders the scene as seen from the right eye and bottom camera as seen from left.
- // Calculate separation in pixels along vertical axis ( mStereoBase is defined in millimetres )
-
- // Precalculations:
- const float sizeX = mSize.y / pixelAspect;
- const float viewPortWidth = mSize.x / 2.0f;
- const float cameraAspect = pixelAspect / ( sizeX / viewPortWidth );
-
- // We should not alter the frustums based on eye separation.
- mStereoInfo[LEFT].camera->SetPerspectiveProjection( Size( sizeX, mSize.height ), Vector2::ZERO );
- mStereoInfo[LEFT].camera->SetAspectRatio( cameraAspect );
- mStereoInfo[LEFT].camera->SetOrientation( Dali::ANGLE_0, Vector3::ZAXIS );
- mStereoInfo[LEFT].renderTask.SetViewport( Viewport( 0, 0, viewPortWidth, mSize.height ) );
-
- mStereoInfo[RIGHT].camera->SetPerspectiveProjection( Size( sizeX, mSize.height ), Vector2::ZERO );
- mStereoInfo[RIGHT].camera->SetAspectRatio( cameraAspect );
- mStereoInfo[RIGHT].camera->SetOrientation( Dali::ANGLE_0, Vector3::ZAXIS );
- mStereoInfo[RIGHT].renderTask.SetViewport( Viewport( viewPortWidth, 0, viewPortWidth, mSize.height ) );
- }
- else
- {
- // Portrait aspect - default to VR on device.
- // Precalculations:
- const float sizeY = mSize.x * pixelAspect;
- const float cameraAspect = pixelAspect * ( sizeY / ( mSize.y / 2.0f ) );
-
- // Add the interpupillary distance to the near-plane minimum value.
- const float nearPlane = Dali::Integration::Vr::DEFAULT_VR_NEAR_PLANE_METERS + interpupillaryDistanceMeters;
- const float farPlane = Dali::Integration::Vr::DEFAULT_VR_FAR_PLANE_METERS;
- const float fov = Radian( Degree( Dali::Integration::Vr::DEFAULT_VR_FIELD_OF_VIEW_DEGREES ) );
-
- mStereoInfo[LEFT].camera->SetPerspectiveProjectionFovY( fov, cameraAspect, nearPlane, farPlane, Vector2( +eyeToCenterDistanceMeters, 0.0f ) );
- mStereoInfo[LEFT].camera->SetOrientation( Dali::ANGLE_90, Vector3::ZAXIS );
- mStereoInfo[LEFT].renderTask.SetViewport( Dali::Integration::Vr::DEFAULT_VR_VIEWPORT_DIMENSIONS );
-
- mStereoInfo[RIGHT].camera->SetPerspectiveProjectionFovY( fov, cameraAspect, nearPlane, farPlane, Vector2( -eyeToCenterDistanceMeters, 0.0f ) );
- mStereoInfo[RIGHT].camera->SetOrientation( Dali::ANGLE_90, Vector3::ZAXIS );
- mStereoInfo[RIGHT].renderTask.SetViewport( Dali::Integration::Vr::DEFAULT_VR_VIEWPORT_DIMENSIONS );
- }
-
- // Same settings regardless of orientation:
+ // Portrait aspect - default to VR on device.
+ // Precalculations:
+ const float sizeY = mSize.x * pixelAspect;
+ const float cameraAspect = pixelAspect * ( sizeY / ( mSize.y / 2.0f ) );
+
+ // Add the interpupillary distance to the near-plane minimum value.
+ const float nearPlane = Dali::Integration::Vr::DEFAULT_VR_NEAR_PLANE_METERS + interpupillaryDistanceMeters;
+ const float farPlane = Dali::Integration::Vr::DEFAULT_VR_FAR_PLANE_METERS;
+ const float fov = Radian( Degree( Dali::Integration::Vr::DEFAULT_VR_FIELD_OF_VIEW_DEGREES ) );
+
mStereoInfo[LEFT].camera->SetType( Camera::VR_EYE_LEFT );
mStereoInfo[LEFT].camera->SetPosition( Vector3( 0.0f, -eyeToCenterDistanceMeters, 0.0f ) );
+ mStereoInfo[LEFT].camera->SetPerspectiveProjectionFovY( fov, cameraAspect, nearPlane, farPlane, Vector2( +eyeToCenterDistanceMeters, 0.0f ) );
+ mStereoInfo[LEFT].camera->SetOrientation( Dali::ANGLE_90, Vector3::ZAXIS );
+ mStereoInfo[LEFT].renderTask.SetViewport( Dali::Integration::Vr::DEFAULT_VR_VIEWPORT_DIMENSIONS );
mStereoInfo[RIGHT].camera->SetType( Camera::VR_EYE_RIGHT );
mStereoInfo[RIGHT].camera->SetPosition( Vector3( 0.0f, +eyeToCenterDistanceMeters, 0.0f ) );
+ mStereoInfo[RIGHT].camera->SetPerspectiveProjectionFovY( fov, cameraAspect, nearPlane, farPlane, Vector2( -eyeToCenterDistanceMeters, 0.0f ) );
+ mStereoInfo[RIGHT].camera->SetOrientation( Dali::ANGLE_90, Vector3::ZAXIS );
+ mStereoInfo[RIGHT].renderTask.SetViewport( Dali::Integration::Vr::DEFAULT_VR_VIEWPORT_DIMENSIONS );
// Inform the VR manager of the Vr head node.
Dali::Internal::SceneGraph::SetVrHeadNode( GetUpdateManager(), mDefaultCamera->GetCameraNode() );