From f2d3374867728fe7cf63f3e4fcec9e8e3eb0d6e9 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alexander.rose@weirdbyte.de>
Date: Fri, 12 Apr 2019 22:00:56 -0700
Subject: [PATCH] fixed gpu mc normals

---
 .../shader/marching-cubes/isosurface.frag     | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/mol-gl/shader/marching-cubes/isosurface.frag b/src/mol-gl/shader/marching-cubes/isosurface.frag
index 36bd6d1be..1aa1116c2 100644
--- a/src/mol-gl/shader/marching-cubes/isosurface.frag
+++ b/src/mol-gl/shader/marching-cubes/isosurface.frag
@@ -188,16 +188,21 @@ void main(void) {
 
     // normals from gradients
     vec3 n0 = -normalize(vec3(
-        v0 - voxel((b0 + c1) / uGridDim).a,
-        v0 - voxel((b0 + c3) / uGridDim).a,
-        v0 - voxel((b0 + c4) / uGridDim).a
+        voxel((b0 - c1) / uGridDim).a - voxel((b0 + c1) / uGridDim).a,
+        voxel((b0 - c3) / uGridDim).a - voxel((b0 + c3) / uGridDim).a,
+        voxel((b0 - c4) / uGridDim).a - voxel((b0 + c4) / uGridDim).a
     ));
     vec3 n1 = -normalize(vec3(
-        v1 - voxel((b1 + c1) / uGridDim).a,
-        v1 - voxel((b1 + c3) / uGridDim).a,
-        v1 - voxel((b1 + c4) / uGridDim).a
+        voxel((b1 - c1) / uGridDim).a - voxel((b1 + c1) / uGridDim).a,
+        voxel((b1 - c3) / uGridDim).a - voxel((b1 + c3) / uGridDim).a,
+        voxel((b1 - c4) / uGridDim).a - voxel((b1 + c4) / uGridDim).a
     ));
-    gl_FragData[1].xyz = -normalize((v0 * n0 + v1 * n1) / max(v0 + v1, EPS));
+    gl_FragData[1].xyz = -vec3(
+        n0.x + t * (n0.x - n1.x),
+        n0.y + t * (n0.y - n1.y),
+        n0.z + t * (n0.z - n1.z)
+    );
+    
     mat3 normalMatrix = transpose(inverse(mat3(uGridTransform)));
     gl_FragData[1].xyz = normalMatrix * gl_FragData[1].xyz;
 }
\ No newline at end of file
-- 
GitLab