Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[core] eliminate UniformValue class to satisfy compiler
Browse files Browse the repository at this point in the history
  • Loading branch information
Molly Lloyd committed Aug 3, 2018
1 parent fa383f5 commit 0fa5cfd
Show file tree
Hide file tree
Showing 21 changed files with 181 additions and 187 deletions.
18 changes: 6 additions & 12 deletions src/mbgl/gl/uniform.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,6 @@ namespace gl {
template <class T>
void bindUniform(UniformLocation, const T&);

template <class Tag, class T>
class UniformValue {
public:
explicit UniformValue(T t_) : t(std::move(t_)) {}
T t;
};

class ActiveUniform {
public:
std::size_t size;
Expand All @@ -42,18 +35,19 @@ ActiveUniforms activeUniforms(ProgramID);
template <class Tag, class T>
class Uniform {
public:
using Value = UniformValue<Tag, T>;
// TODO should maybe remove this altogether bc it is now redundant?
using Value = T;

using Type = T;

class State {
public:
State(UniformLocation location_) : location(std::move(location_)) {}

void operator=(const Value& value) {
if (location >= 0 && (!current || *current != value.t)) {
current = value.t;
bindUniform(location, value.t);
void operator=(const Type& value) {
if (location >= 0 && (!current || *current != value)) {
current = value;
bindUniform(location, value);
}
}

Expand Down
32 changes: 16 additions & 16 deletions src/mbgl/programs/background_program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,22 @@ BackgroundPatternUniforms::values(mat4 matrix,
int32_t pixelY = tileSizeAtNearestZoom * tileID.canonical.y;

return BackgroundPatternUniforms::Values {
uniforms::u_matrix::Value{ matrix },
uniforms::u_opacity::Value{ opacity },
uniforms::u_texsize::Value{ atlasSize },
uniforms::u_pattern_tl_a::Value{ a.tl() },
uniforms::u_pattern_br_a::Value{ a.br() },
uniforms::u_pattern_tl_b::Value{ b.tl() },
uniforms::u_pattern_br_b::Value{ b.br() },
uniforms::u_pattern_size_a::Value{ a.displaySize() },
uniforms::u_pattern_size_b::Value{ b.displaySize() },
uniforms::u_scale_a::Value{ fading.fromScale },
uniforms::u_scale_b::Value{ fading.toScale },
uniforms::u_mix::Value{ fading.t },
uniforms::u_image::Value{ 0 },
uniforms::u_pixel_coord_upper::Value{ std::array<float, 2> {{ float(pixelX >> 16), float(pixelY >> 16) }} },
uniforms::u_pixel_coord_lower::Value{ std::array<float, 2> {{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF) }} },
uniforms::u_tile_units_to_pixels::Value{ 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) },
uniforms::u_matrix::Value( matrix ),
uniforms::u_opacity::Value( opacity ),
uniforms::u_texsize::Value( atlasSize ),
uniforms::u_pattern_tl_a::Value( a.tl() ),
uniforms::u_pattern_br_a::Value( a.br() ),
uniforms::u_pattern_tl_b::Value( b.tl() ),
uniforms::u_pattern_br_b::Value( b.br() ),
uniforms::u_pattern_size_a::Value( a.displaySize() ),
uniforms::u_pattern_size_b::Value( b.displaySize() ),
uniforms::u_scale_a::Value( fading.fromScale ),
uniforms::u_scale_b::Value( fading.toScale ),
uniforms::u_mix::Value( fading.t ),
uniforms::u_image::Value( 0 ),
uniforms::u_pixel_coord_upper::Value( std::array<float, 2> {{ float(pixelX >> 16), float(pixelY >> 16) }}),
uniforms::u_pixel_coord_lower::Value( std::array<float, 2> {{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF)}}),
uniforms::u_tile_units_to_pixels::Value( 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) ),
};
}

Expand Down
46 changes: 23 additions & 23 deletions src/mbgl/programs/fill_extrusion_program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ FillExtrusionUniforms::values(mat4 matrix,
const TransformState& state,
const EvaluatedLight& light) {
return FillExtrusionUniforms::Values{
uniforms::u_matrix::Value{ matrix },
uniforms::u_lightcolor::Value{ lightColor(light) },
uniforms::u_lightpos::Value{ lightPosition(light, state) },
uniforms::u_lightintensity::Value{ lightIntensity(light) }
uniforms::u_matrix::Value( matrix ),
uniforms::u_lightcolor::Value( lightColor(light) ),
uniforms::u_lightpos::Value( lightPosition(light, state) ),
uniforms::u_lightintensity::Value( lightIntensity(light) )
};
}

Expand All @@ -58,25 +58,25 @@ FillExtrusionPatternUniforms::values(mat4 matrix,
int32_t pixelY = tileSizeAtNearestZoom * tileID.canonical.y;

return FillExtrusionPatternUniforms::Values{
uniforms::u_matrix::Value{ matrix },
uniforms::u_pattern_tl_a::Value{ a.tl() },
uniforms::u_pattern_br_a::Value{ a.br() },
uniforms::u_pattern_tl_b::Value{ b.tl() },
uniforms::u_pattern_br_b::Value{ b.br() },
uniforms::u_pattern_size_a::Value{ a.displaySize() },
uniforms::u_pattern_size_b::Value{ b.displaySize() },
uniforms::u_scale_a::Value{ fading.fromScale },
uniforms::u_scale_b::Value{ fading.toScale },
uniforms::u_texsize::Value{ atlasSize },
uniforms::u_mix::Value{ fading.t },
uniforms::u_image::Value{ 0 },
uniforms::u_pixel_coord_upper::Value{ std::array<float, 2>{{ float(pixelX >> 16), float(pixelY >> 16) }} },
uniforms::u_pixel_coord_lower::Value{ std::array<float, 2>{{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF) }} },
uniforms::u_tile_units_to_pixels::Value{ 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) },
uniforms::u_height_factor::Value{ heightFactor },
uniforms::u_lightcolor::Value{ lightColor(light) },
uniforms::u_lightpos::Value{ lightPosition(light, state) },
uniforms::u_lightintensity::Value{ lightIntensity(light) },
uniforms::u_matrix::Value( matrix ),
uniforms::u_pattern_tl_a::Value( a.tl() ),
uniforms::u_pattern_br_a::Value( a.br() ),
uniforms::u_pattern_tl_b::Value( b.tl() ),
uniforms::u_pattern_br_b::Value( b.br() ),
uniforms::u_pattern_size_a::Value( a.displaySize() ),
uniforms::u_pattern_size_b::Value( b.displaySize() ),
uniforms::u_scale_a::Value( fading.fromScale ),
uniforms::u_scale_b::Value( fading.toScale ),
uniforms::u_texsize::Value( atlasSize ),
uniforms::u_mix::Value( fading.t ),
uniforms::u_image::Value( 0 ),
uniforms::u_pixel_coord_upper::Value( std::array<float, 2>{{ float(pixelX >> 16), float(pixelY >> 16) }} ),
uniforms::u_pixel_coord_lower::Value( std::array<float, 2>{{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF) }} ),
uniforms::u_tile_units_to_pixels::Value( 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) ),
uniforms::u_height_factor::Value( heightFactor ),
uniforms::u_lightcolor::Value( lightColor(light) ),
uniforms::u_lightpos::Value( lightPosition(light, state) ),
uniforms::u_lightintensity::Value( lightIntensity(light) ),
};
}

