diff --git a/src/mol-gl/shader-code.ts b/src/mol-gl/shader-code.ts index 5e7c1047554902e85a29353764a7fcbf4bf2efad..c18e2f12eca6e8a926f4389c92ec3e3957d59faa 100644 --- a/src/mol-gl/shader-code.ts +++ b/src/mol-gl/shader-code.ts @@ -17,7 +17,6 @@ const shaderCodeId = idFactory(); type ShaderExtensionsValue = 'required' | 'optional' export interface ShaderExtensions { - readonly standardDerivatives?: ShaderExtensionsValue readonly fragDepth?: ShaderExtensionsValue readonly drawBuffers?: ShaderExtensionsValue readonly shaderTextureLod?: ShaderExtensionsValue @@ -163,7 +162,7 @@ export const CylindersShaderCode = ShaderCode('cylinders', cylinders_vert, cylin import { text_vert } from './shader/text.vert'; import { text_frag } from './shader/text.frag'; -export const TextShaderCode = ShaderCode('text', text_vert, text_frag, { standardDerivatives: 'required', drawBuffers: 'optional' }); +export const TextShaderCode = ShaderCode('text', text_vert, text_frag, { drawBuffers: 'optional' }); import { lines_vert } from './shader/lines.vert'; import { lines_frag } from './shader/lines.frag'; @@ -171,7 +170,7 @@ export const LinesShaderCode = ShaderCode('lines', lines_vert, lines_frag, { dra import { mesh_vert } from './shader/mesh.vert'; import { mesh_frag } from './shader/mesh.frag'; -export const MeshShaderCode = ShaderCode('mesh', mesh_vert, mesh_frag, { standardDerivatives: 'optional', drawBuffers: 'optional' }); +export const MeshShaderCode = ShaderCode('mesh', mesh_vert, mesh_frag, { drawBuffers: 'optional' }); import { directVolume_vert } from './shader/direct-volume.vert'; import { directVolume_frag } from './shader/direct-volume.frag'; @@ -209,11 +208,9 @@ function getDefinesCode(defines: ShaderDefines) { } function getGlsl100FragPrefix(extensions: WebGLExtensions, shaderExtensions: ShaderExtensions) { - const prefix: string[] = []; - if (shaderExtensions.standardDerivatives) { - prefix.push('#extension GL_OES_standard_derivatives : enable'); - prefix.push('#define enabledStandardDerivatives'); - } + const prefix: string[] = [ + '#extension GL_OES_standard_derivatives : enable' + ]; if (shaderExtensions.fragDepth) { if (extensions.fragDepth) { prefix.push('#extension GL_EXT_frag_depth : enable'); @@ -268,9 +265,6 @@ function getGlsl300FragPrefix(gl: WebGL2RenderingContext, extensions: WebGLExten `layout(location = 0) out highp ${outTypes[0] || 'vec4'} out_FragData0;` ]; - if (shaderExtensions.standardDerivatives) { - prefix.push('#define enabledStandardDerivatives'); - } if (shaderExtensions.fragDepth) { prefix.push('#define enabledFragDepth'); } diff --git a/src/mol-gl/shader/mesh.frag.ts b/src/mol-gl/shader/mesh.frag.ts index 987a68e53778258dab1ec15e311a823b44b1a666..7ede798d316d38a57d89d0a878bec12609c67377 100644 --- a/src/mol-gl/shader/mesh.frag.ts +++ b/src/mol-gl/shader/mesh.frag.ts @@ -19,14 +19,10 @@ void main() { #include clip_pixel // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs) - #if defined(enabledStandardDerivatives) - vec3 fdx = dFdx(vViewPosition); - vec3 fdy = dFdy(vViewPosition); - vec3 faceNormal = normalize(cross(fdx,fdy)); - bool frontFacing = dot(vNormal, faceNormal) > 0.0; - #else - bool frontFacing = dot(vNormal, vViewPosition) < 0.0; - #endif + vec3 fdx = dFdx(vViewPosition); + vec3 fdy = dFdy(vViewPosition); + vec3 faceNormal = normalize(cross(fdx,fdy)); + bool frontFacing = dot(vNormal, faceNormal) > 0.0; #if defined(dFlipSided) interior = frontFacing; @@ -48,7 +44,7 @@ void main() { #ifdef dIgnoreLight gl_FragColor = material; #else - #if defined(dFlatShaded) && defined(enabledStandardDerivatives) + #if defined(dFlatShaded) vec3 normal = -faceNormal; #else vec3 normal = -normalize(vNormal); diff --git a/src/mol-gl/webgl/extensions.ts b/src/mol-gl/webgl/extensions.ts index 61abe6d232328751e8a31f224da87d8fae47bbd5..90c0c0b25fc3c61f5267692907047526bfd11c20 100644 --- a/src/mol-gl/webgl/extensions.ts +++ b/src/mol-gl/webgl/extensions.ts @@ -36,13 +36,11 @@ export function createExtensions(gl: GLRenderingContext): WebGLExtensions { if (elementIndexUint === null) { throw new Error('Could not find support for "element_index_uint"'); } - const standardDerivatives = getStandardDerivatives(gl); - if (isDebugMode && standardDerivatives === null) { - // - non-support handled downstream (flat shading option is ignored) - // - can't be a required extension because it is not supported by `headless-gl` - console.log('Could not find support for "standard_derivatives"'); + if (standardDerivatives === null) { + throw new Error('Could not find support for "standard_derivatives"'); } + const textureFloat = getTextureFloat(gl); if (isDebugMode && textureFloat === null) { console.log('Could not find support for "texture_float"');