9dbf5b5837
image_width is now only set by a single function. tweaked scancode inputs slightly. added support for printscreen binds. changed the way gamma works. glsl gamma now used when running windows, or hardware gamma is not available. removed gl_contrast+gl_brightness. q2 gamecode support no longer has a system componant. this means that ports only need the generic stuff. misc tweaks to the d3d11 renderer. added brief descriptions to many builtins. need to add comments to constants, globals, and fields too, somehow. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4355 fc73d0e0-1445-4013-8a0c-d673dee63da5
153 lines
3 KiB
C
153 lines
3 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
char shaders[][64] =
|
|
{
|
|
"altwater",
|
|
"bloom_blur",
|
|
"bloom_filter",
|
|
"bloom_final",
|
|
"colourtint",
|
|
"crepuscular_opaque",
|
|
"crepuscular_rays",
|
|
"crepuscular_sky",
|
|
"default2d",
|
|
"defaultadditivesprite",
|
|
"defaultskin",
|
|
"defaultsky",
|
|
"defaultfill",
|
|
"defaultsprite",
|
|
"defaultwall",
|
|
"defaultwarp",
|
|
"defaultgammacb",
|
|
"drawflat_wall",
|
|
"lpp_depthnorm",
|
|
"lpp_light",
|
|
"lpp_wall",
|
|
"postproc_fisheye",
|
|
"postproc_panorama",
|
|
"rtlight",
|
|
"underwaterwarp",
|
|
"menutint",
|
|
"terrain",
|
|
""
|
|
};
|
|
|
|
void dumpprogstring(FILE *out, FILE *src)
|
|
{
|
|
int j;
|
|
char line[1024];
|
|
|
|
while(fgets(line, sizeof(line), src))
|
|
{
|
|
j = 0;
|
|
while (line[j] == ' ' || line[j] == '\t')
|
|
j++;
|
|
if ((line[j] == '/' && line[j] == '/') || line[j] == '\r' || line[j] == '\n')
|
|
{
|
|
while (line[j])
|
|
fputc(line[j++], out);
|
|
}
|
|
else
|
|
{
|
|
fputc('\"', out);
|
|
while (line[j] && line[j] != '\r' && line[j] != '\n')
|
|
{
|
|
if (line[j] == '\t')
|
|
fputc(' ', out);
|
|
else if (line[j] == '\"')
|
|
{
|
|
fputc('\\', out);
|
|
fputc(line[j], out);
|
|
}
|
|
else
|
|
fputc(line[j], out);
|
|
j++;
|
|
}
|
|
fputs("\\n\"\n", out);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
struct shadertype_s
|
|
{
|
|
char *filepattern;
|
|
char *preprocessor;
|
|
char *rendererapi;
|
|
int apiversion;
|
|
} shadertype[] =
|
|
{
|
|
{"glsl/%s.glsl", "GLQUAKE", "QR_OPENGL", 110}, //gl2+
|
|
{"gles/%s.glsl", "GLQUAKE", "QR_OPENGL", 100}, //gles
|
|
{"hlsl9/%s.hlsl", "D3D9QUAKE", "QR_DIRECT3D9", 9}, //d3d9
|
|
{"hlsl11/%s.hlsl", "D3D11QUAKE", "QR_DIRECT3D11", 11}, //d3d11
|
|
};
|
|
//tbh we should precompile the d3d shaders.
|
|
|
|
int main(void)
|
|
{
|
|
FILE *c, *s;
|
|
char line[1024];
|
|
int i, j, a;
|
|
c = fopen("../gl/r_bishaders.h", "wt");
|
|
|
|
if (!c)
|
|
{
|
|
printf("unable to open a file\n");
|
|
return;
|
|
}
|
|
|
|
fprintf(c, "/*\nWARNING: THIS FILE IS GENERATED BY '"__FILE__"'.\nYOU SHOULD NOT EDIT THIS FILE BY HAND\n*/\n\n");
|
|
|
|
for (i = 0; *shaders[i]; i++)
|
|
{
|
|
for (a = 0; a < sizeof(shadertype)/sizeof(shadertype[0]); a++)
|
|
{
|
|
sprintf(line, shadertype[a].filepattern, shaders[i]);
|
|
s = fopen(line, "rt");
|
|
if (!s)
|
|
{
|
|
printf("unable to open %s\n", line);
|
|
continue;
|
|
}
|
|
fprintf(c, "#ifdef %s\n", shadertype[a].preprocessor);
|
|
fprintf(c, "{%s, %i, \"%s\",\n", shadertype[a].rendererapi, shadertype[a].apiversion, shaders[i]);
|
|
|
|
while(fgets(line, sizeof(line), s))
|
|
{
|
|
j = 0;
|
|
while (line[j] == ' ' || line[j] == '\t')
|
|
j++;
|
|
if ((line[j] == '/' && line[j] == '/') || line[j] == '\r' || line[j] == '\n')
|
|
{
|
|
while (line[j])
|
|
fputc(line[j++], c);
|
|
}
|
|
else
|
|
{
|
|
fputc('\"', c);
|
|
while (line[j] && line[j] != '\r' && line[j] != '\n')
|
|
{
|
|
if (line[j] == '\t')
|
|
fputc(' ', c);
|
|
else if (line[j] == '\"')
|
|
{
|
|
fputc('\\', c);
|
|
fputc(line[j], c);
|
|
}
|
|
else
|
|
fputc(line[j], c);
|
|
j++;
|
|
}
|
|
fputs("\\n\"\n", c);
|
|
}
|
|
}
|
|
fputs("},\n", c);
|
|
fprintf(c, "#endif\n");
|
|
fclose(s);
|
|
}
|
|
}
|
|
|
|
fclose(c);
|
|
}
|