diff --git a/src/mol-gl/shader-code.ts b/src/mol-gl/shader-code.ts index 850e8596c941dd581cbf312b994784dda47ab9ab..8f8ff84b6af9913ea3e40974fcd48e21a078cf36 100644 --- a/src/mol-gl/shader-code.ts +++ b/src/mol-gl/shader-code.ts @@ -37,7 +37,6 @@ import assign_color_varying from './shader/chunks/assign-color-varying.glsl' import assign_group from './shader/chunks/assign-group.glsl' import assign_marker_varying from './shader/chunks/assign-marker-varying.glsl' import assign_material_color from './shader/chunks/assign-material-color.glsl' -import assign_normal from './shader/chunks/assign-normal.glsl' import assign_position from './shader/chunks/assign-position.glsl' import assign_size from './shader/chunks/assign-size.glsl' import check_picking_alpha from './shader/chunks/check-picking-alpha.glsl' @@ -63,7 +62,6 @@ const ShaderChunks: { [k: string]: string } = { assign_group, assign_marker_varying, assign_material_color, - assign_normal, assign_position, assign_size, check_picking_alpha, diff --git a/src/mol-gl/shader/chunks/assign-normal.glsl.ts b/src/mol-gl/shader/chunks/assign-normal.glsl.ts deleted file mode 100644 index 686968b97eb340b7306fd1c8ce05cdffd4083f9e..0000000000000000000000000000000000000000 --- a/src/mol-gl/shader/chunks/assign-normal.glsl.ts +++ /dev/null @@ -1,12 +0,0 @@ -export default ` -#if defined(dFlatShaded) && defined(enabledStandardDerivatives) - vec3 fdx = dFdx(vViewPosition); - vec3 fdy = dFdy(vViewPosition); - vec3 normal = -normalize(cross(fdx, fdy)); -#else - vec3 normal = -normalize(vNormal); - #ifdef dDoubleSided - normal = normal * (float(frontFacing) * 2.0 - 1.0); - #endif -#endif -` \ No newline at end of file diff --git a/src/mol-gl/shader/mesh.frag.ts b/src/mol-gl/shader/mesh.frag.ts index bf7c0183a2a646aa128b4452286579292d2d29e6..d2c65dcf51a4bd19391ac66915432968d9f3e8d6 100644 --- a/src/mol-gl/shader/mesh.frag.ts +++ b/src/mol-gl/shader/mesh.frag.ts @@ -25,7 +25,11 @@ void main() { bool frontFacing = dot(vNormal, vViewPosition) < 0.0; #endif - interior = !frontFacing; // TODO take dFlipSided into account + #if defined(dFlipSided) + interior = frontFacing; + #else + interior = !frontFacing; + #endif #include assign_material_color @@ -38,7 +42,14 @@ void main() { #ifdef dIgnoreLight gl_FragColor = material; #else - #include assign_normal + #if defined(dFlatShaded) && defined(enabledStandardDerivatives) + vec3 normal = -faceNormal; + #else + vec3 normal = -normalize(vNormal); + #ifdef dDoubleSided + normal = normal * (float(frontFacing) * 2.0 - 1.0); + #endif + #endif #include apply_light_color #endif