- end_shadow_pass();
-
- // regular pass
- const Mat4 &shadow_matrix = get_shadow_matrix();
- Mat4 env_matrix = transpose(view_matrix.upper3x3());
- set_uniform_matrix4(sdr_shadow_notex, "envmap_matrix", env_matrix[0]);
-
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, get_shadow_tex());
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf(shadow_matrix[0]);
-
- glActiveTexture(GL_TEXTURE2);
- glBindTexture(GL_TEXTURE_CUBE_MAP, envmap->get_id());
-
- glActiveTexture(GL_TEXTURE0);
- glMatrixMode(GL_MODELVIEW);
-
- draw_scene();
-
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
-
-
- if(dbg_show_shadowmap) {
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
-
- glPushAttrib(GL_ENABLE_BIT);
- glUseProgram(0);
- glBindTexture(GL_TEXTURE_2D, get_shadow_tex());
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
- glEnable(GL_TEXTURE_2D);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
- glDisable(GL_BLEND);
-
- glBegin(GL_QUADS);
- glColor4f(1, 1, 1, 1);
- glTexCoord2f(0, 0); glVertex2f(-0.95, -0.95);
- glTexCoord2f(1, 0); glVertex2f(-0.5, -0.95);
- glTexCoord2f(1, 1); glVertex2f(-0.5, -0.5);
- glTexCoord2f(0, 1); glVertex2f(-0.95, -0.5);
- glEnd();
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
- glBindTexture(GL_TEXTURE_2D, 0);
-
- glPopAttrib();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
- }
-