Expand Down
32 changes: 16 additions & 16 deletions src/mbgl/programs/fill_program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,22 @@ FillPatternUniforms::values(mat4 matrix,
int32_t pixelY = tileSizeAtNearestZoom * tileID.canonical.y;

return FillPatternUniforms::Values {
uniforms::u_matrix::Value{ matrix },
uniforms::u_world::Value{ framebufferSize },
uniforms::u_texsize::Value{ atlasSize },
uniforms::u_pattern_tl_a::Value{ a.tl() },
uniforms::u_pattern_br_a::Value{ a.br() },
uniforms::u_pattern_tl_b::Value{ b.tl() },
uniforms::u_pattern_br_b::Value{ b.br() },
uniforms::u_pattern_size_a::Value{ a.displaySize() },
uniforms::u_pattern_size_b::Value{ b.displaySize() },
uniforms::u_scale_a::Value{ fading.fromScale },
uniforms::u_scale_b::Value{ fading.toScale },
uniforms::u_mix::Value{ fading.t },
uniforms::u_image::Value{ 0 },
uniforms::u_pixel_coord_upper::Value{ std::array<float, 2> {{ float(pixelX >> 16), float(pixelY >> 16) }} },
uniforms::u_pixel_coord_lower::Value{ std::array<float, 2> {{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF) }} },
uniforms::u_tile_units_to_pixels::Value{ 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) },
uniforms::u_matrix::Value( matrix ),
uniforms::u_world::Value( framebufferSize ),
uniforms::u_texsize::Value( atlasSize ),
uniforms::u_pattern_tl_a::Value( a.tl() ),
uniforms::u_pattern_br_a::Value( a.br() ),
uniforms::u_pattern_tl_b::Value( b.tl() ),
uniforms::u_pattern_br_b::Value( b.br() ),
uniforms::u_pattern_size_a::Value( a.displaySize() ),
uniforms::u_pattern_size_b::Value( b.displaySize() ),
uniforms::u_scale_a::Value( fading.fromScale ),
uniforms::u_scale_b::Value( fading.toScale ),
uniforms::u_mix::Value( fading.t ),
uniforms::u_image::Value( 0 ),
uniforms::u_pixel_coord_upper::Value( std::array<float, 2> {{ float(pixelX >> 16), float(pixelY >> 16) }}),
uniforms::u_pixel_coord_lower::Value( std::array<float, 2> {{ float(pixelX & 0xFFFF), float(pixelY & 0xFFFF) }} ),
uniforms::u_tile_units_to_pixels::Value( 1.0f / tileID.pixelsToTileUnits(1.0f, state.getIntegerZoom()) ),
};
}

