diff options
| author | 2022-02-12 16:52:03 -0500 | |
|---|---|---|
| committer | 2022-02-12 16:52:03 -0500 | |
| commit | 61794ae259000f1d0e463577d750f9d5ea45ac71 (patch) | |
| tree | 968faf4d5d6df008ed50bd35ea23dc6320f6aff9 /src/objects | |
| parent | 96d9a4f8b0b252a185e7e685fbb7efb446699778 (diff) | |
| download | mauri-61794ae259000f1d0e463577d750f9d5ea45ac71.tar.gz mauri-61794ae259000f1d0e463577d750f9d5ea45ac71.tar.bz2 mauri-61794ae259000f1d0e463577d750f9d5ea45ac71.zip | |
Some uncommitted stuff
Diffstat (limited to 'src/objects')
| -rw-r--r-- | src/objects/effect.cc | 2 | ||||
| -rw-r--r-- | src/objects/material.cc | 2 | ||||
| -rw-r--r-- | src/objects/object.c | 1 | ||||
| -rw-r--r-- | src/objects/object.cc | 4 | ||||
| -rw-r--r-- | src/objects/object.h | 3 | ||||
| -rw-r--r-- | src/objects/pass.cc | 31 | ||||
| -rw-r--r-- | src/objects/pass.h | 3 |
7 files changed, 29 insertions, 17 deletions
diff --git a/src/objects/effect.cc b/src/objects/effect.cc index 283d764..8e61964 100644 --- a/src/objects/effect.cc +++ b/src/objects/effect.cc @@ -59,6 +59,8 @@ void Effect::load(Engine *engine, Object *object, bool last) { Pass pass; + pass.intermidiate = false; + pass.object = object; pass.effect = this; diff --git a/src/objects/material.cc b/src/objects/material.cc index 8b6f493..aae5940 100644 --- a/src/objects/material.cc +++ b/src/objects/material.cc @@ -39,6 +39,8 @@ void Material::load(Engine *engine, Object *object, MaterialType type, Pass *pas case MATERIAL_MODEL: Pass _pass; + _pass.intermidiate = false; + _pass.object = object; _pass.effect = nullptr; diff --git a/src/objects/object.c b/src/objects/object.c deleted file mode 100644 index b498fd4..0000000 --- a/src/objects/object.c +++ /dev/null @@ -1 +0,0 @@ -/ diff --git a/src/objects/object.cc b/src/objects/object.cc index d7d7aaa..bc744d1 100644 --- a/src/objects/object.cc +++ b/src/objects/object.cc @@ -253,9 +253,11 @@ Object::~Object() if (image != nullptr) delete image; - delete gl_object; delete gl_uv_object; + delete gl_object; + delete gl_object_flipped; + for (auto &pass : passes) { delete pass; diff --git a/src/objects/object.h b/src/objects/object.h index 3250b31..eb8ad5a 100644 --- a/src/objects/object.h +++ b/src/objects/object.h @@ -76,9 +76,10 @@ class Object void update(Engine *engine); void draw(Engine *engine); + vec3 origin; + private: vec3 angles; - vec3 origin; vec3 scale; std::string buffer_a; diff --git a/src/objects/pass.cc b/src/objects/pass.cc index f3a3509..e938823 100644 --- a/src/objects/pass.cc +++ b/src/objects/pass.cc @@ -30,9 +30,7 @@ Pass::Pass(Parser &p, json &root, PassStage stage) for (auto &value : _uniforms.items()) { - uniforms.emplace_back( - new UniformOverride({vec4(0.f), value.key()}) - ); + uniforms.emplace_back(new UniformOverride({vec4(0.f), value.key()})); p.get_value<vec4>(_uniforms, value.key(), &uniforms.back()->value, vec4(0.f)); } @@ -42,25 +40,30 @@ Pass::Pass(Parser &p, json &root, PassStage stage) auto _material = root["material"]; if (_material.is_string()) + { material = new Material(p, _material); + } auto _command = root["command"]; - if (_command.is_string()) + if (_command.is_string() && _command == "copy") { - if (_command == "copy") - command = COPY; + command = COPY; } auto _target = root["target"]; if (_target.is_string()) + { target = _target; + } auto _source = root["source"]; if (_source.is_string()) + { source = _source; + } binds[0] = "previous"; @@ -97,6 +100,8 @@ Pass::Pass(Parser &p, json &root, PassStage stage) void Pass::load(Engine *engine, PassStage stage, Pass *pass) { + intermidiate = true; + for (int i = 0; i < MAX_TEXTURES; i++) { if (textures[i].empty()) @@ -156,11 +161,13 @@ Pass::~Pass() if (material != nullptr) delete material; - // TODO: refcounted? - //for (auto &uniform : uniforms) - //{ - // delete uniform; - //} + if (intermidiate) + { + for (auto &uniform : uniforms) + { + delete uniform; + } + } } RenderPass::RenderPass(Engine *engine, Pass *pass) @@ -208,8 +215,6 @@ RenderPass::RenderPass(Engine *engine, Pass *pass) continue; } - texture_types[i] = STATIC; - // Check if texture is referencing a framebuffer. textures[i] = engine->get_framebuffer_texture(pass->textures[i]); diff --git a/src/objects/pass.h b/src/objects/pass.h index cf31ca8..c8d8d0e 100644 --- a/src/objects/pass.h +++ b/src/objects/pass.h @@ -67,6 +67,7 @@ class Pass std::array<std::string, MAX_TEXTURES> binds = {""}; bool combine; + bool intermidiate; std::vector<UniformOverride *> uniforms; std::vector<Combo> combos; @@ -88,7 +89,7 @@ class RenderPass Shader *shader = nullptr; std::array<Texture *, MAX_TEXTURES> textures = {0}; - std::array<TextureType, MAX_TEXTURES> texture_types; + std::array<TextureType, MAX_TEXTURES> texture_types = {STATIC}; void draw(Engine *engine); |