Port light shaft shaders

This commit is contained in:
Vlj 2014-08-12 19:54:26 +02:00
parent 9dd2021f8d
commit 44c03ce99d
3 changed files with 24 additions and 51 deletions

View File

@ -612,20 +612,20 @@ void PostProcessing::renderMotionBlur(unsigned cam, FrameBuffer &in_fbo, FrameBu
static void renderGodFade(GLuint tex, const SColor &col) static void renderGodFade(GLuint tex, const SColor &col)
{ {
glUseProgram(FullScreenShader::GodFadeShader::Program); glUseProgram(FullScreenShader::GodFadeShader::getInstance()->Program);
glBindVertexArray(FullScreenShader::GodFadeShader::vao); glBindVertexArray(FullScreenShader::GodFadeShader::getInstance()->vao);
setTexture(0, tex, GL_LINEAR, GL_LINEAR); setTexture(FullScreenShader::GodFadeShader::getInstance()->TU_tex, tex, GL_LINEAR, GL_LINEAR);
FullScreenShader::GodFadeShader::setUniforms(col, 0); FullScreenShader::GodFadeShader::getInstance()->setUniforms(col);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
} }
static void renderGodRay(GLuint tex, const core::vector2df &sunpos) static void renderGodRay(GLuint tex, const core::vector2df &sunpos)
{ {
glUseProgram(FullScreenShader::GodRayShader::Program); glUseProgram(FullScreenShader::GodRayShader::getInstance()->Program);
glBindVertexArray(FullScreenShader::GodRayShader::vao); glBindVertexArray(FullScreenShader::GodRayShader::getInstance()->vao);
setTexture(0, tex, GL_LINEAR, GL_LINEAR); setTexture(FullScreenShader::GodRayShader::getInstance()->TU_tex, tex, GL_LINEAR, GL_LINEAR);
FullScreenShader::GodRayShader::setUniforms(sunpos, 0); FullScreenShader::GodRayShader::getInstance()->setUniforms(sunpos);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
} }

View File

@ -389,8 +389,6 @@ void Shaders::loadShaders()
FullScreenShader::DiffuseEnvMapShader::init(); FullScreenShader::DiffuseEnvMapShader::init();
FullScreenShader::RHDebug::init(); FullScreenShader::RHDebug::init();
FullScreenShader::MotionBlurShader::init(); FullScreenShader::MotionBlurShader::init();
FullScreenShader::GodFadeShader::init();
FullScreenShader::GodRayShader::init();
FullScreenShader::MLAAColorEdgeDetectionSHader::init(); FullScreenShader::MLAAColorEdgeDetectionSHader::init();
FullScreenShader::MLAABlendWeightSHader::init(); FullScreenShader::MLAABlendWeightSHader::init();
FullScreenShader::MLAAGatherSHader::init(); FullScreenShader::MLAAGatherSHader::init();
@ -2009,48 +2007,28 @@ namespace FullScreenShader
glUniform1i(uniform_dtex, TU_dtex); glUniform1i(uniform_dtex, TU_dtex);
} }
GLuint GodFadeShader::Program; GodFadeShader::GodFadeShader()
GLuint GodFadeShader::uniform_tex;
GLuint GodFadeShader::uniform_col;
GLuint GodFadeShader::vao;
void GodFadeShader::init()
{ {
Program = LoadProgram( Program = LoadProgram(
GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(), GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(),
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/godfade.frag").c_str()); GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/godfade.frag").c_str());
uniform_tex = glGetUniformLocation(Program, "tex"); AssignUniforms("col");
uniform_col = glGetUniformLocation(Program, "col"); TU_tex = 0;
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
vao = createVAO(Program); vao = createVAO(Program);
} }
void GodFadeShader::setUniforms(const SColor &col, unsigned TU_tex) GodRayShader::GodRayShader()
{
glUniform3f(uniform_col, col.getRed() / 255.f, col.getGreen() / 255.f, col.getBlue() / 255.f);
glUniform1i(uniform_tex, TU_tex);
}
GLuint GodRayShader::Program;
GLuint GodRayShader::uniform_tex;
GLuint GodRayShader::uniform_sunpos;
GLuint GodRayShader::vao;
void GodRayShader::init()
{ {
Program = LoadProgram( Program = LoadProgram(
GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(), GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(),
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/godray.frag").c_str()); GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/godray.frag").c_str());
uniform_tex = glGetUniformLocation(Program, "tex"); TU_tex = 0;
uniform_sunpos = glGetUniformLocation(Program, "sunpos"); AssignUniforms("sunpos");
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
vao = createVAO(Program); vao = createVAO(Program);
} }
void GodRayShader::setUniforms(const core::vector2df &sunpos, unsigned TU_tex)
{
glUniform2f(uniform_sunpos, sunpos.X, sunpos.Y);
glUniform1i(uniform_tex, TU_tex);
}
GLuint MLAAColorEdgeDetectionSHader::Program; GLuint MLAAColorEdgeDetectionSHader::Program;
GLuint MLAAColorEdgeDetectionSHader::uniform_colorMapG; GLuint MLAAColorEdgeDetectionSHader::uniform_colorMapG;
GLuint MLAAColorEdgeDetectionSHader::uniform_PIXEL_SIZE; GLuint MLAAColorEdgeDetectionSHader::uniform_PIXEL_SIZE;

View File

@ -146,7 +146,6 @@ protected:
} }
public: public:
friend class Singleton<class ObjectPass1Shader>;
GLuint Program; GLuint Program;
void setUniforms(const Args & ... args) const void setUniforms(const Args & ... args) const
@ -764,26 +763,22 @@ public:
static void setUniforms(float boost_amount, const core::matrix4 &previousVP, const core::vector2df &center, float mask_radius, unsigned TU_cb, unsigned TU_dtex); static void setUniforms(float boost_amount, const core::matrix4 &previousVP, const core::vector2df &center, float mask_radius, unsigned TU_cb, unsigned TU_dtex);
}; };
class GodFadeShader class GodFadeShader : public ShaderHelperSingleton<GodFadeShader, video::SColorf>
{ {
public: public:
static GLuint Program; GLuint TU_tex;
static GLuint uniform_tex, uniform_col; GLuint vao;
static GLuint vao;
static void init(); GodFadeShader();
static void setUniforms(const video::SColor &col, unsigned TU_tex);
}; };
class GodRayShader class GodRayShader : public ShaderHelperSingleton<GodRayShader, core::vector2df>
{ {
public: public:
static GLuint Program; GLuint TU_tex;
static GLuint uniform_tex, uniform_sunpos; GLuint vao;
static GLuint vao;
static void init(); GodRayShader();
static void setUniforms(const core::vector2df &sunpos, unsigned TU_tex);
}; };
class MLAAColorEdgeDetectionSHader class MLAAColorEdgeDetectionSHader