#include "material.h"
#include "sdr.h"
#include "app.h"
+#include "ubersdr.h"
Material::Material()
: diffuse(1.0f, 1.0f, 1.0f)
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, ks);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
- int ntex = std::min((int)textures.size(), 8); // TODO: use max texture units
- for(int i=0; i<ntex; i++) {
- bind_texture(textures[i], i);
+ for(int i=0; i<NUM_MTL_TEXTURES; i++) {
+ bind_texture(stdtex[i], i);
}
- /*
- if(stdtex[MTL_TEX_LIGHTMAP]) {
- bind_program(stdtex[MTL_TEX_DIFFUSE] ? sdr_ltmap : sdr_ltmap_notex);
+ if(stdtex[MTL_TEX_DIFFUSE]) {
+ uber_enable_texmap();
+ } else {
+ uber_disable_texmap();
+ }
+ if(stdtex[MTL_TEX_ENVMAP] && stdtex[MTL_TEX_ENVMAP]->get_type() == TEX_CUBE) {
+ uber_enable_cubemap();
+ } else {
+ uber_disable_cubemap();
}
- */
+ if(stdtex[MTL_TEX_ENVMAP] && stdtex[MTL_TEX_ENVMAP]->get_type() == TEX_2D) {
+ uber_enable_sphmap();
+ } else {
+ uber_disable_sphmap();
+ }
+ /* TODO shadows */
+
+ unsigned int sdrprog = uber_program();
+ bind_program(sdrprog);
}
void Material::add_texture(Texture *tex, int type)