From 6ef90c4b52abaa7e34e8296c1f3d04d957bd77cf Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Thu, 13 Dec 2018 16:46:49 -0800 Subject: [PATCH] render picking buffers at lower resolution, pixelRatio related fixes --- src/mol-canvas3d/canvas3d.ts | 13 ++++++++----- src/mol-gl/webgl/context.ts | 2 +- src/mol-gl/webgl/render-target.ts | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 0f1139897..b9bbb639e 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 c8577f30c..9b231fdfb 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 12bbe860e..52203d013 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 -- GitLab