Skip to content

Commit f32a862

Browse files
authored
disable lighting in picking pass (visgl#2908)
1 parent 34539b4 commit f32a862

File tree

7 files changed

+99
-37
lines changed

7 files changed

+99
-37
lines changed

modules/core/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env.dev"
3131
},
3232
"dependencies": {
33-
"@luma.gl/core": "^7.0.0-beta.5",
33+
"@luma.gl/core": "^7.0.0-beta.6",
3434
"gl-matrix": "^3.0.0",
3535
"math.gl": "^2.3.0",
3636
"mjolnir.js": "^2.0.2",

modules/core/src/lib/deck-picker.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,18 @@ export default class DeckPicker {
286286
}
287287

288288
const pickingFBO = this.pickingFBO;
289+
// turn off lighting by adding empty light source object
290+
// lights shader module relies on the `lightSources` to turn on/off lighting
291+
const effectProps = {lightSources: {}};
289292

290293
this.pickLayersPass.render({
291294
layers,
292295
viewports,
293296
onViewportActive,
294297
pickingFBO,
295298
deviceRect,
296-
redrawReason
299+
redrawReason,
300+
effectProps
297301
});
298302

299303
// Read from an already rendered picking buffer

modules/core/src/passes/pick-layers-pass.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default class PickLayersPass extends LayersPass {
1818
viewports,
1919
onViewportActive,
2020
pickingFBO,
21+
effectProps,
2122
deviceRect: {x, y, width, height},
2223
redrawReason = ''
2324
}) {
@@ -42,6 +43,7 @@ export default class PickLayersPass extends LayersPass {
4243
onViewportActive,
4344
pass: 'picking',
4445
redrawReason,
46+
effectProps,
4547
parameters: {
4648
blend: true,
4749
blendFunc: [gl.ONE, gl.ZERO, gl.CONSTANT_ALPHA, gl.ZERO],
@@ -64,12 +66,14 @@ export default class PickLayersPass extends LayersPass {
6466
return shouldDrawLayer;
6567
}
6668

67-
getModuleParameters(layer) {
69+
getModuleParameters(layer, effects, effectProps) {
6870
const moduleParameters = Object.assign(Object.create(layer.props), {
6971
viewport: layer.context.viewport,
7072
pickingActive: 1,
7173
devicePixelRatio: this.props.pixelRatio
7274
});
75+
76+
Object.assign(moduleParameters, effectProps);
7377
return moduleParameters;
7478
}
7579

test/modules/core/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ import './lib';
2626
import './shaderlib';
2727
import './transitions';
2828
import './experimental';
29+
import './passes';

test/modules/core/passes/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import './pick-layers-pass.spec';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import test from 'tape-catch';
2+
3+
import {LayerManager, MapView, PolygonLayer} from 'deck.gl';
4+
import PickLayersPass from '@deck.gl/core/passes/pick-layers-pass';
5+
import {Framebuffer} from '@luma.gl/core';
6+
import * as FIXTURES from 'deck.gl-test/data';
7+
import gl from '@deck.gl/test-utils/utils/setup-gl';
8+
9+
test('PickLayersPass#drawPickingBuffer', t => {
10+
const pickingFBO = new Framebuffer(gl);
11+
12+
// Resize it to current canvas size (this is a noop if size hasn't changed)
13+
pickingFBO.resize({width: 100, height: 100});
14+
15+
const viewport = new MapView().makeViewport({
16+
width: 100,
17+
height: 100,
18+
viewState: {longitude: 0, latitude: 0, zoom: 1}
19+
});
20+
21+
const layer = new PolygonLayer({
22+
data: FIXTURES.polygons.slice(0, 3),
23+
getPolygon: f => f,
24+
getFillColor: (f, {index}) => [index, 0, 0],
25+
pickable: true
26+
});
27+
28+
const layerManager = new LayerManager(gl, {viewport});
29+
const pickLayersPass = new PickLayersPass(gl);
30+
31+
layerManager.setLayers([layer]);
32+
pickLayersPass.render({
33+
viewports: [viewport],
34+
layers: layerManager.getLayers(),
35+
onViewportActive: layerManager.activateViewport,
36+
pickingFBO,
37+
deviceRect: {x: 0, y: 0, width: 100, height: 100},
38+
effectProps: {lightSources: {}}
39+
});
40+
41+
const subLayers = layer.getSubLayers();
42+
const models = subLayers[0].getModels();
43+
44+
t.ok(`PickLayersPass rendered well`);
45+
t.equal(
46+
models[0].program.uniforms.lighting_uEnabled,
47+
false,
48+
`PickLayersPass lighting disabled correctly`
49+
);
50+
51+
t.end();
52+
});

yarn.lock

+34-34
Original file line numberDiff line numberDiff line change
@@ -705,64 +705,64 @@
705705
dependencies:
706706
text-encoding "^0.6.4"
707707

708-
"@luma.gl/[email protected].5":
709-
version "7.0.0-beta.5"
710-
resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-7.0.0-beta.5.tgz#f5784d728ef4657b930655e161c56d2dac375c25"
711-
integrity sha512-Y1Mp4hDMJWeL9faE9Gy29UZ0KnmdOceojclSiFNFS1ANN5XBlcXBYo0h+ufE+ek4d66DngLR4IN/KeIpXWzlig==
708+
"@luma.gl/[email protected].6":
709+
version "7.0.0-beta.6"
710+
resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-7.0.0-beta.6.tgz#3f00de618fcbf5a083a19db61ebf67cdfc7f4114"
711+
integrity sha512-mBL2vWq9pib/dBVJwcZz2lws4FUEy/rSM644W3tjMAWT5qaUED68f0RR5Zn0hPRJu99+ErFZTfTYWurVZQkcCw==
712712

713713
"@luma.gl/constants@^7.0.0-alpha.6":
714714
version "7.0.0-alpha.19"
715715
resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-7.0.0-alpha.19.tgz#f9dcb21ebb53d1736be27aad68073c1562bc3d81"
716716
integrity sha512-7vxAjPSX80eRkDiAp5ro8NWZS5syIgHiaNfG6yhvHDXFfR8nghks1EHA3CqToUy8RDZn7p08pv4P2V8dFhs64Q==
717717

718-
"@luma.gl/core@^7.0.0-beta.5":
719-
version "7.0.0-beta.5"
720-
resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-7.0.0-beta.5.tgz#429c524389f0208cc83390a1e9534babed294ded"
721-
integrity sha512-dW2JJdizgMPM5ftY52VE9bRQudQdUFeLjBZGjgdQ1jp/LJpRxCki2SBjRu/dmFV5Isn0hvdbetr0dlDcGI1MgA==
718+
"@luma.gl/core@^7.0.0-beta.6":
719+
version "7.0.0-beta.6"
720+
resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-7.0.0-beta.6.tgz#9acdacf5cc03f6696556e10c9b90d3faa3f3ff06"
721+
integrity sha512-ytU/YG9m6QTilGFB9mkkmYiOBmmSJ1YtU/xeIrJoxFux1cDhnSOChLiWrH4RfgjaWYiKAgmXCmtVOZ9C8QHEqA==
722722
dependencies:
723723
"@babel/runtime" "^7.0.0"
724-
"@luma.gl/constants" "7.0.0-beta.5"
725-
"@luma.gl/shadertools" "7.0.0-beta.5"
726-
"@luma.gl/webgl" "7.0.0-beta.5"
727-
"@luma.gl/webgl-state-tracker" "7.0.0-beta.5"
728-
"@luma.gl/webgl2-polyfill" "7.0.0-beta.5"
724+
"@luma.gl/constants" "7.0.0-beta.6"
725+
"@luma.gl/shadertools" "7.0.0-beta.6"
726+
"@luma.gl/webgl" "7.0.0-beta.6"
727+
"@luma.gl/webgl-state-tracker" "7.0.0-beta.6"
728+
"@luma.gl/webgl2-polyfill" "7.0.0-beta.6"
729729
math.gl "^2.3.0"
730730
probe.gl "^3.0.1"
731731
seer "^0.2.4"
732732

733-
"@luma.gl/[email protected].5":
734-
version "7.0.0-beta.5"
735-
resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-7.0.0-beta.5.tgz#5f94c58ef59295994d643ac76443340ac522d7e5"
736-
integrity sha512-XN8z0l9SPePZ1fkxt78e3Qrq/7kCzNtYW/Gbu727IlVGbKhdYTfEssyI7mDkPX2/60Gkc3RR/ZpeHjPVmp7IPg==
733+
"@luma.gl/[email protected].6":
734+
version "7.0.0-beta.6"
735+
resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-7.0.0-beta.6.tgz#3b8e855dc9d6c71f651f9d67e3e691bf978f98ba"
736+
integrity sha512-IxGWyTsBv76UQX6iTnLxq85rJ7SgiulHQ/gJaAPuAm76WvXMpZcuaX7RY9Rn7S/lmIjpgffjvj4zBMo12Xxj3g==
737737
dependencies:
738738
"@babel/runtime" "^7.0.0"
739739
math.gl "^2.3.0"
740740

741-
"@luma.gl/[email protected].5":
742-
version "7.0.0-beta.5"
743-
resolved "https://registry.yarnpkg.com/@luma.gl/webgl-state-tracker/-/webgl-state-tracker-7.0.0-beta.5.tgz#ac3fe789634b74e1750ab36ca9eb18a6fa5b0067"
744-
integrity sha512-CRmISBEsz7KaanibVRcuMazGmaSw13QMU37GTvwzqd8me0379Tm0fWF3mkBMx4ettL5c4MfkktT815Mtc16FSA==
741+
"@luma.gl/[email protected].6":
742+
version "7.0.0-beta.6"
743+
resolved "https://registry.yarnpkg.com/@luma.gl/webgl-state-tracker/-/webgl-state-tracker-7.0.0-beta.6.tgz#76114fa4d7446b794544a9053e756767e689a7fc"
744+
integrity sha512-uAAIlQ0FBCMgFADfFjQX64BUhcDBRnCuNRT3UOayP1KK8rxk5gXPX0Z2LHDz3i8NYYBqT8+krPubHYdfjX7D/g==
745745
dependencies:
746746
"@babel/runtime" "^7.0.0"
747-
"@luma.gl/constants" "7.0.0-beta.5"
747+
"@luma.gl/constants" "7.0.0-beta.6"
748748

749-
"@luma.gl/[email protected].5":
750-
version "7.0.0-beta.5"
751-
resolved "https://registry.yarnpkg.com/@luma.gl/webgl2-polyfill/-/webgl2-polyfill-7.0.0-beta.5.tgz#4134811ad8ab35a39fd91583d13f78b598d649ca"
752-
integrity sha512-EnEqh3SlyyinAUnnUZt6bIRz2WoMwqwX8y6pYO3oFUPYku4jlexi3/S7a8zWoasxTonbuISPdzLzmmzxjh8Ejw==
749+
"@luma.gl/[email protected].6":
750+
version "7.0.0-beta.6"
751+
resolved "https://registry.yarnpkg.com/@luma.gl/webgl2-polyfill/-/webgl2-polyfill-7.0.0-beta.6.tgz#96b8048c184012c058baf5bcf9cabf42864536b7"
752+
integrity sha512-sHwGcbCUNLo/XC4/9xPC2S8oGXOK7XI77wBUYeykdycBG43Iw3yk00AtD4luPcHOjfShIHqc6i+Mald2WkSp3A==
753753
dependencies:
754754
"@babel/runtime" "^7.0.0"
755-
"@luma.gl/constants" "7.0.0-beta.5"
755+
"@luma.gl/constants" "7.0.0-beta.6"
756756

757-
"@luma.gl/[email protected].5":
758-
version "7.0.0-beta.5"
759-
resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-7.0.0-beta.5.tgz#e8d7afa2884c17a1e74e1b14814403bb420ad63c"
760-
integrity sha512-2e/rfFNfiUbCVSWt6JUHCVfnwhDySrDmSZ0uucBaccBzTlXaHM8lPZyDU/DBtyVN1osne9qJeKLdRVtXKCaPeQ==
757+
"@luma.gl/[email protected].6":
758+
version "7.0.0-beta.6"
759+
resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-7.0.0-beta.6.tgz#ea8cc7fef2b4a413d830a7a6cc3eef60292ac23d"
760+
integrity sha512-cnQeRzakg5ncg9SsV9bTBNT6pQ7lHwWhzcX21AW5cVveNSJbx13Y5vYQft/txtyG0R0EG/v0DFk1rqMRgE0ZZA==
761761
dependencies:
762762
"@babel/runtime" "^7.0.0"
763-
"@luma.gl/constants" "7.0.0-beta.5"
764-
"@luma.gl/webgl-state-tracker" "7.0.0-beta.5"
765-
"@luma.gl/webgl2-polyfill" "7.0.0-beta.5"
763+
"@luma.gl/constants" "7.0.0-beta.6"
764+
"@luma.gl/webgl-state-tracker" "7.0.0-beta.6"
765+
"@luma.gl/webgl2-polyfill" "7.0.0-beta.6"
766766
probe.gl "^3.0.1"
767767

768768

0 commit comments

Comments
 (0)