Skip to content

Commit d0e5b4c

Browse files
authored
fix: Deck gl update (#2508)
Update Deck.gl to latest version.
1 parent f85026d commit d0e5b4c

File tree

118 files changed

+1964
-1402
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+1964
-1402
lines changed

python/package-lock.json

Lines changed: 117 additions & 120 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
"validate": "npm run typecheck && npm run lint"
2929
},
3030
"dependencies": {
31-
"@deck.gl/core": "^9.0.36",
32-
"@deck.gl/react": "^9.0.36",
31+
"@deck.gl/core": "^9.1.11",
32+
"@deck.gl/react": "^9.1.11",
3333
"@emerson-eps/color-tables": "^0.4.85",
3434
"@equinor/eds-core-react": "0.33.0",
3535
"@equinor/eds-icons": "^0.19.1",

typescript/package-lock.json

Lines changed: 492 additions & 475 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

typescript/packages/subsurface-viewer/package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@
3333
"author": "Equinor <[email protected]>",
3434
"license": "MPL-2.0",
3535
"dependencies": {
36-
"@deck.gl-community/editable-layers": "9.0.3",
37-
"@deck.gl/aggregation-layers": "9.0.40",
38-
"@deck.gl/core": "9.0.40",
39-
"@deck.gl/extensions": "9.0.40",
40-
"@deck.gl/geo-layers": "9.0.40",
41-
"@deck.gl/json": "9.0.40",
42-
"@deck.gl/layers": "9.0.40",
43-
"@deck.gl/mesh-layers": "9.0.40",
44-
"@deck.gl/react": "9.0.40",
36+
"@deck.gl-community/editable-layers": "^9.1.0-beta.4",
37+
"@deck.gl/aggregation-layers": "^9.1.11",
38+
"@deck.gl/core": "^9.1.11",
39+
"@deck.gl/extensions": "^9.1.11",
40+
"@deck.gl/geo-layers": "^9.1.11",
41+
"@deck.gl/json": "^9.1.11",
42+
"@deck.gl/layers": "^9.1.11",
43+
"@deck.gl/mesh-layers": "^9.1.11",
44+
"@deck.gl/react": "^9.1.11",
4545
"@emerson-eps/color-tables": "^0.4.92",
4646
"@equinor/eds-core-react": "^0.36.0",
4747
"@equinor/eds-icons": "^0.21.0",
@@ -55,7 +55,7 @@
5555
"d3-format": "^3.1.0",
5656
"gl-matrix": "^3.4.3",
5757
"lodash": "^4.17.21",
58-
"math.gl": "^4.0.1",
58+
"math.gl": "^4.1.0",
5959
"mathjs": "^13.2.0",
6060
"merge-refs": "^1.2.2",
6161
"static-kdtree": "^1.0.2",
Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { LayerExtension } from "@deck.gl/core";
22

33
import type { ShaderModule } from "@luma.gl/shadertools";
4-
import type { Layer } from "@deck.gl/core";
4+
import type { Layer, LayerProps } from "@deck.gl/core";
55
import { project32, project } from "@deck.gl/core";
6-
import { glsl } from "@luma.gl/shadertools";
76

87
const defaultProps = {
98
sideViewIds: [],
@@ -13,34 +12,11 @@ type SideProjectionExtensionProps = {
1312
sideViewIds?: string[];
1413
};
1514

16-
const shaderFunction = glsl`
17-
uniform float side_view;
18-
19-
vec3 transform(vec3 clip_position) {
20-
if (side_view < 1.0) {
21-
return clip_position;
22-
}
23-
vec3 world_position = geometry.worldPosition.xyz;
24-
vec4 transformed = vec4(world_position.x, world_position.z, 0.0, 1.0);
25-
26-
vec4 commonspace = project_position(transformed);
27-
28-
vec4 clipspace = project_common_position_to_clipspace(commonspace);
29-
30-
return clipspace.xyz;
31-
}
32-
`;
33-
34-
const shaderModuleVs: ShaderModule = {
35-
name: "unfold-vs",
36-
vs: shaderFunction,
37-
};
38-
3915
const injectionVs = {
40-
"vs:#decl": glsl`
16+
"vs:#decl": /*glsl*/ `
4117
vec3 new_position;
4218
`,
43-
"vs:DECKGL_FILTER_GL_POSITION": glsl`
19+
"vs:DECKGL_FILTER_GL_POSITION": /*glsl*/ `
4420
new_position = transform(position.xyz);
4521
position.xyz = new_position;
4622
`,
@@ -52,23 +28,48 @@ export class SideProjectionExtension extends LayerExtension {
5228

5329
getShaders(this: Layer<SideProjectionExtensionProps>) {
5430
return {
55-
modules: [shaderModuleVs, project, project32],
31+
modules: [project, project32, gridUniforms],
5632
inject: injectionVs,
5733
};
5834
}
5935

60-
draw(
61-
this: Layer<Required<SideProjectionExtensionProps>>,
62-
{
63-
uniforms,
64-
}: {
65-
uniforms: {
66-
side_view: unknown;
67-
};
68-
}
69-
): void {
36+
draw(this: Layer<Required<SideProjectionExtensionProps>>) {
7037
const { sideViewIds } = this.props;
7138
const isSideView = sideViewIds.includes(this.context.viewport.id);
72-
uniforms.side_view = isSideView ? 1.0 : 0.0;
39+
this.setShaderModuleProps({
40+
side: {
41+
side_view: isSideView,
42+
},
43+
});
44+
}
45+
}
46+
47+
// local shader module for the uniforms
48+
const uniformsBlock = /*glsl*/ `\
49+
uniform sideUniforms {
50+
float side_view;
51+
} side;
52+
53+
vec3 transform(vec3 clip_position) {
54+
if (side.side_view < 1.0) {
55+
return clip_position;
7356
}
57+
vec3 world_position = geometry.worldPosition.xyz;
58+
vec4 transformed = vec4(world_position.x, world_position.z, 0.0, 1.0);
59+
vec4 commonspace = project_position(transformed);
60+
vec4 clipspace = project_common_position_to_clipspace(commonspace);
61+
return clipspace.xyz;
7462
}
63+
`;
64+
65+
type uniformsType = {
66+
side_view: number;
67+
};
68+
69+
const gridUniforms = {
70+
name: "side",
71+
vs: uniformsBlock,
72+
uniformTypes: {
73+
side_view: "f32",
74+
},
75+
} as const satisfies ShaderModule<LayerProps, uniformsType>;

typescript/packages/subsurface-viewer/src/layers/axes/axes-fragment.glsl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const fragmentShader = `#version 300 es
2-
#define SHADER_NAME graph-layer-fragment-shader
2+
#define SHADER_NAME axes-fragment-shader
33
44
precision highp float;
55

typescript/packages/subsurface-viewer/src/layers/axes/grid-vertex.glsl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const gridVertex = `#version 300 es
2-
#define SHADER_NAME graph-layer-axis-vertex-shader
2+
#define SHADER_NAME axes-grid-vertex-shader
33
44
precision highp float;
55

typescript/packages/subsurface-viewer/src/layers/axes2d/axes2DLayer.ts

Lines changed: 85 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type {
22
Color,
3-
LayerContext,
3+
LayerProps,
44
UpdateParameters,
55
Viewport,
66
} from "@deck.gl/core";
@@ -12,9 +12,12 @@ import {
1212
} from "@deck.gl/core";
1313
import { load } from "@loaders.gl/core";
1414
import { ImageLoader } from "@loaders.gl/images";
15-
import type { UniformValue } from "@luma.gl/core";
15+
import type { RenderPass, UniformValue } from "@luma.gl/core";
1616
import { Geometry, Model } from "@luma.gl/engine";
17+
import type { ShaderModule } from "@luma.gl/shadertools";
18+
1719
import { vec4 } from "gl-matrix";
20+
1821
import type { ExtendedLayerProps, Position3D } from "../utils/layerTools";
1922
import fontAtlasPng from "./font-atlas.png";
2023
import labelFragmentShader from "./label-fragment.glsl";
@@ -153,7 +156,7 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
153156
oldProps,
154157
context,
155158
changeFlags,
156-
}: UpdateParameters<this>): boolean {
159+
}: UpdateParameters<Layer<Axes2DLayerProps>>): boolean {
157160
return (
158161
super.shouldUpdateState({
159162
props,
@@ -514,13 +517,7 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
514517
return labels;
515518
}
516519

517-
draw({
518-
context,
519-
}: {
520-
moduleParameters: unknown;
521-
uniforms: unknown;
522-
context: LayerContext;
523-
}): void {
520+
draw(opts: { context: { renderPass: RenderPass } }): void {
524521
const is_orthographic =
525522
this.context.viewport.constructor === OrthographicViewport;
526523
if (
@@ -539,14 +536,14 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
539536
}
540537

541538
// background
542-
models[n - 1].draw(context.renderPass);
539+
models[n - 1].draw(opts.context.renderPass);
543540

544541
// lines
545-
models[n - 2].draw(context.renderPass);
542+
models[n - 2].draw(opts.context.renderPass);
546543

547544
// labels
548545
for (let i = 0; i < n - 2; i++) {
549-
models[i].draw(context.renderPass);
546+
models[i].draw(opts.context.renderPass);
550547
}
551548

552549
return;
@@ -681,7 +678,6 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
681678
id: `${this.props.id}-lines`,
682679
vs: lineVertexShader,
683680
fs: lineFragmentShader,
684-
uniforms: { uColor: lineColor, uClipZ: -1 },
685681
geometry: new Geometry({
686682
topology: "line-list",
687683
attributes: {
@@ -690,9 +686,15 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
690686
vertexCount: tick_and_axes_lines.length / 3,
691687
}),
692688

693-
modules: [project32],
689+
modules: [project32, linesUniforms],
694690
isInstanced: false,
695691
});
692+
lineModel.shaderInputs.setProps({
693+
lines: {
694+
uColor: lineColor,
695+
uClipZ: -1,
696+
},
697+
});
696698

697699
//-- Background model --
698700
// Color on axes background.
@@ -709,7 +711,6 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
709711
id: `${this.props.id}-background`,
710712
vs: lineVertexShader,
711713
fs: lineFragmentShader,
712-
uniforms: { uColor: bColor, uClipZ: -0.9 },
713714
geometry: new Geometry({
714715
topology: "triangle-list",
715716
attributes: {
@@ -718,9 +719,15 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
718719
vertexCount: background_lines.length / 3,
719720
}),
720721

721-
modules: [project32],
722+
modules: [project32, linesUniforms],
722723
isInstanced: false,
723724
});
725+
backgroundModel.shaderInputs.setProps({
726+
lines: {
727+
uColor: bColor,
728+
uClipZ: -0.9,
729+
},
730+
});
724731

725732
//-- Labels model--
726733
const labelModels: Model[] = [];
@@ -836,10 +843,6 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
836843
id: `${this.props.id}-${label}`,
837844
vs: labelVertexShader,
838845
fs: labelFragmentShader,
839-
uniforms: {
840-
uAxisColor: lineColor,
841-
uBackGroundColor: bColor,
842-
},
843846
bindings: {
844847
// @ts-ignore
845848
fontTexture,
@@ -856,14 +859,24 @@ export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
856859
vertexCount: positions.length / 3,
857860
}),
858861
bufferLayout: this.getAttributeManager()!.getBufferLayouts(),
859-
modules: [project32],
862+
modules: [project32, axesUniforms],
860863
isInstanced: false,
861864
});
865+
model.shaderInputs.setProps({
866+
axes: {
867+
uAxisColor: lineColor,
868+
uBackGroundColor: bColor,
869+
},
870+
});
862871

863872
labelModels.push(model);
864873
}
865874

866-
return { labelModels: labelModels, lineModel: lineModel, backgroundModel: backgroundModel };
875+
return {
876+
labelModels: labelModels,
877+
lineModel: lineModel,
878+
backgroundModel: backgroundModel,
879+
};
867880
}
868881
}
869882

