static void dstrukt(Framebuffer *src, float blockpow, float sinpow, float linepow, float colorsep, float t) { glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); gluePrepareflags(0); glClear(GL_COLOR_BUFFER_BIT); glueSet2d(GLUE_NO_DEPTH); glUseProgramObjectARB(shader_dstrukt); glueGlsl_bindtex(shader_dstrukt, "t_color", src->texnum, 0, GL_TEXTURE_2D, GLUE_NO_MIPMAP|GLUE_CLAMP); glueGlsl_bindtex(shader_dstrukt, "t_noise", noisetex->texnum, 1, GL_TEXTURE_2D, GLUE_NO_MIPMAP|GLUE_NEAREST); glUniform1fARB(glGetUniformLocationARB(shader_dstrukt, "blockpow"), blockpow); glUniform1fARB(glGetUniformLocationARB(shader_dstrukt, "sinpow"), sinpow); glUniform1fARB(glGetUniformLocationARB(shader_dstrukt, "linepow"), linepow); glUniform1fARB(glGetUniformLocationARB(shader_dstrukt, "colorsep"), colorsep); glUniform1fARB(glGetUniformLocationARB(shader_dstrukt, "time"), t); glue2dquad(); glUseProgramObjectARB(0); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); }
static void ssaofilter(Framebuffer *mrtfbo, Texture *noise, float t, float ballsize, float darken) { glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); gluePrepareflags(0); glClear(GL_COLOR_BUFFER_BIT); glueSet2d(GLUE_NO_DEPTH); glUseProgramObjectARB(shader_ssao); glUniform1fARB(glGetUniformLocationARB(shader_ssao, "t"), t); glUniform1fARB(glGetUniformLocationARB(shader_ssao, "ballsize"), ballsize); glUniform1fARB(glGetUniformLocationARB(shader_ssao, "darken"), darken); glUniform2fARB(glGetUniformLocationARB(shader_ssao, "pixel"), 1.0/(float)mrtfbo->xres, 1.0/(float)mrtfbo->yres); //glueGlsl_bindtex(shader_ssao, "colortex", mrtfbo->texnum, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP|GLUE_NEAREST); glueGlsl_bindtex(shader_ssao, "depthtex", mrtfbo->texnum2, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP|GLUE_NEAREST); glueGlsl_bindtex(shader_ssao, "noise", noise->texnum, 1, GL_TEXTURE_2D, GLUE_NO_MIPMAP|GLUE_NEAREST); glue2dquad(); glUseProgramObjectARB(0); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); }
static void ssaocombinefilter(Framebuffer *src, Framebuffer *ssao) { glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); gluePrepareflags(0); glClear(GL_COLOR_BUFFER_BIT); glueSet2d(GLUE_NO_DEPTH); glUseProgramObjectARB(shader_ssaocombine); glUniform2fARB(glGetUniformLocationARB(shader_ssaocombine, "pixel"), 1.0/(float)ssao->xres, 1.0/(float)ssao->yres); glueGlsl_bindtex(shader_ssaocombine, "colortex", src->texnum, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP); glueGlsl_bindtex(shader_ssaocombine, "ssaotex", ssao->texnum, 1, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP); glueGlsl_bindtex(shader_ssaocombine, "depthtex", src->texnum2, 2, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP|GLUE_NEAREST); //glueGlsl_bindtex(shader_ssaocombine, "depthtex", mrtfbo->texnum2, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP|GLUE_NEAREST); glue2dquad(); glUseProgramObjectARB(0); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); }
glue_static void glueShowzbuffer(Texture *tex, float scale) { //float *imgf=malloc(sizeof(float)*eftexture_xsize*eftexture_ysize); unsigned char *img=malloc(eftexture_xsize*eftexture_ysize*4); int x; glPixelTransferf(GL_DEPTH_SCALE, scale); glPixelTransferf(GL_DEPTH_BIAS, -(scale-1)); // glPixelTransferf(GL_DEPTH_SCALE, 1); // glPixelTransferf(GL_DEPTH_BIAS, 0); glReadPixels(0, 0, glueXres, glueYres, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, img); // glReadPixels(0, 0, effect_xsize, effect_ysize, GL_DEPTH_COMPONENT, GL_FLOAT, imgf); /* for (x=0; x<effect_xsize*effect_ysize; x++) { unsigned char joo=pow(1.0-imgf[x], ramp)*255; img[x*4+0]=img[x*4+1]=img[x*4+2]=img[x*4+3]=joo; } */ //for (x=effect_xsize*effect_ysize*4-1; x>=0; x--) img[x]=pow(1.0-img[x>>2]/255.0, ramp)*255; for (x=glueXres*glueYres*4-1; x>=0; x--) img[x]=img[x>>2]; glueReloadtexture(tex, img); gluePrepareflags(black); glueOverlay(tex, 1.0, GLUE_NO_CULL|GLUE_NO_DEPTH); free(img); //free(imgf); }
void blurfilter(Framebuffer *src, Framebuffer *work, float pixel, int rad, float minus) { int x; glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glueBeginrender(work); gluePrepareflags(0); glClear(GL_COLOR_BUFFER_BIT); glueSet2d(GLUE_NO_DEPTH); glueDisabletexture(); glUseProgramObjectARB(shader_blur); glueGlsl_bindtex(shader_blur, "t_color", src->texnum, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP); glUniform2fARB(glGetUniformLocationARB(shader_blur, "direction"), pixel/src->xres, 0.0); glUniform1iARB(glGetUniformLocationARB(shader_blur, "radius"), rad); glUniform1fARB(glGetUniformLocationARB(shader_blur, "minus"), minus); glue2dquad(); glUseProgramObjectARB(0); glueEndrender(); glClear(GL_COLOR_BUFFER_BIT); glueSet2d(GLUE_NO_DEPTH); glUseProgramObjectARB(shader_blur); glueGlsl_bindtex(shader_blur, "t_color", work->texnum, 0, GL_TEXTURE_2D, GLUE_CLAMP|GLUE_NO_MIPMAP); glUniform2fARB(glGetUniformLocationARB(shader_blur, "direction"), 0, pixel/work->yres); float radmultiplier=(float)work->yres/(float)src->yres; // glueNoticef("blur multiplier shit %5.2f", radmultiplier); glUniform1iARB(glGetUniformLocationARB(shader_blur, "radius"), rad*radmultiplier); glue2dquad(); glUseProgramObjectARB(0); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); }