nuclear@60: #include nuclear@60: #include nuclear@60: #include nuclear@60: #include "opengl.h" nuclear@60: #include "renderer_multipass.h" nuclear@60: #include "level.h" nuclear@60: #include "sdr.h" nuclear@60: #include "datapath.h" nuclear@60: nuclear@60: static unsigned int load_sdr(const char *vfname, const char *pfname); nuclear@60: nuclear@60: nuclear@60: MultipassRenderer::MultipassRenderer() nuclear@60: { nuclear@60: for(int i=0; idraw(); nuclear@60: } nuclear@60: glBindFramebufferEXT(GL_FRAMEBUFFER, 0); nuclear@60: nuclear@60: // post-process lighting nuclear@60: light_pass(level); nuclear@60: nuclear@60: glUseProgram(0); nuclear@60: curr_prog = 0; nuclear@60: } nuclear@60: nuclear@60: static unsigned int load_sdr(const char *vfname, const char *pfname) nuclear@60: { nuclear@60: char vsfile[PATH_MAX], psfile[PATH_MAX]; nuclear@60: const char *fname; nuclear@60: unsigned int prog; nuclear@60: nuclear@60: if((fname = datafile_path(vfname))) { nuclear@60: strcpy(vsfile, fname); nuclear@60: } else { nuclear@60: vsfile[0] = 0; nuclear@60: } nuclear@60: if((fname = datafile_path(pfname))) { nuclear@60: strcpy(psfile, fname); nuclear@60: } else { nuclear@60: psfile[0] = 0; nuclear@60: } nuclear@60: if(!(prog = create_program_load(vsfile, psfile))) { nuclear@60: fprintf(stderr, "failed to load shader program (%s, %s)\n", vsfile, psfile); nuclear@60: return 0; nuclear@60: } nuclear@60: return prog; nuclear@60: }