Expand Down
30 changes: 15 additions & 15 deletions src/mbgl/programs/line_program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ Values makeValues(const RenderLinePaintProperties::PossiblyEvaluated& properties
Args&&... args) {

return Values {
uniforms::u_matrix::Value{
uniforms::u_matrix::Value(
tile.translatedMatrix(properties.get<LineTranslate>(),
properties.get<LineTranslateAnchor>(),
state)
},
uniforms::u_ratio::Value{ 1.0f / tile.id.pixelsToTileUnits(1.0, state.getZoom()) },
uniforms::u_gl_units_to_pixels::Value{{{ 1.0f / pixelsToGLUnits[0], 1.0f / pixelsToGLUnits[1] }}},
),
uniforms::u_ratio::Value( 1.0f / tile.id.pixelsToTileUnits(1.0, state.getZoom()) ),
uniforms::u_gl_units_to_pixels::Value({ {1.0f / pixelsToGLUnits[0], 1.0f / pixelsToGLUnits[1]} }),
std::forward<Args>(args)...
};
}
Expand Down Expand Up @@ -71,13 +71,13 @@ LineSDFProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated
tile,
state,
pixelsToGLUnits,
uniforms::u_patternscale_a::Value{ scaleA },
uniforms::u_patternscale_b::Value{ scaleB },
uniforms::u_tex_y_a::Value{ posA.y },
uniforms::u_tex_y_b::Value{ posB.y },
uniforms::u_mix::Value{ properties.get<LineDasharray>().t },
uniforms::u_sdfgamma::Value{ atlasWidth / (std::min(widthA, widthB) * 256.0f * pixelRatio) / 2.0f },
uniforms::u_image::Value{ 0 }
uniforms::u_patternscale_a::Value( scaleA ),
uniforms::u_patternscale_b::Value( scaleB ),
uniforms::u_tex_y_a::Value( posA.y ),
uniforms::u_tex_y_b::Value( posB.y ),
uniforms::u_mix::Value( properties.get<LineDasharray>().t ),
uniforms::u_sdfgamma::Value( atlasWidth / (std::min(widthA, widthB) * 256.0f * pixelRatio) / 2.0f ),
uniforms::u_image::Value( 0 )
);
}

