Olivier Guyot
43010c8934
Webgl / return 0 if doing renderTarget.read outside of data width/height
...
This would happen when WebGLPointsLayerRenderer.forEachFeatureAtCoordinate
is called on "warped" worlds at -360/+360 degrees, and may produce false
positives.
2019-11-04 09:31:38 +01:00
jahow
f7b0f6750b
Resolve memory leak when deleting a webgl layer
...
Various references were kept, preventing the layer and underlying
renderer and webgl context to be garbage collected.
Also, the Helper was simplified because it turns out deleting manually
all Webgl objects is useless: these objects will be released when
the context is garbage collected anyway.
Note: this touches the Layer and BaseLayer classes, as the following were
preventing the layer from being garbage collected:
* layer reference in the `state_` object in BaseLayer
* dangling listener for source change in Layer
2019-11-04 09:31:38 +01:00
Olivier Guyot
e5e03d46a0
Webgl points renderer / more optimizations
...
Simplify calls in the attributes callback, also less stress
on garbage collection.
2019-11-04 09:31:38 +01:00
Andreas Hocevar
ac50cc3460
New eslint config with no-multi-assign
2019-11-02 15:20:21 +01:00
Olivier Guyot
2a2783c086
ShaderBuilder / better handling of strings variables/attributes
...
Now values which are not mentioned in the style are still added to
the string literals mapping.
Also an error will be thrown if a style references a missing variable.
2019-10-28 15:21:44 +01:00
Olivier Guyot
acf973751b
Webgl / added time and resolution as default uniforms
...
Also added the `zoom` and `resolution` style operators
2019-10-25 14:55:44 +02:00
Olivier Guyot
d643951a74
Shader Builder / add option to generate hit detection shaders
2019-10-25 14:55:44 +02:00
Olivier Guyot
a39f751981
Shader Builder / adapt logic & test to the new expression types
...
Also fixes a sneaky bug where the two last texture coordinates were inverted.
2019-10-25 14:55:44 +02:00
Olivier Guyot
31dae929f5
ShaderBuilder / adapt logic & tests to new expressions module
2019-10-25 14:55:44 +02:00
Olivier Guyot
fc555241ea
ShaderBuilder / simplify check/parse code a bit
2019-10-23 09:22:12 +02:00
Olivier Guyot
d837166a1b
Literal Style / add new math operators
2019-10-22 23:17:00 +02:00
Olivier Guyot
c659c05de8
ShaderBuilder / fix stretch operator GLSL expression
2019-10-22 23:17:00 +02:00
Olivier Guyot
485ade42b5
Literal Style / add support for color interpolation
2019-10-22 23:17:00 +02:00
Olivier Guyot
85c3aae454
ShaderBuilder / add support for color interpolation in parse
2019-10-22 23:17:00 +02:00
Olivier Guyot
a29fc016f5
ShaderBuilder / formatColor/Array utilities now output vecX(...)
2019-10-22 23:17:00 +02:00
Olivier Guyot
19eadaea24
Shader Builder / add type checking in expressions parsing
...
All expressions will now be type checked before actually being parsed.
2019-10-22 23:17:00 +02:00
Olivier Guyot
b8e8d30df0
Shader Builder / add utilities for checking an expression type
...
Type checking is done either against a literal value (number, string...)
or against the operator in case of an expression.
Sometimes it is not possible to infer only one type, for example
the value 'transparent' could either be a color or a string. This
is covered by the fact that all operators expect exactly one type
for their arguments.
2019-10-22 23:17:00 +02:00
Olivier Guyot
f43637cc33
Shader Builder / support strings in formatColor
2019-10-22 23:17:00 +02:00
Olivier Guyot
a0b271a812
Literal Style / add support for variables in the style
...
These variables are accessed using the `var` operator, and are meant
to be mutated directly in the style object. When doing so,
the new value will always be used for the render.
This is intended to be used for modifying the style through external
parameters such as an input field, a slider, mouse position etc.
2019-10-22 23:17:00 +02:00
Olivier Guyot
94b8cf6af3
Webgl / add support for a time operator in literal styles
...
This required adding `u_time` as one of the default uniforms provided by the
webgl helper.
2019-10-22 23:17:23 +02:00
Olivier Guyot
0c0c8c5d56
Literal Style / add support for a filter property
2019-10-22 23:17:00 +02:00
Olivier Guyot
e38250ee14
ShaderBuilder / add fragment discard expression in shader params
2019-10-22 11:39:30 +02:00
Olivier Guyot
7b66b294a8
ShaderBuilder / attempt to clarify the way attributes are handled in parseSymbolStyle
2019-10-22 11:18:39 +02:00
Olivier Guyot
9ee93cd2cf
ShaderBuilder / refactoring to use an actual builder pattern
...
There is now a ShaderBuilder class with chainable methods
to specify more easily the contents of the final shaders.
This is to avoid passing around large objects to different functions,
and allow for a richer API.
The documentation has also been corrected and clarified.
2019-10-22 11:12:06 +02:00
Frederic Junod
f20db28901
Align layer canvas to the left
...
So that the position is not affected by the `text-align` css rule.
2019-10-07 13:48:32 +02:00
Frederic Junod
ea88e6cbd4
Remove invalid undefined type in params
2019-09-27 11:01:50 +02:00
Olivier Guyot
09134a6091
Shader builder / typecheck fix for parse fn
2019-09-26 16:30:19 +02:00
Olivier Guyot
28d157af56
Shader builder / add circle and triangle shapes for symbols
2019-09-26 16:30:19 +02:00
Olivier Guyot
9b3a9b5eca
Shader builder / add logic for transforming a style into shader params
...
This was previously handled by the WebGLPointsLayer class, but is now
externalized and tested.
2019-09-26 16:20:35 +02:00
Olivier Guyot
d5caabbbfc
Shader builder / add basic expression parsing
...
Only a handful of expressions for now, very loosely based on the
mapbox style spec. Also only work on numerical values.
2019-09-26 16:20:35 +02:00
Olivier Guyot
34572da17b
Webgl shader builder / expanded functionality
...
Now takes in a custom object with attributes, uniforms etc.
The WebGLPointsLayer uses this to handle image icons.
2019-09-25 17:22:36 +02:00
Olivier Guyot
9e55a8b2f0
Webgl / linting & test fixes
2019-09-25 17:22:36 +02:00
Olivier Guyot
109f9718f9
Webgl renderer / fix existing examples
...
The shaders were rewritten manually for those, althoughj eventually they
should use the shader builder utilities as well.
2019-09-25 11:09:07 +02:00
Olivier Guyot
2b36445ecc
Webgl / Adapt the points renderer to use custom attributes
...
Now most attributes will be custom ones defined by the user of the renderer.
The hit detection is broken for now and still has to be fixed.
Also it is not possible anymore to give a texture to the renderer,
this will have to be fixed as well.
2019-09-25 10:11:27 +02:00
Olivier Guyot
076b674d6f
Webgl helper / easier utility for binding attributes
...
also a bit of improvement on the doc
2019-09-24 19:10:07 +02:00
Olivier Guyot
4d7562fca2
Add a new WebGLPointsLayer type using the shader builder utilities
...
This required adding a `a_index` attribute in the points layer renderer
to be able to make the precomputed shaders to work.
2019-09-24 17:24:56 +02:00
Olivier Guyot
a6b8d920b7
Webgl / add a fixed fragment shader builder for symbols
2019-09-24 15:49:07 +02:00
Olivier Guyot
4de0c0b082
Webgl / add a very simple vertex shader builder utility
...
This only allows including hardcoded values in the shader,
and only for symbols.
2019-09-24 15:43:26 +02:00
ahocevar
ebfb20440a
Simplify events and store listeners only in one place
2019-09-04 16:48:43 +02:00
Olivier Guyot
29d07ada54
Webgl helper / skip binding texture if underlying image is not ready
2019-08-30 11:02:31 +02:00
Olivier Guyot
c48350b666
Webgl buffer / add utility getSize function
...
Saves checking whether the buffer was initialized with
an array already
2019-08-30 10:38:02 +02:00
Olivier Guyot
2f3e8d04f1
Webgl points / fix hit detection for retina devices
2019-07-11 00:05:55 +02:00
Olivier Guyot
28b99767f8
Webgl points / read only one pixel for feature hit detection
...
Also implements `hasFeatureAtCoordinate`.
`hitTolerance` is not supported for now.
2019-06-28 09:12:20 +02:00
Olivier Guyot
e852294938
Webgl / improve reading of render targets data
...
Now two methods are available: `readAll` and `readPixel`,
and the data from the render target is not re-read every time unless
`clearCachedData` is called.
2019-06-28 09:12:20 +02:00
Olivier Guyot
38920867fb
Webgl Helper / Add a method to prepare drawing to render targets
2019-06-28 09:12:20 +02:00
Olivier Guyot
6224d749c4
WebGL / Introduced the WebGLRenderTarget class
...
This utility class simplifies rendering to a texture & reading the
results of the render.
It also allows clearing its content before a new render.
2019-06-28 09:12:20 +02:00
Olivier Guyot
f25a16d90c
Webgl helper / rework create texture utils
...
Now only one util is available: `createTexture`, which
is tested and allows binding an image and reusing an existing texture.
2019-06-28 09:12:20 +02:00
Olivier Guyot
b6425187de
Remove unused WebGLShader class
2019-06-28 09:06:16 +02:00
Frederic Junod
ef10834eb3
Remove unused constants from ol/webgl
...
And change the `EXTENSIONS` constant to a function
2019-06-20 10:25:22 +02:00
Olivier Guyot
9ae7256048
Merge pull request #9562 from jahow/webgl-worker
...
Optimize the WebGL points renderer using a worker
2019-06-06 08:48:29 +02:00