From 343b71cb27ca1bbc3eb012fb6b70a663357c583b Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 16 Nov 2018 17:50:33 -0800 Subject: [PATCH] added pickingAlphaThreshold to Canvas3DParams --- src/mol-canvas3d/canvas3d.ts | 7 ++++++- src/mol-gl/renderer.ts | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 6e83eccff..e4bb91a64 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -34,6 +34,7 @@ export const Canvas3DParams = { cameraPosition: PD.Vec3(Vec3.create(0, 0, 50)), // TODO or should it be in a seperate 'state' property? cameraMode: PD.Select('perspective', [['perspective', 'Perspective'], ['orthographic', 'Orthographic']]), backgroundColor: PD.Color(Color(0x000000)), + pickingAlphaThreshold: PD.Numeric(0.5, { min: 0.0, max: 1.0, step: 0.01 }, { description: 'The minimum opacity value needed for an object to be pickable.' }), } export type Canvas3DParams = typeof Canvas3DParams @@ -361,6 +362,9 @@ namespace Canvas3D { if (props.backgroundColor !== undefined && props.backgroundColor !== renderer.props.clearColor) { renderer.setClearColor(props.backgroundColor) } + if (props.pickingAlphaThreshold !== undefined && props.pickingAlphaThreshold !== renderer.props.pickingAlphaThreshold) { + renderer.setPickingAlphaThreshold(props.pickingAlphaThreshold) + } requestDraw(true) }, @@ -368,7 +372,8 @@ namespace Canvas3D { return { cameraPosition: Vec3.clone(camera.position), cameraMode: camera.state.mode, - backgroundColor: renderer.props.clearColor + backgroundColor: renderer.props.clearColor, + pickingAlphaThreshold: renderer.props.pickingAlphaThreshold, } }, get input() { diff --git a/src/mol-gl/renderer.ts b/src/mol-gl/renderer.ts index f999ff70d..26c1845e5 100644 --- a/src/mol-gl/renderer.ts +++ b/src/mol-gl/renderer.ts @@ -39,6 +39,7 @@ interface Renderer { render: (scene: Scene, variant: RenderVariant) => void setViewport: (x: number, y: number, width: number, height: number) => void setClearColor: (color: Color) => void + setPickingAlphaThreshold: (value: number) => void getImageData: () => ImageData dispose: () => void } @@ -178,6 +179,10 @@ namespace Renderer { render, setClearColor, + setPickingAlphaThreshold: (value: number) => { + pickingAlphaThreshold = value + ValueCell.update(globalUniforms.uPickingAlphaThreshold, pickingAlphaThreshold) + }, setViewport: (x: number, y: number, width: number, height: number) => { Viewport.set(viewport, x, y, width, height) gl.viewport(x, y, width, height) -- GitLab