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_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform); Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform);
Parameter::CheckApply(guard, "u_trafficParams", params.m_trafficParams); 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_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_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, 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_modelView", params.m_modelView);
Parameter::CheckApply(guard, "u_projection", params.m_projection); Parameter::CheckApply(guard, "u_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform); 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_lineHalfWidth", params.m_lineHalfWidth);
Parameter::CheckApply(guard, "u_maxRadius", params.m_maxRadius); 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_modelView", params.m_modelView);
Parameter::CheckApply(guard, "u_projection", params.m_projection); Parameter::CheckApply(guard, "u_projection", params.m_projection);
Parameter::CheckApply(guard, "u_pivotTransform", params.m_pivotTransform); 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_accuracy", params.m_accuracy);
Parameter::CheckApply(guard, "u_lineParams", params.m_lineParams); Parameter::CheckApply(guard, "u_lineParams", params.m_lineParams);
Parameter::CheckApply(guard, "u_zScale", params.m_zScale); Parameter::CheckApply(guard, "u_zScale", params.m_zScale);

View File

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