mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-23 12:32:09 +00:00
More changes...
- cvar for HUD depth - restored non-SDK project matrix to avoid hard to see HUD models - Prevent drawing sky during death cam (looks much better)
This commit is contained in:
parent
71c6a19806
commit
bd28df0c91
11 changed files with 31 additions and 26 deletions
|
@ -199,8 +199,6 @@ void CG_Text_Paint(float x, float y, float scale, vec4_t color, const char *text
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
float trap_Cvar_VariableValue( const char *var_name );
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==============
|
==============
|
||||||
CG_DrawField
|
CG_DrawField
|
||||||
|
|
|
@ -60,8 +60,9 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
|
||||||
float screenXScale = cgs.screenXScale / 2.75f;
|
float screenXScale = cgs.screenXScale / 2.75f;
|
||||||
float screenYScale = cgs.screenYScale / 2.25f;
|
float screenYScale = cgs.screenYScale / 2.25f;
|
||||||
|
|
||||||
int xoffset = -120;
|
const auto depth = (int)trap_Cvar_VariableValue( "vr_hudDepth" );
|
||||||
if (hudStereoView == STEREO_LEFT) {
|
int xoffset = 120 - (depth * 20);
|
||||||
|
if (hudStereoView == STEREO_RIGHT) {
|
||||||
xoffset *= -1;
|
xoffset *= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -699,6 +699,10 @@ static int CG_CalcViewValues( void ) {
|
||||||
CG_OffsetFirstPersonView();
|
CG_OffsetFirstPersonView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//HACK!! - should change this to a renderer function call
|
||||||
|
//Indicate to renderer whether we are in deathcam mode, We don't want sky in death cam mode
|
||||||
|
trap_Cvar_Set( "r_deathCam", (cg.snap->ps.stats[STAT_HEALTH] <= 0) ? "1" : "0" );
|
||||||
|
|
||||||
// position eye relative to origin
|
// position eye relative to origin
|
||||||
AnglesToAxis( cg.refdefViewAngles, cg.refdef.viewaxis );
|
AnglesToAxis( cg.refdefViewAngles, cg.refdef.viewaxis );
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ typedef struct {
|
||||||
void (*EndFrame)( int *frontEndMsec, int *backEndMsec );
|
void (*EndFrame)( int *frontEndMsec, int *backEndMsec );
|
||||||
|
|
||||||
#if __ANDROID__
|
#if __ANDROID__
|
||||||
void (*SetVRHeadsetParms)( const ovrMatrix4f *projectionMatrixLeft, const ovrMatrix4f *projectionMatrixRight,
|
void (*SetVRHeadsetParms)( const ovrMatrix4f *projectionMatrix,
|
||||||
int renderBufferL, int renderBufferR );
|
int renderBufferL, int renderBufferR );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -584,10 +584,9 @@ void R_Mat4Transpose( const float in[4][4], float* out ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RE_SetVRHeadsetParms( const ovrMatrix4f *projectionMatrixLeft, const ovrMatrix4f *projectionMatrixRight,
|
void RE_SetVRHeadsetParms( const ovrMatrix4f *projectionMatrix,
|
||||||
int renderBufferL, int renderBufferR ) {
|
int renderBufferL, int renderBufferR ) {
|
||||||
R_Mat4Transpose(projectionMatrixLeft->M, tr.vrParms.projectionL);
|
R_Mat4Transpose(projectionMatrix->M, tr.vrParms.projection);
|
||||||
R_Mat4Transpose(projectionMatrixRight->M, tr.vrParms.projectionR);
|
|
||||||
tr.vrParms.renderBufferL = renderBufferL;
|
tr.vrParms.renderBufferL = renderBufferL;
|
||||||
tr.vrParms.renderBufferR = renderBufferR;
|
tr.vrParms.renderBufferR = renderBufferR;
|
||||||
tr.vrParms.valid = qtrue;
|
tr.vrParms.valid = qtrue;
|
||||||
|
|
|
@ -72,6 +72,7 @@ cvar_t *r_measureOverdraw;
|
||||||
|
|
||||||
cvar_t *r_inGameVideo;
|
cvar_t *r_inGameVideo;
|
||||||
cvar_t *r_fastsky;
|
cvar_t *r_fastsky;
|
||||||
|
cvar_t *r_deathCam;
|
||||||
cvar_t *r_drawSun;
|
cvar_t *r_drawSun;
|
||||||
cvar_t *r_dynamiclight;
|
cvar_t *r_dynamiclight;
|
||||||
cvar_t *r_dlightBacks;
|
cvar_t *r_dlightBacks;
|
||||||
|
@ -1305,6 +1306,7 @@ void R_Register( void )
|
||||||
r_stereoSeparation = ri.Cvar_Get( "r_stereoSeparation", "64", CVAR_ARCHIVE );
|
r_stereoSeparation = ri.Cvar_Get( "r_stereoSeparation", "64", CVAR_ARCHIVE );
|
||||||
r_ignoreGLErrors = ri.Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE );
|
r_ignoreGLErrors = ri.Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE );
|
||||||
r_fastsky = ri.Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE );
|
r_fastsky = ri.Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE );
|
||||||
|
r_deathCam = ri.Cvar_Get( "r_deathCam", "0", CVAR_ARCHIVE );
|
||||||
r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE );
|
r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE );
|
||||||
r_drawSun = ri.Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE );
|
r_drawSun = ri.Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE );
|
||||||
r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "0", CVAR_ARCHIVE );
|
r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "0", CVAR_ARCHIVE );
|
||||||
|
|
|
@ -841,8 +841,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
qboolean valid;
|
qboolean valid;
|
||||||
float projectionL[16];
|
float projection[16];
|
||||||
float projectionR[16];
|
|
||||||
int renderBufferL;
|
int renderBufferL;
|
||||||
int renderBufferR;
|
int renderBufferR;
|
||||||
int renderBufferOriginal;
|
int renderBufferOriginal;
|
||||||
|
@ -1700,6 +1699,7 @@ extern cvar_t *r_lodscale;
|
||||||
|
|
||||||
extern cvar_t *r_inGameVideo; // controls whether in game video should be draw
|
extern cvar_t *r_inGameVideo; // controls whether in game video should be draw
|
||||||
extern cvar_t *r_fastsky; // controls whether sky should be cleared or drawn
|
extern cvar_t *r_fastsky; // controls whether sky should be cleared or drawn
|
||||||
|
extern cvar_t *r_deathCam; //
|
||||||
extern cvar_t *r_drawSun; // controls drawing of sun quad
|
extern cvar_t *r_drawSun; // controls drawing of sun quad
|
||||||
extern cvar_t *r_dynamiclight; // dynamic lights enabled/disabled
|
extern cvar_t *r_dynamiclight; // dynamic lights enabled/disabled
|
||||||
extern cvar_t *r_dlightBacks; // dlight non-facing surfaces for continuity
|
extern cvar_t *r_dlightBacks; // dlight non-facing surfaces for continuity
|
||||||
|
@ -2505,7 +2505,7 @@ void RE_StretchPic ( float x, float y, float w, float h,
|
||||||
void RE_BeginFrame( stereoFrame_t stereoFrame );
|
void RE_BeginFrame( stereoFrame_t stereoFrame );
|
||||||
void RE_EndFrame( int *frontEndMsec, int *backEndMsec );
|
void RE_EndFrame( int *frontEndMsec, int *backEndMsec );
|
||||||
#if __ANDROID__
|
#if __ANDROID__
|
||||||
void RE_SetVRHeadsetParms( const ovrMatrix4f *projectionMatrixLeft, const ovrMatrix4f *projectionMatrixRight,
|
void RE_SetVRHeadsetParms( const ovrMatrix4f *projectionMatrix,
|
||||||
int renderBufferL, int renderBufferR );
|
int renderBufferL, int renderBufferR );
|
||||||
#endif
|
#endif
|
||||||
void RE_SaveJPG(char * filename, int quality, int image_width, int image_height,
|
void RE_SaveJPG(char * filename, int quality, int image_width, int image_height,
|
||||||
|
|
|
@ -765,11 +765,12 @@ void R_SetupProjection(viewParms_t *dest, float zProj, float zFar, qboolean comp
|
||||||
height = ymax - ymin;
|
height = ymax - ymin;
|
||||||
|
|
||||||
if (tr.vrParms.valid) {
|
if (tr.vrParms.valid) {
|
||||||
if (dest->stereoFrame == STEREO_LEFT) {
|
/* if (dest->stereoFrame == STEREO_LEFT) {
|
||||||
memcpy(&dest->projectionMatrix, &tr.vrParms.projectionL, sizeof(dest->projectionMatrix));
|
memcpy(&dest->projectionMatrix, &tr.vrParms.projectionL, sizeof(dest->projectionMatrix));
|
||||||
}
|
}
|
||||||
else {
|
else */
|
||||||
memcpy(&dest->projectionMatrix, &tr.vrParms.projectionR, sizeof(dest->projectionMatrix));
|
{
|
||||||
|
memcpy(&dest->projectionMatrix, &tr.vrParms.projection, sizeof(dest->projectionMatrix));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -843,7 +843,7 @@ Other things could be stuck in here, like birds in the sky, etc
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void RB_StageIteratorSky( void ) {
|
void RB_StageIteratorSky( void ) {
|
||||||
if ( r_fastsky->integer ) {
|
if ( r_fastsky->integer || r_deathCam->integer ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
static engine_t vr_engine;
|
static engine_t vr_engine;
|
||||||
|
|
||||||
cvar_t *vr_worldscale = NULL;
|
cvar_t *vr_worldscale = NULL;
|
||||||
|
cvar_t *vr_hudDepth = NULL;
|
||||||
|
|
||||||
engine_t* VR_Init( ovrJava java )
|
engine_t* VR_Init( ovrJava java )
|
||||||
{
|
{
|
||||||
|
@ -39,6 +40,7 @@ engine_t* VR_Init( ovrJava java )
|
||||||
void VR_InitCvars( void )
|
void VR_InitCvars( void )
|
||||||
{
|
{
|
||||||
vr_worldscale = Cvar_Get ("vr_worldscale", "32.0", CVAR_ARCHIVE);
|
vr_worldscale = Cvar_Get ("vr_worldscale", "32.0", CVAR_ARCHIVE);
|
||||||
|
vr_hudDepth = Cvar_Get ("vr_hudDepth", "3", CVAR_ARCHIVE);
|
||||||
|
|
||||||
// Values are: scale,right,up,forward,pitch,yaw,roll
|
// Values are: scale,right,up,forward,pitch,yaw,roll
|
||||||
// VALUES PROVIDED BY SkillFur - Thank-you!
|
// VALUES PROVIDED BY SkillFur - Thank-you!
|
||||||
|
|
|
@ -208,7 +208,7 @@ void VR_ClearFrameBuffer( GLuint frameBuffer, int width, int height)
|
||||||
glEnable( GL_SCISSOR_TEST );
|
glEnable( GL_SCISSOR_TEST );
|
||||||
glViewport( 0, 0, width, height );
|
glViewport( 0, 0, width, height );
|
||||||
|
|
||||||
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
|
glClearColor( 0.2f, 0.0f, 0.05f, 1.0f );
|
||||||
glScissor( 0, 0, width, height );
|
glScissor( 0, 0, width, height );
|
||||||
glClear( GL_COLOR_BUFFER_BIT );
|
glClear( GL_COLOR_BUFFER_BIT );
|
||||||
|
|
||||||
|
@ -229,6 +229,11 @@ void VR_DrawFrame( engine_t* engine ) {
|
||||||
engine->predictedDisplayTime = vrapi_GetPredictedDisplayTime(engine->ovr, engine->frameIndex);
|
engine->predictedDisplayTime = vrapi_GetPredictedDisplayTime(engine->ovr, engine->frameIndex);
|
||||||
engine->tracking = vrapi_GetPredictedTracking2(engine->ovr, engine->predictedDisplayTime);
|
engine->tracking = vrapi_GetPredictedTracking2(engine->ovr, engine->predictedDisplayTime);
|
||||||
|
|
||||||
|
float fov_y = vrapi_GetSystemPropertyInt( engine->ovr, VRAPI_SYS_PROP_SUGGESTED_EYE_FOV_DEGREES_Y);
|
||||||
|
float fov_x = vrapi_GetSystemPropertyInt( engine->ovr, VRAPI_SYS_PROP_SUGGESTED_EYE_FOV_DEGREES_X);
|
||||||
|
const ovrMatrix4f projectionMatrix = ovrMatrix4f_CreateProjectionFov(
|
||||||
|
fov_x, fov_y, 0.0f, 0.0f, 1.0f, 0.0f );
|
||||||
|
|
||||||
static int playerYaw = 0;
|
static int playerYaw = 0;
|
||||||
|
|
||||||
int eyeW, eyeH;
|
int eyeW, eyeH;
|
||||||
|
@ -258,14 +263,7 @@ void VR_DrawFrame( engine_t* engine ) {
|
||||||
|
|
||||||
const framebuffer_t* framebuffers = engine->framebuffers;
|
const framebuffer_t* framebuffers = engine->framebuffers;
|
||||||
|
|
||||||
//Now using a symmetrical render target, based on the horizontal FOV
|
re.SetVRHeadsetParms(&projectionMatrix,
|
||||||
//float fov = vrapi_GetSystemPropertyInt( engine->ovr, VRAPI_SYS_PROP_SUGGESTED_EYE_FOV_DEGREES_Y);
|
|
||||||
|
|
||||||
// Setup the projection matrix.
|
|
||||||
const ovrMatrix4f projectionMatrix = ovrMatrix4f_CreateProjectionFov(
|
|
||||||
90, 90, 0.0f, 0.0f, 1.0f, 0.0f );
|
|
||||||
|
|
||||||
re.SetVRHeadsetParms(&projectionMatrix, &projectionMatrix,
|
|
||||||
framebuffers[0].framebuffers[framebuffers[0].swapchainIndex],
|
framebuffers[0].framebuffers[framebuffers[0].swapchainIndex],
|
||||||
framebuffers[1].framebuffers[framebuffers[1].swapchainIndex]);
|
framebuffers[1].framebuffers[framebuffers[1].swapchainIndex]);
|
||||||
|
|
||||||
|
@ -289,7 +287,7 @@ void VR_DrawFrame( engine_t* engine ) {
|
||||||
for (int eye = 0; eye < VRAPI_FRAME_LAYER_EYE_MAX; ++eye) {
|
for (int eye = 0; eye < VRAPI_FRAME_LAYER_EYE_MAX; ++eye) {
|
||||||
layer.Textures[eye].ColorSwapChain = engine->framebuffers[eye].colorTexture;
|
layer.Textures[eye].ColorSwapChain = engine->framebuffers[eye].colorTexture;
|
||||||
layer.Textures[eye].SwapChainIndex = engine->framebuffers[eye].swapchainIndex;
|
layer.Textures[eye].SwapChainIndex = engine->framebuffers[eye].swapchainIndex;
|
||||||
layer.Textures[eye].TexCoordsFromTanAngles = ovrMatrix4f_TanAngleMatrixFromProjection(&engine->tracking.Eye[eye].ProjectionMatrix);
|
layer.Textures[eye].TexCoordsFromTanAngles = ovrMatrix4f_TanAngleMatrixFromProjection(&projectionMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -298,7 +296,7 @@ void VR_DrawFrame( engine_t* engine ) {
|
||||||
VR_ClearFrameBuffer(framebuffers[0].framebuffers[framebuffers[0].swapchainIndex], eyeW, eyeH);
|
VR_ClearFrameBuffer(framebuffers[0].framebuffers[framebuffers[0].swapchainIndex], eyeW, eyeH);
|
||||||
VR_ClearFrameBuffer(framebuffers[1].framebuffers[framebuffers[1].swapchainIndex], eyeW, eyeH);
|
VR_ClearFrameBuffer(framebuffers[1].framebuffers[framebuffers[1].swapchainIndex], eyeW, eyeH);
|
||||||
|
|
||||||
re.SetVRHeadsetParms(&engine->tracking.Eye[0].ProjectionMatrix, &engine->tracking.Eye[1].ProjectionMatrix,
|
re.SetVRHeadsetParms(&projectionMatrix,
|
||||||
framebuffers[0].framebuffers[framebuffers[0].swapchainIndex],
|
framebuffers[0].framebuffers[framebuffers[0].swapchainIndex],
|
||||||
framebuffers[1].framebuffers[framebuffers[1].swapchainIndex]);
|
framebuffers[1].framebuffers[framebuffers[1].swapchainIndex]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue