Fix the gl_leveltime problem, I guess.
This is probably superfluous.
This commit is contained in:
parent
544d6acc51
commit
1755c240bf
|
@ -221,6 +221,15 @@ enum hwdsetspecialstate
|
||||||
|
|
||||||
typedef enum hwdsetspecialstate hwdspecialstate_t;
|
typedef enum hwdsetspecialstate hwdspecialstate_t;
|
||||||
|
|
||||||
|
// Lactozilla: Shader info
|
||||||
|
// Generally set at the start of the frame.
|
||||||
|
enum hwdshaderinfo
|
||||||
|
{
|
||||||
|
HWD_SHADERINFO_LEVELTIME = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef enum hwdshaderinfo hwdshaderinfo_t;
|
||||||
|
|
||||||
enum hwdfiltermode
|
enum hwdfiltermode
|
||||||
{
|
{
|
||||||
HWD_SET_TEXTUREFILTER_POINTSAMPLED,
|
HWD_SET_TEXTUREFILTER_POINTSAMPLED,
|
||||||
|
|
|
@ -71,6 +71,7 @@ EXPORT void HWRAPI(KillShaders) (void);
|
||||||
EXPORT void HWRAPI(SetShader) (int shader);
|
EXPORT void HWRAPI(SetShader) (int shader);
|
||||||
EXPORT void HWRAPI(UnSetShader) (void);
|
EXPORT void HWRAPI(UnSetShader) (void);
|
||||||
|
|
||||||
|
EXPORT void HWRAPI(SetShaderInfo) (hwdshaderinfo_t info, INT32 value);
|
||||||
EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment);
|
EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment);
|
||||||
EXPORT void HWRAPI(InitCustomShaders) (void);
|
EXPORT void HWRAPI(InitCustomShaders) (void);
|
||||||
|
|
||||||
|
@ -115,13 +116,14 @@ struct hwdriver_s
|
||||||
MakeScreenFinalTexture pfnMakeScreenFinalTexture;
|
MakeScreenFinalTexture pfnMakeScreenFinalTexture;
|
||||||
DrawScreenFinalTexture pfnDrawScreenFinalTexture;
|
DrawScreenFinalTexture pfnDrawScreenFinalTexture;
|
||||||
|
|
||||||
LoadShaders pfnLoadShaders;
|
LoadShaders pfnLoadShaders;
|
||||||
KillShaders pfnKillShaders;
|
KillShaders pfnKillShaders;
|
||||||
SetShader pfnSetShader;
|
SetShader pfnSetShader;
|
||||||
UnSetShader pfnUnSetShader;
|
UnSetShader pfnUnSetShader;
|
||||||
|
|
||||||
LoadCustomShader pfnLoadCustomShader;
|
SetShaderInfo pfnSetShaderInfo;
|
||||||
InitCustomShaders pfnInitCustomShaders;
|
LoadCustomShader pfnLoadCustomShader;
|
||||||
|
InitCustomShaders pfnInitCustomShaders;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct hwdriver_s hwdriver;
|
extern struct hwdriver_s hwdriver;
|
||||||
|
|
|
@ -108,9 +108,6 @@ GLPatch_t *HWR_GetCachedGLPatchPwad(UINT16 wad, UINT16 lump);
|
||||||
GLPatch_t *HWR_GetCachedGLPatch(lumpnum_t lumpnum);
|
GLPatch_t *HWR_GetCachedGLPatch(lumpnum_t lumpnum);
|
||||||
void HWR_GetFadeMask(lumpnum_t fademasklumpnum);
|
void HWR_GetFadeMask(lumpnum_t fademasklumpnum);
|
||||||
|
|
||||||
// hardware driver
|
|
||||||
extern INT32 gl_leveltime;
|
|
||||||
|
|
||||||
// --------
|
// --------
|
||||||
// hw_draw.c
|
// hw_draw.c
|
||||||
// --------
|
// --------
|
||||||
|
|
|
@ -5872,6 +5872,9 @@ void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
|
||||||
ClearColor.blue = 0.0f;
|
ClearColor.blue = 0.0f;
|
||||||
ClearColor.alpha = 1.0f;
|
ClearColor.alpha = 1.0f;
|
||||||
|
|
||||||
|
if (cv_grshaders.value)
|
||||||
|
HWD.pfnSetShaderInfo(HWD_SHADERINFO_LEVELTIME, (INT32)leveltime); // The water surface shader needs the leveltime.
|
||||||
|
|
||||||
if (viewnumber == 0) // Only do it if it's the first screen being rendered
|
if (viewnumber == 0) // Only do it if it's the first screen being rendered
|
||||||
HWD.pfnClearBuffer(true, false, &ClearColor); // Clear the Color Buffer, stops HOMs. Also seems to fix the skybox issue on Intel GPUs.
|
HWD.pfnClearBuffer(true, false, &ClearColor); // Clear the Color Buffer, stops HOMs. Also seems to fix the skybox issue on Intel GPUs.
|
||||||
|
|
||||||
|
@ -6450,7 +6453,8 @@ void HWR_DoPostProcessor(player_t *player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HWD.pfnPostImgRedraw(v);
|
HWD.pfnPostImgRedraw(v);
|
||||||
disStart += 1;
|
if (!(paused || P_AutoPause()))
|
||||||
|
disStart += 1;
|
||||||
|
|
||||||
// Capture the screen again for screen waving on the intermission
|
// Capture the screen again for screen waving on the intermission
|
||||||
if(gamestate != GS_INTERMISSION)
|
if(gamestate != GS_INTERMISSION)
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "r_opengl.h"
|
#include "r_opengl.h"
|
||||||
#include "r_vbo.h"
|
#include "r_vbo.h"
|
||||||
|
|
||||||
#include "../../p_tick.h" // for leveltime (NOTE: THIS IS BAD, FIGURE OUT HOW TO PROPERLY IMPLEMENT gl_leveltime)
|
//#include "../../p_tick.h" // for leveltime (NOTE: THIS IS BAD, FIGURE OUT HOW TO PROPERLY IMPLEMENT gl_leveltime)
|
||||||
#include "../../r_main.h" // AIMINGTODY (ALSO BAD)
|
#include "../../r_main.h" // AIMINGTODY (ALSO BAD)
|
||||||
|
|
||||||
#if defined (HWRENDER) && !defined (NOROPENGL)
|
#if defined (HWRENDER) && !defined (NOROPENGL)
|
||||||
|
@ -496,8 +496,6 @@ boolean SetupGLfunc(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
INT32 gl_leveltime = 0;
|
|
||||||
|
|
||||||
#ifdef GL_SHADERS
|
#ifdef GL_SHADERS
|
||||||
typedef GLuint (APIENTRY *PFNglCreateShader) (GLenum);
|
typedef GLuint (APIENTRY *PFNglCreateShader) (GLenum);
|
||||||
typedef void (APIENTRY *PFNglShaderSource) (GLuint, GLsizei, const GLchar**, GLint*);
|
typedef void (APIENTRY *PFNglShaderSource) (GLuint, GLsizei, const GLchar**, GLint*);
|
||||||
|
@ -577,6 +575,9 @@ typedef struct gl_shaderprogram_s
|
||||||
} gl_shaderprogram_t;
|
} gl_shaderprogram_t;
|
||||||
static gl_shaderprogram_t gl_shaderprograms[MAXSHADERPROGRAMS];
|
static gl_shaderprogram_t gl_shaderprograms[MAXSHADERPROGRAMS];
|
||||||
|
|
||||||
|
// Shader info
|
||||||
|
static INT32 shader_leveltime = 0;
|
||||||
|
|
||||||
// ========================
|
// ========================
|
||||||
// Fragment shader macros
|
// Fragment shader macros
|
||||||
// ========================
|
// ========================
|
||||||
|
@ -942,6 +943,31 @@ EXPORT void HWRAPI(LoadShaders) (void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Shader info
|
||||||
|
// Those are given to the uniforms.
|
||||||
|
//
|
||||||
|
|
||||||
|
EXPORT void HWRAPI(SetShaderInfo) (hwdshaderinfo_t info, INT32 value)
|
||||||
|
{
|
||||||
|
#ifdef GL_SHADERS
|
||||||
|
switch (info)
|
||||||
|
{
|
||||||
|
case HWD_SHADERINFO_LEVELTIME:
|
||||||
|
shader_leveltime = value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
(void)info;
|
||||||
|
(void)value;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Custom shader loading
|
||||||
|
//
|
||||||
EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment)
|
EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment)
|
||||||
{
|
{
|
||||||
#ifdef GL_SHADERS
|
#ifdef GL_SHADERS
|
||||||
|
@ -960,6 +986,11 @@ EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boo
|
||||||
strncpy(gl_customvertexshaders[number], shader, size);
|
strncpy(gl_customvertexshaders[number], shader, size);
|
||||||
gl_customvertexshaders[number][size] = 0;
|
gl_customvertexshaders[number][size] = 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
(void)number;
|
||||||
|
(void)shader;
|
||||||
|
(void)size;
|
||||||
|
(void)fragment;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -978,10 +1009,12 @@ EXPORT void HWRAPI(SetShader) (int shader)
|
||||||
{
|
{
|
||||||
gl_shadersenabled = true;
|
gl_shadersenabled = true;
|
||||||
gl_currentshaderprogram = shader;
|
gl_currentshaderprogram = shader;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
#else
|
||||||
|
(void)shader;
|
||||||
#endif
|
#endif
|
||||||
gl_shadersenabled = false;
|
gl_shadersenabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT void HWRAPI(UnSetShader) (void)
|
EXPORT void HWRAPI(UnSetShader) (void)
|
||||||
|
@ -1822,7 +1855,7 @@ static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *
|
||||||
UNIFORM_1(shader->uniforms[gluniform_lighting], Surface->LightInfo.light_level, pglUniform1f);
|
UNIFORM_1(shader->uniforms[gluniform_lighting], Surface->LightInfo.light_level, pglUniform1f);
|
||||||
UNIFORM_1(shader->uniforms[gluniform_fade_start], Surface->LightInfo.fade_start, pglUniform1f);
|
UNIFORM_1(shader->uniforms[gluniform_fade_start], Surface->LightInfo.fade_start, pglUniform1f);
|
||||||
UNIFORM_1(shader->uniforms[gluniform_fade_end], Surface->LightInfo.fade_end, pglUniform1f);
|
UNIFORM_1(shader->uniforms[gluniform_fade_end], Surface->LightInfo.fade_end, pglUniform1f);
|
||||||
UNIFORM_1(shader->uniforms[gluniform_leveltime], ((float)leveltime) / TICRATE, pglUniform1f);
|
UNIFORM_1(shader->uniforms[gluniform_leveltime], ((float)shader_leveltime) / TICRATE, pglUniform1f);
|
||||||
|
|
||||||
// Custom shader uniforms
|
// Custom shader uniforms
|
||||||
//if (custom) { }
|
//if (custom) { }
|
||||||
|
|
|
@ -107,6 +107,7 @@ void *hwSym(const char *funcName,void *handle)
|
||||||
GETFUNC(SetShader);
|
GETFUNC(SetShader);
|
||||||
GETFUNC(UnSetShader);
|
GETFUNC(UnSetShader);
|
||||||
|
|
||||||
|
GETFUNC(SetShaderInfo);
|
||||||
GETFUNC(LoadCustomShader);
|
GETFUNC(LoadCustomShader);
|
||||||
GETFUNC(InitCustomShaders);
|
GETFUNC(InitCustomShaders);
|
||||||
|
|
||||||
|
|
|
@ -1750,13 +1750,14 @@ void I_StartupHardwareGraphics(void)
|
||||||
HWD.pfnMakeScreenFinalTexture=hwSym("MakeScreenFinalTexture",NULL);
|
HWD.pfnMakeScreenFinalTexture=hwSym("MakeScreenFinalTexture",NULL);
|
||||||
HWD.pfnDrawScreenFinalTexture=hwSym("DrawScreenFinalTexture",NULL);
|
HWD.pfnDrawScreenFinalTexture=hwSym("DrawScreenFinalTexture",NULL);
|
||||||
|
|
||||||
HWD.pfnLoadShaders = hwSym("LoadShaders",NULL);
|
HWD.pfnLoadShaders = hwSym("LoadShaders",NULL);
|
||||||
HWD.pfnKillShaders = hwSym("KillShaders",NULL);
|
HWD.pfnKillShaders = hwSym("KillShaders",NULL);
|
||||||
HWD.pfnSetShader = hwSym("SetShader",NULL);
|
HWD.pfnSetShader = hwSym("SetShader",NULL);
|
||||||
HWD.pfnUnSetShader = hwSym("UnSetShader",NULL);
|
HWD.pfnUnSetShader = hwSym("UnSetShader",NULL);
|
||||||
|
|
||||||
|
HWD.pfnSetShaderInfo = hwSym("SetShaderInfo",NULL);
|
||||||
HWD.pfnLoadCustomShader = hwSym("LoadCustomShader",NULL);
|
HWD.pfnLoadCustomShader = hwSym("LoadCustomShader",NULL);
|
||||||
HWD.pfnInitCustomShaders = hwSym("InitCustomShaders",NULL);
|
HWD.pfnInitCustomShaders= hwSym("InitCustomShaders",NULL);
|
||||||
|
|
||||||
if (!HWD.pfnInit()) // let load the OpenGL library
|
if (!HWD.pfnInit()) // let load the OpenGL library
|
||||||
rendermode = render_soft;
|
rendermode = render_soft;
|
||||||
|
|
Loading…
Reference in a new issue