diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index b256b3e7f..ab7f0fdca 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -956,6 +956,15 @@ namespace bgfx { namespace gl NULL }; + static const char* s_intepolationQualifier[] = + { + "flat", + "smooth", + "noperspective", + "centroid", + NULL + }; + static void GL_APIENTRY stubVertexAttribDivisor(GLuint /*_index*/, GLuint /*_divisor*/) { } @@ -5796,9 +5805,15 @@ namespace bgfx { namespace gl const bool usesTexture3D = !!bx::findIdentifierMatch(code, s_texture3D); const bool usesTextureMS = !!bx::findIdentifierMatch(code, s_ARB_texture_multisample); const bool usesPacking = !!bx::findIdentifierMatch(code, s_ARB_shading_language_packing); + const bool usesInterpQ = !!bx::findIdentifierMatch(code, s_intepolationQualifier); uint32_t version = BX_ENABLED(BX_PLATFORM_OSX) ? 120 - : usesTextureArray || usesTexture3D || usesIUsamplers|| usesTexelFetch || usesGpuShader5 ? 130 + : usesTextureArray + || usesTexture3D + || usesIUsamplers + || usesTexelFetch + || usesGpuShader5 + || usesInterpQ ? 130 : usesTextureLod ? 120 : 120 ; @@ -5920,14 +5935,20 @@ namespace bgfx { namespace gl } writeString(&writer, - "#define lowp\n" - "#define mediump\n" - "#define highp\n" + "#define lowp\n" + "#define mediump\n" + "#define highp\n" + ); + + if (!usesInterpQ) + { + writeString(&writer, "#define centroid\n" "#define flat\n" "#define noperspective\n" "#define smooth\n" ); + } bx::write(&writer, code, codeLen); bx::write(&writer, '\0');