mirror of
https://github.com/DrBeef/RTCWQuest.git
synced 2025-04-22 23:11:02 +00:00
Make stuff draw in both eyes
This commit is contained in:
parent
380daf2711
commit
1a8ae3ab0a
10 changed files with 93 additions and 58 deletions
|
@ -618,7 +618,7 @@ void ovrFramebuffer_Resolve( ovrFramebuffer * frameBuffer )
|
|||
// Flush this frame worth of commands.
|
||||
glFlush();
|
||||
|
||||
GPUDropSync();
|
||||
//GPUDropSync();
|
||||
}
|
||||
|
||||
void ovrFramebuffer_Advance( ovrFramebuffer * frameBuffer )
|
||||
|
@ -961,8 +961,8 @@ static void ovrApp_Clear( ovrApp * app )
|
|||
app->FrameIndex = 1;
|
||||
app->DisplayTime = 0;
|
||||
app->SwapInterval = 1;
|
||||
app->CpuLevel = 2;
|
||||
app->GpuLevel = 2;
|
||||
app->CpuLevel = 3;
|
||||
app->GpuLevel = 3;
|
||||
app->MainThreadTid = 0;
|
||||
app->RenderThreadTid = 0;
|
||||
|
||||
|
@ -1316,7 +1316,7 @@ void RTCWVR_Init()
|
|||
//Create Cvars
|
||||
vr_snapturn_angle = Cvar_Get( "vr_snapturn_angle", "45", CVAR_ARCHIVE);
|
||||
vr_reloadtimeoutms = Cvar_Get( "vr_reloadtimeoutms", "200", CVAR_ARCHIVE);
|
||||
vr_positional_factor = Cvar_Get( "vr_positional_factor", "10", CVAR_ARCHIVE);
|
||||
vr_positional_factor = Cvar_Get( "vr_positional_factor", "12", CVAR_ARCHIVE);
|
||||
vr_walkdirection = Cvar_Get( "vr_walkdirection", "0", CVAR_ARCHIVE);
|
||||
vr_weapon_pitchadjust = Cvar_Get( "vr_weapon_pitchadjust", "-20.0", CVAR_ARCHIVE);
|
||||
vr_control_scheme = Cvar_Get( "vr_control_scheme", "0", CVAR_ARCHIVE);
|
||||
|
|
|
@ -8,7 +8,7 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := rtcw_client
|
||||
|
||||
|
||||
LOCAL_CFLAGS = $(RTCW_BASE_CFLAGS) -DBOTLIB
|
||||
LOCAL_CFLAGS = $(RTCW_BASE_CFLAGS) -DBOTLIB -Wno-switch -Wno-inconsistent-missing-override -Werror=format-security -fexceptions -fpermissive
|
||||
|
||||
LOCAL_LDFLAGS = $(RTCW_BASE_LDFLAGS)
|
||||
|
||||
|
|
|
@ -311,7 +311,7 @@ cvarTable_t cvarTable[] = {
|
|||
{ &cg_viewsize, "cg_viewsize", "100", CVAR_ARCHIVE },
|
||||
{ &cg_letterbox, "cg_letterbox", "0", CVAR_TEMP }, //----(SA) added
|
||||
{ &cg_stereoSeparation, "cg_stereoSeparation", "0.065", CVAR_ARCHIVE },
|
||||
{ &cg_worldScale, "cg_worldScale", "37.5", CVAR_ARCHIVE },
|
||||
{ &cg_worldScale, "cg_worldScale", "40.0", CVAR_ARCHIVE },
|
||||
{ &cg_shadows, "cg_shadows", "1", CVAR_ARCHIVE },
|
||||
{ &cg_gibs, "cg_gibs", "1", CVAR_ARCHIVE },
|
||||
{ &cg_draw2D, "cg_draw2D", "1", CVAR_ARCHIVE },
|
||||
|
|
|
@ -1758,10 +1758,8 @@ static void CG_WeaponAnimation( playerState_t *ps, weaponInfo_t *weapon, int *we
|
|||
|
||||
void convertFromVR(vec3_t in, vec3_t offset, vec3_t out)
|
||||
{
|
||||
vec3_t vrSpace;
|
||||
VectorSet(vrSpace, -in[2], in[0], in[1]);
|
||||
vec3_t temp;
|
||||
VectorScale(vrSpace, cg_worldScale.value, temp);
|
||||
VectorScale(in, cg_worldScale.value, temp);
|
||||
|
||||
if (offset) {
|
||||
VectorAdd(temp, offset, out);
|
||||
|
@ -1781,6 +1779,8 @@ static void CG_CalculateWeaponPosition( vec3_t origin, vec3_t angles ) {
|
|||
|
||||
convertFromVR(cgVR->weaponoffset, cg.refdef.vieworg, origin);
|
||||
VectorCopy(cgVR->weaponangles, angles);
|
||||
|
||||
angles[YAW] = cg.refdefViewAngles[YAW] - (cgVR->weaponangles[YAW] - cgVR->hmdorientation[YAW]);
|
||||
return;
|
||||
|
||||
float scale;
|
||||
|
|
|
@ -537,7 +537,7 @@ text to the screen.
|
|||
|
||||
void RTCWVR_FrameSetup();
|
||||
void RTCWVR_finishEyeBuffer(int eye );
|
||||
void RTCWVR_setUseScreenLayer(qboolean use);
|
||||
qboolean RTCWVR_useScreenLayer();
|
||||
void RTCWVR_processHaptics();
|
||||
void RTCWVR_getHMDOrientation();
|
||||
qboolean RTCWVR_processMessageQueue();
|
||||
|
@ -557,47 +557,37 @@ void SCR_UpdateScreen( void ) {
|
|||
recursive = 1;
|
||||
|
||||
RTCWVR_FrameSetup();
|
||||
|
||||
RTCWVR_processMessageQueue();
|
||||
|
||||
/* if (gamestate == GS_LEVEL && !getMenuState()) {
|
||||
RTCWVR_setUseScreenLayer(false);
|
||||
}
|
||||
else {
|
||||
//Ensure we are drawing on virtual screen
|
||||
RTCWVR_setUseScreenLayer(true);
|
||||
}*/
|
||||
|
||||
//Get controller state here
|
||||
RTCWVR_getHMDOrientation();
|
||||
RTCWVR_getTrackedRemotesOrientation();
|
||||
|
||||
RTCWVR_processHaptics();
|
||||
|
||||
GPUWaitSync();
|
||||
//GPUWaitSync();
|
||||
|
||||
//Draw twice for Quest
|
||||
SCR_DrawScreenField( STEREO_LEFT );
|
||||
RTCWVR_finishEyeBuffer(0);
|
||||
|
||||
//Only need to do this when viewing screen mode
|
||||
//if (RTCWVR_useScreenLayer())
|
||||
{
|
||||
if (com_speeds->integer) {
|
||||
re.EndFrame(STEREO_LEFT, &time_frontend, &time_backend);
|
||||
} else {
|
||||
re.EndFrame(STEREO_LEFT, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
SCR_DrawScreenField( STEREO_RIGHT );
|
||||
RTCWVR_finishEyeBuffer(1);
|
||||
|
||||
/*
|
||||
#ifndef HAVE_GLES
|
||||
// if running in stereo, we need to draw the frame twice
|
||||
if ( cls.glconfig.stereoEnabled ) {
|
||||
SCR_DrawScreenField( STEREO_LEFT );
|
||||
SCR_DrawScreenField( STEREO_RIGHT );
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
SCR_DrawScreenField( STEREO_CENTER );
|
||||
}*/
|
||||
|
||||
if ( com_speeds->integer ) {
|
||||
re.EndFrame( &time_frontend, &time_backend );
|
||||
re.EndFrame( STEREO_RIGHT, &time_frontend, &time_backend );
|
||||
} else {
|
||||
re.EndFrame( NULL, NULL );
|
||||
re.EndFrame( STEREO_RIGHT, NULL, NULL );
|
||||
}
|
||||
|
||||
recursive = 0;
|
||||
|
|
|
@ -1591,6 +1591,34 @@ void RB_ShowImages( void ) {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
=============
|
||||
RB_Flush
|
||||
|
||||
=============
|
||||
*/
|
||||
const void *RB_Flush( const void *data ) {
|
||||
const swapBuffersCommand_t *cmd;
|
||||
|
||||
// finish any 2D drawing if needed
|
||||
if ( tess.numIndexes ) {
|
||||
RB_EndSurface();
|
||||
}
|
||||
|
||||
// texture swapping test
|
||||
if ( r_showImages->integer ) {
|
||||
RB_ShowImages();
|
||||
}
|
||||
|
||||
cmd = (const swapBuffersCommand_t *)data;
|
||||
|
||||
backEnd.projection2D = qfalse;
|
||||
|
||||
return (const void *)( cmd + 1 );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=============
|
||||
RB_SwapBuffers
|
||||
|
@ -1686,6 +1714,9 @@ void RB_ExecuteRenderCommands( const void *data ) {
|
|||
case RC_SWAP_BUFFERS:
|
||||
data = RB_SwapBuffers( data );
|
||||
break;
|
||||
case RC_FLUSH:
|
||||
data = RB_Flush( data );
|
||||
break;
|
||||
|
||||
case RC_END_OF_LIST:
|
||||
default:
|
||||
|
|
|
@ -544,31 +544,44 @@ RE_EndFrame
|
|||
Returns the number of msec spent in the back end
|
||||
=============
|
||||
*/
|
||||
void RE_EndFrame( int *frontEndMsec, int *backEndMsec ) {
|
||||
void RE_EndFrame( int stereoFrame, int *frontEndMsec, int *backEndMsec ) {
|
||||
swapBuffersCommand_t *cmd;
|
||||
|
||||
if ( !tr.registered ) {
|
||||
return;
|
||||
}
|
||||
cmd = R_GetCommandBuffer( sizeof( *cmd ) );
|
||||
if ( !cmd ) {
|
||||
return;
|
||||
}
|
||||
cmd->commandId = RC_SWAP_BUFFERS;
|
||||
if ( !tr.registered ) {
|
||||
return;
|
||||
}
|
||||
|
||||
R_IssueRenderCommands( qtrue );
|
||||
cmd = R_GetCommandBuffer(sizeof(*cmd));
|
||||
if (!cmd) {
|
||||
return;
|
||||
}
|
||||
|
||||
// use the other buffers next frame, because another CPU
|
||||
// may still be rendering into the current ones
|
||||
R_ToggleSmpFrame();
|
||||
if (stereoFrame == 2) {
|
||||
cmd->commandId = RC_SWAP_BUFFERS;
|
||||
} else {
|
||||
cmd->commandId = RC_FLUSH;
|
||||
}
|
||||
|
||||
if ( frontEndMsec ) {
|
||||
*frontEndMsec = tr.frontEndMsec;
|
||||
if (stereoFrame == 2)
|
||||
{
|
||||
R_IssueRenderCommands( qtrue );
|
||||
}
|
||||
tr.frontEndMsec = 0;
|
||||
if ( backEndMsec ) {
|
||||
*backEndMsec = backEnd.pc.msec;
|
||||
}
|
||||
backEnd.pc.msec = 0;
|
||||
else
|
||||
{
|
||||
R_IssueRenderCommands( qfalse );
|
||||
}
|
||||
|
||||
// use the other buffers next frame, because another CPU
|
||||
// may still be rendering into the current ones
|
||||
R_ToggleSmpFrame();
|
||||
|
||||
if (frontEndMsec) {
|
||||
*frontEndMsec = tr.frontEndMsec;
|
||||
}
|
||||
tr.frontEndMsec = 0;
|
||||
if (backEndMsec) {
|
||||
*backEndMsec = backEnd.pc.msec;
|
||||
}
|
||||
backEnd.pc.msec = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1717,7 +1717,8 @@ typedef enum {
|
|||
RC_STRETCH_PIC_GRADIENT, // (SA) added
|
||||
RC_DRAW_SURFS,
|
||||
RC_DRAW_BUFFER,
|
||||
RC_SWAP_BUFFERS
|
||||
RC_SWAP_BUFFERS,
|
||||
RC_FLUSH
|
||||
} renderCommand_t;
|
||||
|
||||
|
||||
|
@ -1772,7 +1773,7 @@ void RE_StretchPic( float x, float y, float w, float h,
|
|||
void RE_StretchPicGradient( float x, float y, float w, float h,
|
||||
float s1, float t1, float s2, float t2, qhandle_t hShader, const float *gradientColor, int gradientType );
|
||||
void RE_BeginFrame( stereoFrame_t stereoFrame );
|
||||
void RE_EndFrame( int *frontEndMsec, int *backEndMsec );
|
||||
void RE_EndFrame( int stereoFrame, int *frontEndMsec, int *backEndMsec );
|
||||
void SaveJPG( char * filename, int quality, int image_width, int image_height, unsigned char *image_buffer );
|
||||
|
||||
// font stuff
|
||||
|
|
|
@ -97,7 +97,7 @@ typedef struct {
|
|||
void ( *BeginFrame )( stereoFrame_t stereoFrame );
|
||||
|
||||
// if the pointers are not NULL, timing info will be returned
|
||||
void ( *EndFrame )( int *frontEndMsec, int *backEndMsec );
|
||||
void ( *EndFrame )( stereoFrame_t stereoFrame, int *frontEndMsec, int *backEndMsec );
|
||||
|
||||
|
||||
int ( *MarkFragments )( int numPoints, const vec3_t *points, const vec3_t projection,
|
||||
|
|
|
@ -563,12 +563,12 @@ void RE_RenderScene( const refdef_t *fd ) {
|
|||
{
|
||||
float yawDelta = (vr.hmdorientation[YAW] - last_hmd_yaw);
|
||||
yaw += yawDelta;
|
||||
last_hmd_yaw = vr.hmdorientation[YAW];
|
||||
}
|
||||
|
||||
viewAngles[YAW] = yaw;
|
||||
AnglesToAxis(viewAngles, parms.or.axis);
|
||||
}
|
||||
last_hmd_yaw = vr.hmdorientation[YAW];
|
||||
|
||||
VectorCopy( fd->vieworg, parms.pvsOrigin );
|
||||
|
||||
|
|
Loading…
Reference in a new issue