Skip to content

Commit

Permalink
Merge pull request #19361 from lvonasek/feature-openxr-antiflickering
Browse files Browse the repository at this point in the history
OpenXR - Anti-flickering rendering flow added
  • Loading branch information
hrydgard authored Jul 22, 2024
2 parents a0299e1 + 0f313e1 commit 0d8f194
Show file tree
Hide file tree
Showing 52 changed files with 89 additions and 91 deletions.
49 changes: 20 additions & 29 deletions Common/VR/PPSSPPVR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,15 +388,9 @@ void UpdateVRInput(bool haptics, float dp_xscale, float dp_yscale) {
g_Config.fCameraHeight = clampFloat(g_Config.fCameraHeight, -150.0f, 150.0f);
break;
case JOYSTICK_AXIS_Z:
if (g_Config.bEnableVR) {
if (axis.second < -0.75f) g_Config.fHeadUpDisplayScale -= 0.01f;
if (axis.second > 0.75f) g_Config.fHeadUpDisplayScale += 0.01f;
g_Config.fHeadUpDisplayScale = clampFloat(g_Config.fHeadUpDisplayScale, 0.0f, 1.5f);
} else {
if (axis.second < -0.75f) g_Config.fCanvas3DDistance += 0.1f;
if (axis.second > 0.75f) g_Config.fCanvas3DDistance -= 0.1f;
g_Config.fCanvas3DDistance = clampFloat(g_Config.fCanvas3DDistance, 1.0f, 15.0f);
}
if (axis.second < -0.75f) g_Config.fCameraPitch -= 0.5f;
if (axis.second > 0.75f) g_Config.fCameraPitch += 0.5f;
g_Config.fCameraPitch = clampFloat(g_Config.fCameraPitch, -90.0f, 90.0f);
break;
case JOYSTICK_AXIS_RZ:
if (axis.second > 0.75f) g_Config.fCameraDistance -= 0.1f;
Expand Down Expand Up @@ -539,11 +533,10 @@ bool UpdateVRKeys(const KeyInput &key) {

// Reset camera adjust
if (pspKeys[VIRTKEY_VR_CAMERA_ADJUST] && pspKeys[VIRTKEY_VR_CAMERA_RESET]) {
g_Config.fCanvas3DDistance = 3.0f;
g_Config.fCameraHeight = 0;
g_Config.fCameraSide = 0;
g_Config.fCameraDistance = 0;
g_Config.fHeadUpDisplayScale = 0.3f;
g_Config.fCameraPitch = 0;
}

//block keys by camera adjust
Expand Down Expand Up @@ -667,12 +660,16 @@ bool StartVRRender() {
M[10] = -1;
M[11] = -(fovHack + fovHack);
M[14] = -(nearZ + nearZ);
if (g_Config.bAntiFlickeringFlow) {
M[0] /= 2.0f;
}
memcpy(vrMatrix[VR_PROJECTION_MATRIX], M, sizeof(float) * 16);

// Decide if the scene is 3D or not
VR_SetConfigFloat(VR_CONFIG_CANVAS_ASPECT, 480.0f / 272.0f);
if (g_Config.bEnableVR && !vrIncompatibleGame && (appMode == VR_GAME_MODE) && vrScene) {
VR_SetConfig(VR_CONFIG_MODE, vrStereo ? VR_MODE_STEREO_6DOF : VR_MODE_MONO_6DOF);
VR_SetConfig(VR_CONFIG_REPROJECTION, g_Config.bAntiFlickeringFlow ? 0 : 1);
vrFlatGame = false;
} else if (appMode == VR_GAME_MODE) {
VR_SetConfig(VR_CONFIG_MODE, vrStereo ? VR_MODE_STEREO_SCREEN : VR_MODE_MONO_SCREEN);
Expand All @@ -689,7 +686,7 @@ bool StartVRRender() {

// Set customizations
VR_SetConfigFloat(VR_CONFIG_CANVAS_DISTANCE, vrScene && (appMode == VR_GAME_MODE) ? g_Config.fCanvas3DDistance : g_Config.fCanvasDistance);
VR_SetConfig(VR_CONFIG_PASSTHROUGH, g_Config.bPassthrough);
VR_SetConfig(VR_CONFIG_PASSTHROUGH, g_Config.bPassthrough && IsPassthroughSupported());
return true;
}
return false;
Expand Down Expand Up @@ -874,23 +871,13 @@ void UpdateVRViewMatrices() {
invView = XrPosef_Inverse(invView);
}

// apply camera pitch offset
// apply camera pitch
float s = sin(ToRadians(g_Config.fCameraPitch));
float c = cos(ToRadians(g_Config.fCameraPitch));
XrVector3f positionOffset = {g_Config.fCameraSide, g_Config.fCameraHeight, g_Config.fCameraDistance};
if (!flatScreen) {
float pitchOffset = 0;
switch (g_Config.iCameraPitch) {
case 1: //Top view -> First person
pitchOffset = 90;
positionOffset = {positionOffset.x, positionOffset.z, -positionOffset.y};
break;
case 2: //First person -> Top view
pitchOffset = -90;
positionOffset = {positionOffset.x, -positionOffset.z + 20, positionOffset.y};
break;
}
XrQuaternionf rotationOffset = XrQuaternionf_CreateFromVectorAngle({1, 0, 0}, ToRadians(pitchOffset));
invView.orientation = XrQuaternionf_Multiply(rotationOffset, invView.orientation);
}
positionOffset = {positionOffset.x, s * positionOffset.z + c * positionOffset.y, c * positionOffset.z - s * positionOffset.y};
XrQuaternionf rotationOffset = XrQuaternionf_CreateFromVectorAngle({1, 0, 0}, ToRadians(g_Config.fCameraPitch));
invView.orientation = XrQuaternionf_Multiply(rotationOffset, invView.orientation);

// decompose rotation
XrVector3f rotation = XrQuaternionf_ToEulerAngles(invView.orientation);
Expand All @@ -906,12 +893,16 @@ void UpdateVRViewMatrices() {
XrQuaternionf yaw = XrQuaternionf_CreateFromVectorAngle({0, 1, 0}, mYaw);
XrQuaternionf roll = XrQuaternionf_CreateFromVectorAngle({0, 0, 1}, mRoll);
invView.orientation = XrQuaternionf_Multiply(roll, XrQuaternionf_Multiply(pitch, yaw));
if (!VR_GetConfig(VR_CONFIG_REPROJECTION)) {
float axis = vrMirroring[VR_MIRRORING_PITCH] ? -1.0f : 1.0f;
invView.orientation = XrQuaternionf_CreateFromVectorAngle({axis, 0, 0}, ToRadians(g_Config.fCameraPitch));
}

float M[16];
XrQuaternionf_ToMatrix4f(&invView.orientation, M);

// Apply 6Dof head movement
if (g_Config.bEnable6DoF && !g_Config.bHeadRotationEnabled && (g_Config.iCameraPitch == 0)) {
if (g_Config.bEnable6DoF && !g_Config.bHeadRotationEnabled) {
M[3] -= vrView[0].pose.position.x * (vrMirroring[VR_MIRRORING_AXIS_X] ? -1.0f : 1.0f) * scale;
M[7] -= vrView[0].pose.position.y * (vrMirroring[VR_MIRRORING_AXIS_Y] ? -1.0f : 1.0f) * scale;
M[11] -= vrView[0].pose.position.z * (vrMirroring[VR_MIRRORING_AXIS_Z] ? -1.0f : 1.0f) * scale;
Expand Down
18 changes: 12 additions & 6 deletions Common/VR/VRRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,9 @@ void VR_EndFrame( engine_t* engine ) {
void VR_FinishFrame( engine_t* engine ) {
int vrMode = vrConfig[VR_CONFIG_MODE];
XrCompositionLayerProjectionView projection_layer_elements[2] = {};
if ((vrMode == VR_MODE_MONO_6DOF) || (vrMode == VR_MODE_SBS_6DOF) || (vrMode == VR_MODE_STEREO_6DOF)) {
bool headTracking = (vrMode == VR_MODE_MONO_6DOF) || (vrMode == VR_MODE_SBS_6DOF) || (vrMode == VR_MODE_STEREO_6DOF);
bool reprojection = vrConfig[VR_CONFIG_REPROJECTION];
if (headTracking && reprojection) {
VR_SetConfigFloat(VR_CONFIG_MENU_YAW, hmdorientation.y);

for (int eye = 0; eye < ovrMaxNumEyes; eye++) {;
Expand Down Expand Up @@ -427,7 +429,7 @@ void VR_FinishFrame( engine_t* engine ) {
projection_layer.views = projection_layer_elements;

engine->appState.Layers[engine->appState.LayerCount++].Projection = projection_layer;
} else if ((vrMode == VR_MODE_MONO_SCREEN) || (vrMode == VR_MODE_SBS_SCREEN) || (vrMode == VR_MODE_STEREO_SCREEN)) {
} else {

// Flat screen pose
float distance = VR_GetConfigFloat(VR_CONFIG_CANVAS_DISTANCE) / 4.0f - 1.0f;
Expand Down Expand Up @@ -459,12 +461,18 @@ void VR_FinishFrame( engine_t* engine ) {
cylinder_layer.radius = 2.0f;
cylinder_layer.centralAngle = (float)(M_PI * 0.5);
cylinder_layer.aspectRatio = VR_GetConfigFloat(VR_CONFIG_CANVAS_ASPECT);
if (headTracking && !reprojection) {
float width = engine->appState.ViewConfigurationView[0].recommendedImageRectWidth;
float height = engine->appState.ViewConfigurationView[0].recommendedImageRectHeight;
cylinder_layer.aspectRatio = 2.0f * width / height;
cylinder_layer.centralAngle = (float)(M_PI);
}

// Build the cylinder layer
if (vrMode == VR_MODE_MONO_SCREEN) {
if ((vrMode == VR_MODE_MONO_SCREEN) || (vrMode == VR_MODE_MONO_6DOF)) {
cylinder_layer.eyeVisibility = XR_EYE_VISIBILITY_BOTH;
engine->appState.Layers[engine->appState.LayerCount++].Cylinder = cylinder_layer;
} else if (vrMode == VR_MODE_SBS_SCREEN) {
} else if ((vrMode == VR_MODE_SBS_SCREEN) || (vrMode == VR_MODE_SBS_6DOF)) {
cylinder_layer.eyeVisibility = XR_EYE_VISIBILITY_LEFT;
cylinder_layer.subImage.imageRect.extent.width /= 2;
engine->appState.Layers[engine->appState.LayerCount++].Cylinder = cylinder_layer;
Expand All @@ -478,8 +486,6 @@ void VR_FinishFrame( engine_t* engine ) {
cylinder_layer.subImage.swapchain = engine->appState.Renderer.FrameBuffer[1].ColorSwapChain.Handle;
engine->appState.Layers[engine->appState.LayerCount++].Cylinder = cylinder_layer;
}
} else {
assert(false);
}

// Compose the layers for this frame.
Expand Down
2 changes: 1 addition & 1 deletion Common/VR/VRRenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

enum VRConfig {
//switching between mode
VR_CONFIG_MODE, VR_CONFIG_PASSTHROUGH, VR_CONFIG_CANVAS_6DOF,
VR_CONFIG_MODE, VR_CONFIG_PASSTHROUGH, VR_CONFIG_CANVAS_6DOF, VR_CONFIG_REPROJECTION,
//mouse cursor
VR_CONFIG_MOUSE_SIZE, VR_CONFIG_MOUSE_X, VR_CONFIG_MOUSE_Y,
//viewport setup
Expand Down
5 changes: 3 additions & 2 deletions Core/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -954,17 +954,18 @@ static const ConfigSetting themeSettings[] = {

static const ConfigSetting vrSettings[] = {
ConfigSetting("VREnable", &g_Config.bEnableVR, true, CfgFlag::PER_GAME),
ConfigSetting("VREnable6DoF", &g_Config.bEnable6DoF, true, CfgFlag::PER_GAME),
ConfigSetting("VREnable6DoF", &g_Config.bEnable6DoF, false, CfgFlag::PER_GAME),
ConfigSetting("VREnableStereo", &g_Config.bEnableStereo, false, CfgFlag::PER_GAME),
ConfigSetting("VREnableMotions", &g_Config.bEnableMotions, true, CfgFlag::PER_GAME),
ConfigSetting("VRForce72Hz", &g_Config.bForce72Hz, true, CfgFlag::PER_GAME),
ConfigSetting("VRAntiFlickeringFlow", &g_Config.bAntiFlickeringFlow, true, CfgFlag::PER_GAME),
ConfigSetting("VRManualForceVR", &g_Config.bManualForceVR, false, CfgFlag::PER_GAME),
ConfigSetting("VRPassthrough", &g_Config.bPassthrough, false, CfgFlag::PER_GAME),
ConfigSetting("VRRescaleHUD", &g_Config.bRescaleHUD, true, CfgFlag::PER_GAME),
ConfigSetting("VRCameraDistance", &g_Config.fCameraDistance, 0.0f, CfgFlag::PER_GAME),
ConfigSetting("VRCameraHeight", &g_Config.fCameraHeight, 0.0f, CfgFlag::PER_GAME),
ConfigSetting("VRCameraSide", &g_Config.fCameraSide, 0.0f, CfgFlag::PER_GAME),
ConfigSetting("VRCameraPitch", &g_Config.iCameraPitch, 0, CfgFlag::PER_GAME),
ConfigSetting("VRCameraPitch", &g_Config.fCameraPitch, 0.0f, CfgFlag::PER_GAME),
ConfigSetting("VRCanvasDistance", &g_Config.fCanvasDistance, 12.0f, CfgFlag::DEFAULT),
ConfigSetting("VRCanvas3DDistance", &g_Config.fCanvas3DDistance, 3.0f, CfgFlag::DEFAULT),
ConfigSetting("VRFieldOfView", &g_Config.fFieldOfViewPercentage, 100.0f, CfgFlag::PER_GAME),
Expand Down
3 changes: 2 additions & 1 deletion Core/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -482,13 +482,15 @@ struct Config {
bool bEnable6DoF;
bool bEnableStereo;
bool bEnableMotions;
bool bAntiFlickeringFlow;
bool bForce72Hz;
bool bManualForceVR;
bool bPassthrough;
bool bRescaleHUD;
float fCameraDistance;
float fCameraHeight;
float fCameraSide;
float fCameraPitch;
float fCanvasDistance;
float fCanvas3DDistance;
float fFieldOfViewPercentage;
Expand All @@ -497,7 +499,6 @@ struct Config {
float fHeadRotationScale;
bool bHeadRotationEnabled;
bool bHeadRotationSmoothing;
int iCameraPitch;

// Debugger
int iDisasmWindowX;
Expand Down
4 changes: 2 additions & 2 deletions GPU/Common/FramebufferManagerCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1664,13 +1664,13 @@ void FramebufferManagerCommon::CopyDisplayToOutput(bool reallyDirty) {

//clip the VR framebuffer to keep the aspect ratio
if (IsVREnabled() && !IsFlatVRGame() && !IsGameVRScene()) {
float aspect = 272.0f / 480.0f;
float aspect = 272.0f / 480.0f * (g_Config.bAntiFlickeringFlow ? 2.0f : 1.0f);
float clipY = 272.0f * (1.0f - aspect) / 2.0f;
v0 = (clipY + offsetY) / (float)vfb->bufferHeight;
v1 = (272.0f - clipY + offsetY) / (float)vfb->bufferHeight;

//zoom inside
float zoom = 0.1f;
float zoom = g_Config.bAntiFlickeringFlow ? 0.4f : 0.1f;
u0 += zoom / aspect;
u1 -= zoom / aspect;
v0 += zoom;
Expand Down
3 changes: 2 additions & 1 deletion GPU/GLES/ShaderManagerGLES.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,8 @@ void LinkedShader::UpdateUniforms(const ShaderID &vsid, bool useBufferedRenderin
// Set HUD mode
if (gstate_c.Use(GPU_USE_VIRTUAL_REALITY)) {
if (GuessVRDrawingHUD(is2D, flatScreen)) {
render_->SetUniformF1(&u_scaleX, g_Config.fHeadUpDisplayScale * 480.0f / 272.0f);
float aspect = 480.0f / 272.0f * (g_Config.bAntiFlickeringFlow ? 0.5f : 1.0f);
render_->SetUniformF1(&u_scaleX, g_Config.fHeadUpDisplayScale * aspect);
render_->SetUniformF1(&u_scaleY, g_Config.fHeadUpDisplayScale);
} else {
render_->SetUniformF1(&u_scaleX, 1.0f);
Expand Down
5 changes: 3 additions & 2 deletions UI/GameSettingsScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1285,6 +1285,9 @@ void GameSettingsScreen::CreateVRSettings(UI::ViewGroup *vrSettings) {
vrSettings->Add(new CheckBox(&g_Config.bEnableVR, vr->T("Virtual reality")));
vrSettings->Add(new CheckBox(&g_Config.bEnable6DoF, vr->T("6DoF movement")));
vrSettings->Add(new CheckBox(&g_Config.bEnableStereo, vr->T("Stereoscopic vision (Experimental)")));
CheckBox* antiFlickering = new CheckBox(&g_Config.bAntiFlickeringFlow, vr->T("Anti-flickering flow"));
antiFlickering->SetEnabledPtr(&g_Config.bEnableVR);
vrSettings->Add(antiFlickering);
vrSettings->Add(new CheckBox(&g_Config.bForce72Hz, vr->T("Force 72Hz update")));
if (IsPassthroughSupported()) {
vrSettings->Add(new CheckBox(&g_Config.bPassthrough, vr->T("Enable passthrough")));
Expand All @@ -1308,8 +1311,6 @@ void GameSettingsScreen::CreateVRSettings(UI::ViewGroup *vrSettings) {
vrSettings->Add(new CheckBox(&g_Config.bEnableMotions, vr->T("Map controller movements to keys")));
PopupSliderChoiceFloat *vrMotions = vrSettings->Add(new PopupSliderChoiceFloat(&g_Config.fMotionLength, 0.3f, 1.0f, 0.5f, vr->T("Motion needed to generate action"), 0.1f, screenManager(), vr->T("m")));
vrMotions->SetEnabledPtr(&g_Config.bEnableMotions);
static const char *cameraPitchModes[] = { "Disabled", "Top view -> First person", "First person -> Top view" };
vrSettings->Add(new PopupMultiChoice(&g_Config.iCameraPitch, vr->T("Camera type"), cameraPitchModes, 0, 3, I18NCat::NONE, screenManager()));
}

UI::EventReturn GameSettingsScreen::OnAutoFrameskip(UI::EventParams &e) {
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/ar_AE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1418,7 +1418,7 @@ New version of PPSSPP available = ‎تتوفر نسخة جديدة من الب
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = وضع الكاميرا
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/az_AZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = New version of PPSSPP available
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/bg_BG.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Налична е нова версия на P
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/ca_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Nova versió de PPSSPP disponible
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/cz_CZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Je dostupná nová verze PPSSPP
[VR]
% of native FoV = % výchozího FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/da_DK.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Ny version af PPSSPP tilgængelig
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/de_DE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Neue PPSSPP Version verfügbar
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Kameratyp
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/dr_ID.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = New version of PPSSPP available
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/en_US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1435,6 +1435,7 @@ Screen representation = Screen representation
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand All @@ -1447,7 +1448,6 @@ Heads-up display detection = Heads-up display detection
Map controller movements to keys = Map controller movements to keys
Map HMD rotations on keys instead of VR camera = Map HMD rotations on keys instead of VR camera
Manual switching between flat screen and VR using SCREEN key = Manual switching between flat screen and VR using SCREEN key
Camera type = Camera type
Motion needed to generate action = Motion needed to generate action
Stereoscopic vision (Experimental) = Stereoscopic vision (Experimental)
Virtual reality = Virtual reality
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/es_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1412,7 +1412,7 @@ New version of PPSSPP available = Nueva versión de PPSSPP disponible
[VR]
% of native FoV = % de campo de visión nativo
6DoF movement = Movimiento 6DoF
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distancia de los menús y escenas 2D
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/es_LA.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1412,7 +1412,7 @@ New version of PPSSPP available = Nueva versión de PPSSPP disponible
[VR]
% of native FoV = % of native FoV
6DoF movement = movimiento 6DoF
Camera type = Tipo de cámara
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distancia a menús y escenas 2D
Distance to 3D scenes when VR disabled = Distancia a escenas 3D cuando la realidad virtual está desactivada
Experts only = Solo expertos
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/fa_IR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = ورژن جدیدی از ppsspp موجود ا
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/fi_FI.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Uusi PPSSPP-versio saatavilla
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF-liike (kuusi vapausastetta)
Camera type = Kameratyyppi
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Etäisyys 2D-valikkoihin ja kohtauksiin
Distance to 3D scenes when VR disabled = Etäisyys 3D-kohtauksiin, kun VR on poistettu käytöstä
Experts only = Vain asiantuntijoille
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/fr_FR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1401,7 +1401,7 @@ New version of PPSSPP available = Nouvelle version de PPSSPP disponible
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
2 changes: 1 addition & 1 deletion assets/lang/gl_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,7 @@ New version of PPSSPP available = Nova versión de PPSSPP dispoñible
[VR]
% of native FoV = % of native FoV
6DoF movement = 6DoF movement
Camera type = Camera type
Anti-flickering flow = Anti-flickering flow
Distance to 2D menus and scenes = Distance to 2D menus and scenes
Distance to 3D scenes when VR disabled = Distance to 3D scenes when VR disabled
Experts only = Experts only
Expand Down
Loading

0 comments on commit 0d8f194

Please sign in to comment.