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