Commit Graph

104 Commits

Author SHA1 Message Date
John Firebaugh
38fcbe21d4 [core] Convert style properties to a tuple-based approach
This converts the style property classes (CirclePaintProperties and so on) to the same tuple-based approach as gl::Attribute and gl::Uniform. The approach is outlined in https://github.com/mapbox/cpp/blob/master/C%2B%2B%20Structural%20Metaprogramming.md.

The main advantage of this approach is it allows writing algorithms that work on sets of style properties, without resorting to code generation or manually repetitive code. This lets us iterate on approaches to data-driven properties more easily.

Another advantage is that the cascading, unevaluated, and evaluated states of a set of properties exist as independent structures, instead of individual properties holding their own state. This is a more functional approach that makes data flow clearer and reduces state.
2016-11-17 15:13:38 -08:00
Molly Lloyd
3380f0803a [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
2016-11-16 17:34:33 -08:00
John Firebaugh
1db2ffbc1b [core] Use gl::Program to resolve some rough edges in the GL binding types
* Extract `ignore` util to separate header.
* `Segment` now tracks offset and length of indices, rather than primitives. This is more natural.
* Introduce `VertexVector` and `IndexVector` types. These types carry information about the intended draw mode (`Triangles`, `LineStrip`, etc.), and ensure that elements are always appended in a group size appropriate for that draw mode, for both indexed and unindexed rendering.
* `Program`, rather than `Drawable`, is now the unifying object for draw calls. `Program` is the best place to type check the draw call, because it is typed to carry information about the intended primitive, vertex type, attributes, and uniforms.
* Use the debug shaders for debug tile rendering, like gl-js.
* Fix the draw mode for background. It was drawing triangle strips with a triangles array. Surprised this didn’t cause issues. Now it’s type checked.
2016-11-08 08:09:29 -08:00
John Firebaugh
66bdbc3b96 [core] Introduce gl::Program template 2016-11-08 08:09:29 -08:00
Konstantin Käfer
ed155460d3 [core] convert LineAtlas to use managed texture handling 2016-11-01 18:41:52 +01:00
John Firebaugh
0e57d10d77 [core] Modern C++ bindings for OpenGL 2016-10-28 17:14:01 -07:00
Konstantin Käfer
62b56b799a [core] change std::array<uint16_t, 2> to mbgl::Size 2016-10-27 18:30:58 -07:00
John Firebaugh
21d7ee11e1 [core] Rationalize shader names
{layer type}{subtype}Shader
2016-10-06 14:47:58 -07:00
Konstantin Käfer
cc78b74098 [core] remove dependence on gl.h types 2016-09-29 10:17:47 -07:00
Konstantin Käfer
44c7e9d05e [core] merge gl::ObjectStore into gl::Context 2016-09-27 11:03:29 -07:00
Konstantin Käfer
ce42d22984 [core] rename gl::Config to gl::Context 2016-09-27 11:03:29 -07:00
Konstantin Käfer
afb93d4d3a [core] track VAOs and Buffers 2016-09-26 11:14:40 +02:00
Konstantin Käfer
3d960c8136 [core] change bool round to LinePatternCap 2016-09-07 17:56:38 +02:00
Konstantin Käfer
85e222c825 [core] change bool overdraw to PaintMode::Overdraw 2016-09-07 17:56:38 +02:00
Konstantin Käfer
ff0c895eaa [core] change bool wrap/repeating to enum class SpritePatternMode 2016-09-07 17:56:38 +02:00
John Firebaugh
ae838b397b [core] Move translatedMatrix to RenderTile 2016-07-11 18:39:50 -07:00
John Firebaugh
a27b5586e5 [core] Pass RenderTile rather than individual parameters 2016-07-11 18:39:50 -07:00
John Firebaugh
6e77149c13 [core] Introduce PaintParameters
Use it to DRY selection of regular vs. overdraw shaders and VAOs.
2016-07-11 18:39:50 -07:00
John Firebaugh
822ec091da [core] Introduce non-anonymous Shaders class 2016-07-11 18:39:50 -07:00
Konstantin Käfer
4f26c8122a [core] track texture state to avoid redundand binds 2016-07-08 13:11:25 +02:00
Konstantin Käfer
69c529e264 [core] move shaders to anon struct and alias them 2016-07-07 15:06:59 +02:00
Bruno de Oliveira Abinader
a17b0bcd82 [core] Fix overdraw mode on Linux
- Use glBindAttribLocation for GLSL attributes.
- Create a separate shader for each shader that supports overdraw.
  Needed because each uniform location must be known for every program.
- Create a separate VAO for each shader inside buckets.
  Needed because we can only bind a VAO to a specific shader.

Fixes #5435.
2016-07-01 19:47:35 +03:00
Konstantin Käfer
77e7846756 [core] code style cleanups
- puts function definitions in a namespace ... {} rather than using namespace ...;
- remove trailing whitespace
- add trailing newline
- protect SQL statements from being formatted by clang-format
2016-07-01 12:38:33 +02:00
Bruno de Oliveira Abinader
97dffeb03d [core] s/Wireframe/Overdraw/g 2016-06-20 13:24:20 +03:00
Bruno de Oliveira Abinader
df5a395708 [core] Refactor wireframe to match JS overdraw mode 2016-06-20 13:24:20 +03:00
John Firebaugh
a020e535ca [core] Add a few conveniences to Color 2016-06-15 13:22:00 -07:00
Young Hahn
24b66bc8cd Color class (#5361)
* Color class

* Switch to list initialization
2016-06-15 11:38:22 -04:00
Bruno de Oliveira Abinader
9142c447e8 [tidy] Check llvm-namespace-comment
Ref: http://clang.llvm.org/extra/clang-tidy/checks/llvm-namespace-comment.html
2016-06-13 23:32:05 +03:00
Bruno de Oliveira Abinader
bfcd21dd7e [core] Update line-pattern shader code/tests
Refs:
- mapbox-gl-test-suite: https://github.com/mapbox/mapbox-gl-test-suite/pull/107
- mapbox-gl-shaders: https://github.com/mapbox/mapbox-gl-shaders/pull/17
- mapbox-gl-js: https://github.com/mapbox/mapbox-gl-js/pull/2724

Part of https://github.com/mapbox/mapbox-gl-shaders/issues/1.
2016-06-13 13:16:47 +03:00
John Firebaugh
c902f9098b [core] Rationalize naming for style-related code 2016-06-02 14:51:39 -07:00
John Firebaugh
a43940afb2 [core] Runtime style layer API 2016-06-02 14:51:39 -07:00
Bruno de Oliveira Abinader
2038a21cb5 [core] s/GLObjectStore/ObjectStore/ 2016-06-01 13:53:39 +03:00
John Firebaugh
172e645686 [core] Port "combine line-width and line-gap-width in shader"
a9559e911b
fcb9bcebae
2016-05-25 21:37:58 -07:00
John Firebaugh
c568a8ad77 [core] Port "separate u_opacity from u_color"
0d34125196
1f5afa7db0
2016-05-25 21:37:58 -07:00
Bruno de Oliveira Abinader
7143408f69 [core] Implement MapDebugOptions::Wireframe
Together with MapDebugOptions::Collision, provides "wireframe" rendering
output so all drawn objects are visible. This mode ignores the line
width, background and fill colors for better visualization.

Fixes #4359.
2016-05-23 11:50:05 +03:00
Konstantin Käfer
ec70125e41 [core] move TileData and dependents to new *TileID classes 2016-05-10 14:50:56 +02:00
Konstantin Käfer
dde59eaf76 [core] move Painter and dependents to new *TileID classes 2016-05-10 14:50:56 +02:00
John Firebaugh
34a2f142e0 [core] Quarantine style property irregularities in layer classes (#4792)
This moves the *{Layout,Paint}Properties classes closer to code generation.
2016-04-22 10:00:30 -07:00
John Firebaugh
b2beeda50b [core] Adopt a strict naming convention for style properties
This will allow code to be generated from the style specification.
2016-04-21 14:05:40 -07:00
John Firebaugh
a14f0d2edd [core] CapType ⇢ LineCapType 2016-04-21 11:01:56 -07:00
John Firebaugh
1ee0055710 [core] Eliminate MapData 2016-04-15 09:56:18 -07:00
John Firebaugh
9d18d65eda [core] Remove MapData dependency from Painter 2016-04-15 09:56:18 -07:00
Ansis Brammanis
d2b9b1c348 [core] always set activeTexture before binding a texture 2016-04-14 17:12:56 -07:00
Ansis Brammanis
273600c16e [core] simplify conversions from pixels to tile units
fix #3768
2016-03-30 18:53:44 -07:00
Konstantin Käfer
15bc11ab23 [core] cancel TileID::overscaling() 2016-03-08 13:34:17 +01:00
Bruno de Oliveira Abinader
8944e2c588 [core] Replaced raw values with util::tileSize 2016-03-03 17:02:15 +02:00
Bruno de Oliveira Abinader
9346a6d038 [core] Avoid precompute overscaling for TileID
Plus type change for zoom and removed redundant inlines.
2016-03-01 21:39:36 +00:00
John Firebaugh
9c26f06318 [core] Thread GLObjectStore through to Holder objects
This eliminates the reliance on ThreadContext to provide GLObjectStore, and statically enforces that GL cleanup functions happen only when GLObjectStore::performCleanup is called.

With the elimination of the Map thread, this becomes important because there may be multiple GLObjectStore's per-thread, and Map will need to ensure that the correct context is active when calling GLObjectStore::performCleanup.
2016-02-18 15:15:24 -08:00
Bruno de Oliveira Abinader
0386dc7a4e [gl] Use Shader::getID() whenever possible 2016-02-18 13:27:35 +02:00
Ansis Brammanis
8e9510d2b4 [core] tweak dash rendering and enable render tests
fixes #2646
2016-02-02 17:09:38 -08:00