#include #include char shaders[][64] = { "altwater", "bloom_blur", "bloom_filter", "bloom_final", "colourtint", "crepuscular_opaque", "crepuscular_rays", "crepuscular_sky", "default2d", "defaultadditivesprite", "defaultskin", "defaultsky", "defaultsprite", "defaultwall", "defaultwarp", "drawflat_wall", "lpp_depthnorm", "lpp_light", "lpp_wall", "postproc_fisheye", "postproc_panorama", "rtlight", "underwaterwarp", "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); } } } 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 < 3; a++) { if (a == 0) sprintf(line, "glsl/%s.glsl", shaders[i]); else if (a == 1) sprintf(line, "gles/%s.glsl", shaders[i]); else sprintf(line, "hlsl/%s.hlsl", shaders[i]); s = fopen(line, "rt"); if (!s) { printf("unable to open %s\n", line); continue; } if (a == 0) { fprintf(c, "#ifdef GLQUAKE\n"); fprintf(c, "{QR_OPENGL, 110, \"%s\",\n", shaders[i]); } else if (a == 1) { fprintf(c, "#ifdef GLQUAKE\n"); fprintf(c, "{QR_OPENGL, 100, \"%s\",\n", shaders[i]); } else { fprintf(c, "#ifdef D3DQUAKE\n"); fprintf(c, "{QR_DIRECT3D, 9, \"%s\",\n", 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); }