#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const char* argv0; TEST(blur_render_task, it) { MM::Engine engine; auto& sdl_ss = engine.addService(); ASSERT_TRUE(engine.enableService()); sdl_ss.createGLWindow("blur_render_task_test", 1280, 720); engine.addService(); ASSERT_TRUE(engine.enableService()); bool provide_ret = engine.provide(); ASSERT_TRUE(provide_ret); auto& scene = engine.tryService()->getScene(); engine.addService(argv0, "blur_render_task_test"); ASSERT_TRUE(engine.enableService()); engine.addService(); ASSERT_TRUE(engine.enableService()); auto& rs = engine.addService(); ASSERT_TRUE(engine.enableService()); rs.addRenderTask(engine).target_fbo = "game_view"; MM::OpenGL::RenderTasks::SimpleRect* bsrr_rend_ptr = &rs.addRenderTask(engine); bsrr_rend_ptr->target_fbo = "blur_in"; MM::OpenGL::RenderTasks::Blur* blur_rend_ptr = &rs.addRenderTask(engine); blur_rend_ptr->target_fbo = "display"; rs.addRenderTask(engine); { auto [w, h] = sdl_ss.getWindowSize(); rs.targets["game_view"] = MM::OpenGL::FBOBuilder::start() .attachTexture(MM::OpenGL::Texture::createEmpty(GL_RGB, w, h, GL_RGB, GL_UNSIGNED_BYTE)) .finish(); rs.targets["blur_in"] = MM::OpenGL::FBOBuilder::start() .attachTexture(MM::OpenGL::Texture::createEmpty(GL_RGB, w, h, GL_RGB, GL_UNSIGNED_BYTE)) .finish(); rs.targets["blur_out"] = MM::OpenGL::FBOBuilder::start() .attachTexture(MM::OpenGL::Texture::createEmpty(GL_RGB, w, h, GL_RGB, GL_UNSIGNED_BYTE)) .finish(); } // setup v system MM::AddSystemToScene(scene, MM::Systems::SimpleVelocity); std::mt19937 mt(42); for (int i = 0; i < 10; i++) { auto e = scene.create(); auto& t = scene.emplace(e); t.position.x = i * 9.f - 40; t.scale = {5,5}; auto& v = scene.emplace(e); v.rotation = i * 0.3f; if (mt() % 2) { auto& col = scene.emplace(e); auto rc = [&mt]() -> float { return (mt() % 1001) / 1000.f ; }; col.color = {rc(),rc(),rc(),1}; } } engine.addUpdate( [&](MM::Engine&) { ImGui::ColorEdit4("rect_col", &bsrr_rend_ptr->default_color[0]); } ); engine.run(); } int main(int argc, char** argv) { argv0 = argv[0]; ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }