From: <geo...@us...> - 2009-04-19 17:52:39
|
Revision: 2991 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=2991&view=rev Author: geoffthemedio Date: 2009-04-19 17:52:29 +0000 (Sun, 19 Apr 2009) Log Message: ----------- -Added a fragment shader that produces lines resembling horizontal scanlines, to be used for map fog of war -Changed a define to a function to check for errors in ShaderProgram Modified Paths: -------------- trunk/FreeOrion/UI/ShaderProgram.cpp Added Paths: ----------- trunk/FreeOrion/default/shaders/ trunk/FreeOrion/default/shaders/scanlines.frag Modified: trunk/FreeOrion/UI/ShaderProgram.cpp =================================================================== --- trunk/FreeOrion/UI/ShaderProgram.cpp 2009-04-19 12:42:41 UTC (rev 2990) +++ trunk/FreeOrion/UI/ShaderProgram.cpp 2009-04-19 17:52:29 UTC (rev 2991) @@ -9,21 +9,17 @@ #include <fstream> -#ifdef NDEBUG -# define CHECK_ERROR(fn, e) -#else -# define CHECK_ERROR(fn, e) \ - if ((error = glGetError()) != GL_NO_ERROR) { \ - std::cerr << fn " () :" \ - << " GL error on " e ": " \ - << "'" << gluErrorString(error) << "'" \ - << std::endl; \ +namespace { + void CHECK_ERROR(const char* fn, const char* e) { + GLenum error = glGetError(); + if (error != GL_NO_ERROR) { + std::cerr << fn << " () :" + << " GL error on " << e << ": " + << "'" << gluErrorString(error) << "'" + << std::endl; + } } -#endif -namespace { - GLenum error; - void GetShaderLog(GLuint shader, std::string& log) { log.clear(); int logSize; @@ -56,10 +52,8 @@ std::string retval; std::ifstream ifs(filename.c_str()); int c; - while ((c = ifs.get()) != std::ifstream::traits_type::eof()) { + while ((c = ifs.get()) != std::ifstream::traits_type::eof()) retval += c; - } - std::cout << "ReadFile: " << std::endl << retval << std::endl; return retval; } Added: trunk/FreeOrion/default/shaders/scanlines.frag =================================================================== --- trunk/FreeOrion/default/shaders/scanlines.frag (rev 0) +++ trunk/FreeOrion/default/shaders/scanlines.frag 2009-04-19 17:52:29 UTC (rev 2991) @@ -0,0 +1,13 @@ + +// GLSL fragment shader that draws horizontal scanlines +uniform float scanline_spacing; // distance between repetitions of pattern + +const vec4 half_gray = vec4(0.0, 0.0, 0.0, 0.5); // darkened pixels +const vec4 transparent = vec4(1.0, 1.0, 1.0, 0.0); // undarkened pixels + +void main() { + if (mod(gl_FragCoord.y, scanline_spacing) >= (scanline_spacing / 2.0)) + gl_FragColor = half_gray; + else + gl_FragColor = transparent; +} \ No newline at end of file |