diff --git a/src/backends/drm/drm_egl_layer_surface.cpp b/src/backends/drm/drm_egl_layer_surface.cpp index 13287fc838..cebcdd1f77 100644 --- a/src/backends/drm/drm_egl_layer_surface.cpp +++ b/src/backends/drm/drm_egl_layer_surface.cpp @@ -160,7 +160,7 @@ bool EglGbmLayerSurface::endRendering(const QRegion &damagedRegion) binder.shader()->setUniform(GLShader::MatrixUniform::ColorimetryTransformation, ctm); binder.shader()->setUniform(GLShader::IntUniform::SourceNamedTransferFunction, int(m_surface->intermediaryColorDescription.transferFunction())); binder.shader()->setUniform(GLShader::IntUniform::DestinationNamedTransferFunction, int(m_surface->targetColorDescription.transferFunction())); - binder.shader()->setUniform(GLShader::IntUniform::SdrBrightness, m_surface->intermediaryColorDescription.sdrBrightness()); + binder.shader()->setUniform(GLShader::FloatUniform::SdrBrightness, m_surface->intermediaryColorDescription.sdrBrightness()); binder.shader()->setUniform(GLShader::FloatUniform::MaxHdrBrightness, m_surface->intermediaryColorDescription.maxHdrHighlightBrightness()); } QMatrix4x4 mat = fbo->colorAttachment()->contentTransformMatrix(); diff --git a/src/libkwineffects/glshader.cpp b/src/libkwineffects/glshader.cpp index 24985f2696..46e26ceedb 100644 --- a/src/libkwineffects/glshader.cpp +++ b/src/libkwineffects/glshader.cpp @@ -219,6 +219,7 @@ void GLShader::resolveLocations() m_floatLocation[Saturation] = uniformLocation("saturation"); m_floatLocation[MaxHdrBrightness] = uniformLocation("maxHdrBrightness"); + m_floatLocation[SdrBrightness] = uniformLocation("sdrBrightness"); m_colorLocation[Color] = uniformLocation("geometryColor"); @@ -226,7 +227,6 @@ void GLShader::resolveLocations() m_intLocation[TextureHeight] = uniformLocation("textureHeight"); m_intLocation[SourceNamedTransferFunction] = uniformLocation("sourceNamedTransferFunction"); m_intLocation[DestinationNamedTransferFunction] = uniformLocation("destinationNamedTransferFunction"); - m_intLocation[SdrBrightness] = uniformLocation("sdrBrightness"); m_locationsResolved = true; } @@ -442,7 +442,7 @@ bool GLShader::setColorspaceUniforms(const ColorDescription &src, const ColorDes return setUniform(GLShader::MatrixUniform::ColorimetryTransformation, src.colorimetry().toOther(dst.colorimetry())) && setUniform(GLShader::IntUniform::SourceNamedTransferFunction, int(src.transferFunction())) && setUniform(GLShader::IntUniform::DestinationNamedTransferFunction, int(dst.transferFunction())) - && setUniform(IntUniform::SdrBrightness, dst.sdrBrightness()) + && setUniform(FloatUniform::SdrBrightness, dst.sdrBrightness()) && setUniform(FloatUniform::MaxHdrBrightness, dst.maxHdrHighlightBrightness()); } @@ -456,8 +456,7 @@ bool GLShader::setColorspaceUniformsToSRGB(const ColorDescription &src) return setUniform(GLShader::MatrixUniform::ColorimetryTransformation, src.colorimetry().toOther(ColorDescription::sRGB.colorimetry())) && setUniform(GLShader::IntUniform::SourceNamedTransferFunction, int(src.transferFunction())) && setUniform(GLShader::IntUniform::DestinationNamedTransferFunction, int(NamedTransferFunction::sRGB)) - && setUniform(IntUniform::SdrBrightness, src.sdrBrightness()) + && setUniform(FloatUniform::SdrBrightness, src.sdrBrightness()) && setUniform(FloatUniform::MaxHdrBrightness, src.sdrBrightness()); } - } diff --git a/src/libkwineffects/glshader.h b/src/libkwineffects/glshader.h index 1b40ff0620..4f36fd7b4e 100644 --- a/src/libkwineffects/glshader.h +++ b/src/libkwineffects/glshader.h @@ -99,6 +99,7 @@ public: enum FloatUniform { Saturation, MaxHdrBrightness, + SdrBrightness, FloatUniformCount }; @@ -108,7 +109,6 @@ public: TextureHeight, SourceNamedTransferFunction, DestinationNamedTransferFunction, - SdrBrightness, IntUniformCount }; diff --git a/src/libkwineffects/glshadermanager.cpp b/src/libkwineffects/glshadermanager.cpp index b6f5552886..9963e2fdee 100644 --- a/src/libkwineffects/glshadermanager.cpp +++ b/src/libkwineffects/glshadermanager.cpp @@ -157,7 +157,7 @@ QByteArray ShaderManager::generateFragmentSource(ShaderTraits traits) const stream << "uniform mat3 colorimetryTransform;\n"; stream << "uniform int sourceNamedTransferFunction;\n"; stream << "uniform int destinationNamedTransferFunction;\n"; - stream << "uniform int sdrBrightness;// in nits\n"; + stream << "uniform float sdrBrightness;// in nits\n"; stream << "uniform float maxHdrBrightness; // in nits\n"; stream << "\n"; stream << "vec3 nitsToPq(vec3 nits) {\n";