Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/client/cl_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -879,9 +879,11 @@ cvar_t *vid_xpos; // X coordinate of window position
cvar_t *vid_ypos; // Y coordinate of window position
cvar_t *r_noborder;

#ifdef USE_OPENGL_API
cvar_t *r_allowSoftwareGL; // don't abort out if the pixelformat claims software
cvar_t *r_swapInterval;
cvar_t *r_glDriver;
#endif
cvar_t *r_swapInterval;
cvar_t *r_displayRefresh;
cvar_t *r_fullscreen;
cvar_t *r_mode;
Expand Down Expand Up @@ -4001,12 +4003,14 @@ static void CL_ToggleImgui_f( void )
static void CL_InitGLimp_Cvars( void )
{
// shared with GLimp
#ifdef USE_OPENGL_API
r_allowSoftwareGL = Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
Cvar_SetDescription( r_allowSoftwareGL, "Legacy cvar (ignored). OpenGL renderer removed; Vulkan only." );
Cvar_SetDescription( r_allowSoftwareGL, "Allow software OpenGL rendering if hardware acceleration is unavailable." );
r_glDriver = Cvar_Get( "r_glDriver", OPENGL_DRIVER_NAME, CVAR_ARCHIVE_ND | CVAR_LATCH );
Cvar_SetDescription( r_glDriver, "OpenGL driver library name (platform-specific)." );
#endif
r_swapInterval = Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE_ND );
Cvar_SetDescription( r_swapInterval, "V-blanks to wait before swapping buffers.\n 0: No V-Sync\n 1: Synced to the monitor's refresh rate." );
r_glDriver = Cvar_Get( "r_glDriver", OPENGL_DRIVER_NAME, CVAR_ARCHIVE_ND | CVAR_LATCH );
Cvar_SetDescription( r_glDriver, "Legacy cvar (ignored). OpenGL renderer removed; Vulkan only." );

r_displayRefresh = Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH );
Cvar_CheckRange( r_displayRefresh, "0", "500", CV_INTEGER );
Expand Down
4 changes: 3 additions & 1 deletion src/client/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -428,9 +428,11 @@ extern cvar_t *vid_xpos;
extern cvar_t *vid_ypos;
extern cvar_t *r_noborder;

#ifdef USE_OPENGL_API
extern cvar_t *r_allowSoftwareGL;
extern cvar_t *r_swapInterval;
extern cvar_t *r_glDriver;
#endif
extern cvar_t *r_swapInterval;

extern cvar_t *r_displayRefresh;
extern cvar_t *r_fullscreen;
Expand Down
4 changes: 2 additions & 2 deletions src/platform/sdl/sdl_glimp.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,7 @@ static int GLW_SetMode( int mode, const char *modeFS, qboolean fullscreen, qbool
else
perChannelColorBits = 4;

#ifdef USE_OPENGL_API
#ifdef USE_VULKAN_API
if ( !vulkan )
#endif
Expand Down Expand Up @@ -450,6 +451,7 @@ static int GLW_SetMode( int mode, const char *modeFS, qboolean fullscreen, qbool
if ( !r_allowSoftwareGL->integer )
SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
}
#endif /* USE_OPENGL_API */

if ( ( SDL_window = SDL_CreateWindow( cl_title, x, y, config->vidWidth, config->vidHeight, flags ) ) == NULL )
{
Expand Down Expand Up @@ -692,8 +694,6 @@ void GLimp_Init( glconfig_t *config )
in_nograb = Cvar_Get( "in_nograb", "0", 0 );
Cvar_SetDescription( in_nograb, "Do not capture mouse in game, may be useful during online streaming." );

r_allowSoftwareGL = Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );

r_swapInterval = Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE | CVAR_LATCH );
r_stereoEnabled = Cvar_Get( "r_stereoEnabled", "0", CVAR_ARCHIVE | CVAR_LATCH );
Cvar_SetDescription( r_stereoEnabled, "Enable stereo rendering for techniques like shutter glasses." );
Expand Down
6 changes: 0 additions & 6 deletions src/renderers/vulkan/tr_animation.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,9 +411,6 @@ void RB_MDRSurfaceAnim( mdrSurface_t *surface )
tempVert[1] += w->boneWeight * ( DotProduct( bone->matrix[1], w->offset ) + bone->matrix[1][3] );
tempVert[2] += w->boneWeight * ( DotProduct( bone->matrix[2], w->offset ) + bone->matrix[2][3] );