Expand All @@ -97,10 +97,10 @@ LinePatternProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvalu
tile,
state,
pixelsToGLUnits,
uniforms::u_scale::Value{ {{ pixelRatio, tileRatio, crossfade.fromScale, crossfade.toScale}} },
uniforms::u_texsize::Value{ atlasSize },
uniforms::u_fade::Value{ crossfade.t },
uniforms::u_image::Value{ 0 }
uniforms::u_scale::Value ({ {pixelRatio, tileRatio, crossfade.fromScale, crossfade.toScale} }),
uniforms::u_texsize::Value( atlasSize ),
uniforms::u_fade::Value( crossfade.t ),
uniforms::u_image::Value( 0 )
);
}

Expand Down
34 changes: 17 additions & 17 deletions src/mbgl/programs/symbol_program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,25 +77,25 @@ Values makeValues(const bool isText,
mat4 glCoordMatrix = getGlCoordMatrix(tile.matrix, pitchWithMap, rotateWithMap, state, pixelsToTileUnits);

return Values {
uniforms::u_matrix::Value{ tile.translatedMatrix(values.translate,
uniforms::u_matrix::Value( tile.translatedMatrix(values.translate,
values.translateAnchor,
state) },
uniforms::u_label_plane_matrix::Value{labelPlaneMatrix},
uniforms::u_gl_coord_matrix::Value{ tile.translateVtxMatrix(glCoordMatrix,
state) ),
uniforms::u_label_plane_matrix::Value(labelPlaneMatrix),
uniforms::u_gl_coord_matrix::Value( tile.translateVtxMatrix(glCoordMatrix,
values.translate,
values.translateAnchor,
state,
true) },
uniforms::u_extrude_scale::Value{ extrudeScale },
uniforms::u_texsize::Value{ texsize },
uniforms::u_texture::Value{ 0 },
uniforms::u_fade_change::Value{ symbolFadeChange },
uniforms::u_is_text::Value{ isText },
uniforms::u_camera_to_center_distance::Value{ state.getCameraToCenterDistance() },
uniforms::u_pitch::Value{ state.getPitch() },
uniforms::u_pitch_with_map::Value{ pitchWithMap },
uniforms::u_rotate_symbol::Value{ rotateInShader },
uniforms::u_aspect_ratio::Value{ state.getSize().aspectRatio() },
true) ),
uniforms::u_extrude_scale::Value( extrudeScale ),
uniforms::u_texsize::Value( texsize ),
uniforms::u_texture::Value( 0 ),
uniforms::u_fade_change::Value( symbolFadeChange ),
uniforms::u_is_text::Value( isText ),
uniforms::u_camera_to_center_distance::Value( state.getCameraToCenterDistance() ),
uniforms::u_pitch::Value( state.getPitch() ),
uniforms::u_pitch_with_map::Value( pitchWithMap ),
uniforms::u_rotate_symbol::Value( rotateInShader ),
uniforms::u_aspect_ratio::Value( state.getSize().aspectRatio() ),
std::forward<Args>(args)...
};
}
Expand Down Expand Up @@ -147,8 +147,8 @@ typename SymbolSDFProgram<PaintProperties>::UniformValues SymbolSDFProgram<Paint
tile,
state,
symbolFadeChange,
uniforms::u_gamma_scale::Value{ gammaScale },
uniforms::u_is_halo::Value{ part == SymbolSDFPart::Halo }
uniforms::u_gamma_scale::Value( gammaScale ),
uniforms::u_is_halo::Value( part == SymbolSDFPart::Halo )
);
}

