GLShader: Fix sdrBrightness into float

It's used as a float and otherwise it makes (some?) drivers very
confused as they're required to cast at runtime.
The original value is double so it makes sense to keep the same type.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
master
Aleix Pol Gonzalez 11 months ago
parent 15080192f7
commit 7b64433830

@ -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();

@ -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());
}
}

@ -99,6 +99,7 @@ public:
enum FloatUniform {
Saturation,
MaxHdrBrightness,
SdrBrightness,
FloatUniformCount
};
@ -108,7 +109,6 @@ public:
TextureHeight,
SourceNamedTransferFunction,
DestinationNamedTransferFunction,
SdrBrightness,
IntUniformCount
};

@ -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";

Loading…
Cancel
Save