tcpconnect fixes
lots of hexen2 fixes fixed clipped decals again, still not using any... fixed zips over 2g rewrote bloom to use glsl. should be slightly more usable now. lots more hexen2 fixes git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3957 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
5651e77c30
commit
fb214142a3
91 changed files with 4584 additions and 1270 deletions
|
@ -385,6 +385,29 @@ void GL_CheckExtensions (void *(*getglfunction) (char *name), float ver)
|
|||
gl_config.nofixedfunc = false;
|
||||
}
|
||||
|
||||
gl_config.maxglslversion = 0;
|
||||
if (gl_config.gles && gl_config.glversion >= 2)
|
||||
gl_config.maxglslversion = 100;
|
||||
else if (gl_config.glversion >= 2)
|
||||
{
|
||||
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
|
||||
const char *s = qglGetString (GL_SHADING_LANGUAGE_VERSION);
|
||||
|
||||
if (s)
|
||||
{
|
||||
gl_config.maxglslversion = atoi(s) * 100;
|
||||
while(*s >= '0' && *s <= '9')
|
||||
s++;
|
||||
if (*s == '.')
|
||||
s++;
|
||||
gl_config.maxglslversion += atoi(s);
|
||||
}
|
||||
else
|
||||
gl_config.maxglslversion = 110;
|
||||
}
|
||||
else
|
||||
gl_config.maxglslversion = 110;
|
||||
|
||||
//multitexture
|
||||
gl_mtexable = false;
|
||||
gl_mtexarbable = 0;
|
||||
|
@ -828,6 +851,34 @@ static const char *glsl_hdrs[] =
|
|||
"#endif\n"
|
||||
"#endif\n"
|
||||
,
|
||||
"sys/offsetmapping.h",
|
||||
"uniform float cvar_r_glsl_offsetmapping_scale;\n"
|
||||
"vec2 offsetmap(sampler2D normtex, vec2 base, vec3 eyevector)\n"
|
||||
"{\n"
|
||||
"#if defined(RELIEFMAPPING)\n"
|
||||
"float i, f;\n"
|
||||
"vec3 OffsetVector = vec3(normalize(eyevector.xyz).xy * cvar_r_glsl_offsetmapping_scale * vec2(1.0, -1.0), -1.0);\n"
|
||||
"vec3 RT = vec3(vec2(base.xy"/* - OffsetVector.xy*OffsetMapping_Bias*/"), 1.0);\n"
|
||||
"OffsetVector /= 10.0;\n"
|
||||
"for(i = 1.0; i < 10.0; ++i)\n"
|
||||
"RT += OffsetVector * step(texture2D(normtex, RT.xy).a, RT.z);\n"
|
||||
"for(i = 0.0, f = 1.0; i < 5.0; ++i, f *= 0.5)\n"
|
||||
"RT += OffsetVector * (step(texture2D(normtex, RT.xy).a, RT.z) * f - 0.5 * f);\n"
|
||||
"return RT.xy;\n"
|
||||
"#elif defined(OFFSETMAPPING)\n"
|
||||
"vec2 OffsetVector = normalize(eyevector).xy * cvar_r_glsl_offsetmapping_scale * vec2(1.0, -1.0);\n"
|
||||
"vec2 tc = base;\n"
|
||||
"tc += OffsetVector;\n"
|
||||
"OffsetVector *= 0.333;\n"
|
||||
"tc -= OffsetVector * texture2D(normtex, tc).w;\n"
|
||||
"tc -= OffsetVector * texture2D(normtex, tc).w;\n"
|
||||
"tc -= OffsetVector * texture2D(normtex, tc).w;\n"
|
||||
"return tc;\n"
|
||||
"#else\n"
|
||||
"return base;\n"
|
||||
"#endif\n"
|
||||
"}\n"
|
||||
,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -889,7 +940,7 @@ qboolean GLSlang_GenerateIncludes(int maxstrings, int *strings, const GLchar *pr
|
|||
|
||||
// glslang helper api function definitions
|
||||
// type should be GL_FRAGMENT_SHADER_ARB or GL_VERTEX_SHADER_ARB
|
||||
GLhandleARB GLSlang_CreateShader (char *name, int ver, char **precompilerconstants, const char *shadersource, GLenum shadertype)
|
||||
GLhandleARB GLSlang_CreateShader (char *name, int ver, char **precompilerconstants, const char *shadersource, GLenum shadertype, qboolean silent)
|
||||
{
|
||||
GLhandleARB shader;
|
||||
GLint compiled;
|
||||
|
@ -901,6 +952,10 @@ GLhandleARB GLSlang_CreateShader (char *name, int ver, char **precompilerconstan
|
|||
|
||||
if (ver)
|
||||
{
|
||||
/*required version not supported, don't even try*/
|
||||
if (ver > gl_config.maxglslversion)
|
||||
return 0;
|
||||
|
||||
prstrings[strings] = va("#version %u\n", ver);
|
||||
length[strings] = strlen(prstrings[strings]);
|
||||
strings++;
|
||||
|
@ -1011,31 +1066,34 @@ GLhandleARB GLSlang_CreateShader (char *name, int ver, char **precompilerconstan
|
|||
{
|
||||
qglGetShaderInfoLog_(shader, sizeof(str), NULL, str);
|
||||
qglDeleteShaderObject_(shader);
|
||||
switch (shadertype)
|
||||
if (!silent)
|
||||
{
|
||||
case GL_FRAGMENT_SHADER_ARB:
|
||||
Con_Printf("Fragment shader (%s) compilation error:\n----------\n%s----------\n", name, str);
|
||||
break;
|
||||
case GL_VERTEX_SHADER_ARB:
|
||||
Con_Printf("Vertex shader (%s) compilation error:\n----------\n%s----------\n", name, str);
|
||||
break;
|
||||
default:
|
||||
Con_Printf("Shader_CreateShader: This shouldn't happen ever\n");
|
||||
break;
|
||||
}
|
||||
Con_DPrintf("Shader \"%s\" source:\n", name);
|
||||
for (i = 0; i < strings; i++)
|
||||
{
|
||||
int j;
|
||||
if (length[i] < 0)
|
||||
Con_DPrintf("%s", prstrings[i]);
|
||||
else
|
||||
switch (shadertype)
|
||||
{
|
||||
for (j = 0; j < length[i]; j++)
|
||||
Con_DPrintf("%c", prstrings[i][j]);
|
||||
case GL_FRAGMENT_SHADER_ARB:
|
||||
Con_Printf("Fragment shader (%s) compilation error:\n----------\n%s----------\n", name, str);
|
||||
break;
|
||||
case GL_VERTEX_SHADER_ARB:
|
||||
Con_Printf("Vertex shader (%s) compilation error:\n----------\n%s----------\n", name, str);
|
||||
break;
|
||||
default:
|
||||
Con_Printf("Shader_CreateShader: This shouldn't happen ever\n");
|
||||
break;
|
||||
}
|
||||
Con_DPrintf("Shader \"%s\" source:\n", name);
|
||||
for (i = 0; i < strings; i++)
|
||||
{
|
||||
int j;
|
||||
if (length[i] < 0)
|
||||
Con_DPrintf("%s", prstrings[i]);
|
||||
else
|
||||
{
|
||||
for (j = 0; j < length[i]; j++)
|
||||
Con_DPrintf("%c", prstrings[i][j]);
|
||||
}
|
||||
}
|
||||
Con_DPrintf("%s\n", str);
|
||||
}
|
||||
Con_DPrintf("%s\n", str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1058,7 +1116,7 @@ GLhandleARB GLSlang_CreateShader (char *name, int ver, char **precompilerconstan
|
|||
return shader;
|
||||
}
|
||||
|
||||
GLhandleARB GLSlang_CreateProgramObject (GLhandleARB vert, GLhandleARB frag)
|
||||
GLhandleARB GLSlang_CreateProgramObject (GLhandleARB vert, GLhandleARB frag, qboolean silent)
|
||||
{
|
||||
GLhandleARB program;
|
||||
GLint linked;
|
||||
|
@ -1084,8 +1142,11 @@ GLhandleARB GLSlang_CreateProgramObject (GLhandleARB vert, GLhandleARB frag)
|
|||
|
||||
if(!linked)
|
||||
{
|
||||
qglGetProgramInfoLog_(program, sizeof(str), NULL, str);
|
||||
Con_Printf("Program link error: %s\n", str);
|
||||
if (!silent)
|
||||
{
|
||||
qglGetProgramInfoLog_(program, sizeof(str), NULL, str);
|
||||
Con_Printf("Program link error: %s\n", str);
|
||||
}
|
||||
|
||||
qglDeleteProgramObject_(program);
|
||||
|
||||
|
@ -1094,7 +1155,7 @@ GLhandleARB GLSlang_CreateProgramObject (GLhandleARB vert, GLhandleARB frag)
|
|||
return program;
|
||||
}
|
||||
|
||||
GLhandleARB GLSlang_CreateProgram(char *name, int ver, char **precompilerconstants, char *vert, char *frag)
|
||||
GLhandleARB GLSlang_CreateProgram(char *name, int ver, char **precompilerconstants, char *vert, char *frag, qboolean silent)
|
||||
{
|
||||
GLhandleARB handle;
|
||||
GLhandleARB vs;
|
||||
|
@ -1107,13 +1168,13 @@ GLhandleARB GLSlang_CreateProgram(char *name, int ver, char **precompilerconstan
|
|||
if (!precompilerconstants)
|
||||
precompilerconstants = &nullconstants;
|
||||
|
||||
vs = GLSlang_CreateShader(name, ver, precompilerconstants, vert, GL_VERTEX_SHADER_ARB);
|
||||
fs = GLSlang_CreateShader(name, ver, precompilerconstants, frag, GL_FRAGMENT_SHADER_ARB);
|
||||
vs = GLSlang_CreateShader(name, ver, precompilerconstants, vert, GL_VERTEX_SHADER_ARB, silent);
|
||||
fs = GLSlang_CreateShader(name, ver, precompilerconstants, frag, GL_FRAGMENT_SHADER_ARB, silent);
|
||||
|
||||
if (!vs || !fs)
|
||||
handle = 0;
|
||||
else
|
||||
handle = GLSlang_CreateProgramObject(vs, fs);
|
||||
handle = GLSlang_CreateProgramObject(vs, fs, silent);
|
||||
//delete ignores 0s.
|
||||
qglDeleteShaderObject_(vs);
|
||||
qglDeleteShaderObject_(fs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue