mirror of
https://github.com/MadeOfJelly/MushMachine.git
synced 2024-10-29 22:45:34 +01:00
change blur to allow output to a different buffer then input
This commit is contained in:
parent
9ff0b17a5e
commit
7a461111e1
@ -48,12 +48,13 @@ Blur::~Blur(void) {
|
|||||||
void Blur::render(Services::OpenGLRenderer& rs, Engine&) {
|
void Blur::render(Services::OpenGLRenderer& rs, Engine&) {
|
||||||
ZoneScopedN("MM::OpenGL::RenderTasks::Blur::render");
|
ZoneScopedN("MM::OpenGL::RenderTasks::Blur::render");
|
||||||
|
|
||||||
rs.targets[io_fbo]->bind(FrameBufferObject::W);
|
//rs.targets[io_fbo]->bind(FrameBufferObject::W);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_BLEND); // TODO: test
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
auto& rm_t = MM::ResourceManager<MM::OpenGL::Texture>::ref();
|
auto& rm_t = MM::ResourceManager<MM::OpenGL::Texture>::ref();
|
||||||
auto tex_io = rm_t.get(entt::hashed_string::value(io_tex.c_str())); // TODO: perf problems
|
auto tex_in = rm_t.get(entt::hashed_string::value(in_tex.c_str())); // TODO: perf problems
|
||||||
|
auto tex_out = rm_t.get(entt::hashed_string::value(out_tex.c_str())); // TODO: perf problems
|
||||||
auto tex_temp = rm_t.get(entt::hashed_string::value(temp_tex.c_str())); // TODO: perf problems
|
auto tex_temp = rm_t.get(entt::hashed_string::value(temp_tex.c_str())); // TODO: perf problems
|
||||||
|
|
||||||
{ // horizontal
|
{ // horizontal
|
||||||
@ -64,7 +65,7 @@ void Blur::render(Services::OpenGLRenderer& rs, Engine&) {
|
|||||||
_vao->bind();
|
_vao->bind();
|
||||||
|
|
||||||
glViewport(0, 0, tex_temp->width, tex_temp->height);
|
glViewport(0, 0, tex_temp->width, tex_temp->height);
|
||||||
tex_io->bind(0); // read
|
tex_in->bind(0); // read
|
||||||
|
|
||||||
_hShader->setUniform2f("tex_offset", tex_offset);
|
_hShader->setUniform2f("tex_offset", tex_offset);
|
||||||
|
|
||||||
@ -72,13 +73,13 @@ void Blur::render(Services::OpenGLRenderer& rs, Engine&) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{ // vertical
|
{ // vertical
|
||||||
rs.targets[io_fbo]->bind(FrameBufferObject::W);
|
rs.targets[out_fbo]->bind(FrameBufferObject::W);
|
||||||
|
|
||||||
_vShader->bind();
|
_vShader->bind();
|
||||||
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
||||||
_vao->bind();
|
_vao->bind();
|
||||||
|
|
||||||
glViewport(0, 0, tex_io->width, tex_io->height);
|
glViewport(0, 0, tex_out->width, tex_out->height);
|
||||||
tex_temp->bind(0); // read
|
tex_temp->bind(0); // read
|
||||||
|
|
||||||
_vShader->setUniform2f("tex_offset", tex_offset);
|
_vShader->setUniform2f("tex_offset", tex_offset);
|
||||||
|
@ -35,11 +35,12 @@ namespace MM::OpenGL::RenderTasks {
|
|||||||
const char* fragmentHPath = "shader/blur_render_task/frag_h.glsl";
|
const char* fragmentHPath = "shader/blur_render_task/frag_h.glsl";
|
||||||
const char* fragmentVPath = "shader/blur_render_task/frag_v.glsl";
|
const char* fragmentVPath = "shader/blur_render_task/frag_v.glsl";
|
||||||
|
|
||||||
std::string io_fbo = "blur_io";
|
std::string out_fbo = "blur_io";
|
||||||
std::string temp_fbo = "blur_temp";
|
std::string temp_fbo = "blur_temp";
|
||||||
|
|
||||||
// bc of it beeing a 2 pass, we need to flipflop
|
// bc of it beeing a 2 pass, we need to flipflop
|
||||||
std::string io_tex = "blur_io";
|
std::string in_tex = "blur_io";
|
||||||
|
std::string out_tex = "blur_io";
|
||||||
std::string temp_tex = "blur_temp";
|
std::string temp_tex = "blur_temp";
|
||||||
|
|
||||||
// determines the kernel lookup offset. "ideal" is 1/tex_size
|
// determines the kernel lookup offset. "ideal" is 1/tex_size
|
||||||
|
@ -72,9 +72,10 @@ TEST(blur_render_task, it) {
|
|||||||
bsrr_rend.target_fbo = "blur_io";
|
bsrr_rend.target_fbo = "blur_io";
|
||||||
|
|
||||||
MM::OpenGL::RenderTasks::Blur& blur_rend = rs.addRenderTask<MM::OpenGL::RenderTasks::Blur>(engine);
|
MM::OpenGL::RenderTasks::Blur& blur_rend = rs.addRenderTask<MM::OpenGL::RenderTasks::Blur>(engine);
|
||||||
blur_rend.io_tex = "blur_io";
|
blur_rend.in_tex = "blur_io";
|
||||||
|
blur_rend.out_tex = "blur_io";
|
||||||
blur_rend.temp_tex = "blur_temp";
|
blur_rend.temp_tex = "blur_temp";
|
||||||
blur_rend.io_fbo = "blur_io";
|
blur_rend.out_fbo = "blur_io";
|
||||||
blur_rend.temp_fbo = "blur_temp";
|
blur_rend.temp_fbo = "blur_temp";
|
||||||
|
|
||||||
// render to display
|
// render to display
|
||||||
|
Loading…
Reference in New Issue
Block a user