skytex = 0;
dskytex = 0;
+
+ fog_density = 0;
}
Renderer::~Renderer()
bool Renderer::create()
{
//debug
- if(!(nprog = sdr_man->create_shader_program("debug.v.glsl", "debug.f.glsl"))) {
- fprintf(stderr, "Failed to load debug shaders.\n");
- }
+ // if(!(nprog = sdr_man->create_shader_program("debug.v.glsl", "debug.f.glsl"))) {
+ // fprintf(stderr, "Failed to load debug shaders.\n");
+ // }
if(!(sprog = sdr_man->create_shader_program("default.v.glsl", "default.f.glsl"))) {
return false;
diff_loc = sprog->get_uniform_location("diffuse");
spec_loc = sprog->get_uniform_location("specular");
shin_loc = sprog->get_uniform_location("shininess");
+ fog_loc = sprog->get_uniform_location("fog_density");
/* uniform locations for matrices */
mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
mview_loc = sprog->get_uniform_location("mview");
+ mmod_loc = sprog->get_uniform_location("mmod");
+
+ /* skybox, irradiance map uniforms */
+
+ stex_loc = sprog->get_uniform_location("stex");
+ dstex_loc = sprog->get_uniform_location("dstex");
+
+ if(stex_loc != -1)
+ sprog->set_uniformi(stex_loc, 0);
+
+ if(dstex_loc != -1)
+ sprog->set_uniformi(dstex_loc, 1);
return true;
}
if(skytex) {
draw_skybox();
+
+ if(dskytex) {
+ dskytex->bind(1);
+ }
}
if(!sprog->link())
if(shin_loc != -1)
sprog->set_uniformf(shin_loc, m->shininess);
+ if(fog_loc != -1)
+ sprog->set_uniformf(fog_loc, fog_density);
+
/* texture */
if(m->dtex)
if(mview_loc != -1)
sprog->set_uniform_matrix(mview_loc, mview);
+ Mat4 mmod = object->transform.upper3x3();
+ if(mmod_loc != -1)
+ sprog->set_uniform_matrix(mmod_loc, mmod);
+
object->mesh->draw();
// debug