#ifdef USE_TESS_NEEDS_NORMAL
if ( tess.needsNormal )
#endif
{
tempNormal[0] += w->boneWeight * DotProduct( bone->matrix[0], v->normal );
tempNormal[1] += w->boneWeight * DotProduct( bone->matrix[1], v->normal );
Expand All @@ -425,9 +422,6 @@ void RB_MDRSurfaceAnim( mdrSurface_t *surface )
tess.xyz[baseVertex + j][1] = tempVert[1];
tess.xyz[baseVertex + j][2] = tempVert[2];

#ifdef USE_TESS_NEEDS_NORMAL
if ( tess.needsNormal )
#endif
{
tess.normal[baseVertex + j][0] = tempNormal[0];
tess.normal[baseVertex + j][1] = tempNormal[1];
Expand Down
19 changes: 1 addition & 18 deletions src/renderers/vulkan/tr_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

#define MAX_TEXTURE_SIZE 32768

#ifdef USE_VBO
#define USE_VBO_GRID /* put SF_GRID to VBO */
#endif

//#define USE_TESS_NEEDS_NORMAL
//#define USE_TESS_NEEDS_ST2

#define SH_COEFF_COUNT 9

#include "../../qcommon/q_shared.h"
Expand Down Expand Up @@ -2047,9 +2040,7 @@ image_t *vk_create_pbr_albedo_srgb( const char *albedoMapName, imgFlags_t flags
//
// tr_surface.c
//
#ifdef USE_VBO_GRID
void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexes );
#endif
void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexes );

/*
====================================================================
Expand Down Expand Up @@ -2114,14 +2105,6 @@ typedef struct shaderCommands_s
#endif
#endif

// info extracted from current shader
#ifdef USE_TESS_NEEDS_NORMAL
int needsNormal;
#endif
#ifdef USE_TESS_NEEDS_ST2
int needsST2;
#endif

int numPasses;
shaderStage_t **xstages;

Expand Down
3 changes: 0 additions & 3 deletions src/renderers/vulkan/tr_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1078,9 +1078,6 @@ static qboolean SurfIsOffscreen( const drawSurf_t *drawSurf, qboolean *isMirror
RB_BeginSurface( shader, fogNum );
#ifdef USE_VBO
tess.allowVBO = qfalse;
#endif
#ifdef USE_TESS_NEEDS_NORMAL
tess.needsNormal = qtrue;
#endif
rb_surfaceTable[ *drawSurf->surface ]( drawSurf->surface );

Expand Down
11 changes: 0 additions & 11 deletions src/renderers/vulkan/tr_shade.c
Original file line number Diff line number Diff line change
Expand Up @@ -390,17 +390,6 @@ void RB_BeginSurface( shader_t *shader, int fogNum ) {
tess.dlightUpdateParams = qtrue;
}

#ifdef USE_TESS_NEEDS_NORMAL
tess.needsNormal = state->needsNormal || tess.dlightPass || r_shownormals->integer ||
( backEnd.currentEntity == &tr.worldEntity &&
( ( r_shDebugView && r_shDebugView->integer ) ||
( r_shWorldLighting && r_shWorldLighting->integer && r_shLighting && r_shLighting->integer ) ) );
#endif

#ifdef USE_TESS_NEEDS_ST2
tess.needsST2 = state->needsST2;
#endif

tess.numIndexes = 0;
tess.numVertexes = 0;
tess.sdfUiEdge = -1.0f;
Expand Down
33 changes: 0 additions & 33 deletions src/renderers/vulkan/tr_surface.c
Original file line number Diff line number Diff line change
Expand Up @@ -405,9 +405,6 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) {
xyz[1] = dv->xyz[1];
xyz[2] = dv->xyz[2];

#ifdef USE_TESS_NEEDS_NORMAL
if ( tess.needsNormal )
#endif
{
normal[0] = dv->normal[0];
normal[1] = dv->normal[1];
Expand All @@ -433,9 +430,6 @@ static void RB_SurfaceTriangles( const srfTriangles_t *srf ) {
texCoords0[0] = dv->st[0];
texCoords0[1] = dv->st[1];

#ifdef USE_TESS_NEEDS_ST2
if ( tess.needsST2 )
#endif
{
texCoords1[0] = dv->lightmap[0];
texCoords1[1] = dv->lightmap[1];
Expand Down Expand Up @@ -988,9 +982,6 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) {

numPoints = surf->numPoints;

#ifdef USE_TESS_NEEDS_NORMAL
if ( tess.needsNormal )
#endif
{
if ( surf->normals ) {
// per-vertex normals for non-coplanar faces
Expand All @@ -1017,9 +1008,6 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) {
#ifdef USE_VK_PBR
tess.texCoords[0][ndx][0] = v[6];
tess.texCoords[0][ndx][1] = v[7];
#ifdef USE_TESS_NEEDS_ST2
if ( tess.needsST2 )
#endif
{
tess.texCoords[1][ndx][0] = v[8];
tess.texCoords[1][ndx][1] = v[9];
Expand All @@ -1032,9 +1020,6 @@ static void RB_SurfaceFace( const srfSurfaceFace_t *surf ) {
#else
tess.texCoords[0][ndx][0] = v[3];
tess.texCoords[0][ndx][1] = v[4];
#ifdef USE_TESS_NEEDS_ST2
if ( tess.needsST2 )
#endif
{
tess.texCoords[1][ndx][0] = v[5];
tess.texCoords[1][ndx][1] = v[6];
Expand Down Expand Up @@ -1083,7 +1068,6 @@ static float LodErrorForVolume( vec3_t local, float radius ) {
return r_lodCurveError->value / d;
}

#ifdef USE_VBO_GRID
void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexes )
{
int lodWidth, lodHeight;
Expand Down Expand Up @@ -1147,7 +1131,6 @@ void RB_SurfaceGridEstimate( srfGridMesh_t *cv, int *numVertexes, int *numIndexe
tess.numVertexes = 0;
tess.numIndexes = 0;
}
#endif // USE_VBO_GRID

/*
=============
Expand Down Expand Up @@ -1178,7 +1161,6 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) {
int dlightBits;
int *vDlightBits;

#ifdef USE_VBO_GRID
if ( tess.allowVBO && cv->vboItemIndex && !cv->dlightBits ) {
// transition to vbo render list
if ( tess.vboIndex == 0 ) {
Expand All @@ -1196,23 +1178,16 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) {
}

VBO_Flush();
#else
#ifdef USE_VBO
VBO_Flush();
#endif
#endif

dlightBits = cv->dlightBits;
tess.dlightBits |= dlightBits;

#ifdef USE_VBO_GRID
tess.surfType = SF_GRID;

// determine the allowable discrepance
if ( cv->vboItemIndex && ( tr.mapLoading || ( tess.dlightPass && tess.shader->isStaticShader ) ) )
lodError = r_lodCurveError->value; // fixed quality for VBO
else
#endif // USE_VBO_GRID
lodError = LodErrorForVolume( cv->lodOrigin, cv->lodRadius );

// determine which rows and columns of the subdivision
Expand Down Expand Up @@ -1253,13 +1228,11 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) {
if ( vrows < 2 || irows < 1 ) {
if ( tr.mapLoading ) {
// estimate and flush
#ifdef USE_VBO_GRID
if ( cv->vboItemIndex ) {
VBO_PushData( cv->vboItemIndex, &tess );
tess.numIndexes = 0;
tess.numVertexes = 0;
} else
#endif // USE_VBO_GRID
ri.Error( ERR_DROP, "Unexpected grid flush during map loading!\n" );
} else {
RB_EndSurface();
Expand Down Expand Up @@ -1300,17 +1273,11 @@ static void RB_SurfaceGrid( srfGridMesh_t *cv ) {
xyz[2] = dv->xyz[2];
texCoords0[0] = dv->st[0];
texCoords0[1] = dv->st[1];
#ifdef USE_TESS_NEEDS_ST2
if ( tess.needsST2 )
#endif
{
texCoords1[0] = dv->lightmap[0];
texCoords1[1] = dv->lightmap[1];
texCoords1 += 2;
}
#ifdef USE_TESS_NEEDS_NORMAL
if ( tess.needsNormal )
#endif
{
normal[0] = dv->normal[0];
normal[1] = dv->normal[1];
Expand Down
18 changes: 0 additions & 18 deletions src/renderers/vulkan/vk_vbo.c
Original file line number Diff line number Diff line change
Expand Up @@ -594,9 +594,7 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount )
msurface_t **surfList;
srfSurfaceFace_t *face;
srfTriangles_t *tris;
#ifdef USE_VBO_GRID
srfGridMesh_t *grid;
#endif
msurface_t *sf;
int ibo_size;
int vbo_size;
Expand Down Expand Up @@ -650,7 +648,6 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount )
sf->shader->numIndexes += tris->numIndexes;
continue;
}
#ifdef USE_VBO_GRID
grid = (srfGridMesh_t *) sf->data;
if ( grid->surfaceType == SF_GRID && isStaticShader( sf->shader ) ) {
grid->vboItemIndex = ++numStaticSurfaces;
Expand All @@ -667,7 +664,6 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount )
sf->shader->numIndexes += grid->vboExpectIndices;
continue;
}
#endif // USE_VBO_GRID
}
if ( numStaticSurfaces == 0 ) {
ri.Printf( PRINT_ALL, "...no static surfaces for VBO\n" );
Expand Down Expand Up @@ -721,13 +717,11 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount )
surfList[ n++ ] = sf;
continue;
}
#ifdef USE_VBO_GRID
grid = (srfGridMesh_t *) sf->data;
if ( grid->surfaceType == SF_GRID && grid->vboItemIndex ) {
surfList[ n++ ] = sf;
continue;
}
#endif // USE_VBO_GRID
}

if ( n != numStaticSurfaces ) {
Expand All @@ -748,41 +742,29 @@ void R_BuildWorldVBO( msurface_t *surf, int surfCount )
sf = surfList[ i ];
face = (srfSurfaceFace_t *) sf->data;
tris = (srfTriangles_t *) sf->data;
#ifdef USE_VBO_GRID
grid = (srfGridMesh_t *) sf->data;
#endif
if ( face->surfaceType == SF_FACE )
face->vboItemIndex = i + 1;
else if (tris->surfaceType == SF_TRIANGLES) {
tris->vboItemIndex = i + 1;
#ifdef USE_VBO_GRID
} else if (grid->surfaceType == SF_GRID) {
grid->vboItemIndex = i + 1;
#endif
} else {
ri.Error( ERR_DROP, "Unexpected surface type" );
}
initItem( vbo->items + i + 1 );
RB_BeginSurface( sf->shader, 0 );
tess.allowVBO = qfalse; // block execution of VBO path as we need to tesselate geometry
#ifdef USE_TESS_NEEDS_NORMAL
tess.needsNormal = qtrue;
#endif
#ifdef USE_TESS_NEEDS_ST2
tess.needsST2 = qtrue;
#endif
// tesselate
rb_surfaceTable[ *sf->data ]( sf->data ); // VBO_PushData() may be called multiple times there
// setup colors and texture coordinates
VBO_PushData( i + 1, &tess );
#ifdef USE_VBO_GRID
if ( grid->surfaceType == SF_GRID ) {
vbo_item_t *vi = vbo->items + i + 1;
if ( vi->num_vertexes != grid->vboExpectVertices || vi->num_indexes != grid->vboExpectIndices ) {
ri.Error( ERR_DROP, "Unexpected grid vertexes/indexes count" );
}
}
#endif // USE_VBO_GRID
tess.numIndexes = 0;
tess.numVertexes = 0;
}
Expand Down
Loading