added support for multiple node iterations

Optimizes various effects, particularly blurs.
This commit is contained in:
itsmattkc
2019-12-15 00:39:28 +11:00
parent 23905f1eee
commit 0b7782e129
16 changed files with 82 additions and 30 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ bool AlphaOverBlend::IsAccelerated() const
return true;
}
QString AlphaOverBlend::CodeFragment() const
QString AlphaOverBlend::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/alphaover.frag");
}
+1 -1
View File
@@ -35,7 +35,7 @@ public:
virtual QString Description() const override;
virtual bool IsAccelerated() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeFragment() const override;
protected:
@@ -29,7 +29,7 @@ bool CrossDissolveTransition::IsAccelerated() const
return true;
}
QString CrossDissolveTransition::CodeFragment() const
QString CrossDissolveTransition::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/crossdissolve.frag");
}
@@ -15,7 +15,7 @@ public:
virtual QString Description() const override;
virtual bool IsAccelerated() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeFragment() const override;
};
#endif // CROSSDISSOLVETRANSITION_H
@@ -29,7 +29,7 @@ bool DipToBlackTransition::IsAccelerated() const
return true;
}
QString DipToBlackTransition::CodeFragment() const
QString DipToBlackTransition::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/diptoblack.frag");
}
@@ -15,7 +15,7 @@ public:
virtual QString Description() const override;
virtual bool IsAccelerated() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeFragment() const override;
};
#endif // DIPTOBLACKTRANSITION_H
+1 -1
View File
@@ -70,7 +70,7 @@ bool OpacityNode::IsAccelerated() const
return true;
}
QString OpacityNode::CodeFragment() const
QString OpacityNode::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/opacity.frag");
}
+1 -1
View File
@@ -40,7 +40,7 @@ public:
virtual void Retranslate() override;
virtual bool IsAccelerated() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeFragment() const override;
NodeInput* texture_input() const;
+1 -1
View File
@@ -58,7 +58,7 @@ bool SolidGenerator::IsAccelerated() const
return true;
}
QString SolidGenerator::CodeFragment() const
QString SolidGenerator::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/solid.frag");
}
+1 -1
View File
@@ -42,7 +42,7 @@ public:
virtual QString Description() const override;
virtual bool IsAccelerated() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeFragment() const override;
virtual void Retranslate() override;
+2 -2
View File
@@ -51,12 +51,12 @@ bool VideoInput::IsAccelerated() const
return true;
}
QString VideoInput::CodeVertex() const
QString VideoInput::AcceleratedCodeVertex() const
{
return ReadFileAsString(":/shaders/videoinput.vert");
}
QString VideoInput::CodeFragment() const
QString VideoInput::AcceleratedCodeFragment() const
{
return ReadFileAsString(":/shaders/videoinput.frag");
}
+2 -2
View File
@@ -21,8 +21,8 @@ public:
NodeInput* matrix_input() const;
virtual bool IsAccelerated() const override;
virtual QString CodeVertex() const override;
virtual QString CodeFragment() const override;
virtual QString AcceleratedCodeVertex() const override;
virtual QString AcceleratedCodeFragment() const override;
virtual void Retranslate() override;
+12 -2
View File
@@ -370,16 +370,26 @@ bool Node::IsAccelerated() const
return false;
}
QString Node::CodeVertex() const
QString Node::AcceleratedCodeVertex() const
{
return QString();
}
QString Node::CodeFragment() const
QString Node::AcceleratedCodeFragment() const
{
return QString();
}
int Node::AcceleratedCodeIterations() const
{
return 1;
}
NodeInput *Node::AcceleratedCodeIterativeInput() const
{
return nullptr;
}
NodeParam *Node::GetParameterWithID(const QString &id) const
{
foreach (NodeParam* param, params_) {
+14 -2
View File
@@ -137,12 +137,24 @@ public:
/**
* @brief Generate hardware accelerated code for this Node
*/
virtual QString CodeVertex() const;
virtual QString AcceleratedCodeVertex() const;
/**
* @brief Generate hardware accelerated code for this Node
*/
virtual QString CodeFragment() const;
virtual QString AcceleratedCodeFragment() const;
/**
* @brief Number of iterations to run the accelerated code
*
* Some code is faster if it's merely repeated on a resulting texture rather than run once on the same buffer.
*/
virtual int AcceleratedCodeIterations() const;
/**
* @brief Parameter that should receive the buffer on an iteration past the first
*/
virtual NodeInput* AcceleratedCodeIterativeInput() const;
/**
* @brief Returns the parameter with the specified ID (or nullptr if it doesn't exist)