diff options
author | Molly Lloyd <mollymerp@users.noreply.github.com> | 2016-11-16 17:34:33 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-16 17:34:33 -0800 |
commit | 3380f0803a62525a6884ee4d05e103e072c36117 (patch) | |
tree | dd9263d66d91eea1f41f21d3eaf5173d12b559a2 /src/mbgl/programs/program.hpp | |
parent | a5ac64316642cacb32466ea24ba2bf29b8d35da4 (diff) | |
download | qtlocation-mapboxgl-3380f0803a62525a6884ee4d05e103e072c36117.tar.gz |
[core] update native for line property function shaders changes (#6658)
* [core] update shaders for line property functions
update deps, define device pixel ratio for all shaders
[core] create ShaderParameter struct to store pixel ratio and overdraw param
repair rebase errs
update shaders to include pixel ratio
make sure collision_box never overdraws
update test suite, move shaders to Painter::render so the correct pixel ratio is applied
move shader compiling back to the Painter constructor
rebase from shader --> program refactor
re-factor parameters for collisionBox and debug programs
remove unused vars from line-program, move blur math to shader
update core files
remove unecessary files
update shaders PR, remove comments
bump test suite sha
fix formatting, incorporate feedback
refactor program.hpp
* [core] remove line transformations that were moved to the shaders, bump shader sha
* [core] shorten ProgramParameter instantiation
* [core] bump shader+test suite shas
Diffstat (limited to 'src/mbgl/programs/program.hpp')
-rw-r--r-- | src/mbgl/programs/program.hpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/mbgl/programs/program.hpp b/src/mbgl/programs/program.hpp index fa41d43e5c..c912de13fe 100644 --- a/src/mbgl/programs/program.hpp +++ b/src/mbgl/programs/program.hpp @@ -1,33 +1,38 @@ #pragma once #include <mbgl/gl/program.hpp> +#include <mbgl/programs/program_parameters.hpp> #include <cassert> namespace mbgl { -enum class ProgramDefines : bool { - None = false, - Overdraw = true, -}; - template <class Shaders, class Primitive, class Attributes, class Uniforms> class Program : public gl::Program<Primitive, Attributes, Uniforms> { public: using ParentType = gl::Program<Primitive, Attributes, Uniforms>; - Program(gl::Context& context, ProgramDefines defines) - : ParentType(context, Shaders::vertexSource, fragmentSource(defines)) + Program(gl::Context& context, const ProgramParameters& programParameters) + : ParentType(context, vertexSource(programParameters), fragmentSource(programParameters)) {} + + static std::string pixelRatioDefine(const ProgramParameters& parameters) { + return std::string("#define DEVICE_PIXEL_RATIO ") + std::to_string(parameters.pixelRatio) + "\n"; + } - static std::string fragmentSource(ProgramDefines defines) { - std::string fragment = Shaders::fragmentSource; - if (defines == ProgramDefines::Overdraw) { - assert(fragment.find("#ifdef OVERDRAW_INSPECTOR") != std::string::npos); - fragment.replace(fragment.find_first_of('\n'), 1, "\n#define OVERDRAW_INSPECTOR\n"); + static std::string fragmentSource(const ProgramParameters& parameters) { + std::string source = pixelRatioDefine(parameters) + Shaders::fragmentSource; + if (parameters.overdraw) { + assert(source.find("#ifdef OVERDRAW_INSPECTOR") != std::string::npos); + source.replace(source.find_first_of('\n'), 1, "\n#define OVERDRAW_INSPECTOR\n"); } - return fragment; + return source; } + + static std::string vertexSource(const ProgramParameters& parameters) { + return pixelRatioDefine(parameters) + Shaders::vertexSource; + } + }; } // namespace mbgl |