#include "app.h"
#include "opengl.h"
#include "sdr.h"
+#include "ubersdr.h"
#include "texture.h"
#include "mesh.h"
#include "meshgen.h"
static void draw_scene();
static void toggle_flight();
static void calc_framerate();
+static void prebake_shaders();
long time_msec;
int win_width, win_height;
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);
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");
glLightfv(lt, GL_POSITION, posv);
glLightfv(lt, GL_DIFFUSE, colv);
glLightfv(lt, GL_SPECULAR, colv);
+
+ uber_enable_light(idx);
}
void app_display()
++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();
+}