Merge branch 'shaders-optimizations' into 'sal-oglshaderport'
Shader optimizations See merge request STJr/SRB2!893
This commit is contained in:
commit
7c583b4c16
|
@ -583,6 +583,7 @@ static PFNglGetUniformLocation pglGetUniformLocation;
|
||||||
static char *gl_customvertexshaders[MAXSHADERS];
|
static char *gl_customvertexshaders[MAXSHADERS];
|
||||||
static char *gl_customfragmentshaders[MAXSHADERS];
|
static char *gl_customfragmentshaders[MAXSHADERS];
|
||||||
static GLuint gl_currentshaderprogram = 0;
|
static GLuint gl_currentshaderprogram = 0;
|
||||||
|
static boolean gl_shaderprogramchanged = true;
|
||||||
|
|
||||||
// 13062019
|
// 13062019
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -1058,8 +1059,12 @@ EXPORT void HWRAPI(SetShader) (int shader)
|
||||||
#ifdef GL_SHADERS
|
#ifdef GL_SHADERS
|
||||||
if (gl_allowshaders)
|
if (gl_allowshaders)
|
||||||
{
|
{
|
||||||
gl_shadersenabled = true;
|
if ((GLuint)shader != gl_currentshaderprogram)
|
||||||
|
{
|
||||||
gl_currentshaderprogram = shader;
|
gl_currentshaderprogram = shader;
|
||||||
|
gl_shaderprogramchanged = true;
|
||||||
|
}
|
||||||
|
gl_shadersenabled = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -1073,6 +1078,7 @@ EXPORT void HWRAPI(UnSetShader) (void)
|
||||||
#ifdef GL_SHADERS
|
#ifdef GL_SHADERS
|
||||||
gl_shadersenabled = false;
|
gl_shadersenabled = false;
|
||||||
gl_currentshaderprogram = 0;
|
gl_currentshaderprogram = 0;
|
||||||
|
pglUseProgram(0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1866,8 +1872,12 @@ static void *Shader_Load(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *
|
||||||
{
|
{
|
||||||
gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram];
|
gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram];
|
||||||
if (shader->program)
|
if (shader->program)
|
||||||
|
{
|
||||||
|
if (gl_shaderprogramchanged)
|
||||||
{
|
{
|
||||||
pglUseProgram(gl_shaderprograms[gl_currentshaderprogram].program);
|
pglUseProgram(gl_shaderprograms[gl_currentshaderprogram].program);
|
||||||
|
gl_shaderprogramchanged = false;
|
||||||
|
}
|
||||||
Shader_SetUniforms(Surface, poly, tint, fade);
|
Shader_SetUniforms(Surface, poly, tint, fade);
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
@ -2054,10 +2064,6 @@ EXPORT void HWRAPI(DrawPolygon) (FSurfaceInfo *pSurf, FOutVector *pOutVerts, FUI
|
||||||
|
|
||||||
if (PolyFlags & PF_ForceWrapY)
|
if (PolyFlags & PF_ForceWrapY)
|
||||||
Clamp2D(GL_TEXTURE_WRAP_T);
|
Clamp2D(GL_TEXTURE_WRAP_T);
|
||||||
|
|
||||||
#ifdef GL_SHADERS
|
|
||||||
pglUseProgram(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct vbo_vertex_s
|
typedef struct vbo_vertex_s
|
||||||
|
@ -2850,10 +2856,6 @@ static void DrawModelEx(model_t *model, INT32 frameIndex, INT32 duration, INT32
|
||||||
pglShadeModel(GL_FLAT);
|
pglShadeModel(GL_FLAT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GL_SHADERS
|
|
||||||
pglUseProgram(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------+
|
// -----------------+
|
||||||
|
|
Loading…
Reference in a new issue