#include "mesh.h"
#include "meshgen.h"
#include "backdrop.h"
+#include "app.h"
+#include "color.h"
static unsigned int sdr_grid;
static Texture *tex_grid;
static Mesh *mesh_skydome;
static unsigned int sdr_skydome;
-static const Vec3 grid_color = Vec3(1.0, 0.3, 1.0);
-static const Vec3 mid_color = Vec3(0.4, 0.1, 0.8);
-static const Vec3 horiz_color = Vec3(0.8, 0.1, 1.0);
-static const Vec3 zenith_color = Vec3(0.2, 0.2, 0.2);
-static const Vec3 fog_color = Vec3(0.12, 0.12, 0.12);
+static Vec3 grid_color;
+static int uloc_grid_color;
bool init_backdrop()
{
+ grid_color = color(1.0, 0.07, 1.0);
+ Vec3 mid_color = color(0.133, 0.006, 0.612);
+ Vec3 horiz_color = color(0.612, 0.006, 1.0);
+ Vec3 zenith_color = color(0.029, 0.029, 0.029);
+ Vec3 fog_color = color(0.01, 0.01, 0.01);
+
if(!(sdr_grid = create_program_load("sdr/grid.v.glsl", "sdr/grid.p.glsl"))) {
return false;
}
+ uloc_grid_color = get_uniform_loc(sdr_grid, "grid_color");
set_uniform_float3(sdr_grid, "grid_color", grid_color.x, grid_color.y, grid_color.z);
set_uniform_float3(sdr_grid, "fog_color", fog_color.x, fog_color.y, fog_color.z);
delete tex_grid;
return false;
}
+ tex_grid->set_anisotropy(glcaps.max_aniso);
mesh_skydome = new Mesh;
- gen_sphere(mesh_skydome, 500.0, 32, 16, 1, 0.5);
+ gen_sphere(mesh_skydome, 100.0, 32, 16, 1, 0.5);
mesh_skydome->flip();
+ glClearColor(fog_color.x, fog_color.y, fog_color.z, 1.0);
+
return true;
}
void draw_backdrop()
{
// draw sky
+ Mat4 view_mat_inf = view_matrix.upper3x3();
+ glPushMatrix();
+ glLoadMatrixf(view_mat_inf[0]);
+
+ glDisable(GL_DEPTH_TEST);
+ glDepthMask(0);
+
bind_program(sdr_skydome);
mesh_skydome->draw();
+ glEnable(GL_DEPTH_TEST);
+ glDepthMask(1);
+
+ glPopMatrix();
+
// draw grid
Mat4 xform;
xform.scaling(500.0);
glMultMatrixf(xform[0]);
bind_program(sdr_grid);
+ float pulse = 1.0 + sin(time_sec * 3.0) * 0.25;
+ glUniform3f(uloc_grid_color, grid_color.x * pulse, grid_color.y * pulse, grid_color.z * pulse);
bind_texture(tex_grid);
glBegin(GL_QUADS);