mirror of
https://github.com/DrBeef/Raze.git
synced 2024-12-15 15:11:01 +00:00
48 lines
869 B
C
48 lines
869 B
C
|
#pragma once
|
||
|
|
||
|
#include "matrix.h"
|
||
|
|
||
|
class DFrameBuffer;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
VR_MONO = 0,
|
||
|
VR_GREENMAGENTA = 1,
|
||
|
VR_REDCYAN = 2,
|
||
|
VR_SIDEBYSIDEFULL = 3,
|
||
|
VR_SIDEBYSIDESQUISHED = 4,
|
||
|
VR_LEFTEYEVIEW = 5,
|
||
|
VR_RIGHTEYEVIEW = 6,
|
||
|
VR_QUADSTEREO = 7,
|
||
|
VR_AMBERBLUE = 9,
|
||
|
VR_TOPBOTTOM = 11,
|
||
|
VR_ROWINTERLEAVED = 12,
|
||
|
VR_COLUMNINTERLEAVED = 13,
|
||
|
VR_CHECKERINTERLEAVED = 14
|
||
|
};
|
||
|
|
||
|
struct VREyeInfo
|
||
|
{
|
||
|
float mShiftFactor;
|
||
|
float mScaleFactor;
|
||
|
|
||
|
VSMatrix GetProjection(float fov, float aspectRatio, float fovRatio) const;
|
||
|
DVector3 GetViewShift(float yaw) const;
|
||
|
private:
|
||
|
float getShift() const;
|
||
|
|
||
|
};
|
||
|
|
||
|
struct VRMode
|
||
|
{
|
||
|
int mEyeCount;
|
||
|
float mHorizontalViewportScale;
|
||
|
float mVerticalViewportScale;
|
||
|
float mWeaponProjectionScale;
|
||
|
VREyeInfo mEyes[2];
|
||
|
|
||
|
static const VRMode *GetVRMode(bool toscreen = true);
|
||
|
void AdjustViewport(DFrameBuffer *fb) const;
|
||
|
VSMatrix GetHUDSpriteProjection() const;
|
||
|
};
|