projects
/
demo
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f1c3197
)
controls for fog to select params
author
Eleni Maria Stea
<estea@igalia.com>
Tue, 22 Aug 2017 15:27:52 +0000
(18:27 +0300)
committer
Eleni Maria Stea
<estea@igalia.com>
Tue, 22 Aug 2017 15:27:52 +0000
(18:27 +0300)
gl_shaders/default.f.glsl
patch
|
blob
|
history
src/main.cc
patch
|
blob
|
history
src/morph_renderer.cc
patch
|
blob
|
history
src/opengl/opengl.cc
patch
|
blob
|
history
src/renderer.cc
patch
|
blob
|
history
src/renderer.h
patch
|
blob
|
history
diff --git
a/gl_shaders/default.f.glsl
b/gl_shaders/default.f.glsl
index
17d4353
..
88f0d69
100644
(file)
--- a/
gl_shaders/default.f.glsl
+++ b/
gl_shaders/default.f.glsl
@@
-11,7
+11,8
@@
varying vec3 normal;
varying vec3 ldir;
varying vec2 tex_coord;
varying vec3 ldir;
varying vec2 tex_coord;
-const float fog_density = 0.005;
+// const float fog_density = 0.005;
+uniform float fog_density;
const vec4 sky_color = vec4(0.35, 0.5, 0.65, 1.0);
out vec4 color;
const vec4 sky_color = vec4(0.35, 0.5, 0.65, 1.0);
out vec4 color;
diff --git
a/src/main.cc
b/src/main.cc
index
1246d2f
..
c48b383
100644
(file)
--- a/
src/main.cc
+++ b/
src/main.cc
@@
-58,6
+58,8
@@
static Vec3 cam_pos;
static float aspect;
static OrbitCamera *camera;
static float aspect;
static OrbitCamera *camera;
+static float fog_density;
+
static Scene *cow_scene;
static Object *cow_object;
static MorphRenderer *cow_rend;
static Scene *cow_scene;
static Object *cow_object;
static MorphRenderer *cow_rend;
@@
-119,6
+121,8
@@
static bool init(Gfx_API api)
if(!gfx_init(api))
return false;
if(!gfx_init(api))
return false;
+ fog_density = 0.0037;
+
sdr_man = new ShaderManager;
camera = new OrbitCamera;
sdr_man = new ShaderManager;
camera = new OrbitCamera;
@@
-223,6
+227,14
@@
static void clbk_key(GLFWwindow *win, int key, int scancode, int action, int mod
move_camera = !move_camera;
break;
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;
}
default:
break;
}
@@
-312,6
+324,8
@@
static void display()
gfx_clear(0.1, 0.1, 0.1);
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);
terrain_rend->draw();
cow_pos.y = terrain.get_height(cow_pos);
diff --git
a/src/morph_renderer.cc
b/src/morph_renderer.cc
index
ae91625
..
42d920d
100644
(file)
--- a/
src/morph_renderer.cc
+++ b/
src/morph_renderer.cc
@@
-13,6
+13,8
@@
MorphRenderer::MorphRenderer()
/* we won't use them */
skytex = 0;
dskytex = 0;
/* we won't use them */
skytex = 0;
dskytex = 0;
+
+ fog_density = 0;
}
MorphRenderer::~MorphRenderer()
}
MorphRenderer::~MorphRenderer()
diff --git
a/src/opengl/opengl.cc
b/src/opengl/opengl.cc
index
367e283
..
844b3ac
100644
(file)
--- a/
src/opengl/opengl.cc
+++ b/
src/opengl/opengl.cc
@@
-41,6
+41,7
@@
bool init_opengl()
gfx_zbuffer = zbuffer;
gfx_cull_face = cull_face;
gfx_zbuffer = zbuffer;
gfx_cull_face = cull_face;
+ // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
return true;
}
return true;
}
diff --git
a/src/renderer.cc
b/src/renderer.cc
index
e383efa
..
b4decc4
100644
(file)
--- a/
src/renderer.cc
+++ b/
src/renderer.cc
@@
-30,6
+30,8
@@
Renderer::Renderer()
skytex = 0;
dskytex = 0;
skytex = 0;
dskytex = 0;
+
+ fog_density = 0;
}
Renderer::~Renderer()
}
Renderer::~Renderer()
@@
-52,6
+54,7
@@
bool Renderer::create()
diff_loc = sprog->get_uniform_location("diffuse");
spec_loc = sprog->get_uniform_location("specular");
shin_loc = sprog->get_uniform_location("shininess");
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 */
/* uniform locations for matrices */
@@
-95,6
+98,9
@@
void Renderer::draw_object(Object *object) const
if(shin_loc != -1)
sprog->set_uniformf(shin_loc, m->shininess);
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)
/* texture */
if(m->dtex)
diff --git
a/src/renderer.h
b/src/renderer.h
index
a14d69c
..
e484767
100644
(file)
--- a/
src/renderer.h
+++ b/
src/renderer.h
@@
-14,6
+14,7
@@
protected:
int shin_loc;
int mmviewproj_loc;
int mview_loc;
int shin_loc;
int mmviewproj_loc;
int mview_loc;
+ int fog_loc;
ShaderProgram *sprog;
ShaderProgram *sprog;
@@
-26,6
+27,8
@@
protected:
virtual void draw_skybox() const;
public:
virtual void draw_skybox() const;
public:
+ float fog_density;
+
Scene *scene;
OrbitCamera *camera;
Scene *scene;
OrbitCamera *camera;