From 105218ee7f97eef133d7e063aaa21501fe52a289 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Sat, 2 Jun 2018 17:11:47 -0400 Subject: [PATCH] better handle pixelRatio --- src/mol-gl/renderer.ts | 7 +------ src/mol-gl/webgl/context.ts | 6 ++++++ src/mol-view/viewer.ts | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/mol-gl/renderer.ts b/src/mol-gl/renderer.ts index 6b9d8e9a6..ec25ac328 100644 --- a/src/mol-gl/renderer.ts +++ b/src/mol-gl/renderer.ts @@ -39,10 +39,6 @@ interface Renderer { dispose: () => void } -function getPixelRatio() { - return (typeof window !== 'undefined') ? window.devicePixelRatio : 1 -} - export const DefaultRendererProps = { clearColor: 0x000000 as Color, viewport: Viewport.create(0, 0, 0, 0) @@ -56,7 +52,6 @@ namespace Renderer { const model = Mat4.identity() const viewport = Viewport.clone(_viewport) - const pixelRatio = getPixelRatio() // const lightPosition = Vec3.create(0, 0, -100) const lightColor = Vec3.create(1.0, 1.0, 1.0) @@ -73,7 +68,7 @@ namespace Renderer { uView: ValueCell.create(Mat4.clone(camera.view)), uProjection: ValueCell.create(Mat4.clone(camera.projection)), - uPixelRatio: ValueCell.create(pixelRatio), + uPixelRatio: ValueCell.create(ctx.pixelRatio), uViewportHeight: ValueCell.create(viewport.height), uLightColor: ValueCell.create(Vec3.clone(lightColor)), diff --git a/src/mol-gl/webgl/context.ts b/src/mol-gl/webgl/context.ts index 62d234c85..5c5e9635a 100644 --- a/src/mol-gl/webgl/context.ts +++ b/src/mol-gl/webgl/context.ts @@ -7,6 +7,10 @@ import { createProgramCache, ProgramCache } from './program' import { createShaderCache, ShaderCache } from './shader' +function getPixelRatio() { + return (typeof window !== 'undefined') ? window.devicePixelRatio : 1 +} + function unbindResources (gl: WebGLRenderingContext) { // bind null to all texture units const maxTextureImageUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS) @@ -61,6 +65,7 @@ type Extensions = { export interface Context { gl: WebGLRenderingContext extensions: Extensions + pixelRatio: number shaderCache: ShaderCache programCache: ProgramCache @@ -100,6 +105,7 @@ export function createContext(gl: WebGLRenderingContext): Context { return { gl, extensions: { angleInstancedArrays, standardDerivatives, oesElementIndexUint, oesVertexArrayObject }, + pixelRatio: getPixelRatio(), shaderCache, programCache, diff --git a/src/mol-view/viewer.ts b/src/mol-view/viewer.ts index 8789dafe5..4dd8480a1 100644 --- a/src/mol-view/viewer.ts +++ b/src/mol-view/viewer.ts @@ -179,9 +179,11 @@ namespace Viewer { } function identify (x: number, y: number): PickingId { - const buffer = new Uint8Array(4) + x *= ctx.pixelRatio + y *= ctx.pixelRatio y = canvas.height - y // flip y + const buffer = new Uint8Array(4) const xp = Math.round(x * pickScale) const yp = Math.round(y * pickScale) -- GitLab