Commit Graph

65 Commits

Author SHA1 Message Date
Langbein, Michael
301e083dea Refactor unittest for WebGLPointsLayerRenderer
The test for the prerender and postrender events now uses a WebGLPointsLayer instead of a VectorLayer.
This is less confusing and probably closer to practical usage, too.
2020-08-31 10:29:42 +02:00
Langbein, Michael
7808a8cb9a Implement unit-tests for WebGLLayerRenderer's new preRender and postRender methods.
The test only checks if the event is fired. It does not check for the properties of the RenderEvent object.
2020-08-30 13:20:18 +02: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
Olivier Guyot
7da86ae71f Webgl points renderer / slight improvements following review
Also fixes a lint error.
2019-11-04 09:55:54 +01:00
Olivier Guyot
e78c14c061 Webgl points renderer / add a cache for features in the source
This allows quicker access to features as well as their geometries
and properties, reducing the time taken by a rebuildBuffers call.
2019-11-04 09:31:38 +01:00
Olivier Guyot
cd3b222467 Specify an actual extent when loading features in the Webgl points renderer
This means any specified loading strategy will be taken into account.

Also added some tests to make sure the interaction with the source is
correct.
2019-10-28 10:26:31 +01:00
Olivier Guyot
9e55a8b2f0 Webgl / linting & test fixes 2019-09-25 17:22:36 +02:00
Olivier Guyot
23c2999cab Webgl points renderer / fix hit detection
Due to the fact that the points renderer does not know for sure
which attributes will be used for rendering, it is now mandatory
to provide both vertex/fragment shaders for rendering AND hit
detection.

The hit detection shaders should expect having an `a_hitColor`
that they should return to allow matching the feature uid.

This will be all one eventually by shader builders under the hood.
2019-09-25 12:11:09 +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
30f19f8317 Webgl points renderer / terminates worker & dispose helper 2019-09-24 17:59:21 +02:00
jahow
a0ff08b734 Webgl points / improve tests
Now testing with two features and adding a call to `prepareFrame`
without which the final render transform was off.
Also added a test with a pixelratio > 1.
2019-07-11 00:05:55 +02:00
Frederic Junod
933a6297bb Remove unused hasFeatureAtCoordinate from ol/renderer/Layer 2019-06-28 11:10:33 +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
1257ade199 Webgl renderer / rename function to avoid confusion
`getBlankTexture` was too close to `WebGLHelper#createTexture`
2019-06-28 09:12:20 +02:00
Olivier Guyot
8145b358c0 Webgl renderer / add id encode/decode utils 2019-06-28 09:06:16 +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
87d5f4c8bc Use 'helper' from WebGLHelper in tests 2019-06-01 15:35:31 +02:00
Olivier Guyot
698816030e Webgl points / fix unit tests 2019-06-01 15:33:36 +02:00
Olivier Guyot
532b8194b1 Webgl points / use the new typed-array based utils for buffers
`rebuildBuffer` is still a very CPU intensive task and is blocking the
main thread.
2019-06-01 15:20:04 +02:00
Olivier Guyot
eb912d95ca Webgl / refactor utilities to work only on typed arrays
The base webgl renderer module now has two types of utilities:
* `writeXFeatureInstructions` will write a series of values in a given
typed array, which represent how a given feature will be rendered; for points,
this means position, size, color, etc.
* `writeXFeatureToBuffers` will fill up the given index & vertex buffers
with values based on the provided render instructions

As such, the logic for rendering features is:
user-input style > instructions array >(*) index/vertex buffers > draw

