From ac46317dc6d3a9caa46147a8cc50949c8338dcc6 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 4 Oct 2019 11:53:38 -0700 Subject: [PATCH] fix lighting for orthographic projection close to camera --- src/mol-canvas3d/camera.ts | 3 +++ src/mol-gl/shader/chunks/apply-light-color.glsl.ts | 2 +- src/mol-gl/shader/spheres.frag.ts | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mol-canvas3d/camera.ts b/src/mol-canvas3d/camera.ts index 4b8aa2d7f..e5d765620 100644 --- a/src/mol-canvas3d/camera.ts +++ b/src/mol-canvas3d/camera.ts @@ -269,6 +269,9 @@ function updateClip(camera: Camera) { // set at least to 5 to avoid slow sphere impostor rendering near = Math.max(5, near) far = Math.max(5, far) + } else { + near = Math.max(0, near) + far = Math.max(0, far) } camera.near = near; diff --git a/src/mol-gl/shader/chunks/apply-light-color.glsl.ts b/src/mol-gl/shader/chunks/apply-light-color.glsl.ts index 0f24aca8e..54b00713f 100644 --- a/src/mol-gl/shader/chunks/apply-light-color.glsl.ts +++ b/src/mol-gl/shader/chunks/apply-light-color.glsl.ts @@ -36,7 +36,7 @@ geometry.normal = normal; geometry.viewDir = normalize(vViewPosition); IncidentLight directLight; -directLight.direction = geometry.viewDir; +directLight.direction = vec3(0.0, 0.0, -1.0); directLight.color = vec3(uLightIntensity); RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight); diff --git a/src/mol-gl/shader/spheres.frag.ts b/src/mol-gl/shader/spheres.frag.ts index 2a584f7ef..0d09dd6f0 100644 --- a/src/mol-gl/shader/spheres.frag.ts +++ b/src/mol-gl/shader/spheres.frag.ts @@ -124,8 +124,8 @@ void main(void){ #elif defined(dColorType_depth) gl_FragColor = material; #else - vec3 normal = cameraNormal; - vec3 vViewPosition = -cameraPos; + vec3 normal = -cameraNormal; + vec3 vViewPosition = cameraPos; #include apply_light_color if (interior) { -- GitLab