X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fpart_whitted.c;h=658b2ff48bb090283a71ee8d0e4b33fc5c27003c;hb=3a9f6854df479d81442273c9d0b133c49c5c8f66;hp=5b98ad6c259e642c218b9df6ad12306ff756abdc;hpb=62b77ed50ec986237224f6fbb396df13e559f1ab;p=demo_prior diff --git a/src/part_whitted.c b/src/part_whitted.c index 5b98ad6..658b2ff 100644 --- a/src/part_whitted.c +++ b/src/part_whitted.c @@ -2,6 +2,8 @@ #include "demo.h" #include "part.h" #include "sdr.h" +#include "texture.h" +#include "post.h" static int init(void); static void destroy(void); @@ -23,12 +25,16 @@ static struct demo_part part = { mbutton, mmotion }; -static float cam_theta, cam_phi, cam_dist = 8; +static float cam_theta, cam_phi, cam_dist = 6; static int bnstate[8]; static int mouse_x, mouse_y; static unsigned int sdr; +static int uloc_aspect; + +static struct texture *dbgtex; +static float dbg_alpha; void reg_whitted(void) @@ -42,11 +48,16 @@ static int init(void) if(!(sdr = create_program_load("sdr/whitted.v.glsl", "sdr/whitted.p.glsl"))) { return -1; } + uloc_aspect = get_uniform_loc(sdr, "aspect"); + + dbgtex = load_texture("data/dbg_whitted.jpg"); + return 0; } static void destroy(void) { + free_texture(dbgtex); } static void start(void) @@ -71,6 +82,7 @@ static void draw(long tm) glTranslatef(0, 0, cam_dist); glUseProgram(sdr); + glUniform1f(uloc_aspect, win_aspect); glBegin(GL_QUADS); glTexCoord2f(0, 0); @@ -82,6 +94,11 @@ static void draw(long tm) glTexCoord2f(0, 1); glVertex2f(-1, 1); glEnd(); + + if(dbgtex) { + glUseProgram(0); + overlay_tex(dbgtex, dbg_alpha); + } } static void mbutton(int bn, int st, int x, int y) @@ -89,6 +106,16 @@ static void mbutton(int bn, int st, int x, int y) bnstate[bn] = st; mouse_x = x; mouse_y = y; + + switch(bn) { + case 3: + dbg_alpha += 0.1; + if(dbg_alpha > 1.0) dbg_alpha = 1.0; + break; + case 4: + dbg_alpha -= 0.1; + if(dbg_alpha < 0.0) dbg_alpha = 0.0; + } } static void mmotion(int x, int y)