Expand Down
8 changes: 4 additions & 4 deletions src/mbgl/programs/symbol_program.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,10 @@ class SymbolSizeBinder {
UniformValues uniformValues(float currentZoom) const {
const ZoomEvaluatedSize u = evaluateForZoom(currentZoom);
return UniformValues {
uniforms::u_is_size_zoom_constant::Value{ u.isZoomConstant },
uniforms::u_is_size_feature_constant::Value{ u.isFeatureConstant},
uniforms::u_size_t::Value{ u.sizeT },
uniforms::u_size::Value{ u.size }
uniforms::u_is_size_zoom_constant::Value( u.isZoomConstant ),
uniforms::u_is_size_feature_constant::Value( u.isFeatureConstant),
uniforms::u_size_t::Value( u.sizeT ),
uniforms::u_size::Value( u.size )
};
}
};
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_background_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
draw(
parameters.programs.background,
BackgroundProgram::UniformValues {
uniforms::u_matrix::Value{ parameters.matrixForTile(tileID) },
uniforms::u_color::Value{ evaluated.get<BackgroundColor>() },
uniforms::u_opacity::Value{ evaluated.get<BackgroundOpacity>() },
uniforms::u_matrix::Value( parameters.matrixForTile(tileID) ),
uniforms::u_color::Value( evaluated.get<BackgroundColor>() ),
uniforms::u_opacity::Value( evaluated.get<BackgroundOpacity>() ),
}
);
}
Expand Down
14 changes: 7 additions & 7 deletions src/mbgl/renderer/layers/render_circle_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,19 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {

const auto allUniformValues = programInstance.computeAllUniformValues(
CircleProgram::UniformValues {
uniforms::u_matrix::Value{
uniforms::u_matrix::Value(
tile.translatedMatrix(evaluated.get<CircleTranslate>(),
evaluated.get<CircleTranslateAnchor>(),
parameters.state)
},
uniforms::u_scale_with_map::Value{ scaleWithMap },
uniforms::u_extrude_scale::Value{ pitchWithMap
),
uniforms::u_scale_with_map::Value( scaleWithMap ),
uniforms::u_extrude_scale::Value( pitchWithMap
? std::array<float, 2> {{
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()),
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()) }}
: parameters.pixelsToGLUnits },
uniforms::u_camera_to_center_distance::Value{ parameters.state.getCameraToCenterDistance() },
uniforms::u_pitch_with_map::Value{ pitchWithMap }
: parameters.pixelsToGLUnits ),
uniforms::u_camera_to_center_distance::Value( parameters.state.getCameraToCenterDistance() ),
uniforms::u_pitch_with_map::Value( pitchWithMap )
},
paintPropertyBinders,
evaluated,
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,9 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*

const auto allUniformValues = programInstance.computeAllUniformValues(
ExtrusionTextureProgram::UniformValues{
uniforms::u_matrix::Value{ viewportMat }, uniforms::u_world::Value{ size },
uniforms::u_image::Value{ 0 },
uniforms::u_opacity::Value{ evaluated.get<FillExtrusionOpacity>() }
uniforms::u_matrix::Value( viewportMat ), uniforms::u_world::Value( size ),
uniforms::u_image::Value( 0 ),
uniforms::u_opacity::Value( evaluated.get<FillExtrusionOpacity>() )
},
paintAttributeData,
properties,
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_fill_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {

const auto allUniformValues = programInstance.computeAllUniformValues(
FillProgram::UniformValues {
uniforms::u_matrix::Value{
uniforms::u_matrix::Value(
tile.translatedMatrix(evaluated.get<FillTranslate>(),
evaluated.get<FillTranslateAnchor>(),
parameters.state)
},
uniforms::u_world::Value{ parameters.context.viewport.getCurrentValue().size },
),
uniforms::u_world::Value( parameters.context.viewport.getCurrentValue().size ),
},
paintPropertyBinders,
evaluated,
Expand Down
Loading

0 comments on commit 0fa5cfd

Please sign in to comment.