(*) this transformation is intended to be done on a worker.
2019-06-01 15:19:37 +02:00
Tim Schaub
deb00f20fe Include full filename in import specifier 2019-05-29 08:51:10 -06:00
Olivier Guyot
e11e3c5f6e Webgl / minor function renaming 2019-05-15 11:30:24 +02:00
Olivier Guyot
c705775d75 Linting 2019-05-15 10:20:31 +02:00
Olivier Guyot
75eb62363a WebGL points / rebuild buffers only when extent changed 2019-05-15 10:18:47 +02:00
Olivier Guyot
523097903a WebGL points / rebuild buffers on every non animation frame 2019-05-15 10:18:22 +02:00
Olivier Guyot
c6d214b585 Webgl / implement support for custom attributes in webgl buffers
Only numerical attributes can be pushed in webgl buffers.
2019-05-15 10:15:55 +02:00
Olivier Guyot
3a429d3f6c Webgl / add utils for pushing geojson geometries in webgl buffers
For now only point geometries are handled.
2019-05-15 09:44:41 +02:00
Olivier Guyot
5e36468245 Webgl / add a simple Layer renderer for common logic
This will eventually provides utilities for manipulating & rendering data
2019-05-15 09:43:29 +02:00
Olivier Guyot
a2d83f5358 WebGL points / add minimal tests 2019-05-15 09:42:15 +02:00
Olivier Guyot
72cf7b13fa removed existing webgl rendering unit tests 2018-11-16 14:05:04 +01:00
Marc Jansen
183b8e29c4 Named exports from ol/transform 2018-02-15 17:55:54 +01:00
Tim Schaub
ad62739a6e Use blocked scoped variables
In addition to using const and let, this also upgrades our linter config and removes lint (mostly whitespace).
2018-01-12 00:50:30 -07:00
Tim Schaub
d75623084e Rename _ol_source_Image_ to ImageSource 2018-01-10 09:36:28 -07:00
Tim Schaub
453b79dad7 Rename _ol_layer_Image_ to ImageLayer 2018-01-10 09:36:28 -07:00
Tim Schaub
12a3b99b09 Rename _ol_renderer_webgl_ImageLayer_ to WebGLImageLayerRenderer 2018-01-10 09:35:42 -07:00
Ron Young
9fa59d0735 rename map in tests 2017-12-21 23:11:42 -07:00
Tim Schaub
7f47883c48 Transformed 2017-12-12 06:53:18 -07:00
Tim Schaub
a3e3e99baa Get rid of useless test exports 2017-08-17 15:16:58 -04:00
Tim Schaub
9415899a03 Add common transforms by default 2017-03-27 10:07:00 -06:00
Tim Schaub
ed5dbd1293 Put test requires on top 2016-08-08 09:58:11 -06:00
Tim Schaub
424f3e5577 Move renderer files so they are named like their provides 2016-08-07 10:49:11 -06:00
Andreas Hocevar
6b4ee42c90 Refactor to a more convenient internal API 2016-06-23 13:10:41 +02:00
Andreas Hocevar
cf7ff841a7 Remove use of goog.vec.* 2016-06-23 13:10:41 +02:00
Tim Schaub
ae4d8195c0 Remove use of goog.dispose() 2016-03-02 15:44:06 -07:00
Éric Lemoine
9ce3bc7f3d Fix WebGL image layer rendering on retina displays
This commit takes the device pixel ratio into account when calculating the matrix used to apply the image to the output canvas.
2015-04-07 12:13:16 +02:00
Frederic Junod
38bbe35e8d Remove ol.Map#getRenderer function 2013-11-20 11:45:24 +01:00
Tim Schaub
b192335e56 Merge pull request #1027 from tschaub/closure-util
Use the closure-util package.  Documentation will come when this is a more complete solution.  See #1027 for basic usage instructions.
2013-09-15 15:36:13 -07:00
Éric Lemoine
009172951c WebGL image layer tests require the common proj 2013-09-15 10:37:22 -06:00
Tim Schaub
e806f51b3d Changing extent structure back to single array: [minX, minY, maxX, maxY]
This means we'll have to have a new structure and new methods for 3D envelopes.
2013-09-15 00:31:32 -06:00
Tim Schaub
e84e0e1233 WebGL renderer updates for new extent structure 2013-09-14 21:14:55 -06:00