Compare commits

...

2 Commits

6 changed files with 131 additions and 120 deletions

View File

@ -1286,7 +1286,7 @@ void LOG_Init(quakeparms_t *parms)
return; return;
inittime = time(NULL); inittime = time(NULL);
strftime(session, sizeof(session), "%m/%" PRIi32 "/%Y %H:%M:%S", localtime(&inittime)); strftime(session, sizeof(session), "%m/%u/%Y %H:%M:%S", localtime(&inittime));
q_snprintf(logfilename, sizeof(logfilename), "%s/qconsole.log", parms->basedir); q_snprintf(logfilename, sizeof(logfilename), "%s/qconsole.log", parms->basedir);
// unlink (logfilename); // unlink (logfilename);

View File

@ -80,6 +80,7 @@ static GLuint fullbrightTexLoc;
static GLuint useFullbrightTexLoc; static GLuint useFullbrightTexLoc;
static GLuint useOverbrightLoc; static GLuint useOverbrightLoc;
static GLuint useAlphaTestLoc; static GLuint useAlphaTestLoc;
static GLuint useRFullbrightLoc;
#define pose1VertexAttrIndex 0 #define pose1VertexAttrIndex 0
#define pose1NormalAttrIndex 1 #define pose1NormalAttrIndex 1
@ -131,8 +132,8 @@ void GLAlias_CreateShaders(void)
{ "Pose2Normal", pose2NormalAttrIndex } { "Pose2Normal", pose2NormalAttrIndex }
}; };
const GLchar *vertSource = \ const GLchar *vertSource =
"#version 110\n" "#version 130\n"
"\n" "\n"
"uniform float Blend;\n" "uniform float Blend;\n"
"uniform vec3 ShadeVector;\n" "uniform vec3 ShadeVector;\n"
@ -154,11 +155,14 @@ void GLAlias_CreateShaders(void)
" else\n" " else\n"
" return 1.0 + dot;\n" " return 1.0 + dot;\n"
"}\n" "}\n"
"\n"
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_TexCoord[0] = TexCoords;\n" " gl_TexCoord[0] = TexCoords;\n"
" vec4 lerpedVert = mix(vec4(Pose1Vert.xyz, 1.0), vec4(Pose2Vert.xyz, 1.0), Blend);\n" " vec4 lerpedVert = mix(vec4(Pose1Vert.xyz, 1.0), vec4(Pose2Vert.xyz, 1.0), Blend);\n"
" gl_Position = gl_ModelViewProjectionMatrix * lerpedVert;\n" " gl_Position = gl_ModelViewProjectionMatrix * lerpedVert;\n"
" gl_Position = vec4(floor(gl_Position.xyz * 10.0) / 10.0, gl_Position.w);"
" gl_Position /= abs(gl_Position.w);\n"
" FogFragCoord = gl_Position.w;\n" " FogFragCoord = gl_Position.w;\n"
" float dot1 = r_avertexnormal_dot(Pose1Normal);\n" " float dot1 = r_avertexnormal_dot(Pose1Normal);\n"
" float dot2 = r_avertexnormal_dot(Pose2Normal);\n" " float dot2 = r_avertexnormal_dot(Pose2Normal);\n"
@ -166,31 +170,38 @@ void GLAlias_CreateShaders(void)
"}\n"; "}\n";
const GLchar *fragSource = \ const GLchar *fragSource = \
"#version 110\n" "#version 130\n"
"\n" "\n"
"uniform sampler2D Tex;\n" "uniform sampler2D Tex;\n"
"uniform sampler2D FullbrightTex;\n" "uniform sampler2D FullbrightTex;\n"
"uniform bool UseFullbrightTex;\n" "uniform bool UseFullbrightTex;\n"
"uniform bool UseOverbright;\n" "uniform bool UseOverbright;\n"
"uniform bool UseAlphaTest;\n" "uniform bool UseAlphaTest;\n"
"uniform bool UseRFullbright;\n"
"\n" "\n"
"varying float FogFragCoord;\n" "varying float FogFragCoord;\n"
"\n" "\n"
"void main()\n" "void main()\n"
"{\n" "{\n"
" vec4 result = texture2D(Tex, gl_TexCoord[0].xy);\n" " vec4 result = texture2D(Tex, gl_TexCoord[0].xy);\n"
" if (UseAlphaTest && (result.a < 0.666))\n" " if(UseAlphaTest && result.a < 0.666)\n"
" discard;\n" " discard;\n"
" if(!UseRFullbright)\n"
" {\n"
" result *= gl_Color;\n" " result *= gl_Color;\n"
" if(UseOverbright)\n" " if(UseOverbright)\n"
" result.rgb *= 2.0;\n" " result.rgb *= 2.0;\n"
" }\n"
" if(UseFullbrightTex)\n" " if(UseFullbrightTex)\n"
" result += texture2D(FullbrightTex, gl_TexCoord[0].xy);\n" " result += texture2D(FullbrightTex, gl_TexCoord[0].xy);\n"
" result = clamp(result, 0.0, 1.0);\n" " result = clamp(result, 0.0, 1.0);\n"
" if(!UseRFullbright)\n"
" {\n"
" float fog = exp(-gl_Fog.density * gl_Fog.density * FogFragCoord * FogFragCoord);\n" " float fog = exp(-gl_Fog.density * gl_Fog.density * FogFragCoord * FogFragCoord);\n"
" fog = clamp(fog, 0.0, 1.0);\n" " fog = clamp(fog, 0.0, 1.0);\n"
" result = mix(gl_Fog.color, result, fog);\n" " result = mix(gl_Fog.color, result, fog);\n"
" result.a = gl_Color.a;\n" // FIXME: This will make almost transparent things cut holes though heavy fog " result.a = gl_Color.a;\n" // FIXME: This will make almost transparent things cut holes though heavy fog
" }\n"
" gl_FragColor = result;\n" " gl_FragColor = result;\n"
"}\n"; "}\n";
@ -210,6 +221,7 @@ void GLAlias_CreateShaders(void)
useFullbrightTexLoc = GL_GetUniformLocation(&r_alias_program, "UseFullbrightTex"); useFullbrightTexLoc = GL_GetUniformLocation(&r_alias_program, "UseFullbrightTex");
useOverbrightLoc = GL_GetUniformLocation(&r_alias_program, "UseOverbright"); useOverbrightLoc = GL_GetUniformLocation(&r_alias_program, "UseOverbright");
useAlphaTestLoc = GL_GetUniformLocation(&r_alias_program, "UseAlphaTest"); useAlphaTestLoc = GL_GetUniformLocation(&r_alias_program, "UseAlphaTest");
useRFullbrightLoc = GL_GetUniformLocation(&r_alias_program, "UseRFullbright");
} }
} }
@ -267,6 +279,7 @@ void GL_DrawAliasFrame_GLSL(aliashdr_t *paliashdr, lerpdata_t lerpdata, gltextur
GL_Uniform1iFunc(useFullbrightTexLoc, (fb != NULL) ? 1 : 0); GL_Uniform1iFunc(useFullbrightTexLoc, (fb != NULL) ? 1 : 0);
GL_Uniform1fFunc(useOverbrightLoc, overbright ? 1 : 0); GL_Uniform1fFunc(useOverbrightLoc, overbright ? 1 : 0);
GL_Uniform1iFunc(useAlphaTestLoc, (currententity->model->flags & MF_HOLEY) ? 1 : 0); GL_Uniform1iFunc(useAlphaTestLoc, (currententity->model->flags & MF_HOLEY) ? 1 : 0);
GL_Uniform1iFunc(useRFullbrightLoc, r_fullbright_cheatsafe);
// set textures // set textures
GL_SelectTexture(GL_TEXTURE0); GL_SelectTexture(GL_TEXTURE0);
@ -714,6 +727,8 @@ void R_DrawAliasModel(entity_t *e)
// //
// draw it // draw it
// //
// call fast path if possible. if the shader compliation failed for some reason,
// r_alias_program will be 0.
if(r_drawflat_cheatsafe) if(r_drawflat_cheatsafe)
{ {
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
@ -721,6 +736,10 @@ void R_DrawAliasModel(entity_t *e)
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
srand((int32_t)(cl.time * 1000)); //restore randomness srand((int32_t)(cl.time * 1000)); //restore randomness
} }
else if(r_alias_program != 0)
{
GL_DrawAliasFrame_GLSL(paliashdr, lerpdata, tx, fb);
}
else if(r_fullbright_cheatsafe) else if(r_fullbright_cheatsafe)
{ {
GL_Bind(tx); GL_Bind(tx);
@ -751,12 +770,6 @@ void R_DrawAliasModel(entity_t *e)
GL_DrawAliasFrame(paliashdr, lerpdata); GL_DrawAliasFrame(paliashdr, lerpdata);
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
} }
// call fast path if possible. if the shader compliation failed for some reason,
// r_alias_program will be 0.
else if(r_alias_program != 0)
{
GL_DrawAliasFrame_GLSL(paliashdr, lerpdata, tx, fb);
}
else if(overbright) else if(overbright)
{ {
if(gl_texture_env_combine && gl_mtexable && gl_texture_env_add && fb) //case 1: everything in one pass if(gl_texture_env_combine && gl_mtexable && gl_texture_env_add && fb) //case 1: everything in one pass

View File

@ -815,7 +815,7 @@ void GLWorld_CreateShaders(void)
}; };
const GLchar *vertSource = \ const GLchar *vertSource = \
"#version 110\n" "#version 130\n"
"\n" "\n"
"attribute vec3 Vert;\n" "attribute vec3 Vert;\n"
"attribute vec2 TexCoords;\n" "attribute vec2 TexCoords;\n"
@ -832,7 +832,7 @@ void GLWorld_CreateShaders(void)
"}\n"; "}\n";
const GLchar *fragSource = \ const GLchar *fragSource = \
"#version 110\n" "#version 130\n"
"\n" "\n"
"uniform sampler2D Tex;\n" "uniform sampler2D Tex;\n"
"uniform sampler2D LMTex;\n" "uniform sampler2D LMTex;\n"

View File

@ -415,7 +415,7 @@ This is passed to SDL_SetWindowDisplayMode to specify a pixel format
with the requested bpp. If we didn't care about bpp we could just pass NULL. with the requested bpp. If we didn't care about bpp we could just pass NULL.
================ ================
*/ */
static SDL_DisplayMode *VID_SDL2_GetDisplayMode(int32_t width, int32_t height, int32_t refreshrate, int32_t bpp) static SDL_DisplayMode *VID_SDL2_GetDisplayMode(int32_t width, int32_t height, int32_t refreshrate, uint32_t bpp)
{ {
static SDL_DisplayMode mode; static SDL_DisplayMode mode;
const int32_t sdlmodes = SDL_GetNumDisplayModes(0); const int32_t sdlmodes = SDL_GetNumDisplayModes(0);
@ -426,9 +426,7 @@ static SDL_DisplayMode *VID_SDL2_GetDisplayMode(int32_t width, int32_t height, i
if(SDL_GetDisplayMode(0, i, &mode) != 0) if(SDL_GetDisplayMode(0, i, &mode) != 0)
continue; continue;
if(mode.w == width && mode.h == height if(mode.w == width && mode.h == height && SDL_BITSPERPIXEL(mode.format) == bpp && mode.refresh_rate == refreshrate)
&& SDL_BITSPERPIXEL(mode.format) == bpp
&& mode.refresh_rate == refreshrate)
{ {
return &mode; return &mode;
} }

View File

@ -230,7 +230,7 @@ static char const *Sys_GetUserDir(void)
char const *system_dir; char const *system_dir;
if((system_dir = getenv("XDG_DATA_HOME"))) if((system_dir = getenv("XDG_DATA_HOME")))
q_snprintf(user_dir, sizeof(user_dir), "%s/%s/%s", home_dir, system_dir, app_name); q_snprintf(user_dir, sizeof(user_dir), "%s/%s", system_dir, app_name);
else else
{ {
if(!(home_dir = Sys_GetHomeDir())) if(!(home_dir = Sys_GetHomeDir()))