mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-29 16:51:20 +00:00
vr: add OpenXR headset output, VR tracker and VR controller input behind --vr (#1726)
This commit is contained in:
1 parent
0cad4672e9
commit
742fe17173
17 files changed
+1637
-28
No files matched your search
@@ -12,6 +12,17 @@ inline constexpr uint64_t OUTPUT_MODE_89_91HZ = 0x2000c;
|
||||
inline constexpr uint64_t OUTPUT_MODE_119_88HZ = 0x2000f;
|
||||
inline constexpr int32_t ERROR_REPROJECTION_NOT_INITIALIZED = -1972240373; // 0x8a72000b
|
||||
|
||||
// Virtual ER15 field of view per eye: 55/42.5/51.2/51.2 degrees. "Out" is the temporal side and
|
||||
// "in" the nasal side. These tangents describe that geometry, not bit-exact firmware output.
|
||||
inline constexpr float FOV_TAN_OUT = 1.4281480312f;
|
||||
inline constexpr float FOV_TAN_IN = 0.9163311720f;
|
||||
inline constexpr float FOV_TAN_TOP = 1.2437491417f;
|
||||
inline constexpr float FOV_TAN_BOTTOM = 1.2437491417f;
|
||||
|
||||
// Each eye sits half the lens separation to the side of the head.
|
||||
inline constexpr uint8_t LENS_SEPARATION_MM = 63;
|
||||
inline constexpr float EYE_OFFSET_M = LENS_SEPARATION_MM / 2000.0f;
|
||||
|
||||
struct ReprojectionState {
|
||||
std::atomic<uint64_t> output_mode {0};
|
||||
std::atomic<uint32_t> timing_us {3000};
|
||||
@@ -19,6 +30,24 @@ struct ReprojectionState {
|
||||
|
||||
[[nodiscard]] ReprojectionState* GetReprojectionState();
|
||||
|
||||
struct SceFVector3 {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
};
|
||||
|
||||
// The headset video-out port registers SceHmd2ReprojectionBuffer objects. The eye texture of their
|
||||
// first layer is the surface the game flips; both eyes sit side by side in it.
|
||||
struct ReprojectionSurface {
|
||||
uint64_t address;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint64_t pixel_format; // SceVideoOutPixelFormat
|
||||
};
|
||||
|
||||
[[nodiscard]] bool GetReprojectionSurface(const void* reprojection_buffer,
|
||||
ReprojectionSurface& out);
|
||||
|
||||
} // namespace Libs::Hmd2
|
||||
|
||||
#endif // EMULATOR_SRC_LIBS_HMD2_H_
|
||||
Reference in new issue
Block a user