mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-11 23:54:09 +02:00
Stereoscopy changes for 3DS builds (#189)
* Proposed stereoscopy changes for 3DS * 3DS tweaks for FPS view * Disable 3DS stereoscopy while playing FMVs
This commit is contained in:
13
src/camera.h
13
src/camera.h
@@ -21,6 +21,11 @@
|
||||
#define CAM_LOOK_ANGLE_XMIN (-75.0f * DEG2RAD)
|
||||
#define CAM_LOOK_ANGLE_Y ( 80.0f * DEG2RAD)
|
||||
|
||||
#ifdef _OS_3DS
|
||||
#define CAM_OFFSET_FOLLOW (1024.0f + 512.0f + 256.0f)
|
||||
#define CAM_FOCAL_LENGTH 512.0f
|
||||
#endif
|
||||
|
||||
struct Camera : ICamera {
|
||||
IGame *game;
|
||||
TR::Level *level;
|
||||
@@ -529,7 +534,11 @@ struct Camera : ICamera {
|
||||
Core::mViewInv.setPos(Core::mViewInv.getPos() + vec3(0.0f, sinf(shake * PI * 7) * shake * 48.0f, 0.0f));
|
||||
|
||||
if (Core::settings.detail.stereo == Core::Settings::STEREO_SBS || Core::settings.detail.stereo == Core::Settings::STEREO_ANAGLYPH)
|
||||
#ifdef _OS_3DS
|
||||
Core::mViewInv.setPos(Core::mViewInv.getPos() + Core::mViewInv.right().xyz() * (Core::eye * CAM_EYE_SEPARATION / (firstPerson ? 8.0f : 1.0f) ) );
|
||||
#else
|
||||
Core::mViewInv.setPos(Core::mViewInv.getPos() + Core::mViewInv.right().xyz() * (Core::eye * CAM_EYE_SEPARATION) );
|
||||
#endif
|
||||
|
||||
if (reflectPlane) {
|
||||
Core::mViewInv = mat4(*reflectPlane) * Core::mViewInv;
|
||||
@@ -567,6 +576,10 @@ struct Camera : ICamera {
|
||||
znear = firstPerson ? 16.0f : 32.0f;
|
||||
zfar = 45.0f * 1024.0f;
|
||||
|
||||
#ifdef _OS_3DS
|
||||
fov = firstPerson ? 65.0f : 55.0f;
|
||||
#endif
|
||||
|
||||
#ifdef _OS_PSP
|
||||
znear = 256.0f;
|
||||
#endif
|
||||
|
10
src/level.h
10
src/level.h
@@ -2942,7 +2942,13 @@ struct Level : IGame {
|
||||
|
||||
void renderPrepare() {
|
||||
#ifdef _OS_3DS
|
||||
Core::settings.detail.stereo = osGet3DSliderState() > 0.0f ? Core::Settings::STEREO_SBS : Core::Settings::STEREO_OFF;
|
||||
if (osGet3DSliderState() > 0.0f && !inventory->video) {
|
||||
Core::settings.detail.stereo = Core::Settings::STEREO_SBS;
|
||||
gfxSet3D(true);
|
||||
} else {
|
||||
Core::settings.detail.stereo = Core::Settings::STEREO_OFF;
|
||||
gfxSet3D(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (Core::settings.detail.stereo == Core::Settings::STEREO_ANAGLYPH) {
|
||||
@@ -3002,7 +3008,7 @@ struct Level : IGame {
|
||||
int texIndex = eye <= 0 ? 0 : 1;
|
||||
|
||||
#ifdef _OS_3DS
|
||||
Core::eye *= osGet3DSliderState();
|
||||
Core::eye *= osGet3DSliderState() * 3.25f;
|
||||
|
||||
GAPI::curTarget = GAPI::defTarget[texIndex];
|
||||
|
||||
|
Reference in New Issue
Block a user