diff options
56 files changed, 74 insertions, 43 deletions
diff --git a/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx b/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx Binary files differdeleted file mode 100644 index 2730c7a..0000000 --- a/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx +++ /dev/null diff --git a/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx b/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx Binary files differdeleted file mode 100644 index f1c956a..0000000 --- a/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx +++ /dev/null diff --git a/.cache/clangd/index/context.cc.29D2991336B691E0.idx b/.cache/clangd/index/context.cc.29D2991336B691E0.idx Binary files differdeleted file mode 100644 index e6b4144..0000000 --- a/.cache/clangd/index/context.cc.29D2991336B691E0.idx +++ /dev/null diff --git a/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx b/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx Binary files differdeleted file mode 100644 index 54755a6..0000000 --- a/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx +++ /dev/null diff --git a/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx b/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx Binary files differdeleted file mode 100644 index 403b43b..0000000 --- a/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx +++ /dev/null diff --git a/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx b/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx Binary files differdeleted file mode 100644 index 26f69e6..0000000 --- a/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx +++ /dev/null diff --git a/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx b/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx Binary files differdeleted file mode 100644 index c2faa31..0000000 --- a/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx +++ /dev/null diff --git a/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx b/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx Binary files differdeleted file mode 100644 index 108b106..0000000 --- a/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx +++ /dev/null diff --git a/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx b/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx Binary files differdeleted file mode 100644 index ec77f00..0000000 --- a/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx +++ /dev/null diff --git a/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx b/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx Binary files differdeleted file mode 100644 index 2a2bc62..0000000 --- a/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx +++ /dev/null diff --git a/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx b/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx Binary files differdeleted file mode 100644 index 3f98e4e..0000000 --- a/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx +++ /dev/null diff --git a/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx b/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx Binary files differdeleted file mode 100644 index 5fbd31d..0000000 --- a/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx +++ /dev/null diff --git a/.cache/clangd/index/engine.h.0BA065D269C810C5.idx b/.cache/clangd/index/engine.h.0BA065D269C810C5.idx Binary files differdeleted file mode 100644 index 3d7d200..0000000 --- a/.cache/clangd/index/engine.h.0BA065D269C810C5.idx +++ /dev/null diff --git a/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx b/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx Binary files differdeleted file mode 100644 index dcb0b26..0000000 --- a/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx +++ /dev/null diff --git a/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx b/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx Binary files differdeleted file mode 100644 index 6ea77f4..0000000 --- a/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx +++ /dev/null diff --git a/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx b/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx Binary files differdeleted file mode 100644 index 7e37a92..0000000 --- a/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx +++ /dev/null diff --git a/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx b/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx Binary files differdeleted file mode 100644 index 6937f27..0000000 --- a/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx +++ /dev/null diff --git a/.cache/clangd/index/gl.h.4110C3685F72B241.idx b/.cache/clangd/index/gl.h.4110C3685F72B241.idx Binary files differdeleted file mode 100644 index 7630949..0000000 --- a/.cache/clangd/index/gl.h.4110C3685F72B241.idx +++ /dev/null diff --git a/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx b/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx Binary files differdeleted file mode 100644 index 2e926b4..0000000 --- a/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx +++ /dev/null diff --git a/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx b/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx Binary files differdeleted file mode 100644 index 08803a7..0000000 --- a/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx +++ /dev/null diff --git a/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx b/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx Binary files differdeleted file mode 100644 index b67b9b8..0000000 --- a/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx +++ /dev/null diff --git a/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx b/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx Binary files differdeleted file mode 100644 index cd2a885..0000000 --- a/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx +++ /dev/null diff --git a/.cache/clangd/index/material.cc.8E7E7195608167B3.idx b/.cache/clangd/index/material.cc.8E7E7195608167B3.idx Binary files differdeleted file mode 100644 index f12b76c..0000000 --- a/.cache/clangd/index/material.cc.8E7E7195608167B3.idx +++ /dev/null diff --git a/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx b/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx Binary files differdeleted file mode 100644 index 66971b8..0000000 --- a/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx +++ /dev/null diff --git a/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx b/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx Binary files differdeleted file mode 100644 index e7565b6..0000000 --- a/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx +++ /dev/null diff --git a/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx b/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx Binary files differdeleted file mode 100644 index 4d0be3a..0000000 --- a/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx +++ /dev/null diff --git a/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx b/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx Binary files differdeleted file mode 100644 index af773b0..0000000 --- a/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx +++ /dev/null diff --git a/.cache/clangd/index/object.cc.35629F50251FA494.idx b/.cache/clangd/index/object.cc.35629F50251FA494.idx Binary files differdeleted file mode 100644 index ba6f662..0000000 --- a/.cache/clangd/index/object.cc.35629F50251FA494.idx +++ /dev/null diff --git a/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx b/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx Binary files differdeleted file mode 100644 index 6866ffa..0000000 --- a/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx +++ /dev/null diff --git a/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx b/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx Binary files differdeleted file mode 100644 index 0a67bec..0000000 --- a/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx +++ /dev/null diff --git a/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx b/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx Binary files differdeleted file mode 100644 index 324c7e4..0000000 --- a/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx +++ /dev/null diff --git a/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx b/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx Binary files differdeleted file mode 100644 index cb6ed2b..0000000 --- a/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx +++ /dev/null diff --git a/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx b/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx Binary files differdeleted file mode 100644 index 168dc10..0000000 --- a/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx +++ /dev/null diff --git a/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx b/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx Binary files differdeleted file mode 100644 index 3df65a1..0000000 --- a/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx +++ /dev/null diff --git a/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx b/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx Binary files differdeleted file mode 100644 index 542831b..0000000 --- a/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx +++ /dev/null diff --git a/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx b/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx Binary files differdeleted file mode 100644 index b1f5e3c..0000000 --- a/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx +++ /dev/null diff --git a/.cache/clangd/index/shader.h.1B848452B04B0F75.idx b/.cache/clangd/index/shader.h.1B848452B04B0F75.idx Binary files differdeleted file mode 100644 index 96569e3..0000000 --- a/.cache/clangd/index/shader.h.1B848452B04B0F75.idx +++ /dev/null diff --git a/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx b/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx Binary files differdeleted file mode 100644 index 1fdaa67..0000000 --- a/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx +++ /dev/null diff --git a/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx b/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx Binary files differdeleted file mode 100644 index db4a36d..0000000 --- a/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx +++ /dev/null diff --git a/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx b/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx Binary files differdeleted file mode 100644 index e292f95..0000000 --- a/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx +++ /dev/null diff --git a/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx b/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx Binary files differdeleted file mode 100644 index 6ec2c14..0000000 --- a/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx +++ /dev/null diff --git a/.cache/clangd/index/util.h.7065F6174EA563A6.idx b/.cache/clangd/index/util.h.7065F6174EA563A6.idx Binary files differdeleted file mode 100644 index 43c4f73..0000000 --- a/.cache/clangd/index/util.h.7065F6174EA563A6.idx +++ /dev/null diff --git a/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx b/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx Binary files differdeleted file mode 100644 index f8edd04..0000000 --- a/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx +++ /dev/null diff --git a/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx b/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx Binary files differdeleted file mode 100644 index abf148e..0000000 --- a/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx +++ /dev/null @@ -1,4 +1,3 @@ build*/ compile_commands.json -.clangd/ .cache/ @@ -3,7 +3,7 @@ cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" WALLPAPERS_PATH=../../c/workshop_wallpapers -BUILD_DIR=build-release +BUILD_DIR=build-debug export mesa_glthread=true diff --git a/src/engine.cc b/src/engine.cc index a49851d..c52a6de 100644 --- a/src/engine.cc +++ b/src/engine.cc @@ -117,7 +117,6 @@ void Engine::create_framebuffer(const std::string &name, f32 width, f32 height, void Engine::update() { context->process_input(); - time = context->current_time(); context->cursor_pos(&view.cursor_pos[0], &view.cursor_pos[1]); @@ -76,7 +76,6 @@ RenderObject::RenderObject(RenderObjType type, f32 width, f32 height) // the UV cuts out the padding used to make the texture dimensions powers of two. f32 x_scale = width / (f32)next_power_of_two(width); f32 y_scale = height / (f32)next_power_of_two(height); - f32 vertices[] = { -width, height, 0.f, 0.f, y_scale, width, -height, 0.f, x_scale, 0.f, diff --git a/src/objects/effect.cc b/src/objects/effect.cc index fe3fbbe..283d764 100644 --- a/src/objects/effect.cc +++ b/src/objects/effect.cc @@ -50,8 +50,7 @@ void Effect::load(Engine *engine, Object *object, bool last) for (auto &fbo : fbos) { - engine->create_framebuffer(fbo.name + buffer_id, object->size[0], - object->size[1], fbo.scale); + engine->create_framebuffer(fbo.name + buffer_id, object->size[0], object->size[1], fbo.scale); } u32 index = 0; @@ -63,7 +62,7 @@ void Effect::load(Engine *engine, Object *object, bool last) pass.object = object; pass.effect = this; - pass.combine = i == (passes1.size() - 1) && last; + pass.combine = object->visible && i == (passes1.size() - 1) && last; if (passes1[i]->command != COPY) { diff --git a/src/objects/material.cc b/src/objects/material.cc index 6efa2d0..8b6f493 100644 --- a/src/objects/material.cc +++ b/src/objects/material.cc @@ -42,7 +42,8 @@ void Material::load(Engine *engine, Object *object, MaterialType type, Pass *pas _pass.object = object; _pass.effect = nullptr; - if (object->effects.size() == 0 && !object->passthrough) + if (object->effects.size() == 0 + && !object->passthrough && object->visible) _pass.combine = true; else _pass.combine = false; diff --git a/src/objects/object.cc b/src/objects/object.cc index 8e6cc3d..a0e4485 100644 --- a/src/objects/object.cc +++ b/src/objects/object.cc @@ -1,3 +1,5 @@ +#include <cstdlib> +#include <forward_list> #include <glm/fwd.hpp> #include <glm/trigonometric.hpp> @@ -25,6 +27,32 @@ Object::Object(Parser &p, json &root) for (auto &id : root["dependencies"]) deps.push_back(id); + // Filter deps that are either the same as this objects + // id or repeated. This could be handled be sorting objects + // on the scene in order of deps but I'm not sure if that would + // break other things. + for (auto it = deps.begin(); it != deps.end();) + { + bool remove = false; + + if (*it == id) + { + remove = true; + } + + for (auto rt = deps.begin(); rt != deps.end(); ++rt) + { + if (rt != it && *rt == *it) + { + remove = true; + break; + } + } + + if (remove) deps.erase(it); + else it++; + } + p.get_value<vec3>(root, "angles", &angles, vec3(0.f)); p.get_value<vec3>(root, "color", &color, vec3(0.f)); p.get_value<vec2>(root, "size", &size, vec2(0.f)); @@ -67,7 +95,6 @@ void Object::get_model(f32 width, f32 height, bool flip) model = glm::scale(model, scale); - //mat4x4 _ortho = glm::ortho(-width, width, height, -height, 0.0099999997764825821f, 10000.f); mat4x4 _ortho = glm::ortho(-width, width, height, -height, 0.f, 1.f); if (flip) @@ -80,25 +107,27 @@ void Object::get_model(f32 width, f32 height, bool flip) void Object::load(Engine *engine) { - if (loaded) + if (loaded_as_dep) return; - + for (auto &dep : deps) { - if (dep == id) - continue; - auto dep_object = engine->scene->get_object_by_id(dep); - if (dep_object != nullptr) - dep_object->load(engine); + auto object = engine->scene->get_object_by_id(dep); + object->load(engine); + object->loaded_as_dep = true; } if (image != nullptr) { if (image->passthrough) + { passthrough = true; + } if (image->fullscreen) + { fullscreen = true; + } if (image->width != 0.f && image->height != 0.f) { @@ -143,7 +172,7 @@ void Object::load(Engine *engine) { // Get last effect that is visible // to know when to make a combine pass. - Effect *last_effect = effects[0]; + Effect *last_effect = nullptr; for (auto &effect : effects) { @@ -153,26 +182,32 @@ void Object::load(Engine *engine) } } - for (auto &effect : effects) + if (last_effect != nullptr) + { + for (auto &effect : effects) + { + effect->load(engine, this, effect == last_effect); + } + } + else if (visible) { - effect->load(engine, this, effect == last_effect); + // If there are effects but no visible effects, make sure + // combine is set on the background pass. + this->passes.back()->combine = true; } } - - loaded = true; } void Object::update(Engine *engine) { - //if (engine->time > this->shake_tick) - //{ - //} } void Object::draw(Engine *engine) { - if (!visible) - return; + for (auto &dep : deps) + { + engine->scene->get_object_by_id(dep)->draw(engine); + } #if FRAME_STEP std::cout << name << " (model):\n"; diff --git a/src/objects/object.h b/src/objects/object.h index 47fe2cc..5ca7702 100644 --- a/src/objects/object.h +++ b/src/objects/object.h @@ -67,15 +67,14 @@ class Object std::vector<Effect *> effects; + bool loaded_as_dep = false; + void load(Engine *engine); void update(Engine *engine); void draw(Engine *engine); private: - Model *image = nullptr; - vec3 angles; - vec3 origin; vec3 scale; @@ -84,7 +83,7 @@ class Object bool buffer_switch = false; - bool loaded = false; + Model *image = nullptr; }; } // namespace Mauri diff --git a/src/objects/pass.h b/src/objects/pass.h index b84fbf3..75e5563 100644 --- a/src/objects/pass.h +++ b/src/objects/pass.h @@ -77,6 +77,8 @@ class RenderPass RenderPass(Engine *engine, Pass *pass); ~RenderPass(); + bool combine; + Shader *shader = nullptr; void draw(Engine *engine); @@ -92,8 +94,6 @@ class RenderPass mat4x4 *model; RenderObject *robject; - bool combine; - std::array<Texture *, MAX_TEXTURES> textures = {0}; }; diff --git a/src/objects/scene.cc b/src/objects/scene.cc index d3819dc..97b9f58 100644 --- a/src/objects/scene.cc +++ b/src/objects/scene.cc @@ -75,6 +75,8 @@ void Scene::draw(Engine *engine) { for (auto &object : objects) { + if (object->loaded_as_dep) + continue; object->draw(engine); } } diff --git a/src/texture.cc b/src/texture.cc index 8ef1ae3..f147472 100644 --- a/src/texture.cc +++ b/src/texture.cc @@ -26,8 +26,10 @@ Texture::Texture(Asset *asset) { hash = asset->hash; - auto type = asset->reads(9); - auto itype = asset->reads(9); + //auto type = asset->reads(9); + //auto itype = asset->reads(9); + + asset->seek(18); auto format = (TextureFormat)asset->read<u32>(); @@ -116,9 +118,10 @@ Texture::Texture(Asset *asset) { switch (format) { - case RGBA8888: + case RGBA8888: { _texture->upload(buffer, mwidth, mheight, i, GL_RGBA, true); break; + } case DXT5: { auto decompressed = new u32[decompressed_byte_count]; BlockDecompressImageDXT5(mwidth, mheight, buffer, decompressed); @@ -199,14 +202,6 @@ Texture::Texture(Asset *asset) } } - for (auto &frame : frames) - { - //std::cout << frame.id << "\n"; - //std::cout << frame.x << " " << frame.y << "\n"; - //std::cout << frame.frame_time << "\n"; - //std::cout << frame.unknown0 << " " << frame.unknown1 << "\n"; - } - asset->reset(); } diff --git a/src/visualizer.cc b/src/visualizer.cc index a76c613..e4da2bf 100644 --- a/src/visualizer.cc +++ b/src/visualizer.cc @@ -6,6 +6,7 @@ #include <utility> #include "assets.h" +#include "gst/gstbuffer.h" #include "gst/gstcaps.h" #include "gst/gstelement.h" #include "gst/gstmemory.h" @@ -190,6 +191,8 @@ void Visualizer::update_sample() fftw_execute(p_left); fftw_execute(p_right); + gst_sample_unref(sample); + g_mutex_unlock(&mutex); } |