Fix OpenGL glUniform mismatch

Signed-off-by: renderexpert <expert@renderconsulting.co.uk>
This commit is contained in:
renderexpert
2025-06-19 15:53:44 +01:00
committed by Konstantin Pastbin
parent 14b3e8fc8f
commit 344cf6d709
2 changed files with 40 additions and 15 deletions

View File

@@ -132,11 +132,11 @@ void GLProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
Parameter::CheckApply(guard, "u_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform);
Parameter::CheckApply(guard, "u_trafficParams", params.m_trafficParams);
Parameter::CheckApply(guard, "u_outlineColor", params.m_outlineColor);
Parameter::CheckApply(guard, "u_outlineColor", params.m_outlineColorAligned);
Parameter::CheckApply(guard, "u_outline", params.m_outline);
Parameter::CheckApply(guard, "u_lightArrowColor", params.m_lightArrowColor);
Parameter::CheckApply(guard, "u_lightArrowColor", params.m_lightArrowColorAligned);
Parameter::CheckApply(guard, "u_opacity", params.m_opacity);
Parameter::CheckApply(guard, "u_darkArrowColor", params.m_darkArrowColor);
Parameter::CheckApply(guard, "u_darkArrowColor", params.m_darkArrowColorAligned);
}
void GLProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
@@ -149,7 +149,7 @@ void GLProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
Parameter::CheckApply(guard, "u_modelView", params.m_modelView);
Parameter::CheckApply(guard, "u_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform);
Parameter::CheckApply(guard, "u_params", params.m_params);
Parameter::CheckApply(guard, "u_params", params.m_paramsAligned);
Parameter::CheckApply(guard, "u_lineHalfWidth", params.m_lineHalfWidth);
Parameter::CheckApply(guard, "u_maxRadius", params.m_maxRadius);
}
@@ -180,7 +180,7 @@ void GLProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
Parameter::CheckApply(guard, "u_modelView", params.m_modelView);
Parameter::CheckApply(guard, "u_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform);
Parameter::CheckApply(guard, "u_position", params.m_position);
Parameter::CheckApply(guard, "u_position", params.m_positionAligned);
Parameter::CheckApply(guard, "u_accuracy", params.m_accuracy);
Parameter::CheckApply(guard, "u_lineParams", params.m_lineParams);
Parameter::CheckApply(guard, "u_zScale", params.m_zScale);

View File

@@ -126,15 +126,30 @@ struct ALIGNMENT TrafficProgramParams
glsl::mat4 m_projection;
glsl::mat4 m_pivotTransform;
glsl::vec4 m_trafficParams;
union
{
glsl::vec4 m_outlineColorAligned;
glsl::vec3 m_outlineColor;
float m_dummy1; // alignment
};
union
{
glsl::vec4 m_lightArrowColorAligned;
glsl::vec3 m_lightArrowColor;
float m_dummy2; // alignment
};
union
{
glsl::vec4 m_darkArrowColorAligned;
glsl::vec3 m_darkArrowColor;
float m_dummy3; // alignment
};
float m_outline = 0.0f;
float m_opacity = 1.0f;
TrafficProgramParams()
: m_outlineColorAligned(0.0f, 0.0f, 0.0f, 0.0f)
, m_lightArrowColorAligned(0.0f, 0.0f, 0.0f, 0.0f)
, m_darkArrowColorAligned(0.0f, 0.0f, 0.0f, 0.0f)
{}
BIND_PROGRAMS(TrafficProgramParams,
Program::Traffic,
Program::TrafficLine,
@@ -146,11 +161,16 @@ struct ALIGNMENT TransitProgramParams
glsl::mat4 m_modelView;
glsl::mat4 m_projection;
glsl::mat4 m_pivotTransform;
union
{
glsl::vec4 m_paramsAligned;
glsl::vec3 m_params;
float m_dummy1; // alignment
};
float m_lineHalfWidth = 0.0f;
float m_maxRadius = 0.0f;
TransitProgramParams() : m_paramsAligned(0.0f, 0.0f, 0.0f, 0.0f) {}
BIND_PROGRAMS(TransitProgramParams,
Program::Transit,
Program::TransitCircle,
@@ -179,14 +199,19 @@ struct ALIGNMENT ShapesProgramParams
glsl::mat4 m_modelView;
glsl::mat4 m_projection;
glsl::mat4 m_pivotTransform;
union
{
glsl::vec4 m_positionAligned;
glsl::vec3 m_position;
float m_dummy1; // alignment
};
glsl::vec2 m_lineParams;
float m_accuracy = 0.0;
float m_zScale = 1.0f;
float m_opacity = 1.0f;
float m_azimut = 0.0;
ShapesProgramParams() : m_positionAligned(0.0f, 0.0f, 0.0f, 0.0f) {}
BIND_PROGRAMS(ShapesProgramParams,
Program::Accuracy,
Program::MyPosition,