diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 0f11398973e50847495c123383c40f05f7b590e2..b9bbb639ef126489123bab6d076ea25823188055 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -110,9 +110,9 @@ namespace Canvas3D { const controls = TrackballControls.create(input, camera, {}) const renderer = Renderer.create(webgl, camera, { clearColor: p.backgroundColor }) - const pickScale = 1 - const pickWidth = Math.round(canvas.width * pickScale) - const pickHeight = Math.round(canvas.height * pickScale) + let pickScale = 0.25 / webgl.pixelRatio + let pickWidth = Math.round(canvas.width * pickScale) + let pickHeight = Math.round(canvas.height * pickScale) const objectPickTarget = createRenderTarget(webgl, pickWidth, pickHeight) const instancePickTarget = createRenderTarget(webgl, pickWidth, pickHeight) const groupPickTarget = createRenderTarget(webgl, pickWidth, pickHeight) @@ -414,11 +414,14 @@ namespace Canvas3D { Viewport.set(camera.viewport, 0, 0, canvas.width, canvas.height) Viewport.set(controls.viewport, 0, 0, canvas.width, canvas.height) - const pickWidth = Math.round(canvas.width * pickScale) - const pickHeight = Math.round(canvas.height * pickScale) + pickScale = 0.25 / webgl.pixelRatio + pickWidth = Math.round(canvas.width * pickScale) + pickHeight = Math.round(canvas.height * pickScale) objectPickTarget.setSize(pickWidth, pickHeight) instancePickTarget.setSize(pickWidth, pickHeight) groupPickTarget.setSize(pickWidth, pickHeight) + + requestDraw(true) } } } \ No newline at end of file diff --git a/src/mol-gl/webgl/context.ts b/src/mol-gl/webgl/context.ts index c8577f30cb0c1831130c92614c9c35ecf56389e9..9b231fdfb20ffafb28829c4bfcd83b75af089a03 100644 --- a/src/mol-gl/webgl/context.ts +++ b/src/mol-gl/webgl/context.ts @@ -256,7 +256,7 @@ export function createContext(gl: GLRenderingContext): WebGLContext { vertexArrayObject, fragDepth }, - pixelRatio: getPixelRatio(), + get pixelRatio () { return getPixelRatio() }, shaderCache, programCache, diff --git a/src/mol-gl/webgl/render-target.ts b/src/mol-gl/webgl/render-target.ts index 12bbe860e640be606c95173bafdd5fe5de491f79..52203d0134b92584511a7fd6ab7df5d92b77a7da 100644 --- a/src/mol-gl/webgl/render-target.ts +++ b/src/mol-gl/webgl/render-target.ts @@ -20,6 +20,7 @@ export interface RenderTarget { readonly image: TextureImage<any> readonly texture: Texture + /** binds framebuffer and sets viewport to rendertarget's width and height */ bind: () => void setSize: (width: number, height: number) => void readBuffer: (x: number, y: number, width: number, height: number, dst: Uint8Array) => void