From b4bf57ad5096593f70e6eaed7d4fae67e935c071 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Sat, 7 May 2022 13:55:05 -0700 Subject: [PATCH] update chroma key GetShaderCode sig --- app/node/keying/chromakey/chromakey.cpp | 5 +++-- app/node/keying/chromakey/chromakey.h | 2 +- app/node/node.h | 6 ++++++ app/render/renderer.cpp | 5 ++--- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/node/keying/chromakey/chromakey.cpp b/app/node/keying/chromakey/chromakey.cpp index 6ada34aca..7915d00fa 100644 --- a/app/node/keying/chromakey/chromakey.cpp +++ b/app/node/keying/chromakey/chromakey.cpp @@ -94,9 +94,9 @@ void ChromaKeyNode::InputValueChangedEvent(const QString &input, int element) GenerateProcessor(); } -ShaderCode ChromaKeyNode::GetShaderCode(const QString &) const +ShaderCode ChromaKeyNode::GetShaderCode(const ShaderRequest &request) const { - return ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/chromakey.frag"))); + return ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/chromakey.frag")).arg(request.stub)); } void ChromaKeyNode::GenerateProcessor() @@ -122,6 +122,7 @@ void ChromaKeyNode::Value(const NodeValueRow &value, const NodeGlobals &globals, job.SetInputTexture(value[kTextureInput].data().value()); job.SetNeedsCustomShader(this); job.SetFunctionName(QStringLiteral("SceneLinearToCIEXYZ_d65")); + job.SetOverrideID(id()); table->Push(NodeValue::kTexture, QVariant::fromValue(job), this); } diff --git a/app/node/keying/chromakey/chromakey.h b/app/node/keying/chromakey/chromakey.h index a9ac4ffa0..9feadb736 100644 --- a/app/node/keying/chromakey/chromakey.h +++ b/app/node/keying/chromakey/chromakey.h @@ -37,7 +37,7 @@ class ChromaKeyNode : public OCIOBaseNode { virtual void InputValueChangedEvent(const QString& input, int element) override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals& globals, NodeValueTable* table) const override; virtual void ConfigChanged() override; diff --git a/app/node/node.h b/app/node/node.h index 72c171249..6125dc01c 100644 --- a/app/node/node.h +++ b/app/node/node.h @@ -672,6 +672,12 @@ public: id = shader_id; } + ShaderRequest(const QString &shader_id, const QString &shader_stub) + { + id = shader_id; + stub = shader_stub; + } + QString id; QString stub; }; diff --git a/app/render/renderer.cpp b/app/render/renderer.cpp index 8d8b16a25..2d75ae47f 100644 --- a/app/render/renderer.cpp +++ b/app/render/renderer.cpp @@ -123,14 +123,13 @@ bool Renderer::GetColorContext(const ColorTransformJob &color_job, Renderer::Col ShaderCode code; if (const Node *shader_src = color_job.CustomShaderSource()) { // Use shader code from associated node - code = shader_src->GetShaderCode(color_job.CustomShaderID()); + code = shader_src->GetShaderCode({color_job.CustomShaderID(), shader_desc->getShaderText()}); } else { // Generate shader code using OCIO stub and our auto-generated name code = FileFunctions::ReadFileAsString(QStringLiteral(":shaders/colormanage.frag")); + code.set_frag_code(code.frag_code().arg(shader_desc->getShaderText())); } - code.set_frag_code(code.frag_code().arg(shader_desc->getShaderText())); - // Try to compile shader color_ctx.compiled_shader = CreateNativeShader(code);