Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vectorize shaders #624

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions src/api/provider/GraphDataProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
fetchArrayBuffer,
readMeshPbf,
xhrFetch,
XMLHttpRequestHeader,
XMLHttpRequestHeader
} from '../Common';
import { ClusterContract } from '../contracts/ClusterContract';
import { CoreImagesContract } from '../contracts/CoreImagesContract';
Expand All @@ -26,18 +26,19 @@ import { S2GeometryProvider } from '../S2GeometryProvider';
import {
GraphClusterContract,
GraphContract,
GraphError,
GraphError
} from './GraphContracts';
import { GraphConverter, MeshParameters } from './GraphConverter';
import { GraphDataProviderOptions } from './GraphDataProviderOptions';
import {
GraphCoreImageEnt,
GraphImageEnt,
GraphSpatialImageEnt,
GraphSpatialImageEnt
} from './GraphEnts';
import { GraphQueryCreator } from './GraphQueryCreator';

export class GraphDataProvider extends DataProviderBase {
private static readonly DEFAULT_ENDPOINT: string = "https://graph.mapillary.com";
private readonly _method: "GET";
private readonly _endpoint: string;

Expand All @@ -61,7 +62,7 @@ export class GraphDataProvider extends DataProviderBase {

this._method = 'GET';
const opts = options ?? {};
this._endpoint = opts.endpoint ?? "https://graph.mapillary.com";
this._endpoint = opts.endpoint ?? GraphDataProvider.DEFAULT_ENDPOINT;
this._accessToken = opts.accessToken;
}

Expand Down Expand Up @@ -90,7 +91,7 @@ export class GraphDataProvider extends DataProviderBase {

const fields = [
...this._query.idFields,
...this._query.coreFields,
...this._query.coreFields
];
const query = this._query.imagesS2(cellId, fields);
const url = new URL(this._query.imagesPath, this._endpoint).href;
Expand All @@ -102,7 +103,7 @@ export class GraphDataProvider extends DataProviderBase {
.then(r => {
const result: CoreImagesContract = {
cell_id: cellId,
images: [],
images: []
};
const items = r.data;
for (const item of items) {
Expand All @@ -127,7 +128,7 @@ export class GraphDataProvider extends DataProviderBase {
const fields = [
...this._query.idFields,
...this._query.coreFields,
...this._query.spatialFields,
...this._query.spatialFields
];
const query = this._query.images(imageIds, fields);
const url = new URL(this._query.imagesPath, this._endpoint).href;
Expand All @@ -146,7 +147,7 @@ export class GraphDataProvider extends DataProviderBase {
const image = Object.assign({}, spatialImage, coreImage);
const contract: EntContract<ImageEnt> = {
node: image,
node_id: item.id,
node_id: item.id
};
result.push(contract);
}
Expand All @@ -159,7 +160,7 @@ export class GraphDataProvider extends DataProviderBase {
: Promise<ImageTilesContract> {

const fields = [
...this._query.imageTileFields,
...this._query.imageTileFields
];
const query = this._query.imageTiles(request.z, fields);
const url = new URL(
Expand All @@ -173,7 +174,7 @@ export class GraphDataProvider extends DataProviderBase {
.then(r => {
const result: ImageTilesContract = {
node: r.data,
node_id: request.imageId,
node_id: request.imageId
};
return result;
});
Expand Down Expand Up @@ -207,7 +208,7 @@ export class GraphDataProvider extends DataProviderBase {
.then(r => {
const result: SequenceContract = {
id: sequenceId,
image_ids: r.data.map(item => item.id),
image_ids: r.data.map(item => item.id)
};
return result;
});
Expand All @@ -221,7 +222,7 @@ export class GraphDataProvider extends DataProviderBase {
const fields = [
...this._query.idFields,
...this._query.coreFields,
...this._query.spatialFields,
...this._query.spatialFields
];
const query = this._query.images(imageIds, fields);
const url = new URL(this._query.imagesPath, this._endpoint).href;
Expand All @@ -238,7 +239,7 @@ export class GraphDataProvider extends DataProviderBase {
this._setMeshParameters(spatialImage);
const contract: EntContract<SpatialImageEnt> = {
node: spatialImage,
node_id: item.id,
node_id: item.id
};
result.push(contract);
}
Expand All @@ -255,14 +256,14 @@ export class GraphDataProvider extends DataProviderBase {
{ name: 'Accept', value: 'application/json' },
{
name: 'Content-Type',
value: 'application/x-www-form-urlencoded',
},
value: 'application/x-www-form-urlencoded'
}
];

if (this._accessToken) {
headers.push({
name: 'Authorization',
value: `OAuth ${this._accessToken}`,
value: `OAuth ${this._accessToken}`
});
}
return headers;
Expand Down
9 changes: 4 additions & 5 deletions src/shader/chunk/coordinates.glsl.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
export default /* glsl */`
vec2 sfmToUv(const in vec2 sfm, const in vec2 scale) {
float u = scale.x * sfm.x + 0.5;
float v = - scale.y * sfm.y + 0.5;
return vec2(u, v);
}
`;
// float u = scale.x * sfm.x + 0.5;
// float v = - scale.y * sfm.y + 0.5;
return vec2(1.0, -1.0) * scale * sfm + vec2(0.5);
}`;
14 changes: 6 additions & 8 deletions src/shader/chunk/map_color_fragment.glsl.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
export default /* glsl */`
vec2 uv = sfmToUv(sfm, scale);
float u = uv.x;
float v = uv.y;

vec4 mapColor;
if (u >= 0. && u <= 1. && v >= 0. && v <= 1.) {
mapColor = texture2D(map, vec2(u, v));
mapColor.a = opacity;
if (all(bvec4(greaterThanEqual(uv, vec2(0.0)),
lessThanEqual( uv, vec2(1.0))))) {
mapColor = vec4(vec3(texture2D(map, uv)), opacity);
} else {
mapColor = vec4(0.0, 0.0, 0.0, 0.0);
}
`;
const lowp vec4 blackColor = vec4(vec3(0.0), 1.0);
mapColor = blackColor;
}`;