Merge branch 'shaders-optimizations' into 'sal-oglshaderport'

Shader optimizations

See merge request STJr/SRB2!893
This commit is contained in:
SteelT 2020-04-27 15:19:09 -04:00
commit 7c583b4c16
1 changed files with 12 additions and 10 deletions

View File

@ -583,6 +583,7 @@ static PFNglGetUniformLocation pglGetUniformLocation;
static char *gl_customvertexshaders[MAXSHADERS];
static char *gl_customfragmentshaders[MAXSHADERS];
static GLuint gl_currentshaderprogram = 0;
static boolean gl_shaderprogramchanged = true;
// 13062019
typedef enum
@ -1058,8 +1059,12 @@ EXPORT void HWRAPI(SetShader) (int shader)
#ifdef GL_SHADERS
if (gl_allowshaders)
{
if ((GLuint)shader != gl_currentshaderprogram)
{
gl_currentshaderprogram = shader;
gl_shaderprogramchanged = true;
}
gl_shadersenabled = true;
gl_currentshaderprogram = shader;
return;
}
#else
@ -1073,6 +1078,7 @@ EXPORT void HWRAPI(UnSetShader) (void)
#ifdef GL_SHADERS
gl_shadersenabled = false;
gl_currentshaderprogram = 0;
pglUseProgram(0);
#endif
}
@ -1867,7 +1873,11 @@ static void *Shader_Load(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *
gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram];
if (shader->program)
{
pglUseProgram(gl_shaderprograms[gl_currentshaderprogram].program);
if (gl_shaderprogramchanged)
{
pglUseProgram(gl_shaderprograms[gl_currentshaderprogram].program);
gl_shaderprogramchanged = false;
}
Shader_SetUniforms(Surface, poly, tint, fade);
return shader;
}
@ -2054,10 +2064,6 @@ EXPORT void HWRAPI(DrawPolygon) (FSurfaceInfo *pSurf, FOutVector *pOutVerts, FUI
if (PolyFlags & PF_ForceWrapY)
Clamp2D(GL_TEXTURE_WRAP_T);
#ifdef GL_SHADERS
pglUseProgram(0);
#endif
}
typedef struct vbo_vertex_s
@ -2850,10 +2856,6 @@ static void DrawModelEx(model_t *model, INT32 frameIndex, INT32 duration, INT32
pglShadeModel(GL_FLAT);
}
#endif
#ifdef GL_SHADERS
pglUseProgram(0);
#endif
}
// -----------------+