From f46b1245c475df4a529528aa11f5c90f8d478e85 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 10 Dec 2019 00:37:06 +1100 Subject: [PATCH] reduced the output of some nodes Some nodes don't need to provide all their inputs merged as outputs. --- app/node/block/clip/clip.cpp | 13 +++++++++++++ app/node/block/clip/clip.h | 2 ++ app/node/distort/transform/transform.cpp | 2 +- app/node/node.cpp | 4 +--- app/node/value.cpp | 11 +++++++++++ app/node/value.h | 1 + app/render/backend/opengl/openglshader.h | 1 - 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/node/block/clip/clip.cpp b/app/node/block/clip/clip.cpp index 289c0bea8..81ad5173f 100644 --- a/app/node/block/clip/clip.cpp +++ b/app/node/block/clip/clip.cpp @@ -87,3 +87,16 @@ TimeRange ClipBlock::InputTimeAdjustment(NodeInput *input, const TimeRange &inpu return Block::InputTimeAdjustment(input, input_time); } + +NodeValueTable ClipBlock::Value(const NodeValueDatabase &value) const +{ + // We discard most values here except for the buffer we received + NodeValueTable table; + NodeValue data = value[texture_input()].GetWithMeta(NodeParam::kBuffer); + + if (data.type() != NodeParam::kNone) { + table.Push(data); + } + + return table; +} diff --git a/app/node/block/clip/clip.h b/app/node/block/clip/clip.h index 688a2823b..c1fb3c440 100644 --- a/app/node/block/clip/clip.h +++ b/app/node/block/clip/clip.h @@ -46,6 +46,8 @@ public: virtual TimeRange InputTimeAdjustment(NodeInput* input, const TimeRange& input_time) const override; + virtual NodeValueTable Value(const NodeValueDatabase& value) const override; + private: NodeInput* texture_input_; diff --git a/app/node/distort/transform/transform.cpp b/app/node/distort/transform/transform.cpp index 9ae83e576..fba2d2a35 100644 --- a/app/node/distort/transform/transform.cpp +++ b/app/node/distort/transform/transform.cpp @@ -94,7 +94,7 @@ NodeValueTable TransformDistort::Value(const NodeValueDatabase &value) const mat.translate(-value[anchor_input_].Get(NodeParam::kVec2).value()); // Push matrix output - NodeValueTable output = value.Merge(); + NodeValueTable output; output.Push(NodeParam::kMatrix, mat); return output; } diff --git a/app/node/node.cpp b/app/node/node.cpp index 6f0ad9e00..2521aa22e 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -103,10 +103,8 @@ void Node::InvalidateCache(const rational &start_range, const rational &end_rang TimeRange Node::InputTimeAdjustment(NodeInput *input, const TimeRange &input_time) const { - Q_UNUSED(input) - // Default behavior is no time adjustment at all - + Q_UNUSED(input) return input_time; } diff --git a/app/node/value.cpp b/app/node/value.cpp index e3dd9de85..2f5fc11a5 100644 --- a/app/node/value.cpp +++ b/app/node/value.cpp @@ -67,6 +67,17 @@ QVariant NodeValueTable::Get(const NodeParam::DataType &type, const QString &tag return QVariant(); } +NodeValue NodeValueTable::GetWithMeta(const NodeParam::DataType &type, const QString &tag) const +{ + int value_index = GetInternal(type, tag); + + if (value_index >= 0) { + return values_.at(value_index); + } + + return NodeValue(NodeParam::kNone, 0); +} + QVariant NodeValueTable::Take(const NodeParam::DataType &type, const QString &tag) { int value_index = GetInternal(type, tag); diff --git a/app/node/value.h b/app/node/value.h index 9ced3c7f3..2d82276ad 100644 --- a/app/node/value.h +++ b/app/node/value.h @@ -27,6 +27,7 @@ public: NodeValueTable(); QVariant Get(const NodeParam::DataType& type, const QString& tag = QString()) const; + NodeValue GetWithMeta(const NodeParam::DataType& type, const QString& tag = QString()) const; QVariant Take(const NodeParam::DataType& type, const QString& tag = QString()); void Push(const NodeValue& value); void Push(const NodeParam::DataType& type, const QVariant& data, const QString& tag = QString()); diff --git a/app/render/backend/opengl/openglshader.h b/app/render/backend/opengl/openglshader.h index f70de22c2..e9f491f4c 100644 --- a/app/render/backend/opengl/openglshader.h +++ b/app/render/backend/opengl/openglshader.h @@ -33,7 +33,6 @@ public: static QString CodeAlphaAssociate(const QString& function_name); private: - }; #endif // OPENGLSHADER_H