diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 2c8ce92872f94c47b9dc7952f280500f34df94ed..631cfff2b0d21110bc48e1b6e04e04160f4e490e 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -181,6 +181,7 @@ LLGLManager::LLGLManager() : mHasDebugOutput(FALSE), mHasTextureSwizzle(false), + mHasGPUShader4(false), mIsATI(FALSE), mIsNVIDIA(FALSE), mIsIntel(FALSE), @@ -744,6 +745,7 @@ void LLGLManager::asLLSD(LLSD& info) info["has_srgb_texture"] = mHassRGBTexture; info["has_srgb_framebuffer"] = mHassRGBFramebuffer; info["has_texture_srgb_decode"] = mHasTexturesRGBDecode; + info["has_gpu_shader_4"] = mHasGPUShader4; // Vendor-specific extensions info["is_ati"] = mIsATI; @@ -891,6 +893,7 @@ void LLGLManager::initExtensions() mHasFragmentShader = mGLVersion >= 2.0f || (epoxy_has_gl_extension("GL_ARB_fragment_shader") && (LLRender::sGLCoreProfile || epoxy_has_gl_extension("GL_ARB_shading_language_100"))); mHasTextureSwizzle = mGLVersion >= 3.3f || epoxy_has_gl_extension("GL_ARB_texture_swizzle"); + mHasGPUShader4 = mGLVersion >= 3.0f || epoxy_has_gl_extension("GL_EXT_gpu_shader4"); #endif #if LL_LINUX @@ -917,6 +920,7 @@ void LLGLManager::initExtensions() mHasVertexShader = FALSE; mHasFragmentShader = FALSE; mHasTextureSwizzle = FALSE; + mHasGPUShader4 = FALSE; LL_WARNS("RenderInit") << "GL extension support DISABLED via LL_GL_NOEXT" << LL_ENDL; } else if (getenv("LL_GL_BASICEXT")) /* Flawfinder: ignore */ diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index f1f48d5a775215bfa85f226e91f74f8debfcf168..5043627e2a8bfcb6056f5e15bb733bcd5fe905bb 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -130,6 +130,7 @@ class LLGLManager BOOL mHassRGBFramebuffer; BOOL mHasTexturesRGBDecode; bool mHasTextureSwizzle; + bool mHasGPUShader4; // Vendor-specific extensions BOOL mIsATI; diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 74d88576bfaf4124d48540c8eb4ff7c3b7f922d4..e765e45e80d2aad8c84b4ad4db66e579f6424eb3 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -715,7 +715,14 @@ GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_lev //set version to 1.20 shader_code_text[shader_code_count++] = strdup("#version 120\n"); extra_code_text[extra_code_count++] = strdup("#define FXAA_GLSL_120 1\n"); - extra_code_text[extra_code_count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 0\n"); + if (gGLManager.mHasGPUShader4) + { + extra_code_text[extra_code_count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 1\n"); + } + else + { + extra_code_text[extra_code_count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 0\n"); + } extra_code_text[extra_code_count++] = strdup("#define ATTRIBUTE attribute\n"); extra_code_text[extra_code_count++] = strdup("#define VARYING varying\n"); extra_code_text[extra_code_count++] = strdup("#define VARYING_FLAT varying\n"); diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl index 9358f490977cd0dec85ebcb0a699eb00affab3c2..304bf34fec231179c5035bbc160172dcd8157d8a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl @@ -25,6 +25,7 @@ #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_shader_texture_lod : enable +#extension GL_EXT_gpu_shader4 : enable /*[EXTRA_CODE_HERE]*/