Skip to content

Commit 0a7acb6

Browse files
committed
fix: fixes against maptalks-gpu
1 parent d92e0bb commit 0a7acb6

File tree

30 files changed

+192
-82
lines changed

30 files changed

+192
-82
lines changed

build/transform-to-gpu.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
const curPath = path.resolve("./");
5+
const packagePath = path.join(curPath, "package.json");
6+
7+
fs.readFile(packagePath, "utf8", function (err, data) {
8+
if (err) throw err;
9+
const obj = JSON.parse(data);
10+
if (!obj.module) {
11+
console.log("No module field in package.json");
12+
return;
13+
}
14+
const modulePath = path.join(curPath, obj.module);
15+
fs.readFile(modulePath, "utf8", function (err, data) {
16+
if (err) {
17+
return console.log(err);
18+
}
19+
const result = data.replace(/@maptalks\/gl"/g, "@maptalks/gpu\"").replace(/"@maptalks\/gltf-layer"/g, "\"@maptalks/gltf-layer/dist/maptalks.gltf.gpu.es.js\"");
20+
const gpuFileName = modulePath.replace(/\.es\.js$/, ".gpu.es.js");
21+
fs.writeFile(gpuFileName, result, "utf8", function (err) {
22+
if (err) return console.log(err);
23+
});
24+
});
25+
});

