X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fapp.cc;h=fbd8609db08c68ecf84678fae031b3b356012c23;hb=f8ad31b8b1856784aefdd3457b6b8f5cb5576892;hp=4b2ff2b586576fd352e90e538131c92fd7963992;hpb=82ebd0ea8b766c75fb7226bf72892ffae01f4c11;p=ld37_one_room diff --git a/src/app.cc b/src/app.cc index 4b2ff2b..fbd8609 100644 --- a/src/app.cc +++ b/src/app.cc @@ -4,6 +4,7 @@ #include "app.h" #include "opengl.h" #include "sdr.h" +#include "ubersdr.h" #include "texture.h" #include "mesh.h" #include "meshgen.h" @@ -21,6 +22,7 @@ static void draw_scene(); static void toggle_flight(); static void calc_framerate(); +static void prebake_shaders(); long time_msec; int win_width, win_height; @@ -61,7 +63,7 @@ static unsigned int sdr_post_gamma; static long prev_msec; static BlobExhibit *blobs; -static bool show_blobs = 1; +static bool show_blobs; bool app_init(int argc, char **argv) @@ -97,10 +99,11 @@ bool app_init(int argc, char **argv) glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_NORMALIZE); + glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); Mesh::use_custom_sdr_attr = false; - float ambient[] = {0.0, 0.0, 0.0, 0.0}; + float ambient[] = {0.02, 0.02, 0.02, 0.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); glClearColor(0.1, 0.1, 0.1, 1.0); @@ -120,13 +123,20 @@ bool app_init(int argc, char **argv) blobs->node = new SceneNode; blobs->init(); blobs->node->set_position(Vec3(0, 1, 0)); + blobs->node->set_scaling(Vec3(0.1, 0.1, 0.1)); blobs->node->update(0); + if(uber_init("sdr/uber.v.glsl", "sdr/uber.p.glsl") == -1) { + return false; + } + prebake_shaders(); + /* if(!(sdr_shadow_notex = create_program_load("sdr/shadow.v.glsl", "sdr/shadow-notex.p.glsl"))) { return false; } set_uniform_int(sdr_shadow_notex, "shadowmap", 1); set_uniform_int(sdr_shadow_notex, "envmap", 2); + */ if(!fb_srgb) { sdr_post_gamma = create_program_load("sdr/post_gamma.v.glsl", "sdr/post_gamma.p.glsl"); @@ -281,6 +291,8 @@ static void set_light(int idx, const Vec3 &pos, const Vec3 &color) glLightfv(lt, GL_POSITION, posv); glLightfv(lt, GL_DIFFUSE, colv); glLightfv(lt, GL_SPECULAR, colv); + + uber_enable_light(idx); } void app_display() @@ -318,7 +330,7 @@ void app_display() } else { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - proj_matrix.perspective(deg_to_rad(50.0), win_aspect, NEAR_CLIP, FAR_CLIP); + proj_matrix.perspective(deg_to_rad(60.0), win_aspect, NEAR_CLIP, FAR_CLIP); glMatrixMode(GL_PROJECTION); glLoadMatrixf(proj_matrix[0]); @@ -344,8 +356,8 @@ static void draw_scene() { static const Vec3 lpos[] = { Vec3(-50, 75, 100), Vec3(100, 0, 30), Vec3(-10, -10, 60) }; set_light(0, lpos[0], Vec3(1.0, 0.8, 0.7) * 0.8); - set_light(1, lpos[1], Vec3(0.6, 0.7, 1.0) * 0.6); - set_light(2, lpos[2], Vec3(0.8, 1.0, 0.8) * 0.3); + //set_light(1, lpos[1], Vec3(0.6, 0.7, 1.0) * 0.6); + //set_light(2, lpos[2], Vec3(0.8, 1.0, 0.8) * 0.3); mscn->draw(); if(show_blobs) { @@ -587,3 +599,24 @@ static void calc_framerate() ++nframes; } } + +static void prebake_shaders() +{ + /* + unsigned int prog; + + uber_clear(); + uber_enable_light(0); + uber_enable_light(1); + uber_enable_light(2); + if((prog = uber_program())) { + } + + uber_enable_texmap(); + if((prog = uber_program())) { + set_uniform_int(prog, "texmap", MTL_TEX_DIFFUSE); + } + + uber_clear(); + */ +}