opengl1: Fix skybox in OpenGL 1.1

Fix six image skybox having a black border around the sides of the sky
when using OpenGL 1.1 (using CL_CLAMP instead of GL_CLAMP_TO_EDGE).

It's technically visible in q3dm10 but it's more obvious in Team Arena
maps such as mpteam6.
This commit is contained in:
Zack Middleton 2024-04-17 22:41:07 -05:00
parent f9547e4533
commit 5a918bfa96
1 changed files with 20 additions and 0 deletions

View File

@ -387,12 +387,17 @@ static void DrawSkySide( struct image_s *image, const int mins[2], const int max
static void DrawSkyBox( shader_t *shader )
{
int i;
float w_offset, w_scale;
float h_offset, h_scale;
sky_min = 0;
sky_max = 1;
Com_Memset( s_skyTexCoords, 0, sizeof( s_skyTexCoords ) );
w_offset = h_offset = 0;
w_scale = h_scale = 1;
for (i=0 ; i<6 ; i++)
{
int sky_mins_subd[2], sky_maxs_subd[2];
@ -432,6 +437,15 @@ static void DrawSkyBox( shader_t *shader )
else if ( sky_maxs_subd[1] > HALF_SKY_SUBDIVISIONS )
sky_maxs_subd[1] = HALF_SKY_SUBDIVISIONS;
if ( !haveClampToEdge )
{
w_offset = 0.5f / shader->sky.outerbox[sky_texorder[i]]->width;
h_offset = 0.5f / shader->sky.outerbox[sky_texorder[i]]->height;
w_scale = 1.0f - w_offset * 2;
h_scale = 1.0f - h_offset * 2;
}
//
// iterate through the subdivisions
//
@ -444,6 +458,12 @@ static void DrawSkyBox( shader_t *shader )
i,
s_skyTexCoords[t][s],
s_skyPoints[t][s] );
s_skyTexCoords[t][s][0] *= w_scale;
s_skyTexCoords[t][s][0] += w_offset;
s_skyTexCoords[t][s][1] *= h_scale;
s_skyTexCoords[t][s][1] += h_offset;
}
}