packages/analysis/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"module": "dist/maptalks.analysis.es.js",
1212
"files": [
1313
"./dist/maptalks.analysis.es.js",
14+
"./dist/maptalks.analysis.gpu.es.js",
1415
"./dist/maptalks.analysis.es.js.map",
1516
"./dist/maptalks.analysis.js",
1617
"./dist/maptalks.analysis.js.map"
@@ -28,13 +29,15 @@
2829
"clean": "rimraf dist",
2930
"dev": "rollup -w -c rollup.config.js",
3031
"build-gl": "cd ../gl && npm run build",
31-
"build": "npm run clean && npm run lint && rollup --environment BUILD:production -c rollup.config.js",
32+
"build": "npm run clean && npm run lint && rollup --environment BUILD:production -c rollup.config.js && npm run transform-gpu",
3233
"build-dev": "rollup -c rollup.config.js",
3334
"version": "npm run build",
34-
"lint": "eslint \"src/**/*.{js,jsx,mjs,ts,tsx}\""
35+
"lint": "eslint \"src/**/*.{js,jsx,mjs,ts,tsx}\"",
36+
"transform-gpu": "node ../../build/transform-to-gpu"
3537
},
3638
"devDependencies": {
3739
"@maptalks/gl": "workspace:*",
40+
"@maptalks/gpu": "workspace:*",
3841
"@maptalks/gltf-layer": "workspace:*",
3942
"@maptalks/vt": "workspace:*",
4043
"@rollup/plugin-commonjs": "^25.0.7",

packages/gl/rollup.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ function wgsl() {
4040
const production = process.env.BUILD === 'production';
4141
const outputFile = pkg.main;
4242
const plugins = production ? [terser({
43+
mangle: true,
4344
// mangle: {
4445
// properties: {
4546
// 'regex' : /^_/,

packages/gl/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export { GroupGLLayer, GroundPainter, CanvasCompatible, HighlightUtil, ContextUt
1212

1313
import './layer/TileLayerGLRenderer';
1414
import './map/MapGLRenderer';
15+
import './map/MapGPURenderer';
1516
import './layer/ImageLayerGLRenderer';
1617

1718
export { default as HeatmapProcess } from './layer/HeatmapProcess';

packages/gl/src/layer/GroupGLLayerRenderer.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ class GroupGLLayerRenderer extends CanvasCompatible(LayerAbstractRenderer) {
3434

3535
onAdd() {
3636
super.onAdd();
37-
this.prepareCanvas();
37+
const map = this.getMap();
38+
const mapRenderer = map.getRenderer();
39+
if (mapRenderer.ready) {
40+
this.prepareCanvas();
41+
}
3842
}
3943

4044
updateSceneConfig() {
@@ -641,6 +645,10 @@ class GroupGLLayerRenderer extends CanvasCompatible(LayerAbstractRenderer) {
641645

642646
onRemove() {
643647
//regl framebuffer for picking created by children layers
648+
if (!this.canvas) {
649+
super.onRemove();
650+
return;
651+
}
644652
const pickingFBO = this.canvas.pickingFBO;
645653
if (pickingFBO && pickingFBO.destroy && !pickingFBO['___disposed']) {
646654
pickingFBO['___disposed'] = true;

packages/gl/src/map/MapGPURenderer.ts

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,27 +59,28 @@ export default class MapGPURenderer extends renderer.MapAbstractRenderer {
5959
return true;
6060
}
6161

62-
async createContext() {
63-
const { gpuDevice, gpuAdapter } = await initGPUDevice();
64-
const context = this.canvas.getContext('webgpu');
65-
this.device = new GraphicsDevice(gpuDevice, context, gpuAdapter);
62+
createContext() {
63+
return initGPUDevice().then(({ gpuDevice, gpuAdapter }) => {
64+
const context = this.canvas.getContext('webgpu');
65+
this.device = new GraphicsDevice(gpuDevice, context, gpuAdapter);
6666

67-
this.context = {
68-
context,
69-
device: this.device,
70-
getImageData: (sx, sy, sw, sh) => {
71-
const pixels = new Uint8Array(sw * sh * 4);
72-
const canvas = this.canvas;
73-
this.device.read({
74-
x: sx,
75-
y: canvas.height - sy,
76-
width: sw,
77-
height: sh,
78-
data: pixels
79-
});
80-
return new ImageData(new Uint8ClampedArray(pixels.buffer), sw, sh);
81-
}
82-
};
67+
this.context = {
68+
context,
69+
device: this.device,
70+
getImageData: (sx, sy, sw, sh) => {
71+
const pixels = new Uint8Array(sw * sh * 4);
72+
const canvas = this.canvas;
73+
this.device.read({
74+
x: sx,
75+
y: canvas.height - sy,
76+
width: sw,
77+
height: sh,
78+
data: pixels
79+
});
80+
return new ImageData(new Uint8ClampedArray(pixels.buffer), sw, sh);
81+
}
82+
};
83+
});
8384
}
8485
}
8586

packages/gl/src/reshader/shader/wgsl/phong_frag.wgsl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,9 @@ fn main(vertexOutput: VertexOutput) -> @location(0) vec4f {
240240
#ifdef HAS_HEATMAP
241241
fragColor = heatmap_getColor(fragColor);
242242
#endif
243-
243+
#if HAS_HIGHLIGHT_OPACITY || HAS_HIGHLIGHT_COLOR
244244
fragColor = highlight_blendColor(fragColor, vertexOutput);
245+
#endif
245246

246247
#ifdef HAS_LAYER_OPACITY
247248
fragColor *= lightUniforms.layerOpacity;

packages/gl/src/reshader/shader/wgsl/phong_vert.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ fn main(vertexInput: VertexInput) -> VertexOutput {
121121
#else
122122
let localPosition = getPosition(vec3f(vertexInput.aPosition.xyz), vertexInput);
123123
#endif
124-
let localPositionMatrix = getPositionMatrix(vertexInput, vertexOutput, modelUniforms.positionMatrix);
124+
let localPositionMatrix = getPositionMatrix(vertexInput, &vertexOutput, modelUniforms.positionMatrix);
125125

126126
vertexOutput.vFragPos = (modelUniforms.modelMatrix * localPositionMatrix * localPosition).xyz;
127127

packages/gpu/rollup.config.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,14 @@ function wgsl() {
4848
const production = process.env.BUILD === 'production';
4949
const outputFile = pkg.main;
5050
const plugins = production ? [terser({
51-
mangle: {
52-
properties: {
53-
'regex' : /^_/,
54-
'keep_quoted' : true,
55-
'reserved': ['on', 'once', 'off', '_getTilesInCurrentFrame', '_drawTiles', '_getTileZoom', '_onGeometryEvent']
56-
}
57-
},
51+
mangle: true,
52+
// mangle: {
53+
// properties: {
54+
// 'regex' : /^_/,
55+
// 'keep_quoted' : true,
56+
// 'reserved': ['on', 'once', 'off', '_getTilesInCurrentFrame', '_drawTiles', '_getTileZoom', '_onGeometryEvent']
57+
// }
58+
// },
5859
output : {
5960
keep_quoted_props: true,
6061
beautify: true,

packages/layer-3dtiles/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
"scripts": {
99
"clean": "rimraf dist",
1010
"lint": "eslint src/**/*.js test/**/*.js",
11-
"build": "npm run clean && npm run lint && rollup --environment BUILD:production -c rollup.config.js",
11+
"build": "npm run clean && npm run lint && rollup --environment BUILD:production -c rollup.config.js && npm run transform-gpu",
1212
"build-dev": "rollup -c rollup.config.js",
1313
"dev": "rollup -w -c rollup.config.js",
1414
"test": "electron-mocha --retries 3 --main ../ignore-gpu-blacklist.js -t 8000 --show-window --renderer ./test/**/*.spec.js -g \"ciskip\" --invert",
1515
"test-local": "npm run pretest && npm run test-browser && electron-mocha --main ../ignore-gpu-blacklist.js -t 8000 --show-window --renderer ./test/**/*.spec.js -g \"ciskip \"",
1616
"test-browser": "electron-mocha -t 8000 --show-window --renderer ./test/**/*.spec.js -g \"ciskip-browser\"",
1717
"tdd": "electron-mocha --main ../ignore-gpu-blacklist.js -t 8000 --interactive --renderer ./test/**/*.spec.js -g",
18-
"pretest": "npm run build"
18+
"pretest": "npm run build",
19+
"transform-gpu": "node ../../build/transform-to-gpu"
1920
},
2021
"repository": {
2122
"type": "git",
@@ -31,6 +32,7 @@
3132
"dist/maptalks.3dtiles.js",
3233
"dist/maptalks.3dtiles.js.map",
3334
"dist/maptalks.3dtiles.es.js",
35+
"dist/maptalks.3dtiles.gpu.es.js",
3436
"dist/maptalks.3dtiles.es.js.map",
3537
"dist/maptalks.3dtiles.d.ts"
3638
],
@@ -52,6 +54,7 @@
5254
},
5355
"devDependencies": {
5456
"@maptalks/gl": "workspace:*",
57+
"@maptalks/gpu": "workspace:*",
5558
"@maptalks/transcoders.crn": "workspace:*",
5659
"@maptalks/transcoders.draco": "workspace:*",
5760
"@maptalks/transcoders.ktx2": "workspace:*",

0 commit comments

Comments
 (0)