Commit Graph

67 Commits

Author SHA1 Message Date
Olivier Guyot
cfaf9a14e5 Rework a bit the webgl helper to allow having several programs
Without this, doing render passes with different programs using one
helper instance was not really doable
2022-07-15 22:33:52 +02:00
Tomas Burleigh
d524d46969 WebGLPointsLayer wrapX support - partially addressing #11131
WebGLPointsLayer renderFrame and renderHitDetection will now draw
multiple worlds if the source and projection support wrapX.

Hit detection needs additional improvement. It stops working after
more than one wrap around the world. If 0 is the middle world, then
the hit detection works for worlds -1, 0, and -1, but not for worlds
> 2 or < -2.

The example has hit detection enabled, demonstrated with a colour
change on hover for the circle styles. When moving the mouse, the hit
detection is unreliable and flickers on/off. This needs improvement.

The webgl-points renderer test has been updated.
2022-04-01 13:35:13 +13:00
Maximilian Krög
300cf6c2bb Replce description for WebGLHelper.DefaultAttrib 2022-02-13 15:53:18 +01:00
Maximilian Krög
a0dd0054a9 Fix jsdoc references 2022-02-13 13:39:06 +01:00
Tim Schaub
97a1c196cc Merge pull request #13334 from EvertEt/strictnullchecks-4
Improve some null types for strictNullChecks
2022-02-08 10:32:32 -07:00
EvertEt
25e1d6c5d6 Improve some null types for strictNullChecks 2022-02-06 19:36:30 +01:00
Tim Schaub
adbbc05159 Avoid rendering outside WebGL layer and source extent 2022-02-05 21:02:22 -07:00
Tim Schaub
68ea485e69 Dispatch precompose and postcompose events for WebGL layers 2021-12-15 16:59:51 -07:00
Tim Schaub
c2fc800fc1 Allow WebGL tile layer style to be updated 2021-12-02 16:32:00 -07:00
Tim Schaub
a2f3c02ac5 Allow canvas reuse for WebGL layers 2021-11-14 12:34:14 -07:00
Tim Schaub
a332842540 More cleanup in the WebGL tile layer's dispose method 2021-09-23 12:00:00 +00:00
Tim Schaub
da256e6c00 Enable WebGL extensions when required 2021-09-17 14:14:12 -06:00
Duck
17394cc8be Ensure the texture is loaded into the correct index.
The previous code would try to load subsequent textures into the 0th slot.
2021-09-15 15:10:08 -07:00
Duck
5afd25150f Add additional extension requirements for floating point textures. 2021-09-15 09:35:23 -07:00
Andreas Hocevar
4526f2ef34 Properly handle alt tiles of transparent images 2021-08-18 11:24:34 +02:00
Andreas Hocevar
79f5f46d27 Remove lint 2021-06-28 18:10:51 +02:00
Tim Schaub
f121db1ad8 Fix buffer deletion 2021-02-10 18:39:45 -07:00
Simon Seyock
2ad5789797 Add descriptions for properties. 2021-02-04 18:19:33 +01:00
Simon Seyock
8facb252f1 Replace google closure syntax = with brackets around name 2021-02-03 14:06:02 +01:00
Tim Schaub
19bb3f8c88 Consistent use of Array and Object types 2021-02-02 13:53:10 -07:00
Simon Seyock
f590cb3473 Harmonize jsdoc 2021-02-02 12:14:56 +01:00
Tim Schaub
afd0b8f757 Throw an error if shaders fail to compile or program fails to link 2021-01-05 17:24:58 -07:00
Tim Schaub
054af09032 Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier.  Most formatting changes were automatically applied with this:

    npm run lint -- --fix

A few manual changes were required:

 * In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
 * In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason.  While editing this, I reworked `ExampleBuilder` to be a class.
 * In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
2020-04-06 12:54:09 -06:00
Frederic Junod
d15ec1c12c Remove all inheritDoc tags from disposeInternal functions 2020-04-03 08:10:41 +02:00
John Leonard
8fe71bbbff perf: only do expensive reload when texture changes 2020-02-14 11:39:54 +00:00
Olivier Guyot
600e1a4647 Webgl points renderer / use a smaller canvas for hit detection render
The hit detection render is now done against a canvas with half the
width/height of the main render. This still provides sufficient precision
while requiring a much smaller memory allocation (especially for
retina devices).
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
Andreas Hocevar
ac50cc3460 New eslint config with no-multi-assign 2019-11-02 15:20:21 +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
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
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
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
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
2f3e8d04f1 Webgl points / fix hit detection for retina devices 2019-07-11 00:05:55 +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
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
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
Olivier Guyot
2412fe0211 Webgl / remove handling of element_index_uint extension
From now on we will assume this extension is always enabled.

An error message have been added in the unlikely scenario of a lack
of support.
2019-06-05 14:46:15 +02:00
Frederic Junod
02ce2f4bec Use compose function from ol/transform 2019-06-04 13:23:12 +02:00
Frederic Junod
06be00bbd5 Webgl Helper / add an API for OESElementIndexUint extension 2019-06-01 15:35:27 +02:00
Olivier Guyot
a366803cdd Webgl / use the new buffer API in helper & the points renderer 2019-06-01 15:33:36 +02:00
Tim Schaub
deb00f20fe Include full filename in import specifier 2019-05-29 08:51:10 -06:00
Olivier Guyot
5d2b7fe4bb Webgl points / use the helper ton compute the projection transform
The `WebGLHelper` class now provides a `makeProjectionTransform` method
that updates a transform to match the projection for a given frame state.

This also means that the WebGLHelper does not set the projection matrix
uniform anymore, this is the responsibility of the renderer as
the rendered coordinates will not be in world space from now on.
2019-05-15 10:18:47 +02:00
Olivier Guyot
3e2e45ce6d Webgl helper / add the possibility to use transforms as custom uniforms
These will be translated into 4x4 matrices in GLSL.
2019-05-15 10:18:47 +02:00
Olivier Guyot
f69c37566e Improve documentation on webgl and View 2019-05-04 17:26:05 +02:00
Tim Schaub
58c4c9ebb8 Remove unnecessary closure and fix uniform type 2019-04-19 14:33:43 -07:00
Olivier Guyot
b955579a9c Webgl / clarified the buffer binding/flushing logic
The Webgl points layer renderer has also been optimized accordingly,
giving out much better performance.
2019-04-02 21:05:31 +02:00