diff --git a/app/node/color/displaytransform/displaytransform.cpp b/app/node/color/displaytransform/displaytransform.cpp index dcaed76d0..66f7ebb82 100644 --- a/app/node/color/displaytransform/displaytransform.cpp +++ b/app/node/color/displaytransform/displaytransform.cpp @@ -37,8 +37,11 @@ void DisplayTransformNode::GenerateProcessor(bool direction) if (!project()) { return; } + qDebug() << project()->color_manager()->GetReferenceColorSpace() << project()->color_manager()->GetDefaultDisplay(); + + ColorTransform transform("sRGB OETF"); reference_to_display_ = ColorProcessor::Create(project()->color_manager(), project()->color_manager()->GetReferenceColorSpace(), - project()->color_manager()->GetDefaultDisplay()); + transform); // Create shader description shader_desc_ = OCIO::GpuShaderDesc::CreateShaderDesc(); @@ -83,6 +86,14 @@ void DisplayTransformNode::Retranslate() GenerateProcessor(true); } +void DisplayTransformNode::InputValueChangedEvent(const QString& input, int element) +{ + Q_UNUSED(element); + if (input == kDirectionInput) { + GenerateProcessor(true); + } +} + ShaderCode DisplayTransformNode::GetShaderCode(const QString &shader_id) const { Q_UNUSED(shader_id) diff --git a/app/node/color/displaytransform/displaytransform.h b/app/node/color/displaytransform/displaytransform.h index 4975d49b7..485bd0171 100644 --- a/app/node/color/displaytransform/displaytransform.h +++ b/app/node/color/displaytransform/displaytransform.h @@ -36,6 +36,7 @@ class DisplayTransformNode : public OCIONodeBase { virtual QString Description() const override; virtual void Retranslate() override; + virtual void InputValueChangedEvent(const QString &input, int element) override; virtual ShaderCode GetShaderCode(const QString &shader_id) const override; virtual void Value(const NodeValueRow &value, const NodeGlobals &globals, NodeValueTable *table) const override; diff --git a/app/node/color/ociobase/ociobase.cpp b/app/node/color/ociobase/ociobase.cpp index 2c4e2fdcc..ebe7c9790 100644 --- a/app/node/color/ociobase/ociobase.cpp +++ b/app/node/color/ociobase/ociobase.cpp @@ -29,6 +29,8 @@ OCIONodeBase::OCIONodeBase() if (true){//RenderManager::instance()->backend() == RenderManager::kOpenGL) { // Create OpenGL renderer attached_renderer_ = new OpenGLRenderer(this); + attached_renderer_->Init(); + attached_renderer_->PostInit(); } } diff --git a/app/render/colorprocessor.cpp b/app/render/colorprocessor.cpp index 9d981871f..6198b6d94 100644 --- a/app/render/colorprocessor.cpp +++ b/app/render/colorprocessor.cpp @@ -69,8 +69,11 @@ ColorProcessor::ColorProcessor(ColorManager *config, const QString &input, const } else { OCIO_SET_C_LOCALE_FOR_SCOPE; - processor_ = config->GetConfig()->getProcessor(input.toUtf8(), - output.toUtf8()); + try { + processor_ = config->GetConfig()->getProcessor(input.toUtf8(), output.toUtf8()); + } catch (OCIO::Exception &e) { + qWarning() << "ColorProcessor exception:" << e.what(); + } } diff --git a/app/shaders/displaytransform.frag b/app/shaders/displaytransform.frag index e42554cf7..d547b074f 100644 --- a/app/shaders/displaytransform.frag +++ b/app/shaders/displaytransform.frag @@ -1,12 +1,13 @@ uniform sampler2D tex_in; +varying vec2 ove_texcoord; // Program will replace this with OCIO's auto-generated shader code %1 void main() { - col = texture2D(tex_in, ove_texcoord); + vec4 col = texture2D(tex_in, ove_texcoord); - col = DIsplayTransform(col) + col = DisplayTransform(col); gl_FragColor - col; }