1
0
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:
vaguerant
2019-06-23 09:28:30 +10:00
committed by Timur Gagiev
parent 1b2f3170b2
commit 3cd52ae3bc
2 changed files with 22 additions and 3 deletions

View File

@@ -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

View File

@@ -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];