X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fpart_whitted.c;h=6c176b4c41e7099a359d44befd87a0458e1ca528;hb=HEAD;hp=eb0fe5b01bac803c8f28b27b83f143e1b3b99952;hpb=5eefe7b94c8d6c6caa2c10e3835ab0831a3c42a1;p=demo_prior diff --git a/src/part_whitted.c b/src/part_whitted.c index eb0fe5b..6c176b4 100644 --- a/src/part_whitted.c +++ b/src/part_whitted.c @@ -4,6 +4,7 @@ #include "sdr.h" #include "texture.h" #include "post.h" +#include "imtk.h" static int init(void); static void destroy(void); @@ -70,6 +71,9 @@ static void stop(void) static void draw(long tm) { + static float vgn_offset = 0.47; + static float vgn_sharp = 3.1; + glDisable(GL_DEPTH_TEST); glMatrixMode(GL_MODELVIEW); @@ -83,9 +87,6 @@ static void draw(long tm) glRotatef(-cam_phi, 1, 0, 0); glTranslatef(0, 0, cam_dist); - glBindFramebuffer(GL_FRAMEBUFFER, post_fbo[0]); - glClear(GL_COLOR_BUFFER_BIT); - glUseProgram(sdr); glUniform1f(uloc_aspect, win_aspect); @@ -100,13 +101,35 @@ static void draw(long tm) glVertex2f(-1, 1); glEnd(); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - glUseProgram(post_sdr[POST_OLDFIG]); - overlay_tex(post_fbtex, 1.0); + vignette(0.15, 0.05, 0.15, vgn_offset, vgn_sharp); - if(dbgtex) { + if(dbgtex && dbg_alpha > 0.0) { glUseProgram(0); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glScalef(1, -1, 1); overlay_tex(dbgtex, dbg_alpha); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + } + + if(dbgui) { + glUseProgram(0); + + imtk_begin(); + imtk_layout_start(10, 20); + imtk_layout_spacing(10); + + imtk_layout_dir(IMTK_HORIZONTAL); + + imtk_label("offset:", IMTK_AUTO, IMTK_AUTO); + vgn_offset = imtk_slider(IMUID, vgn_offset, 0.0, 1.5, IMTK_AUTO, IMTK_AUTO); + imtk_layout_newline(); + + imtk_label("sharpness:", IMTK_AUTO, IMTK_AUTO); + vgn_sharp = imtk_slider(IMUID, vgn_sharp, 0, 10, IMTK_AUTO, IMTK_AUTO); + imtk_layout_newline(); + imtk_end(); } } @@ -117,6 +140,11 @@ static void mbutton(int bn, int st, int x, int y) mouse_y = y; switch(bn) { + case 0: + if(imtk_layout_contains(x, y)) { + imtk_inp_mouse(bn, st); + } + break; case 3: dbg_alpha += 0.1; if(dbg_alpha > 1.0) dbg_alpha = 1.0; @@ -136,6 +164,11 @@ static void mmotion(int x, int y) if(!(dx | dy)) return; + if(imtk_layout_contains(x, y)) { + imtk_inp_motion(x, y); + return; + } + if(bnstate[0]) { cam_theta += dx * 0.5; cam_phi += dy * 0.5;