diff --git a/app/node/keying/chromakey/chromakey.cpp b/app/node/keying/chromakey/chromakey.cpp index 4ec11aa5a..abfe25c0f 100644 --- a/app/node/keying/chromakey/chromakey.cpp +++ b/app/node/keying/chromakey/chromakey.cpp @@ -100,7 +100,7 @@ void ChromaKeyNode::Value(const NodeValueRow &value, const NodeGlobals &globals, ColorTransformJob job; job.InsertValue(value); - job.SetInputAlphaAssociation(AlphaAssociated::kAlphaAssociated); + job.SetAlphaChannelRequired(ColorTransformJob::kAlphaForceOn); job.SetColorProcessor(processor()); job.SetInputTexture(value[kTextureInput].data().value()); job.SetNeedsCustomShader(this); diff --git a/app/render/job/colortransformjob.h b/app/render/job/colortransformjob.h index ec826fd66..bbc203226 100644 --- a/app/render/job/colortransformjob.h +++ b/app/render/job/colortransformjob.h @@ -24,7 +24,7 @@ #include #include -#include "render/job/acceleratedjob.h" +#include "render/job/generatejob.h" #include "render/alphaassoc.h" #include "render/colorprocessor.h" #include "render/texture.h" @@ -33,7 +33,7 @@ namespace olive { class Node; -class ColorTransformJob : public AcceleratedJob +class ColorTransformJob : public GenerateJob { public: ColorTransformJob() diff --git a/app/render/renderer.cpp b/app/render/renderer.cpp index 86f95a795..66fb3853b 100644 --- a/app/render/renderer.cpp +++ b/app/render/renderer.cpp @@ -219,10 +219,7 @@ void Renderer::BlitColorManaged(const ColorTransformJob &color_job, Texture *des job.InsertValue(QStringLiteral("ove_cropmatrix"), NodeValue(NodeValue::kMatrix, color_job.GetCropMatrix().inverted())); job.InsertValue(QStringLiteral("ove_maintex_alpha"), NodeValue(NodeValue::kInt, color_job.GetInputAlphaAssociation())); job.InsertValue(color_job.GetValues()); - - //if (color_job.GetInputAlphaAssociation() == AlphaAssociated::kAlphaAssociated) { - job.SetAlphaChannelRequired(GenerateJob::kAlphaForceOn); - //} + job.SetAlphaChannelRequired(color_job.GetAlphaChannelRequired()); foreach (const ColorContext::LUT& l, color_ctx.lut3d_textures) { job.InsertValue(l.name, NodeValue(NodeValue::kTexture, QVariant::fromValue(l.texture))); diff --git a/app/render/renderprocessor.cpp b/app/render/renderprocessor.cpp index 5098ec8d9..d9db25303 100644 --- a/app/render/renderprocessor.cpp +++ b/app/render/renderprocessor.cpp @@ -576,7 +576,11 @@ SampleBufferPtr RenderProcessor::ProcessSamples(const Node *node, const TimeRang TexturePtr RenderProcessor::ProcessColorTransform(const Node *node, const ColorTransformJob &job) { TexturePtr src = job.GetInputTexture(); - TexturePtr dest = render_ctx_->CreateTexture(src->params()); + + VideoParams src_params = src->params(); + src_params.set_channel_count(GetChannelCountFromJob(job)); + + TexturePtr dest = render_ctx_->CreateTexture(src_params); render_ctx_->BlitColorManaged(job, dest.get());