@@ -955,3 +968,52 @@ function GetPixelsScale(labelFontSizePt: number): number {
955968
const px = Math.max(0, (8 / 9) * labelFontSizePt);
956969
return px;
957970
}
971+
972+
const linesUniformsBlock = /*glsl*/ `\
973+
uniform linesUniforms {
974+
vec4 uColor;
975+
float uClipZ;
976+
} lines;
977+
`;
978+
979+
type LinesUniformsType = {
980+
uColor: [number, number, number, number];
981+
uClipZ: number;
982+
};
983+
984+
// NOTE: this must exactly the same name than in the uniform block
985+
const linesUniforms = {
986+
name: "lines",
987+
vs: linesUniformsBlock,
988+
fs: linesUniformsBlock,
989+
uniformTypes: {
990+
uColor: "vec4<f32>",
991+
uClipZ: "f32",
992+
},
993+
} as const satisfies ShaderModule<LayerProps, LinesUniformsType>;
994+
995+
996+
997+
const axesUniformsBlock = /*glsl*/ `\
998+
uniform axesUniforms {
999+
vec4 uAxisColor;
1000+
vec4 uBackGroundColor;
1001+
} axes;
1002+
`;
1003+
1004+
type AxesUniformsType = {
1005+
uAxisColor: [number, number, number, number],
1006+
uBackGroundColor: [number, number, number, number],
1007+
};
1008+
1009+
// NOTE: this must exactly the same name than in the uniform block
1010+
const axesUniforms = {
1011+
name: "axes",
1012+
vs: axesUniformsBlock,
1013+
fs: axesUniformsBlock,
1014+
uniformTypes: {
1015+
uAxisColor: "vec4<f32>",
1016+
uBackGroundColor: "vec4<f32>",
1017+
},
1018+
} as const satisfies ShaderModule<LayerProps, AxesUniformsType>;
1019+

0 commit comments

Comments
 (0)