diff --git a/libs/shaders/gl_program_params.cpp b/libs/shaders/gl_program_params.cpp index e524908ba..dee6450aa 100644 --- a/libs/shaders/gl_program_params.cpp +++ b/libs/shaders/gl_program_params.cpp @@ -132,11 +132,11 @@ void GLProgramParamsSetter::Apply(ref_ptr 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 context, @@ -149,7 +149,7 @@ void GLProgramParamsSetter::Apply(ref_ptr 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 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); diff --git a/libs/shaders/program_params.hpp b/libs/shaders/program_params.hpp index f8ffa5d43..fcf4079eb 100644 --- a/libs/shaders/program_params.hpp +++ b/libs/shaders/program_params.hpp @@ -126,15 +126,30 @@ struct ALIGNMENT TrafficProgramParams glsl::mat4 m_projection; glsl::mat4 m_pivotTransform; glsl::vec4 m_trafficParams; - glsl::vec3 m_outlineColor; - float m_dummy1; // alignment - glsl::vec3 m_lightArrowColor; - float m_dummy2; // alignment - glsl::vec3 m_darkArrowColor; - float m_dummy3; // alignment + union + { + glsl::vec4 m_outlineColorAligned; + glsl::vec3 m_outlineColor; + }; + union + { + glsl::vec4 m_lightArrowColorAligned; + glsl::vec3 m_lightArrowColor; + }; + union + { + glsl::vec4 m_darkArrowColorAligned; + glsl::vec3 m_darkArrowColor; + }; 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; - glsl::vec3 m_params; - float m_dummy1; // alignment + union + { + glsl::vec4 m_paramsAligned; + glsl::vec3 m_params; + }; 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; - glsl::vec3 m_position; - float m_dummy1; // alignment + union + { + glsl::vec4 m_positionAligned; + glsl::vec3 m_position; + }; 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,