controls for fog to select params
[demo] / src / main.cc
index d4d4226..c48b383 100644 (file)
@@ -13,8 +13,8 @@
 /* TODO: fix those */
 #include "camera.h"
 #include "mesh.h"
+#include "morph_renderer.h"
 #include "object.h"
-#include "renderer.h"
 #include "scene.h"
 #include "terrain.h"
 #include "texture.h"
@@ -43,9 +43,10 @@ GLFWwindow *win;
 int win_w = 800;
 int win_h = 600;
 
-
 ShaderManager *sdr_man;
 
+double time_sec;
+
 /* variables */
 static bool move_camera;
 
@@ -57,9 +58,11 @@ static Vec3 cam_pos;
 static float aspect;
 static OrbitCamera *camera;
 
+static float fog_density;
+
 static Scene *cow_scene;
 static Object *cow_object;
-static Renderer *cow_rend;
+static MorphRenderer *cow_rend;
 
 static Terrain terrain;
 static Texture *skybox_tex;
@@ -118,6 +121,8 @@ static bool init(Gfx_API api)
        if(!gfx_init(api))
                return false;
 
+       fog_density = 0.0037;
+
        sdr_man = new ShaderManager;
 
        camera = new OrbitCamera;
@@ -128,7 +133,7 @@ static bool init(Gfx_API api)
                return false;
        }
 
-       cow_rend = new Renderer;
+       cow_rend = new MorphRenderer;
        cow_rend->camera = camera;
        cow_rend->scene = cow_scene;
 
@@ -222,6 +227,14 @@ static void clbk_key(GLFWwindow *win, int key, int scancode, int action, int mod
                        move_camera = !move_camera;
                        break;
 
+               case 'F':
+                       fog_density = fog_density < 1 - 0.0009 ? fog_density + 0.0001 : 1;
+                       break;
+
+               case 'U':
+                       fog_density = fog_density > 0.0001 ? fog_density - 0.0001 : 0;
+                       break;
+
                default:
                        break;
                }
@@ -299,9 +312,9 @@ static void update(float dt)
 static void display()
 {
        static float prev_tsec;
-       float tsec = glfwGetTime();
-       float dt = tsec - prev_tsec;
-       prev_tsec = tsec;
+       time_sec = glfwGetTime();
+       float dt = time_sec - prev_tsec;
+       prev_tsec = time_sec;
 
        update(dt);
 
@@ -311,6 +324,8 @@ static void display()
 
        gfx_clear(0.1, 0.1, 0.1);
 
+       printf("fog_density: %f\n", fog_density);
+       terrain_rend->fog_density = fog_density;
        terrain_rend->draw();
 
        cow_pos.y = terrain.get_height(cow_pos);