diff options
| author | Howard Stearns <howard.stearns@gmail.com> | 2022-09-01 10:58:27 -0700 | 
|---|---|---|
| committer | Howard Stearns <howard.stearns@gmail.com> | 2022-09-01 10:58:27 -0700 | 
| commit | 2082443220fe344bb027c3acbf50fea0a99159c3 (patch) | |
| tree | bc10ed9eda1d18ebf6d6388b999c39ed3bc0dde1 | |
| parent | 3b70c9d49c2a963439b3811e80d24576f390552b (diff) | |
SL-17967 - Git rid of ARB that is in core
24 files changed, 603 insertions, 600 deletions
diff --git a/indra/llrender/llatmosphere.cpp b/indra/llrender/llatmosphere.cpp index ffc17c89f8..8e37ca9b90 100644 --- a/indra/llrender/llatmosphere.cpp +++ b/indra/llrender/llatmosphere.cpp @@ -241,7 +241,7 @@ LLGLTexture* LLAtmosphere::getTransmittance()          m_transmittance->generateGLTexture();          m_transmittance->setAddressMode(LLTexUnit::eTextureAddressMode::TAM_CLAMP);          m_transmittance->setFilteringOption(LLTexUnit::eTextureFilterOptions::TFO_BILINEAR); -        m_transmittance->setExplicitFormat(GL_RGB32F_ARB, GL_RGB, GL_FLOAT); +        m_transmittance->setExplicitFormat(GL_RGB32F, GL_RGB, GL_FLOAT);          m_transmittance->setTarget(GL_TEXTURE_2D, LLTexUnit::TT_TEXTURE);      }      return m_transmittance; @@ -255,7 +255,7 @@ LLGLTexture* LLAtmosphere::getScattering()          m_scattering->generateGLTexture();          m_scattering->setAddressMode(LLTexUnit::eTextureAddressMode::TAM_CLAMP);          m_scattering->setFilteringOption(LLTexUnit::eTextureFilterOptions::TFO_BILINEAR); -        m_scattering->setExplicitFormat(GL_RGB16F_ARB, GL_RGB, GL_FLOAT); +        m_scattering->setExplicitFormat(GL_RGB16F, GL_RGB, GL_FLOAT);          m_scattering->setTarget(GL_TEXTURE_3D, LLTexUnit::TT_TEXTURE_3D);      }      return m_scattering; @@ -269,7 +269,7 @@ LLGLTexture* LLAtmosphere::getMieScattering()          m_mie_scatter_texture->generateGLTexture();          m_mie_scatter_texture->setAddressMode(LLTexUnit::eTextureAddressMode::TAM_CLAMP);          m_mie_scatter_texture->setFilteringOption(LLTexUnit::eTextureFilterOptions::TFO_BILINEAR); -        m_mie_scatter_texture->setExplicitFormat(GL_RGB16F_ARB, GL_RGB, GL_FLOAT); +        m_mie_scatter_texture->setExplicitFormat(GL_RGB16F, GL_RGB, GL_FLOAT);          m_mie_scatter_texture->setTarget(GL_TEXTURE_3D, LLTexUnit::TT_TEXTURE_3D);      }      return m_mie_scatter_texture; @@ -283,7 +283,7 @@ LLGLTexture* LLAtmosphere::getIlluminance()          m_illuminance->generateGLTexture();          m_illuminance->setAddressMode(LLTexUnit::eTextureAddressMode::TAM_CLAMP);          m_illuminance->setFilteringOption(LLTexUnit::eTextureFilterOptions::TFO_BILINEAR); -        m_illuminance->setExplicitFormat(GL_RGB32F_ARB, GL_RGB, GL_FLOAT); +        m_illuminance->setExplicitFormat(GL_RGB32F, GL_RGB, GL_FLOAT);          m_illuminance->setTarget(GL_TEXTURE_2D, LLTexUnit::TT_TEXTURE);      }      return m_illuminance; diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp index 473447ad72..e41765622f 100644 --- a/indra/llrender/llcubemap.cpp +++ b/indra/llrender/llcubemap.cpp @@ -51,12 +51,12 @@ LLCubeMap::LLCubeMap(bool init_as_srgb)  	  mMatrixStage(0),  	  mIssRGB(init_as_srgb)  { -	mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB; -	mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB; -	mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB; -	mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB; -	mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB; -	mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB; +	mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X; +	mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X; +	mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; +	mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y; +	mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; +	mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z;  }  LLCubeMap::~LLCubeMap() diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp index 438d92cdba..08ff7c9414 100644 --- a/indra/llrender/llcubemaparray.cpp +++ b/indra/llrender/llcubemaparray.cpp @@ -45,12 +45,12 @@  // MUST match order of OpenGL face-layers  GLenum LLCubeMapArray::sTargets[6] =  { -    GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, -    GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, -    GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, -    GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, -    GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, -    GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB +    GL_TEXTURE_CUBE_MAP_POSITIVE_X, +    GL_TEXTURE_CUBE_MAP_NEGATIVE_X, +    GL_TEXTURE_CUBE_MAP_POSITIVE_Y, +    GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, +    GL_TEXTURE_CUBE_MAP_POSITIVE_Z, +    GL_TEXTURE_CUBE_MAP_NEGATIVE_Z  };  LLVector3 LLCubeMapArray::sLookVecs[6] = @@ -122,14 +122,14 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count)      bind(0); -    glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY_ARB, 0, GL_RGB, resolution, resolution, count*6, 0, +    glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGB, resolution, resolution, count*6, 0,          GL_RGB, GL_UNSIGNED_BYTE, nullptr);      mImage->setAddressMode(LLTexUnit::TAM_CLAMP);      mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); -    glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY_ARB); +    glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY);      unbind();  } diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 771a218b6b..74d35a8dac 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -900,7 +900,7 @@ void LLGLManager::asLLSD(LLSD& info)  	info["has_compressed_textures"] = mHasCompressedTextures;  	info["has_framebuffer_object"] = mHasFramebufferObject;  	info["max_samples"] = mMaxSamples; -	info["has_blend_func_separate"] = mHasBlendFuncSeparate; +	info["has_blend_func_separate"] = mHasBlendFuncSeparate || LLRender::sGLCoreProfile;  	// ARB Extensions  	info["has_vertex_buffer_object"] = mHasVertexBufferObject; @@ -1031,12 +1031,16 @@ void LLGLManager::initExtensions()      LL_DEBUGS("HRS") << "Explicit enumeration of " << num_extensions << " ext, before calling glh_init_extensions: " << all_extensions << LL_ENDL;      // The following 3p code has the effect of initializing extensions in older versions, and does nothing on 3.2/4.1 on Mac.  #endif - +    /* FIXME  	mHasMultitexture = glh_init_extensions("GL_ARB_multitexture");      mHasCubeMap = glh_init_extensions("GL_ARB_texture_cube_map");      mHasCompressedTextures = glh_init_extensions("GL_ARB_texture_compression");      mHasSeparateSpecularColor = glh_init_extensions("GL_EXT_separate_specular_color");      mHasAnisotropic = glh_init_extensions("GL_EXT_texture_filter_anisotropic"); +     */ +    mHasMultitexture = TRUE; +    mHasCubeMap = TRUE; +    mHasCompressedTextures = TRUE;  #if LL_DARWIN      LL_DEBUGS("HRS") << "After glh_init_extensions (" << @@ -1063,45 +1067,42 @@ void LLGLManager::initExtensions()  #endif      // Recheck, because the glh_init_extensions might not have done anything. -    mHasMultitexture = ExtensionExists("GL_ARB_multitexture", gGLHExts.mSysExts); -    mHasCubeMap = ExtensionExists("GL_ARB_texture_cube_map", gGLHExts.mSysExts); -    mHasCompressedTextures = ExtensionExists("GL_ARB_texture_compression", gGLHExts.mSysExts); +    //mHasMultitexture = ExtensionExists("GL_ARB_multitexture", gGLHExts.mSysExts); +    //mHasCubeMap = ExtensionExists("GL_ARB_texture_cube_map", gGLHExts.mSysExts); +    //mHasCompressedTextures = ExtensionExists("GL_ARB_texture_compression", gGLHExts.mSysExts);      mHasSeparateSpecularColor = ExtensionExists("GL_EXT_separate_specular_color", gGLHExts.mSysExts);      mHasAnisotropic = ExtensionExists("GL_EXT_texture_filter_anisotropic", gGLHExts.mSysExts); +    // In core profile +    mHasARBEnvCombine = TRUE; //ExtensionExists("GL_ARB_texture_env_combine", gGLHExts.mSysExts); +    mHasTimerQuery = FALSE; //FIXME //ExtensionExists("GL_ARB_timer_query", gGLHExts.mSysExts); +    mHasOcclusionQuery = TRUE; //ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts); +    mHasOcclusionQuery2 = TRUE; // ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts); +    mHasVertexBufferObject = TRUE; //ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts); +    mHasVertexArrayObject = TRUE; //ExtensionExists("GL_ARB_vertex_array_object", gGLHExts.mSysExts); +    mHasMapBufferRange = TRUE; ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts); +    mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts); // Apple has mHasMapBufferRange now +    mHasSync = TRUE; //ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts); +    mHasFramebufferObject = TRUE; //ExtensionExists("GL_ARB_framebuffer_object", gGLHExts.mSysExts); +    mHassRGBFramebuffer = TRUE; //ExtensionExists("GL_ARB_framebuffer_sRGB", gGLHExts.mSysExts); +    mHasDrawBuffers = TRUE; //ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts); +    mHasTextureRectangle = TRUE; //ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); +    mHasTextureMultisample = TRUE; //ExtensionExists("GL_ARB_texture_multisample", gGLHExts.mSysExts); +    mHasUniformBufferObject = TRUE; //ExtensionExists("GL_ARB_uniform_buffer_object", gGLHExts.mSysExts); +    mHasCubeMapArray = TRUE; //ExtensionExists("GL_ARB_texture_cube_map_array", gGLHExts.mSysExts); +    mHasPointParameters = TRUE; //ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts); +      mHasATIMemInfo = ExtensionExists("GL_ATI_meminfo", gGLHExts.mSysExts); //Basic AMD method, also see mHasAMDAssociations      mHasNVXMemInfo = ExtensionExists("GL_NVX_gpu_memory_info", gGLHExts.mSysExts); -    mHasCubeMap = ExtensionExists("GL_ARB_texture_cube_map", gGLHExts.mSysExts); -    mHasARBEnvCombine = ExtensionExists("GL_ARB_texture_env_combine", gGLHExts.mSysExts); -    mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts); -    mHasTimerQuery = ExtensionExists("GL_ARB_timer_query", gGLHExts.mSysExts); -    mHasOcclusionQuery2 = ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts); -    mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts); -    mHasVertexArrayObject = ExtensionExists("GL_ARB_vertex_array_object", gGLHExts.mSysExts); -    mHasSync = ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts); -    mHasMapBufferRange = ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts); -    mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts);      // NOTE: Using extensions breaks reflections when Shadows are set to projector.  See: SL-16727      //mHasDepthClamp = ExtensionExists("GL_ARB_depth_clamp", gGLHExts.mSysExts) || ExtensionExists("GL_NV_depth_clamp", gGLHExts.mSysExts);      mHasDepthClamp = FALSE;      // mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad -#ifdef GL_ARB_framebuffer_object -    mHasFramebufferObject = ExtensionExists("GL_ARB_framebuffer_object", gGLHExts.mSysExts); -#else -    mHasFramebufferObject = ExtensionExists("GL_EXT_framebuffer_object", gGLHExts.mSysExts) && -                            ExtensionExists("GL_EXT_framebuffer_blit", gGLHExts.mSysExts) && -                            ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts) && -                            ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts); -#endif +  #ifdef GL_EXT_texture_sRGB      mHassRGBTexture = ExtensionExists("GL_EXT_texture_sRGB", gGLHExts.mSysExts);  #endif -#ifdef GL_ARB_framebuffer_sRGB -    mHassRGBFramebuffer = ExtensionExists("GL_ARB_framebuffer_sRGB", gGLHExts.mSysExts); -#else -    mHassRGBFramebuffer = ExtensionExists("GL_EXT_framebuffer_sRGB", gGLHExts.mSysExts); -#endif  #ifdef GL_EXT_texture_sRGB_decode      mHasTexturesRGBDecode = ExtensionExists("GL_EXT_texture_sRGB_decode", gGLHExts.mSysExts); @@ -1111,17 +1112,9 @@ void LLGLManager::initExtensions()      mHasMipMapGeneration = mHasFramebufferObject || mGLVersion >= 1.4f; -    mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts);      mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts); -    mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); -    mHasTextureMultisample = ExtensionExists("GL_ARB_texture_multisample", gGLHExts.mSysExts);      mHasDebugOutput = ExtensionExists("GL_ARB_debug_output", gGLHExts.mSysExts);      mHasTransformFeedback = mGLVersion >= 4.f ? TRUE : FALSE; -    mHasUniformBufferObject = ExtensionExists("GL_ARB_uniform_buffer_object", gGLHExts.mSysExts); -    mHasCubeMapArray = ExtensionExists("GL_ARB_texture_cube_map_array", gGLHExts.mSysExts); -#if !LL_DARWIN -	mHasPointParameters = ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts); -#endif  #endif  #if LL_LINUX @@ -1223,7 +1216,7 @@ void LLGLManager::initExtensions()  	{  		LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_point_parameters" << LL_ENDL;  	} -	if (!mHasBlendFuncSeparate) +	if (!mHasBlendFuncSeparate && !LLRender::sGLCoreProfile)  	{  		LL_INFOS("RenderInit") << "Couldn't initialize GL_EXT_blend_func_separate" << LL_ENDL;  	} @@ -1687,7 +1680,7 @@ void LLGLState::resetTextureStates()  	for (S32 j = maxTextureUnits-1; j >=0; j--)  	{  		gGL.getTexUnit(j)->activate(); -		glClientActiveTextureARB(GL_TEXTURE0_ARB+j); +		glClientActiveTexture(GL_TEXTURE0+j);  		j == 0 ? gGL.getTexUnit(j)->enable(LLTexUnit::TT_TEXTURE) : gGL.getTexUnit(j)->disable();  	}  } @@ -1778,7 +1771,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)  	BOOL error = FALSE; -	if (activeTexture == GL_TEXTURE0_ARB) +	if (activeTexture == GL_TEXTURE0)  	{  		GLint tex_env_mode = 0; @@ -1836,7 +1829,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)  		if (i < gGLManager.mNumTextureUnits)  		{ -			glClientActiveTextureARB(GL_TEXTURE0_ARB+i); +			glClientActiveTexture(GL_TEXTURE0+i);  			stop_glerror();  			glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &stackDepth);  			stop_glerror(); @@ -1921,7 +1914,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)  	stop_glerror();  	gGL.getTexUnit(0)->activate(); -	glClientActiveTextureARB(GL_TEXTURE0_ARB); +	glClientActiveTexture(GL_TEXTURE0);  	stop_glerror();  	if (error) diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index 154f1aa2bd..6e2dbd24f9 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -69,7 +69,7 @@  # include "GL/glxext.h"  // Use glXGetProcAddressARB instead of glXGetProcAddress - the ARB symbol  // is considered 'legacy' but works on more machines. -# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p)) +# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p))  #endif // LL_LINUX && !LL_MESA_HEADLESS  #if LL_LINUX && defined(WINGDIAPI) @@ -618,9 +618,6 @@ extern void glGenerateMipmapEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_A  #define GL_MAX_SAMPLES	0x8D57  #endif -// GL_ARB_draw_buffers -extern void glDrawBuffersARB(GLsizei n, const GLenum* bufs) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; -  #ifdef __cplusplus  extern "C" {  #endif diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 67f82c9c5e..db70ba0c60 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -37,7 +37,7 @@  #include "OpenGL/OpenGL.h"  #endif -// Print-print list of shader included source files that are linked together via glAttachObjectARB() +// Print-print list of shader included source files that are linked together via glAttachShader()  // i.e. On macOS / OSX the AMD GLSL linker will display an error if a varying is left in an undefined state.  #define DEBUG_SHADER_INCLUDES 0 @@ -47,7 +47,7 @@ using std::pair;  using std::make_pair;  using std::string; -GLhandleARB LLGLSLShader::sCurBoundShader = 0; +GLuint LLGLSLShader::sCurBoundShader = 0;  LLGLSLShader* LLGLSLShader::sCurBoundShaderPtr = NULL;  S32 LLGLSLShader::sIndexedTextureChannels = 0;  bool LLGLSLShader::sProfileEnabled = false; @@ -227,11 +227,11 @@ void LLGLSLShader::stopProfile(U32 count, U32 mode)  void LLGLSLShader::placeProfileQuery()  { -#if !LL_DARWIN +#if 1 || !LL_DARWIN      if (mTimerQuery == 0)      { -        glGenQueriesARB(1, &mSamplesQuery); -        glGenQueriesARB(1, &mTimerQuery); +        glGenQueries(1, &mSamplesQuery); +        glGenQueries(1, &mTimerQuery);      }      if (!mTextureStateFetched) @@ -267,16 +267,16 @@ void LLGLSLShader::placeProfileQuery()      } -    glBeginQueryARB(GL_SAMPLES_PASSED, mSamplesQuery); -    glBeginQueryARB(GL_TIME_ELAPSED, mTimerQuery); +    glBeginQuery(GL_SAMPLES_PASSED, mSamplesQuery); +    glBeginQuery(GL_TIME_ELAPSED, mTimerQuery);  #endif  }  void LLGLSLShader::readProfileQuery(U32 count, U32 mode)  {  #if !LL_DARWIN -    glEndQueryARB(GL_TIME_ELAPSED); -    glEndQueryARB(GL_SAMPLES_PASSED); +    glEndQuery(GL_TIME_ELAPSED); +    glEndQuery(GL_SAMPLES_PASSED);      U64 time_elapsed = 0;      glGetQueryObjectui64v(mTimerQuery, GL_QUERY_RESULT, &time_elapsed); @@ -347,30 +347,30 @@ void LLGLSLShader::unloadInternal()      if (mProgramObject)      { -        GLhandleARB obj[1024]; +        GLuint obj[1024];          GLsizei count; -        glGetAttachedObjectsARB(mProgramObject, 1024, &count, obj); +        glGetAttachedShaders(mProgramObject, 1024, &count, obj);          for (GLsizei i = 0; i < count; i++)          { -            glDetachObjectARB(mProgramObject, obj[i]); -            glDeleteObjectARB(obj[i]); +            glDetachShader(mProgramObject, obj[i]); +            glDeleteShader(obj[i]);          } -        glDeleteObjectARB(mProgramObject); +        glDeleteProgram(mProgramObject);          mProgramObject = 0;      }      if (mTimerQuery)      { -        glDeleteQueriesARB(1, &mTimerQuery); +        glDeleteQueries(1, &mTimerQuery);          mTimerQuery = 0;      }      if (mSamplesQuery)      { -        glDeleteQueriesARB(1, &mSamplesQuery); +        glDeleteQueries(1, &mSamplesQuery);          mSamplesQuery = 0;      } @@ -401,7 +401,7 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,      llassert_always(!mShaderFiles.empty());      // Create program -    mProgramObject = glCreateProgramObjectARB(); +    mProgramObject = glCreateProgram();      if (mProgramObject == 0)      {          // Shouldn't happen if shader related extensions, like ARB_vertex_shader, exist. @@ -425,7 +425,7 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,      vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin();      for ( ; fileIter != mShaderFiles.end(); fileIter++ )      { -        GLhandleARB shaderhandle = LLShaderMgr::instance()->loadShaderFile((*fileIter).first, mShaderLevel, (*fileIter).second, &mDefines, mFeatures.mIndexedTextureChannels); +        GLuint shaderhandle = LLShaderMgr::instance()->loadShaderFile((*fileIter).first, mShaderLevel, (*fileIter).second, &mDefines, mFeatures.mIndexedTextureChannels);          LL_DEBUGS("ShaderLoading") << "SHADER FILE: " << (*fileIter).first << " mShaderLevel=" << mShaderLevel << LL_ENDL;          if (shaderhandle)          { @@ -505,20 +505,20 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,  }  #if DEBUG_SHADER_INCLUDES -void dumpAttachObject( const char *func_name, GLhandleARB program_object, const std::string &object_path ) +void dumpAttachObject( const char *func_name, GLuint program_object, const std::string &object_path )  { -    GLcharARB* info_log; +    GLchar* info_log;      GLint      info_len_expect = 0;      GLint      info_len_actual = 0; -    glGetObjectParameterivARB(program_object, GL_OBJECT_INFO_LOG_LENGTH_ARB, &info_len_expect); +    glGetShaderiv(program_object, GL_INFO_LOG_LENGTH,, &info_len_expect);      fprintf(stderr, " * %-20s(), log size: %d, %s\n", func_name, info_len_expect, object_path.c_str());      if (info_len_expect > 0)      {          fprintf(stderr, " ========== %s() ========== \n", func_name); -        info_log = new GLcharARB [ info_len_expect ]; -        glGetInfoLogARB(program_object, info_len_expect, &info_len_actual, info_log); +        info_log = new GLchar [ info_len_expect ]; +       glGetProgramInfoLog(program_object, info_len_expect, &info_len_actual, info_log);          fprintf(stderr, "%s\n",  info_log);          delete [] info_log;      } @@ -530,7 +530,7 @@ BOOL LLGLSLShader::attachVertexObject(std::string object_path)      if (LLShaderMgr::instance()->mVertexShaderObjects.count(object_path) > 0)      {          stop_glerror(); -        glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mVertexShaderObjects[object_path]); +        glAttachShader(mProgramObject, LLShaderMgr::instance()->mVertexShaderObjects[object_path]);  #if DEBUG_SHADER_INCLUDES          dumpAttachObject("attachVertexObject", mProgramObject, object_path);  #endif // DEBUG_SHADER_INCLUDES @@ -549,7 +549,7 @@ BOOL LLGLSLShader::attachFragmentObject(std::string object_path)      if (LLShaderMgr::instance()->mFragmentShaderObjects.count(object_path) > 0)      {          stop_glerror(); -        glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mFragmentShaderObjects[object_path]); +        glAttachShader(mProgramObject, LLShaderMgr::instance()->mFragmentShaderObjects[object_path]);  #if DEBUG_SHADER_INCLUDES          dumpAttachObject("attachFragmentObject", mProgramObject, object_path);  #endif // DEBUG_SHADER_INCLUDES @@ -563,12 +563,12 @@ BOOL LLGLSLShader::attachFragmentObject(std::string object_path)      }  } -void LLGLSLShader::attachObject(GLhandleARB object) +void LLGLSLShader::attachObject(GLuint object)  {      if (object != 0)      {          stop_glerror(); -        glAttachObjectARB(mProgramObject, object); +        glAttachShader(mProgramObject, object);  #if DEBUG_SHADER_INCLUDES          std::string object_path("???");          dumpAttachObject("attachObject", mProgramObject, object_path); @@ -581,7 +581,7 @@ void LLGLSLShader::attachObject(GLhandleARB object)      }  } -void LLGLSLShader::attachObjects(GLhandleARB* objects, S32 count) +void LLGLSLShader::attachObjects(GLuint* objects, S32 count)  {      for (S32 i = 0; i < count; i++)      { @@ -597,7 +597,7 @@ BOOL LLGLSLShader::mapAttributes(const std::vector<LLStaticHashedString> * attri      for (U32 i = 0; i < LLShaderMgr::instance()->mReservedAttribs.size(); i++)      {          const char* name = LLShaderMgr::instance()->mReservedAttribs[i].c_str(); -        glBindAttribLocationARB(mProgramObject, i, (const GLcharARB *) name); +        glBindAttribLocation(mProgramObject, i, (const GLchar *) name);      }      //link the program @@ -620,7 +620,7 @@ BOOL LLGLSLShader::mapAttributes(const std::vector<LLStaticHashedString> * attri          for (U32 i = 0; i < LLShaderMgr::instance()->mReservedAttribs.size(); i++)          {              const char* name = LLShaderMgr::instance()->mReservedAttribs[i].c_str(); -            S32 index = glGetAttribLocationARB(mProgramObject, (const GLcharARB *)name); +            S32 index = glGetAttribLocation(mProgramObject, (const GLchar *)name);              if (index != -1)              {  #if LL_RELEASE_WITH_DEBUG_INFO @@ -637,7 +637,7 @@ BOOL LLGLSLShader::mapAttributes(const std::vector<LLStaticHashedString> * attri              for (U32 i = 0; i < numAttributes; i++)              {                  const char* name = (*attributes)[i].String().c_str(); -                S32 index = glGetAttribLocationARB(mProgramObject, name); +                S32 index = glGetAttribLocation(mProgramObject, name);                  if (index != -1)                  {                      mAttribute[LLShaderMgr::instance()->mReservedAttribs.size() + i] = index; @@ -668,7 +668,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<LLStaticHashedString> *      name[0] = 0; -    glGetActiveUniformARB(mProgramObject, index, 1024, &length, &size, &type, (GLcharARB *)name); +    glGetActiveUniform(mProgramObject, index, 1024, &length, &size, &type, (GLchar *)name);  #if !LL_DARWIN      if (size > 0)      { @@ -713,7 +713,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<LLStaticHashedString> *      }  #endif -    S32 location = glGetUniformLocationARB(mProgramObject, name); +    S32 location = glGetUniformLocation(mProgramObject, name);      if (location != -1)      {          //chop off "[0]" so we can always access the first element @@ -779,14 +779,14 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type, GLint  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -    if ((type >= GL_SAMPLER_1D_ARB && type <= GL_SAMPLER_2D_RECT_SHADOW_ARB) || +    if ((type >= GL_SAMPLER_1D  && type <= GL_SAMPLER_2D_RECT_SHADOW) ||          type == GL_SAMPLER_2D_MULTISAMPLE || -        type == GL_SAMPLER_CUBE_MAP_ARRAY_ARB) +        type == GL_SAMPLER_CUBE_MAP_ARRAY)      {   //this here is a texture          GLint ret = mActiveTextureChannels;          if (size == 1)          { -            glUniform1iARB(location, mActiveTextureChannels); +            glUniform1i(location, mActiveTextureChannels);              LL_DEBUGS("ShaderUniform") << "Assigned to texture channel " << mActiveTextureChannels << LL_ENDL;              mActiveTextureChannels++;          } @@ -800,7 +800,7 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type, GLint              {                  channel[i] = mActiveTextureChannels++;              } -            glUniform1ivARB(location, size, channel); +            glUniform1iv(location, size, channel);              LL_DEBUGS("ShaderUniform") << "Assigned to texture channel " <<                   (mActiveTextureChannels-size) << " through " << (mActiveTextureChannels-1) << LL_ENDL;          } @@ -833,7 +833,7 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)  	//get the number of active uniforms  	GLint activeCount; -	glGetObjectParameterivARB(mProgramObject, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &activeCount); +    glGetProgramiv(mProgramObject, GL_ACTIVE_UNIFORMS, &activeCount);  	//........................................................................................................................................  	//........................................................................................ @@ -860,12 +860,12 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)  	*/ -	S32 diffuseMap = glGetUniformLocationARB(mProgramObject, "diffuseMap"); -	S32 specularMap = glGetUniformLocationARB(mProgramObject, "specularMap"); -	S32 bumpMap = glGetUniformLocationARB(mProgramObject, "bumpMap"); -    S32 altDiffuseMap = glGetUniformLocationARB(mProgramObject, "altDiffuseMap"); -	S32 environmentMap = glGetUniformLocationARB(mProgramObject, "environmentMap"); -    S32 reflectionMap = glGetUniformLocationARB(mProgramObject, "reflectionMap"); +	S32 diffuseMap = glGetUniformLocation(mProgramObject, "diffuseMap"); +	S32 specularMap = glGetUniformLocation(mProgramObject, "specularMap"); +	S32 bumpMap = glGetUniformLocation(mProgramObject, "bumpMap"); +    S32 altDiffuseMap = glGetUniformLocation(mProgramObject, "altDiffuseMap"); +	S32 environmentMap = glGetUniformLocation(mProgramObject, "environmentMap"); +    S32 reflectionMap = glGetUniformLocation(mProgramObject, "reflectionMap");  	std::set<S32> skip_index; @@ -882,7 +882,7 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)  		{  			name[0] = '\0'; -			glGetActiveUniformARB(mProgramObject, i, 1024, &length, &size, &type, (GLcharARB *)name); +            glGetActiveUniform(mProgramObject, i, 1024, &length, &size, &type, (GLchar *)name);  			if (-1 == diffuseMap && std::string(name) == "diffuseMap")  			{ @@ -995,7 +995,7 @@ void LLGLSLShader::bind()      if (sCurBoundShader != mProgramObject)  // Don't re-bind current shader      {          LLVertexBuffer::unbind(); -        glUseProgramObjectARB(mProgramObject); +        glUseProgram(mProgramObject);          sCurBoundShader = mProgramObject;          sCurBoundShaderPtr = this;      } @@ -1027,7 +1027,7 @@ void LLGLSLShader::unbind()      gGL.flush();      stop_glerror();      LLVertexBuffer::unbind(); -    glUseProgramObjectARB(0); +    glUseProgram(0);      sCurBoundShader = 0;      sCurBoundShaderPtr = NULL;      stop_glerror(); @@ -1038,7 +1038,7 @@ void LLGLSLShader::bindNoShader(void)      LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER;      LLVertexBuffer::unbind(); -    glUseProgramObjectARB(0); +    glUseProgram(0);      sCurBoundShader = 0;      sCurBoundShaderPtr = NULL;  } @@ -1168,7 +1168,7 @@ void LLGLSLShader::uniform1i(U32 index, GLint x)              const auto& iter = mValue.find(mUniform[index]);              if (iter == mValue.end() || iter->second.mV[0] != x)              { -                glUniform1iARB(mUniform[index], x); +                glUniform1i(mUniform[index], x);                  mValue[mUniform[index]] = LLVector4(x,0.f,0.f,0.f);              }          } @@ -1191,7 +1191,7 @@ void LLGLSLShader::uniform1f(U32 index, GLfloat x)              const auto& iter = mValue.find(mUniform[index]);              if (iter == mValue.end() || iter->second.mV[0] != x)              { -                glUniform1fARB(mUniform[index], x); +                glUniform1f(mUniform[index], x);                  mValue[mUniform[index]] = LLVector4(x,0.f,0.f,0.f);              }          } @@ -1214,7 +1214,7 @@ void LLGLSLShader::uniform2f(U32 index, GLfloat x, GLfloat y)              LLVector4 vec(x,y,0.f,0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec))              { -                glUniform2fARB(mUniform[index], x, y); +                glUniform2f(mUniform[index], x, y);                  mValue[mUniform[index]] = vec;              }          } @@ -1237,7 +1237,7 @@ void LLGLSLShader::uniform3f(U32 index, GLfloat x, GLfloat y, GLfloat z)              LLVector4 vec(x,y,z,0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec))              { -                glUniform3fARB(mUniform[index], x, y, z); +                glUniform3f(mUniform[index], x, y, z);                  mValue[mUniform[index]] = vec;              }          } @@ -1260,7 +1260,7 @@ void LLGLSLShader::uniform4f(U32 index, GLfloat x, GLfloat y, GLfloat z, GLfloat              LLVector4 vec(x,y,z,w);              if (iter == mValue.end() || shouldChange(iter->second,vec))              { -                glUniform4fARB(mUniform[index], x, y, z, w); +                glUniform4f(mUniform[index], x, y, z, w);                  mValue[mUniform[index]] = vec;              }          } @@ -1283,7 +1283,7 @@ void LLGLSLShader::uniform1iv(U32 index, U32 count, const GLint* v)              LLVector4 vec(v[0],0.f,0.f,0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)              { -                glUniform1ivARB(mUniform[index], count, v); +                glUniform1iv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1306,7 +1306,7 @@ void LLGLSLShader::uniform4iv(U32 index, U32 count, const GLint* v)              LLVector4 vec(v[0], v[1], v[2], v[3]);              if (iter == mValue.end() || shouldChange(iter->second, vec) || count != 1)              { -                glUniform1ivARB(mUniform[index], count, v); +                glUniform1iv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1330,7 +1330,7 @@ void LLGLSLShader::uniform1fv(U32 index, U32 count, const GLfloat* v)              LLVector4 vec(v[0],0.f,0.f,0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)              { -                glUniform1fvARB(mUniform[index], count, v); +                glUniform1fv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1353,7 +1353,7 @@ void LLGLSLShader::uniform2fv(U32 index, U32 count, const GLfloat* v)              LLVector4 vec(v[0],v[1],0.f,0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)              { -                glUniform2fvARB(mUniform[index], count, v); +                glUniform2fv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1376,7 +1376,7 @@ void LLGLSLShader::uniform3fv(U32 index, U32 count, const GLfloat* v)              LLVector4 vec(v[0],v[1],v[2],0.f);              if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)              { -                glUniform3fvARB(mUniform[index], count, v); +                glUniform3fv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1400,7 +1400,7 @@ void LLGLSLShader::uniform4fv(U32 index, U32 count, const GLfloat* v)              if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)              {                  LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -                glUniform4fvARB(mUniform[index], count, v); +                glUniform4fv(mUniform[index], count, v);                  mValue[mUniform[index]] = vec;              }          } @@ -1419,7 +1419,7 @@ void LLGLSLShader::uniformMatrix2fv(U32 index, U32 count, GLboolean transpose, c          if (mUniform[index] >= 0)          { -            glUniformMatrix2fvARB(mUniform[index], count, transpose, v); +            glUniformMatrix2fv(mUniform[index], count, transpose, v);          }      }  } @@ -1436,7 +1436,7 @@ void LLGLSLShader::uniformMatrix3fv(U32 index, U32 count, GLboolean transpose, c          if (mUniform[index] >= 0)          { -            glUniformMatrix3fvARB(mUniform[index], count, transpose, v); +            glUniformMatrix3fv(mUniform[index], count, transpose, v);          }      }  } @@ -1472,7 +1472,7 @@ void LLGLSLShader::uniformMatrix4fv(U32 index, U32 count, GLboolean transpose, c          if (mUniform[index] >= 0)          { -            glUniformMatrix4fvARB(mUniform[index], count, transpose, v); +            glUniformMatrix4fv(mUniform[index], count, transpose, v);          }      }  } @@ -1490,7 +1490,7 @@ GLint LLGLSLShader::getUniformLocation(const LLStaticHashedString& uniform)              if (gDebugGL)              {                  stop_glerror(); -                if (iter->second != glGetUniformLocationARB(mProgramObject, uniform.String().c_str())) +                if (iter->second != glGetUniformLocation(mProgramObject, uniform.String().c_str()))                  {                      LL_ERRS() << "Uniform does not match." << LL_ENDL;                  } @@ -1545,7 +1545,7 @@ void LLGLSLShader::uniform1i(const LLStaticHashedString& uniform, GLint v)          LLVector4 vec(v,0.f,0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec))          { -            glUniform1iARB(location, v); +            glUniform1i(location, v);              mValue[location] = vec;          }      } @@ -1562,7 +1562,7 @@ void LLGLSLShader::uniform1iv(const LLStaticHashedString& uniform, U32 count, co          if (iter == mValue.end() || shouldChange(iter->second, vec) || count != 1)          {              LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -            glUniform1ivARB(location, count, v); +            glUniform1iv(location, count, v);              mValue[location] = vec;          }      } @@ -1579,7 +1579,7 @@ void LLGLSLShader::uniform4iv(const LLStaticHashedString& uniform, U32 count, co          if (iter == mValue.end() || shouldChange(iter->second, vec) || count != 1)          {              LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -            glUniform4ivARB(location, count, v); +            glUniform4iv(location, count, v);              mValue[location] = vec;          }      } @@ -1595,7 +1595,7 @@ void LLGLSLShader::uniform2i(const LLStaticHashedString& uniform, GLint i, GLint          LLVector4 vec(i,j,0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec))          { -            glUniform2iARB(location, i, j); +            glUniform2i(location, i, j);              mValue[location] = vec;          }      } @@ -1612,7 +1612,7 @@ void LLGLSLShader::uniform1f(const LLStaticHashedString& uniform, GLfloat v)          LLVector4 vec(v,0.f,0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec))          { -            glUniform1fARB(location, v); +            glUniform1f(location, v);              mValue[location] = vec;          }      } @@ -1628,7 +1628,7 @@ void LLGLSLShader::uniform2f(const LLStaticHashedString& uniform, GLfloat x, GLf          LLVector4 vec(x,y,0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec))          { -            glUniform2fARB(location, x,y); +            glUniform2f(location, x,y);              mValue[location] = vec;          }      } @@ -1645,7 +1645,7 @@ void LLGLSLShader::uniform3f(const LLStaticHashedString& uniform, GLfloat x, GLf          LLVector4 vec(x,y,z,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec))          { -            glUniform3fARB(location, x,y,z); +            glUniform3f(location, x,y,z);              mValue[location] = vec;          }      } @@ -1661,7 +1661,7 @@ void LLGLSLShader::uniform1fv(const LLStaticHashedString& uniform, U32 count, co          LLVector4 vec(v[0],0.f,0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)          { -            glUniform1fvARB(location, count, v); +            glUniform1fv(location, count, v);              mValue[location] = vec;          }      } @@ -1677,7 +1677,7 @@ void LLGLSLShader::uniform2fv(const LLStaticHashedString& uniform, U32 count, co          LLVector4 vec(v[0],v[1],0.f,0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)          { -            glUniform2fvARB(location, count, v); +            glUniform2fv(location, count, v);              mValue[location] = vec;          }      } @@ -1693,7 +1693,7 @@ void LLGLSLShader::uniform3fv(const LLStaticHashedString& uniform, U32 count, co          LLVector4 vec(v[0],v[1],v[2],0.f);          if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)          { -            glUniform3fvARB(location, count, v); +            glUniform3fv(location, count, v);              mValue[location] = vec;          }      } @@ -1710,7 +1710,7 @@ void LLGLSLShader::uniform4fv(const LLStaticHashedString& uniform, U32 count, co          if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)          {              LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -            glUniform4fvARB(location, count, v); +            glUniform4fv(location, count, v);              mValue[location] = vec;          }      } @@ -1723,7 +1723,7 @@ void LLGLSLShader::uniformMatrix4fv(const LLStaticHashedString& uniform, U32 cou      if (location >= 0)      {          stop_glerror(); -        glUniformMatrix4fvARB(location, count, transpose, v); +        glUniformMatrix4fv(location, count, transpose, v);          stop_glerror();      }  } @@ -1733,7 +1733,7 @@ void LLGLSLShader::vertexAttrib4f(U32 index, GLfloat x, GLfloat y, GLfloat z, GL  {      if (mAttribute[index] > 0)      { -        glVertexAttrib4fARB(mAttribute[index], x, y, z, w); +        glVertexAttrib4f(mAttribute[index], x, y, z, w);      }  } @@ -1741,7 +1741,7 @@ void LLGLSLShader::vertexAttrib4fv(U32 index, GLfloat* v)  {      if (mAttribute[index] > 0)      { -        glVertexAttrib4fvARB(mAttribute[index], v); +        glVertexAttrib4fv(mAttribute[index], v);      }  } diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h index 68e1a8954d..c26ee014cb 100644 --- a/indra/llrender/llglslshader.h +++ b/indra/llrender/llglslshader.h @@ -146,7 +146,7 @@ public:  	LLGLSLShader();  	~LLGLSLShader(); -	static GLhandleARB sCurBoundShader; +	static GLuint sCurBoundShader;  	static LLGLSLShader* sCurBoundShaderPtr;  	static S32 sIndexedTextureChannels; @@ -168,8 +168,8 @@ public:  						const char** varyings = NULL);      BOOL attachFragmentObject(std::string object);      BOOL attachVertexObject(std::string object); -	void attachObject(GLhandleARB object); -	void attachObjects(GLhandleARB* objects = NULL, S32 count = 0); +	void attachObject(GLuint object); +	void attachObjects(GLuint* objects = NULL, S32 count = 0);  	BOOL mapAttributes(const std::vector<LLStaticHashedString> * attributes);  	BOOL mapUniforms(const std::vector<LLStaticHashedString> *);  	void mapUniform(GLint index, const std::vector<LLStaticHashedString> *); @@ -243,7 +243,7 @@ public:  	U32 mMatHash[LLRender::NUM_MATRIX_MODES];  	U32 mLightHash; -	GLhandleARB mProgramObject; +	GLuint mProgramObject;  #if LL_RELEASE_WITH_DEBUG_INFO  	struct attr_name  	{ diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 6215727de0..d8e312106c 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -794,7 +794,7 @@ BOOL LLImageGL::setImage(const U8* data_in, BOOL data_hasmips /* = FALSE */, S32  				if (is_compressed)  				{   					S32 tex_size = dataFormatBytes(mFormatPrimary, w, h); -					glCompressedTexImage2DARB(mTarget, gl_level, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in); +					glCompressedTexImage2D(mTarget, gl_level, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);  					stop_glerror();  				}  				else @@ -990,7 +990,7 @@ BOOL LLImageGL::setImage(const U8* data_in, BOOL data_hasmips /* = FALSE */, S32  		if (is_compressed)  		{  			S32 tex_size = dataFormatBytes(mFormatPrimary, w, h); -			glCompressedTexImage2DARB(mTarget, 0, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in); +			glCompressedTexImage2D(mTarget, 0, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);  			stop_glerror();  		}  		else @@ -1838,7 +1838,7 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre  			return FALSE ;  		} -		glGetCompressedTexImageARB(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));		 +		glGetCompressedTexImage(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));  		//stop_glerror();  	}  	else diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index b6ea5aa7f1..74154e5676 100644 --- a/indra/llrender/llpostprocess.cpp +++ b/indra/llrender/llpostprocess.cpp @@ -239,17 +239,17 @@ void LLPostProcess::applyColorFilterShader(void)  	gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, sceneRenderTexture);  	getShaderUniforms(colorFilterUniforms, gPostColorFilterProgram.mProgramObject); -	glUniform1iARB(colorFilterUniforms["RenderTexture"], 0); -	glUniform1fARB(colorFilterUniforms["brightness"], tweaks.getBrightness()); -	glUniform1fARB(colorFilterUniforms["contrast"], tweaks.getContrast()); +	glUniform1i(colorFilterUniforms["RenderTexture"], 0); +	glUniform1f(colorFilterUniforms["brightness"], tweaks.getBrightness()); +	glUniform1f(colorFilterUniforms["contrast"], tweaks.getContrast());  	float baseI = (tweaks.getContrastBaseR() + tweaks.getContrastBaseG() + tweaks.getContrastBaseB()) / 3.0f;  	baseI = tweaks.getContrastBaseIntensity() / ((baseI < 0.001f) ? 0.001f : baseI);  	float baseR = tweaks.getContrastBaseR() * baseI;  	float baseG = tweaks.getContrastBaseG() * baseI;  	float baseB = tweaks.getContrastBaseB() * baseI; -	glUniform3fARB(colorFilterUniforms["contrastBase"], baseR, baseG, baseB); -	glUniform1fARB(colorFilterUniforms["saturation"], tweaks.getSaturation()); -	glUniform3fARB(colorFilterUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B); +	glUniform3f(colorFilterUniforms["contrastBase"], baseR, baseG, baseB); +	glUniform1f(colorFilterUniforms["saturation"], tweaks.getSaturation()); +	glUniform3f(colorFilterUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B);  	LLGLEnable blend(GL_BLEND);  	gGL.setSceneBlendType(LLRender::BT_REPLACE); @@ -282,22 +282,22 @@ void LLPostProcess::applyNightVisionShader(void)  	getShaderUniforms(nightVisionUniforms, gPostNightVisionProgram.mProgramObject);  	gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, sceneRenderTexture); -	glUniform1iARB(nightVisionUniforms["RenderTexture"], 0); +	glUniform1i(nightVisionUniforms["RenderTexture"], 0);  	gGL.getTexUnit(1)->activate();  	gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);	  	gGL.getTexUnit(1)->bindManual(LLTexUnit::TT_TEXTURE, noiseTexture); -	glUniform1iARB(nightVisionUniforms["NoiseTexture"], 1); +	glUniform1i(nightVisionUniforms["NoiseTexture"], 1); -	glUniform1fARB(nightVisionUniforms["brightMult"], tweaks.getBrightMult()); -	glUniform1fARB(nightVisionUniforms["noiseStrength"], tweaks.getNoiseStrength()); +	glUniform1f(nightVisionUniforms["brightMult"], tweaks.getBrightMult()); +	glUniform1f(nightVisionUniforms["noiseStrength"], tweaks.getNoiseStrength());  	noiseTextureScale = 0.01f + ((101.f - tweaks.getNoiseSize()) / 100.f);  	noiseTextureScale *= (screenH / NOISE_SIZE); -	glUniform3fARB(nightVisionUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B); +	glUniform3f(nightVisionUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B);  	LLGLEnable blend(GL_BLEND);  	gGL.setSceneBlendType(LLRender::BT_REPLACE); @@ -345,12 +345,12 @@ void LLPostProcess::createBloomShader(void)  	bloomBlurUniforms[sBlurWidth] = 0;  } -void LLPostProcess::getShaderUniforms(glslUniforms & uniforms, GLhandleARB & prog) +void LLPostProcess::getShaderUniforms(glslUniforms & uniforms, GLuint & prog)  {  	/// Find uniform locations and insert into map	  	glslUniforms::iterator i;  	for (i  = uniforms.begin(); i != uniforms.end(); ++i){ -		i->second = glGetUniformLocationARB(prog, i->first.String().c_str()); +		i->second = glGetUniformLocation(prog, i->first.String().c_str());  	}  } @@ -391,7 +391,7 @@ void LLPostProcess::doEffects(void)  void LLPostProcess::copyFrameBuffer(U32 & texture, unsigned int width, unsigned int height)  {  	gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, texture); -	glCopyTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, 0, 0, width, height, 0); +	glCopyTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RGBA, 0, 0, width, height, 0);  }  void LLPostProcess::drawOrthoQuad(unsigned int width, unsigned int height, QuadType type) @@ -410,60 +410,60 @@ void LLPostProcess::drawOrthoQuad(unsigned int width, unsigned int height, QuadT  	glBegin(GL_QUADS);  		if (type != QUAD_BLOOM_EXTRACT){ -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, (GLfloat) height); +			glMultiTexCoord2f(GL_TEXTURE0, 0.f, (GLfloat) height);  		} else { -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, (GLfloat) height * 2.0f); +			glMultiTexCoord2f(GL_TEXTURE0, 0.f, (GLfloat) height * 2.0f);  		}  		if (type == QUAD_NOISE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, +			glMultiTexCoord2f(GL_TEXTURE1,  									noiseX,  									noiseTextureScale + noiseY);  		} else if (type == QUAD_BLOOM_COMBINE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.f, (GLfloat) height * 0.5f); +			glMultiTexCoord2f(GL_TEXTURE1, 0.f, (GLfloat) height * 0.5f);  		}  		glVertex2f(0.f, (GLfloat) screenH - height);  		if (type != QUAD_BLOOM_EXTRACT){ -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f); +			glMultiTexCoord2f(GL_TEXTURE0, 0.f, 0.f);  		} else { -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.f, 0.f); +			glMultiTexCoord2f(GL_TEXTURE0, 0.f, 0.f);  		}  		if (type == QUAD_NOISE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, +			glMultiTexCoord2f(GL_TEXTURE1,  									noiseX,  									noiseY);  		} else if (type == QUAD_BLOOM_COMBINE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.f, 0.f); +			glMultiTexCoord2f(GL_TEXTURE1, 0.f, 0.f);  		}  		glVertex2f(0.f, (GLfloat) height + (screenH - height));  		if (type != QUAD_BLOOM_EXTRACT){ -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width, 0.f); +			glMultiTexCoord2f(GL_TEXTURE0, (GLfloat) width, 0.f);  		} else { -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width * 2.0f, 0.f); +			glMultiTexCoord2f(GL_TEXTURE0, (GLfloat) width * 2.0f, 0.f);  		}  		if (type == QUAD_NOISE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, +			glMultiTexCoord2f(GL_TEXTURE1,  									screenRatio * noiseTextureScale + noiseX,  									noiseY);  		} else if (type == QUAD_BLOOM_COMBINE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, (GLfloat) width * 0.5f, 0.f); +			glMultiTexCoord2f(GL_TEXTURE1, (GLfloat) width * 0.5f, 0.f);  		}  		glVertex2f((GLfloat) width, (GLfloat) height + (screenH - height));  		if (type != QUAD_BLOOM_EXTRACT){ -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width, (GLfloat) height); +			glMultiTexCoord2f(GL_TEXTURE0, (GLfloat) width, (GLfloat) height);  		} else { -			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (GLfloat) width * 2.0f, (GLfloat) height * 2.0f); +			glMultiTexCoord2f(GL_TEXTURE0, (GLfloat) width * 2.0f, (GLfloat) height * 2.0f);  		}  		if (type == QUAD_NOISE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, +			glMultiTexCoord2f(GL_TEXTURE1,  									screenRatio * noiseTextureScale + noiseX,  									noiseTextureScale + noiseY);  		} else if (type == QUAD_BLOOM_COMBINE){ -			glMultiTexCoord2fARB(GL_TEXTURE1_ARB, (GLfloat) width * 0.5f, (GLfloat) height * 0.5f); +			glMultiTexCoord2f(GL_TEXTURE1, (GLfloat) width * 0.5f, (GLfloat) height * 0.5f);  		}  		glVertex2f((GLfloat) width, (GLfloat) screenH - height);  	glEnd(); @@ -503,7 +503,7 @@ void LLPostProcess::createTexture(LLPointer<LLImageGL>& texture, unsigned int wi  	if(texture->createGLTexture())  	{  		gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, texture->getTexName()); -		glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, 4, width, height, 0, +		glTexImage2D(GL_TEXTURE_RECTANGLE, 0, 4, width, height, 0,  			GL_RGBA, GL_UNSIGNED_BYTE, &data[0]);  		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);  		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); @@ -557,7 +557,7 @@ bool LLPostProcess::checkError(void)      return retCode;  } -void LLPostProcess::checkShaderError(GLhandleARB shader) +void LLPostProcess::checkShaderError(GLuint shader)  {      GLint infologLength = 0;      GLint charsWritten  = 0; @@ -565,7 +565,7 @@ void LLPostProcess::checkShaderError(GLhandleARB shader)      checkError();  // Check for OpenGL errors -    glGetObjectParameterivARB(shader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &infologLength); +    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infologLength);      checkError();  // Check for OpenGL errors @@ -577,7 +577,7 @@ void LLPostProcess::checkShaderError(GLhandleARB shader)              /// Could not allocate infolog buffer              return;          } -        glGetInfoLogARB(shader, infologLength, &charsWritten, infoLog); +       glGetProgramInfoLog(shader, infologLength, &charsWritten, infoLog);  		// shaderErrorLog << (char *) infoLog << std::endl;  		mShaderErrorString = (char *) infoLog;          free(infoLog); diff --git a/indra/llrender/llpostprocess.h b/indra/llrender/llpostprocess.h index ce17b6693d..bdfc632831 100644 --- a/indra/llrender/llpostprocess.h +++ b/indra/llrender/llpostprocess.h @@ -249,12 +249,12 @@ private:  	void applyColorFilterShader(void);  	/// OpenGL Helper Functions -	void getShaderUniforms(glslUniforms & uniforms, GLhandleARB & prog); +	void getShaderUniforms(glslUniforms & uniforms, GLuint & prog);  	void createTexture(LLPointer<LLImageGL>& texture, unsigned int width, unsigned int height);  	void copyFrameBuffer(U32 & texture, unsigned int width, unsigned int height);  	void createNoiseTexture(LLPointer<LLImageGL>& texture);  	bool checkError(void); -	void checkShaderError(GLhandleARB shader); +	void checkShaderError(GLuint shader);  	void drawOrthoQuad(unsigned int width, unsigned int height, QuadType type);  	void viewOrthogonal(unsigned int width, unsigned int height);  	void changeOrthogonal(unsigned int width, unsigned int height); diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index e5bd19e91c..821109ba99 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -123,7 +123,7 @@ void LLTexUnit::refreshState(void)  	gGL.flush(); -	glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); +	glActiveTexture(GL_TEXTURE0 + mIndex);  	if (mCurrTexType != TT_NONE)  	{ @@ -144,7 +144,7 @@ void LLTexUnit::activate(void)  	if ((S32)gGL.mCurrTextureUnitIndex != mIndex || gGL.mDirty)  	{  		gGL.flush(); -		glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); +		glActiveTexture(GL_TEXTURE0 + mIndex);  		gGL.mCurrTextureUnitIndex = mIndex;  	}  } @@ -188,7 +188,7 @@ void LLTexUnit::bindFast(LLTexture* texture)  {      LLImageGL* gl_tex = texture->getGLTexture(); -    glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); +    glActiveTexture(GL_TEXTURE0 + mIndex);      gGL.mCurrTextureUnitIndex = mIndex;      mCurrTexture = gl_tex->getTexName();      if (!mCurrTexture) @@ -640,9 +640,9 @@ void LLTexUnit::debugTextureUnit(void)  	GLint activeTexture;  	glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture); -	if ((GL_TEXTURE0_ARB + mIndex) != activeTexture) +	if ((GL_TEXTURE0 + mIndex) != activeTexture)  	{ -		U32 set_unit = (activeTexture - GL_TEXTURE0_ARB); +		U32 set_unit = (activeTexture - GL_TEXTURE0);  		LL_WARNS() << "Incorrect Texture Unit!  Expected: " << set_unit << " Actual: " << mIndex << LL_ENDL;  	}  } @@ -875,8 +875,8 @@ void LLRender::init()  #if LL_WINDOWS      if (gGLManager.mHasDebugOutput && gDebugGL)      { //setup debug output callback -        //glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, GL_TRUE); -        glDebugMessageCallbackARB((GLDEBUGPROCARB) gl_debug_callback, NULL); +        //glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, GL_TRUE); +        glDebugMessageCallback((GLDEBUGPROCARB) gl_debug_callback, NULL);          glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);      }  #endif @@ -1471,7 +1471,7 @@ void LLRender::blendFunc(eBlendFactor color_sfactor, eBlendFactor color_dfactor,  	llassert(color_dfactor < BF_UNDEF);  	llassert(alpha_sfactor < BF_UNDEF);  	llassert(alpha_dfactor < BF_UNDEF); -	if (!gGLManager.mHasBlendFuncSeparate) +	if (!LLRender::sGLCoreProfile && !gGLManager.mHasBlendFuncSeparate)  	{  		LL_WARNS_ONCE("render") << "no glBlendFuncSeparateEXT(), using color-only blend func" << LL_ENDL;  		blendFunc(color_sfactor, color_dfactor); @@ -1485,8 +1485,16 @@ void LLRender::blendFunc(eBlendFactor color_sfactor, eBlendFactor color_dfactor,  		mCurrBlendColorDFactor = color_dfactor;  		mCurrBlendAlphaDFactor = alpha_dfactor;  		flush(); -		glBlendFuncSeparateEXT(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor], +        if (LLRender::sGLCoreProfile) +        { +            glBlendFuncSeparate(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor], +                           sGLBlendFactor[alpha_sfactor], sGLBlendFactor[alpha_dfactor]); +        } +        else +        { +            glBlendFuncSeparateEXT(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor],  				       sGLBlendFactor[alpha_sfactor], sGLBlendFactor[alpha_dfactor]); +        }  	}  } diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index fa46e0f7d0..fa23654978 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -490,7 +490,7 @@ void LLRenderTarget::bindTarget()  									GL_COLOR_ATTACHMENT1,  									GL_COLOR_ATTACHMENT2,  									GL_COLOR_ATTACHMENT3}; -			glDrawBuffersARB(mTex.size(), drawbuffers); +			glDrawBuffers(mTex.size(), drawbuffers);  		}  		if (mTex.empty()) diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 96fb764f75..43d59f7b43 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -558,18 +558,18 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)  //============================================================================  // Load Shader -static std::string get_object_log(GLhandleARB ret) +static std::string get_object_log(GLuint ret)  {  	std::string res;  	//get log length   	GLint length; -	glGetObjectParameterivARB(ret, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length); +    glGetShaderiv(ret, GL_INFO_LOG_LENGTH, &length);  	if (length > 0)  	{  		//the log could be any size, so allocate appropriately -		GLcharARB* log = new GLcharARB[length]; -		glGetInfoLogARB(ret, length, &length, log); +		GLchar* log = new GLchar[length]; +        glGetProgramInfoLog(ret, length, &length, log);  		res = std::string((char *)log);  		delete[] log;  	} @@ -577,7 +577,7 @@ static std::string get_object_log(GLhandleARB ret)  }  //dump shader source for debugging -void LLShaderMgr::dumpShaderSource(U32 shader_code_count, GLcharARB** shader_code_text) +void LLShaderMgr::dumpShaderSource(U32 shader_code_count, GLchar** shader_code_text)  {  	char num_str[16]; // U32 = max 10 digits @@ -592,7 +592,7 @@ void LLShaderMgr::dumpShaderSource(U32 shader_code_count, GLcharARB** shader_cod      LL_CONT << LL_ENDL;  } -void LLShaderMgr::dumpObjectLog(GLhandleARB ret, BOOL warns, const std::string& filename)  +void LLShaderMgr::dumpObjectLog(GLuint ret, BOOL warns, const std::string& filename)   {  	std::string log = get_object_log(ret);      std::string fname = filename; @@ -608,7 +608,7 @@ void LLShaderMgr::dumpObjectLog(GLhandleARB ret, BOOL warns, const std::string&  	}   } -GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_level, GLenum type, std::unordered_map<std::string, std::string>* defines, S32 texture_index_channels) +GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_level, GLenum type, std::unordered_map<std::string, std::string>* defines, S32 texture_index_channels)  {  // endsure work-around for missing GLSL funcs gets propogated to feature shader files (e.g. srgbF.glsl) @@ -679,9 +679,9 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	//we can't have any lines longer than 1024 characters   	//or any shaders longer than 4096 lines... deal - DaveP -    GLcharARB buff[1024]; -    GLcharARB *extra_code_text[1024]; -    GLcharARB *shader_code_text[4096 + LL_ARRAY_SIZE(extra_code_text)] = { NULL }; +    GLchar buff[1024]; +    GLchar *extra_code_text[1024]; +    GLchar *shader_code_text[4096 + LL_ARRAY_SIZE(extra_code_text)] = { NULL };      GLuint extra_code_count = 0, shader_code_count = 0;      BOOST_STATIC_ASSERT(LL_ARRAY_SIZE(extra_code_text) < LL_ARRAY_SIZE(shader_code_text)); @@ -763,7 +763,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  		extra_code_text[extra_code_count++] = strdup("#define ATTRIBUTE in\n"); -		if (type == GL_VERTEX_SHADER_ARB) +		if (type == GL_VERTEX_SHADER)  		{ //"varying" state is "out" in a vertex program, "in" in a fragment program   			// ("varying" is deprecated after version 1.20)  			extra_code_text[extra_code_count++] = strdup("#define VARYING out\n"); @@ -800,7 +800,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  		for (std::unordered_map<std::string,std::string>::iterator iter = defines->begin(); iter != defines->end(); ++iter)  		{  			std::string define = "#define " + iter->first + " " + iter->second + "\n"; -			extra_code_text[extra_code_count++] = (GLcharARB *) strdup(define.c_str()); +			extra_code_text[extra_code_count++] = (GLchar *) strdup(define.c_str());  		}  	} @@ -809,7 +809,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  		extra_code_text[extra_code_count++] = strdup( "#define IS_AMD_CARD 1\n" );  	} -	if (texture_index_channels > 0 && type == GL_FRAGMENT_SHADER_ARB) +	if (texture_index_channels > 0 && type == GL_FRAGMENT_SHADER)  	{  		//use specified number of texture channels for indexed texture rendering @@ -949,7 +949,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  		}          else          { -            shader_code_text[shader_code_count] = (GLcharARB *)strdup((char *)buff); +            shader_code_text[shader_code_count] = (GLchar *)strdup((char *)buff);              if(flag_write_to_out_of_extra_block_area & flags)              { @@ -985,41 +985,46 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	fclose(file); +    error = glGetError(); +    if (error != GL_NO_ERROR) +    { +        LL_WARNS("HRS") << "WTF? Should be no error here: " << error << LL_ENDL; +    }  	//create shader object -	GLhandleARB ret = glCreateShaderObjectARB(type); +    GLuint ret = glCreateShader(type);  	error = glGetError();  	if (error != GL_NO_ERROR)  	{ -		LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << " for file: " << open_file_name << LL_ENDL; +		LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShader: " << error << " for file: " << open_file_name << LL_ENDL;  	}  	//load source -	glShaderSourceARB(ret, shader_code_count, (const GLcharARB**) shader_code_text, NULL); +	glShaderSource(ret, shader_code_count, (const GLchar**) shader_code_text, NULL);  	error = glGetError();  	if (error != GL_NO_ERROR)  	{ -		LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << " for file: " << open_file_name << LL_ENDL; +		LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSource: " << error << " for file: " << open_file_name << LL_ENDL;  	}  	//compile source -	glCompileShaderARB(ret); +	glCompileShader(ret);  	error = glGetError();  	if (error != GL_NO_ERROR)  	{ -		LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << " for file: " << open_file_name << LL_ENDL; +		LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShader: " << error << " for file: " << open_file_name << LL_ENDL;  	}  	if (error == GL_NO_ERROR)  	{  		//check for errors  		GLint success = GL_TRUE; -		glGetObjectParameterivARB(ret, GL_OBJECT_COMPILE_STATUS_ARB, &success); +        glGetShaderiv(ret, GL_COMPILE_STATUS, &success);  		error = glGetError(); -		if (error != GL_NO_ERROR || success == GL_FALSE)  +		if (error != GL_NO_ERROR || success == GL_FALSE)  		{  			//an error occured, print log  			LL_WARNS("ShaderLoading") << "GLSL Compilation Error:" << LL_ENDL; @@ -1044,10 +1049,10 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	if (ret)  	{  		// Add shader file to map -        if (type == GL_VERTEX_SHADER_ARB) { +        if (type == GL_VERTEX_SHADER) {              mVertexShaderObjects[filename] = ret;          } -        else if (type == GL_FRAGMENT_SHADER_ARB) { +        else if (type == GL_FRAGMENT_SHADER) {              mFragmentShaderObjects[filename] = ret;          }  		shader_level = try_gpu_class; @@ -1064,12 +1069,12 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	return ret;  } -BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)  +BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors)   {  	//check for errors -	glLinkProgramARB(obj); +	glLinkProgram(obj);  	GLint success = GL_TRUE; -	glGetObjectParameterivARB(obj, GL_OBJECT_LINK_STATUS_ARB, &success); +    glGetProgramiv(obj, GL_LINK_STATUS, &success);  	if (!suppress_errors && success == GL_FALSE)   	{  		//an error occured, print log @@ -1087,12 +1092,12 @@ BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)  	return success;  } -BOOL LLShaderMgr::validateProgramObject(GLhandleARB obj) +BOOL LLShaderMgr::validateProgramObject(GLuint obj)  {  	//check program validity against current GL -	glValidateProgramARB(obj); +	glValidateProgram(obj);  	GLint success = GL_TRUE; -	glGetObjectParameterivARB(obj, GL_OBJECT_VALIDATE_STATUS_ARB, &success); +    glGetProgramiv(obj, GL_LINK_STATUS, &success);  	if (success == GL_FALSE)  	{  		LL_SHADER_LOADING_WARNS() << "GLSL program not valid: " << LL_ENDL; diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 9e8f848491..008e3dafa6 100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -269,11 +269,11 @@ public:  	virtual void initAttribsAndUniforms(void);  	BOOL attachShaderFeatures(LLGLSLShader * shader); -	void dumpObjectLog(GLhandleARB ret, BOOL warns = TRUE, const std::string& filename = ""); -    void dumpShaderSource(U32 shader_code_count, GLcharARB** shader_code_text); -	BOOL	linkProgramObject(GLhandleARB obj, BOOL suppress_errors = FALSE); -	BOOL	validateProgramObject(GLhandleARB obj); -	GLhandleARB loadShaderFile(const std::string& filename, S32 & shader_level, GLenum type, std::unordered_map<std::string, std::string>* defines = NULL, S32 texture_index_channels = -1); +	void dumpObjectLog(GLuint ret, BOOL warns = TRUE, const std::string& filename = ""); +    void dumpShaderSource(U32 shader_code_count, GLchar** shader_code_text); +	BOOL	linkProgramObject(GLuint obj, BOOL suppress_errors = FALSE); +	BOOL	validateProgramObject(GLuint obj); +	GLuint loadShaderFile(const std::string& filename, S32 & shader_level, GLenum type, std::unordered_map<std::string, std::string>* defines = NULL, S32 texture_index_channels = -1);  	// Implemented in the application to actually point to the shader directory.  	virtual std::string getShaderDirPrefix(void) = 0; // Pure Virtual @@ -283,8 +283,8 @@ public:  public:  	// Map of shader names to compiled -    std::map<std::string, GLhandleARB> mVertexShaderObjects; -    std::map<std::string, GLhandleARB> mFragmentShaderObjects; +    std::map<std::string, GLuint> mVertexShaderObjects; +    std::map<std::string, GLuint> mFragmentShaderObjects;  	//global (reserved slot) shader parameters  	std::vector<std::string> mReservedAttribs; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index b1b69f1508..f2c863d057 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -127,7 +127,7 @@ U32 LLVBOPool::genBuffer()  	if (sNameIdx == 0)  	{ -		glGenBuffersARB(1024, sNamePool); +		glGenBuffers(1024, sNamePool);  		sNameIdx = 1024;  	} @@ -141,11 +141,11 @@ void LLVBOPool::deleteBuffer(U32 name)  	{  		LLVertexBuffer::unbind(); -		glBindBufferARB(mType, name); -		glBufferDataARB(mType, 0, NULL, mUsage); -		glBindBufferARB(mType, 0); +		glBindBuffer(mType, name); +		glBufferData(mType, 0, NULL, mUsage); +		glBindBuffer(mType, 0); -		glDeleteBuffersARB(1, &name); +		glDeleteBuffers(1, &name);  	}  } @@ -176,7 +176,7 @@ U8* LLVBOPool::allocate(U32& name, U32 size, bool for_seed)  		//make a new buffer  		name = genBuffer(); -		glBindBufferARB(mType, name); +		glBindBuffer(mType, name);  		if (!for_seed && i < LL_VBO_POOL_SEED_COUNT)  		{ //record this miss @@ -194,7 +194,7 @@ U8* LLVBOPool::allocate(U32& name, U32 size, bool for_seed)  		if (LLVertexBuffer::sDisableVBOMapping || mUsage != GL_DYNAMIC_DRAW_ARB)  		{ -			glBufferDataARB(mType, size, 0, mUsage); +			glBufferData(mType, size, 0, mUsage);  			if (mUsage != GL_DYNAMIC_COPY_ARB)  			{ //data will be provided by application  				ret = (U8*) ll_aligned_malloc<64>(size); @@ -212,10 +212,10 @@ U8* LLVBOPool::allocate(U32& name, U32 size, bool for_seed)  		}  		else  		{ //always use a true hint of static draw when allocating non-client-backed buffers -			glBufferDataARB(mType, size, 0, GL_STATIC_DRAW_ARB); +			glBufferData(mType, size, 0, GL_STATIC_DRAW_ARB);  		} -		glBindBufferARB(mType, 0); +		glBindBuffer(mType, 0);  		if (for_seed)  		{ //put into pool for future use @@ -451,14 +451,14 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)  			{ //was enabled  				if (!(data_mask & mask))  				{ //needs to be disabled -					glDisableVertexAttribArrayARB(loc); +					glDisableVertexAttribArray(loc);  				}  			}  			else   			{	//was disabled  				if (data_mask & mask)  				{ //needs to be enabled -					glEnableVertexAttribArrayARB(loc); +					glEnableVertexAttribArray(loc);  				}  			}  		} @@ -763,12 +763,12 @@ void LLVertexBuffer::unbind()  	if (sVBOActive)  	{ -		glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); +		glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);  		sVBOActive = false;  	}  	if (sIBOActive)  	{ -		glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); +		glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);  		sIBOActive = false;  	} @@ -1334,7 +1334,7 @@ void LLVertexBuffer::setupVertexArray()  	{  		if (mTypeMask & (1 << i))  		{ -			glEnableVertexAttribArrayARB(i); +			glEnableVertexAttribArray(i);  			if (attrib_integer[i])  			{ @@ -1360,14 +1360,14 @@ void LLVertexBuffer::setupVertexArray()  				// pointer value. Ruslan asserts that in this case the last  				// param is interpreted as an array data offset within the VBO  				// rather than as an actual pointer, so it's okay. -				glVertexAttribPointerARB(i, attrib_size[i], attrib_type[i], +				glVertexAttribPointer(i, attrib_size[i], attrib_type[i],  										 attrib_normalized[i], sTypeSize[i],  										 reinterpret_cast<GLvoid*>(intptr_t(mOffsets[i])));   			}  		}  		else  		{ -			glDisableVertexAttribArrayARB(i); +			glDisableVertexAttribArray(i);  		}  	} @@ -1512,7 +1512,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran  						if (gDebugGL)  						{  							GLint size = 0; -							glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size); +							glGetBufferParameteriv(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size);  							if (size < mSize)  							{ @@ -1534,17 +1534,17 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran  						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);  						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);  #endif -						src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +						src = (U8*) glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  					}  					else  					{ -						src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +						src = (U8*) glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  					}  				}  				else  				{  					map_range = false; -					src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +					src = (U8*) glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  				}  				llassert(src != NULL); @@ -1568,7 +1568,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran  					//print out more debug info before crash  					LL_INFOS() << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << LL_ENDL;  					GLint size; -					glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size); +					glGetBufferParameteriv(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size);  					LL_INFOS() << "GL_ARRAY_BUFFER_ARB size is " << size << LL_ENDL;  					//-------------------- @@ -1707,17 +1707,17 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)  						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);  						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);  #endif -						src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +						src = (U8*) glMapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  					}  					else  					{ -						src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +						src = (U8*) glMapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  					}  				}  				else  				{  					map_range = false; -					src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +					src = (U8*) glMapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);  				}  				llassert(src != NULL); @@ -1793,12 +1793,12 @@ void LLVertexBuffer::unmapBuffer()  					S32 length = sTypeSize[region.mType]*region.mCount;  					if (mSize >= length + offset)  					{ -						glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, offset, length, (U8*)mMappedData + offset); +						glBufferSubData(GL_ARRAY_BUFFER_ARB, offset, length, (U8*)mMappedData + offset);  					}  					else  					{  						GLint size = 0; -						glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size); +						glGetBufferParameteriv(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size);  						LL_WARNS() << "Attempted to map regions to a buffer that is too small, "   							<< "mapped size: " << mSize  							<< ", gl buffer size: " << size @@ -1814,7 +1814,7 @@ void LLVertexBuffer::unmapBuffer()  			else  			{  				stop_glerror(); -				glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), (U8*) mMappedData); +				glBufferSubData(GL_ARRAY_BUFFER_ARB, 0, getSize(), (U8*) mMappedData);  				stop_glerror();  			}  		} @@ -1848,7 +1848,7 @@ void LLVertexBuffer::unmapBuffer()  				}  			}  			stop_glerror(); -			glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); +			glUnmapBuffer(GL_ARRAY_BUFFER_ARB);  			stop_glerror();  			mMappedData = NULL; @@ -1873,12 +1873,12 @@ void LLVertexBuffer::unmapBuffer()  					S32 length = sizeof(U16)*region.mCount;  					if (mIndicesSize >= length + offset)  					{ -						glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, (U8*) mMappedIndexData+offset); +						glBufferSubData(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, (U8*) mMappedIndexData+offset);  					}  					else  					{  						GLint size = 0; -						glGetBufferParameterivARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size); +						glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size);  						LL_WARNS() << "Attempted to map regions to a buffer that is too small, "   							<< "mapped size: " << mIndicesSize  							<< ", gl buffer size: " << size @@ -1894,7 +1894,7 @@ void LLVertexBuffer::unmapBuffer()  			else  			{  				stop_glerror(); -				glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), (U8*) mMappedIndexData); +				glBufferSubData(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), (U8*) mMappedIndexData);  				stop_glerror();  			}  		} @@ -1931,7 +1931,7 @@ void LLVertexBuffer::unmapBuffer()  				}  			} -            glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); +            glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB);  			mMappedIndexData = NULL;  		} @@ -2085,7 +2085,7 @@ bool LLVertexBuffer::bindGLBuffer(bool force_bind)  	if (useVBOs() && (force_bind || (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))))  	{          LL_PROFILE_ZONE_SCOPED_CATEGORY_VERTEX; -		glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer); +		glBindBuffer(GL_ARRAY_BUFFER_ARB, mGLBuffer);  		sGLRenderBuffer = mGLBuffer;  		sBindCount++;  		sVBOActive = true; @@ -2102,7 +2102,7 @@ bool LLVertexBuffer::bindGLBufferFast()  {      if (mGLBuffer != sGLRenderBuffer || !sVBOActive)      { -        glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer); +        glBindBuffer(GL_ARRAY_BUFFER_ARB, mGLBuffer);          sGLRenderBuffer = mGLBuffer;          sBindCount++;          sVBOActive = true; @@ -2125,7 +2125,7 @@ bool LLVertexBuffer::bindGLIndices(bool force_bind)  		{  			LL_ERRS() << "VBO bound while another VBO mapped!" << LL_ENDL;  		}*/ -		glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices); +		glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);  		sGLRenderIndices = mGLIndices;  		stop_glerror();  		sBindCount++; @@ -2140,7 +2140,7 @@ bool LLVertexBuffer::bindGLIndicesFast()  {      if (mGLIndices != sGLRenderIndices || !sIBOActive)      { -        glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices); +        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);          sGLRenderIndices = mGLIndices;          sBindCount++;          sIBOActive = true; @@ -2302,7 +2302,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask)  		{  			if (sVBOActive)  			{ -				glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); +				glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);  				sBindCount++;  				sVBOActive = false;  				setup = true; // ... or a VBO is deactivated @@ -2317,7 +2317,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask)  		{  			if (sIBOActive)  			{ -				glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); +				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);  				sBindCount++;  				sIBOActive = false;  			} @@ -2392,74 +2392,74 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask)  	{  		S32 loc = TYPE_NORMAL;  		void* ptr = (void*)(base + mOffsets[TYPE_NORMAL]); -		glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr); +		glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);  	}  	if (data_mask & MAP_TEXCOORD3)  	{  		S32 loc = TYPE_TEXCOORD3;  		void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD3]); -		glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr); +		glVertexAttribPointer(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);  	}  	if (data_mask & MAP_TEXCOORD2)  	{  		S32 loc = TYPE_TEXCOORD2;  		void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD2]); -		glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr); +		glVertexAttribPointer(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);  	}  	if (data_mask & MAP_TEXCOORD1)  	{  		S32 loc = TYPE_TEXCOORD1;  		void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD1]); -		glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr); +		glVertexAttribPointer(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);  	}  	if (data_mask & MAP_TANGENT)  	{  		S32 loc = TYPE_TANGENT;  		void* ptr = (void*)(base + mOffsets[TYPE_TANGENT]); -		glVertexAttribPointerARB(loc, 4,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TANGENT], ptr); +		glVertexAttribPointer(loc, 4,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TANGENT], ptr);  	}  	if (data_mask & MAP_TEXCOORD0)  	{  		S32 loc = TYPE_TEXCOORD0;  		void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD0]); -		glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr); +		glVertexAttribPointer(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);  	}  	if (data_mask & MAP_COLOR)  	{  		S32 loc = TYPE_COLOR;  		//bind emissive instead of color pointer if emissive is present  		void* ptr = (data_mask & MAP_EMISSIVE) ? (void*)(base + mOffsets[TYPE_EMISSIVE]) : (void*)(base + mOffsets[TYPE_COLOR]); -		glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr); +		glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);  	}  	if (data_mask & MAP_EMISSIVE)  	{  		S32 loc = TYPE_EMISSIVE;  		void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]); -		glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr); +		glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);  		if (!(data_mask & MAP_COLOR))  		{ //map emissive to color channel when color is not also being bound to avoid unnecessary shader swaps  			loc = TYPE_COLOR; -			glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr); +			glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);  		}  	}  	if (data_mask & MAP_WEIGHT)  	{  		S32 loc = TYPE_WEIGHT;  		void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]); -		glVertexAttribPointerARB(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr); +		glVertexAttribPointer(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);  	}  	if (data_mask & MAP_WEIGHT4)  	{  		S32 loc = TYPE_WEIGHT4;  		void* ptr = (void*)(base+mOffsets[TYPE_WEIGHT4]); -		glVertexAttribPointerARB(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr); +		glVertexAttribPointer(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);  	}  	if (data_mask & MAP_CLOTHWEIGHT)  	{  		S32 loc = TYPE_CLOTHWEIGHT;  		void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]); -		glVertexAttribPointerARB(loc, 4, GL_FLOAT, GL_TRUE,  LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr); +		glVertexAttribPointer(loc, 4, GL_FLOAT, GL_TRUE,  LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);  	}  	if (data_mask & MAP_TEXTURE_INDEX &&   			(gGLManager.mGLSLVersionMajor >= 2 || gGLManager.mGLSLVersionMinor >= 30)) //indexed texture rendering requires GLSL 1.30 or later @@ -2474,7 +2474,7 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask)  	{  		S32 loc = TYPE_VERTEX;  		void* ptr = (void*)(base + mOffsets[TYPE_VERTEX]); -		glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr); +		glVertexAttribPointer(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr);  	}	  	llglassertok(); @@ -2488,74 +2488,74 @@ void LLVertexBuffer::setupVertexBufferFast(U32 data_mask)      {          S32 loc = TYPE_NORMAL;          void* ptr = (void*)(base + mOffsets[TYPE_NORMAL]); -        glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr); +        glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);      }      if (data_mask & MAP_TEXCOORD3)      {          S32 loc = TYPE_TEXCOORD3;          void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD3]); -        glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr); +        glVertexAttribPointer(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);      }      if (data_mask & MAP_TEXCOORD2)      {          S32 loc = TYPE_TEXCOORD2;          void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD2]); -        glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr); +        glVertexAttribPointer(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);      }      if (data_mask & MAP_TEXCOORD1)      {          S32 loc = TYPE_TEXCOORD1;          void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD1]); -        glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr); +        glVertexAttribPointer(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);      }      if (data_mask & MAP_TANGENT)      {          S32 loc = TYPE_TANGENT;          void* ptr = (void*)(base + mOffsets[TYPE_TANGENT]); -        glVertexAttribPointerARB(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TANGENT], ptr); +        glVertexAttribPointer(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TANGENT], ptr);      }      if (data_mask & MAP_TEXCOORD0)      {          S32 loc = TYPE_TEXCOORD0;          void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD0]); -        glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr); +        glVertexAttribPointer(loc, 2, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);      }      if (data_mask & MAP_COLOR)      {          S32 loc = TYPE_COLOR;          //bind emissive instead of color pointer if emissive is present          void* ptr = (data_mask & MAP_EMISSIVE) ? (void*)(base + mOffsets[TYPE_EMISSIVE]) : (void*)(base + mOffsets[TYPE_COLOR]); -        glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr); +        glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);      }      if (data_mask & MAP_EMISSIVE)      {          S32 loc = TYPE_EMISSIVE;          void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]); -        glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr); +        glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);          if (!(data_mask & MAP_COLOR))          { //map emissive to color channel when color is not also being bound to avoid unnecessary shader swaps              loc = TYPE_COLOR; -            glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr); +            glVertexAttribPointer(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);          }      }      if (data_mask & MAP_WEIGHT)      {          S32 loc = TYPE_WEIGHT;          void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]); -        glVertexAttribPointerARB(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr); +        glVertexAttribPointer(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);      }      if (data_mask & MAP_WEIGHT4)      {          S32 loc = TYPE_WEIGHT4;          void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT4]); -        glVertexAttribPointerARB(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr); +        glVertexAttribPointer(loc, 4, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);      }      if (data_mask & MAP_CLOTHWEIGHT)      {          S32 loc = TYPE_CLOTHWEIGHT;          void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]); -        glVertexAttribPointerARB(loc, 4, GL_FLOAT, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr); +        glVertexAttribPointer(loc, 4, GL_FLOAT, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);      }      if (data_mask & MAP_TEXTURE_INDEX)      { @@ -2569,7 +2569,7 @@ void LLVertexBuffer::setupVertexBufferFast(U32 data_mask)      {          S32 loc = TYPE_VERTEX;          void* ptr = (void*)(base + mOffsets[TYPE_VERTEX]); -        glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr); +        glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr);      }  } diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index c4cdb45677..ceb80ed349 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -261,7 +261,7 @@ attributedStringInfo getSegments(NSAttributedString *str)  		NSOpenGLPFADepthSize, 24,  		NSOpenGLPFAAlphaSize, 8,  		NSOpenGLPFAColorSize, 24, -		NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core, +		NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,  		0      }; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0e2828332e..81387ec8b5 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -531,7 +531,7 @@ static void settings_to_globals()  	LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize")); -	LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLContextCoreProfile"); +    LLRender::sGLCoreProfile = TRUE; // Now required, ignoring gSavedSettings.getBOOL("RenderGLContextCoreProfile");  	LLRender::sNsightDebugSupport = gSavedSettings.getBOOL("RenderNsightDebugSupport");  	LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");  	LLImageGL::sGlobalUseAnisotropic	= gSavedSettings.getBOOL("RenderAnisotropic"); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 52aacb607c..ab5c655be0 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1674,7 +1674,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  			}				  		} -		glBindBufferARB(GL_TRANSFORM_FEEDBACK_BUFFER, 0); +		glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, 0);  		gGL.popMatrix();  		if (cur_shader) diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index 175f1849cf..9b9ab02dc1 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -1000,8 +1000,8 @@ F32 gpu_benchmark()  		gBenchmarkProgram.mName = "Benchmark Shader";  		gBenchmarkProgram.mFeatures.attachNothing = true;  		gBenchmarkProgram.mShaderFiles.clear(); -		gBenchmarkProgram.mShaderFiles.push_back(std::make_pair("interface/benchmarkV.glsl", GL_VERTEX_SHADER_ARB)); -		gBenchmarkProgram.mShaderFiles.push_back(std::make_pair("interface/benchmarkF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gBenchmarkProgram.mShaderFiles.push_back(std::make_pair("interface/benchmarkV.glsl", GL_VERTEX_SHADER)); +		gBenchmarkProgram.mShaderFiles.push_back(std::make_pair("interface/benchmarkF.glsl", GL_FRAGMENT_SHADER));  		gBenchmarkProgram.mShaderLevel = 1;  		if (!gBenchmarkProgram.createShader(NULL, NULL))  		{ diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index b285cc531e..b441236251 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -724,14 +724,14 @@ void LLReflectionMapManager::updateUniforms()      //copy rpd into uniform buffer object      if (mUBO == 0)      { -        glGenBuffersARB(1, &mUBO); +        glGenBuffers(1, &mUBO);      }      {          LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("rmmsu - update buffer"); -        glBindBufferARB(GL_UNIFORM_BUFFER, mUBO); -        glBufferDataARB(GL_UNIFORM_BUFFER, sizeof(ReflectionProbeData), &rpd, GL_STREAM_DRAW); -        glBindBufferARB(GL_UNIFORM_BUFFER, 0); +        glBindBuffer(GL_UNIFORM_BUFFER, mUBO); +        glBufferData(GL_UNIFORM_BUFFER, sizeof(ReflectionProbeData), &rpd, GL_STREAM_DRAW); +        glBindBuffer(GL_UNIFORM_BUFFER, 0);      }  } diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 2e44dc1459..6a2f53aa42 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -445,14 +445,14 @@ void LLSceneMonitor::calcDiffAggregate()  	if(mDiffState == EXECUTE_DIFF)  	{ -		glBeginQueryARB(GL_SAMPLES_PASSED_ARB, mQueryObject); +		glBeginQuery(GL_SAMPLES_PASSED_ARB, mQueryObject);  	}  	gl_draw_scaled_target(0, 0, S32(mDiff->getWidth() * mDiffPixelRatio), S32(mDiff->getHeight() * mDiffPixelRatio), mDiff);  	if(mDiffState == EXECUTE_DIFF)  	{ -		glEndQueryARB(GL_SAMPLES_PASSED_ARB); +		glEndQuery(GL_SAMPLES_PASSED_ARB);  		mDiffState = WAIT_ON_RESULT;  	} @@ -483,11 +483,11 @@ void LLSceneMonitor::fetchQueryResult()  		mDiffState = WAITING_FOR_NEXT_DIFF;  		GLuint available = 0; -		glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_AVAILABLE_ARB, &available); +		glGetQueryObjectuiv(mQueryObject, GL_QUERY_RESULT_AVAILABLE_ARB, &available);  		if(available)  		{  			GLuint count = 0; -			glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_ARB, &count); +			glGetQueryObjectuiv(mQueryObject, GL_QUERY_RESULT_ARB, &count);  			mDiffResult = sqrtf(count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio)); //0.5 -> (front face + back face) diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 36b2bd4c32..c785c80cea 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -800,7 +800,7 @@ U32 LLOcclusionCullingGroup::getNewOcclusionQueryObjectName()      {          //seed 1024 query names into the free query pool          GLuint queries[1024]; -        glGenQueriesARB(1024, queries); +        glGenQueries(1024, queries);          for (int i = 0; i < 1024; ++i)          {              sFreeQueries.push(queries[i]); @@ -1129,7 +1129,7 @@ void LLOcclusionCullingGroup::checkOcclusion()              GLuint available;              {                  LL_PROFILE_ZONE_NAMED_CATEGORY_OCTREE("co - query available"); -                glGetQueryObjectuivARB(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_AVAILABLE_ARB, &available); +                glGetQueryObjectuiv(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_AVAILABLE_ARB, &available);              }              if (available) @@ -1137,7 +1137,7 @@ void LLOcclusionCullingGroup::checkOcclusion()                  GLuint query_result;    // Will be # samples drawn, or a boolean depending on mHasOcclusionQuery2 (both are type GLuint)                  {                      LL_PROFILE_ZONE_NAMED_CATEGORY_OCTREE("co - query result"); -                    glGetQueryObjectuivARB(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_ARB, &query_result); +                    glGetQueryObjectuiv(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_ARB, &query_result);                  }  #if LL_TRACK_PENDING_OCCLUSION_QUERIES                  sPendingQueries.erase(mOcclusionQuery[LLViewerCamera::sCurCameraID]); @@ -1250,7 +1250,7 @@ void LLOcclusionCullingGroup::doOcclusion(LLCamera* camera, const LLVector4a* sh                              //get an occlusion query that hasn't been used in awhile                              releaseOcclusionQueryObjectName(mOcclusionQuery[LLViewerCamera::sCurCameraID]);                              mOcclusionQuery[LLViewerCamera::sCurCameraID] = getNewOcclusionQueryObjectName(); -                            glBeginQueryARB(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]); +                            glBeginQuery(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]);                          }  						LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr; @@ -1292,7 +1292,7 @@ void LLOcclusionCullingGroup::doOcclusion(LLCamera* camera, const LLVector4a* sh                          {                              LL_PROFILE_ZONE_NAMED("glEndQuery"); -                            glEndQueryARB(mode); +                            glEndQuery(mode);                          }  					}  				} diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 1c6e659aed..299ecdfd82 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -913,8 +913,8 @@ std::string LLViewerShaderMgr::loadBasicShaders()  	// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.  	for (U32 i = 0; i < shaders.size(); i++)  	{ -		// Note usage of GL_VERTEX_SHADER_ARB -		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_VERTEX_SHADER_ARB, &attribs) == 0) +		// Note usage of GL_VERTEX_SHADER +		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_VERTEX_SHADER, &attribs) == 0)  		{  			LL_WARNS("Shader") << "Failed to load vertex shader " << shaders[i].first << LL_ENDL;  			return shaders[i].first; @@ -974,8 +974,8 @@ std::string LLViewerShaderMgr::loadBasicShaders()  	for (U32 i = 0; i < shaders.size(); i++)  	{ -		// Note usage of GL_FRAGMENT_SHADER_ARB -		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_FRAGMENT_SHADER_ARB, &attribs, index_channels[i]) == 0) +		// Note usage of GL_FRAGMENT_SHADER +		if (loadShaderFile(shaders[i].first, shaders[i].second, GL_FRAGMENT_SHADER, &attribs, index_channels[i]) == 0)  		{  			LL_WARNS("Shader") << "Failed to load fragment shader " << shaders[i].first << LL_ENDL;  			return shaders[i].first; @@ -1008,8 +1008,8 @@ BOOL LLViewerShaderMgr::loadShadersEnvironment()  		gTerrainProgram.mFeatures.disableTextureIndex = true;  		gTerrainProgram.mFeatures.hasGamma = true;          gTerrainProgram.mShaderFiles.clear(); -        gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER_ARB)); -        gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER)); +        gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainF.glsl", GL_FRAGMENT_SHADER));          gTerrainProgram.mShaderLevel = mShaderLevel[SHADER_ENVIRONMENT];          success = gTerrainProgram.createShader(NULL, NULL);  		llassert(success); @@ -1049,8 +1049,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()  		gWaterProgram.mFeatures.hasTransport = true;          gWaterProgram.mFeatures.hasSrgb = true;  		gWaterProgram.mShaderFiles.clear(); -		gWaterProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER_ARB)); -		gWaterProgram.mShaderFiles.push_back(make_pair("environment/waterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gWaterProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER)); +		gWaterProgram.mShaderFiles.push_back(make_pair("environment/waterF.glsl", GL_FRAGMENT_SHADER));  		gWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		gWaterProgram.mShaderLevel = mShaderLevel[SHADER_WATER];  		success = gWaterProgram.createShader(NULL, NULL); @@ -1066,8 +1066,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()  		gWaterEdgeProgram.mFeatures.hasTransport = true;          gWaterEdgeProgram.mFeatures.hasSrgb = true;  		gWaterEdgeProgram.mShaderFiles.clear(); -		gWaterEdgeProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER_ARB)); -		gWaterEdgeProgram.mShaderFiles.push_back(make_pair("environment/waterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gWaterEdgeProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER)); +		gWaterEdgeProgram.mShaderFiles.push_back(make_pair("environment/waterF.glsl", GL_FRAGMENT_SHADER));  		gWaterEdgeProgram.addPermutation("WATER_EDGE", "1");  		gWaterEdgeProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		gWaterEdgeProgram.mShaderLevel = mShaderLevel[SHADER_WATER]; @@ -1082,8 +1082,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()  		gUnderWaterProgram.mFeatures.calculatesAtmospherics = true;  		gUnderWaterProgram.mFeatures.hasWaterFog = true;  		gUnderWaterProgram.mShaderFiles.clear(); -		gUnderWaterProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER_ARB)); -		gUnderWaterProgram.mShaderFiles.push_back(make_pair("environment/underWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gUnderWaterProgram.mShaderFiles.push_back(make_pair("environment/waterV.glsl", GL_VERTEX_SHADER)); +		gUnderWaterProgram.mShaderFiles.push_back(make_pair("environment/underWaterF.glsl", GL_FRAGMENT_SHADER));  		gUnderWaterProgram.mShaderLevel = mShaderLevel[SHADER_WATER];          		gUnderWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;         		success = gUnderWaterProgram.createShader(NULL, NULL); @@ -1101,8 +1101,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()  		gTerrainWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gTerrainWaterProgram.mFeatures.disableTextureIndex = true;  		gTerrainWaterProgram.mShaderFiles.clear(); -		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterV.glsl", GL_VERTEX_SHADER_ARB)); -		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterV.glsl", GL_VERTEX_SHADER)); +		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterF.glsl", GL_FRAGMENT_SHADER));  		gTerrainWaterProgram.mShaderLevel = mShaderLevel[SHADER_ENVIRONMENT];  		gTerrainWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; @@ -1160,8 +1160,8 @@ BOOL LLViewerShaderMgr::loadShadersEffects()  	{  		gGlowProgram.mName = "Glow Shader (Post)";  		gGlowProgram.mShaderFiles.clear(); -		gGlowProgram.mShaderFiles.push_back(make_pair("effects/glowV.glsl", GL_VERTEX_SHADER_ARB)); -		gGlowProgram.mShaderFiles.push_back(make_pair("effects/glowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gGlowProgram.mShaderFiles.push_back(make_pair("effects/glowV.glsl", GL_VERTEX_SHADER)); +		gGlowProgram.mShaderFiles.push_back(make_pair("effects/glowF.glsl", GL_FRAGMENT_SHADER));  		gGlowProgram.mShaderLevel = mShaderLevel[SHADER_EFFECT];  		success = gGlowProgram.createShader(NULL, NULL);  		if (!success) @@ -1174,8 +1174,8 @@ BOOL LLViewerShaderMgr::loadShadersEffects()  	{  		gGlowExtractProgram.mName = "Glow Extract Shader (Post)";  		gGlowExtractProgram.mShaderFiles.clear(); -		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER_ARB)); -		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER)); +		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER));  		gGlowExtractProgram.mShaderLevel = mShaderLevel[SHADER_EFFECT];  		success = gGlowExtractProgram.createShader(NULL, NULL);  		if (!success) @@ -1293,8 +1293,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gDeferredHighlightProgram.mName = "Deferred Highlight Shader";  		gDeferredHighlightProgram.mShaderFiles.clear(); -		gDeferredHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredHighlightProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightV.glsl", GL_VERTEX_SHADER)); +		gDeferredHighlightProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredHighlightProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];		  		success = gDeferredHighlightProgram.createShader(NULL, NULL);  	} @@ -1303,8 +1303,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gDeferredHighlightNormalProgram.mName = "Deferred Highlight Normals Shader";  		gDeferredHighlightNormalProgram.mShaderFiles.clear(); -		gDeferredHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightNormV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredHighlightNormalProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightNormV.glsl", GL_VERTEX_SHADER)); +		gDeferredHighlightNormalProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredHighlightNormalProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];		  		success = gHighlightNormalProgram.createShader(NULL, NULL);  	} @@ -1313,8 +1313,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gDeferredHighlightSpecularProgram.mName = "Deferred Highlight Spec Shader";  		gDeferredHighlightSpecularProgram.mShaderFiles.clear(); -		gDeferredHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightSpecV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredHighlightSpecularProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightSpecV.glsl", GL_VERTEX_SHADER)); +		gDeferredHighlightSpecularProgram.mShaderFiles.push_back(make_pair("deferred/highlightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredHighlightSpecularProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];		  		success = gDeferredHighlightSpecularProgram.createShader(NULL, NULL);  	} @@ -1325,8 +1325,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredDiffuseProgram.mFeatures.encodesNormal = true;          gDeferredDiffuseProgram.mFeatures.hasSrgb = true;  		gDeferredDiffuseProgram.mShaderFiles.clear(); -		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER)); +		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER));  		gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredDiffuseProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredDiffuseProgram, gDeferredSkinnedDiffuseProgram); @@ -1338,8 +1338,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredDiffuseAlphaMaskProgram.mName = "Deferred Diffuse Alpha Mask Shader";          gDeferredDiffuseAlphaMaskProgram.mFeatures.encodesNormal = true;  		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.clear(); -		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER)); +		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskIndexedF.glsl", GL_FRAGMENT_SHADER));  		gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredDiffuseAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredDiffuseAlphaMaskProgram, gDeferredSkinnedDiffuseAlphaMaskProgram); @@ -1351,8 +1351,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredNonIndexedDiffuseAlphaMaskProgram.mName = "Deferred Diffuse Non-Indexed Alpha Mask Shader";  		gDeferredNonIndexedDiffuseAlphaMaskProgram.mFeatures.encodesNormal = true;  		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderFiles.clear(); -		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER)); +		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskF.glsl", GL_FRAGMENT_SHADER));  		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredNonIndexedDiffuseAlphaMaskProgram.createShader(NULL, NULL);          llassert(success); @@ -1363,8 +1363,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mName = "Deferred Diffuse Non-Indexed Alpha Mask Shader";  		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mFeatures.encodesNormal = true;  		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.clear(); -		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseNoColorV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskNoColorF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseNoColorV.glsl", GL_VERTEX_SHADER)); +		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskNoColorF.glsl", GL_FRAGMENT_SHADER));  		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.createShader(NULL, NULL);  		llassert(success); @@ -1376,8 +1376,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredNonIndexedDiffuseProgram.mShaderFiles.clear();          gDeferredNonIndexedDiffuseProgram.mFeatures.encodesNormal = true;          gDeferredNonIndexedDiffuseProgram.mFeatures.hasSrgb = true; -		gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER)); +		gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER));  		gDeferredNonIndexedDiffuseProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredNonIndexedDiffuseProgram.createShader(NULL, NULL);          llassert(success); @@ -1388,8 +1388,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredBumpProgram.mName = "Deferred Bump Shader";  		gDeferredBumpProgram.mFeatures.encodesNormal = true;  		gDeferredBumpProgram.mShaderFiles.clear(); -		gDeferredBumpProgram.mShaderFiles.push_back(make_pair("deferred/bumpV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredBumpProgram.mShaderFiles.push_back(make_pair("deferred/bumpF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredBumpProgram.mShaderFiles.push_back(make_pair("deferred/bumpV.glsl", GL_VERTEX_SHADER)); +		gDeferredBumpProgram.mShaderFiles.push_back(make_pair("deferred/bumpF.glsl", GL_FRAGMENT_SHADER));  		gDeferredBumpProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredBumpProgram, gDeferredSkinnedBumpProgram);  		success = success && gDeferredBumpProgram.createShader(NULL, NULL); @@ -1425,8 +1425,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  			U32 alpha_mode = i & 0x3;  			gDeferredMaterialProgram[i].mShaderFiles.clear(); -			gDeferredMaterialProgram[i].mShaderFiles.push_back(make_pair("deferred/materialV.glsl", GL_VERTEX_SHADER_ARB)); -			gDeferredMaterialProgram[i].mShaderFiles.push_back(make_pair("deferred/materialF.glsl", GL_FRAGMENT_SHADER_ARB)); +			gDeferredMaterialProgram[i].mShaderFiles.push_back(make_pair("deferred/materialV.glsl", GL_VERTEX_SHADER)); +			gDeferredMaterialProgram[i].mShaderFiles.push_back(make_pair("deferred/materialF.glsl", GL_FRAGMENT_SHADER));  			gDeferredMaterialProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];  			gDeferredMaterialProgram[i].clearPermutations(); @@ -1504,8 +1504,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              U32 alpha_mode = i & 0x3;              gDeferredMaterialWaterProgram[i].mShaderFiles.clear(); -            gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialV.glsl", GL_VERTEX_SHADER_ARB)); -            gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialF.glsl", GL_FRAGMENT_SHADER_ARB)); +            gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialV.glsl", GL_VERTEX_SHADER)); +            gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialF.glsl", GL_FRAGMENT_SHADER));              gDeferredMaterialWaterProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];              gDeferredMaterialWaterProgram[i].mShaderGroup = LLGLSLShader::SG_WATER; @@ -1601,8 +1601,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredPBROpaqueProgram.mFeatures.hasSrgb = true;          gDeferredPBROpaqueProgram.mShaderFiles.clear(); -        gDeferredPBROpaqueProgram.mShaderFiles.push_back(make_pair("deferred/pbropaqueV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredPBROpaqueProgram.mShaderFiles.push_back(make_pair("deferred/pbropaqueF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredPBROpaqueProgram.mShaderFiles.push_back(make_pair("deferred/pbropaqueV.glsl", GL_VERTEX_SHADER)); +        gDeferredPBROpaqueProgram.mShaderFiles.push_back(make_pair("deferred/pbropaqueF.glsl", GL_FRAGMENT_SHADER));          gDeferredPBROpaqueProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredPBROpaqueProgram.addPermutation("HAS_NORMAL_MAP", "1");          gDeferredPBROpaqueProgram.addPermutation("HAS_SPECULAR_MAP", "1"); @@ -1622,8 +1622,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredTreeProgram.mName = "Deferred Tree Shader";  		gDeferredTreeProgram.mShaderFiles.clear();          gDeferredTreeProgram.mFeatures.encodesNormal = true; -		gDeferredTreeProgram.mShaderFiles.push_back(make_pair("deferred/treeV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredTreeProgram.mShaderFiles.push_back(make_pair("deferred/treeF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredTreeProgram.mShaderFiles.push_back(make_pair("deferred/treeV.glsl", GL_VERTEX_SHADER)); +		gDeferredTreeProgram.mShaderFiles.push_back(make_pair("deferred/treeF.glsl", GL_FRAGMENT_SHADER));  		gDeferredTreeProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredTreeProgram.createShader(NULL, NULL);  	} @@ -1634,8 +1634,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredTreeShadowProgram.mShaderFiles.clear();  		gDeferredTreeShadowProgram.mFeatures.isDeferred = true;  		gDeferredTreeShadowProgram.mFeatures.hasShadows = true; -		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredTreeShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredTreeShadowProgram.mRiggedVariant = &gDeferredSkinnedTreeShadowProgram;  		success = gDeferredTreeShadowProgram.createShader(NULL, NULL); @@ -1649,8 +1649,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSkinnedTreeShadowProgram.mFeatures.isDeferred = true;          gDeferredSkinnedTreeShadowProgram.mFeatures.hasShadows = true;          gDeferredSkinnedTreeShadowProgram.mFeatures.hasObjectSkinning = true; -        gDeferredSkinnedTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredSkinnedTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredSkinnedTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowSkinnedV.glsl", GL_VERTEX_SHADER)); +        gDeferredSkinnedTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER));          gDeferredSkinnedTreeShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = gDeferredSkinnedTreeShadowProgram.createShader(NULL, NULL);          llassert(success); @@ -1663,8 +1663,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredImpostorProgram.mFeatures.encodesNormal = true;  		//gDeferredImpostorProgram.mFeatures.isDeferred = true;  		gDeferredImpostorProgram.mShaderFiles.clear(); -		gDeferredImpostorProgram.mShaderFiles.push_back(make_pair("deferred/impostorV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredImpostorProgram.mShaderFiles.push_back(make_pair("deferred/impostorF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredImpostorProgram.mShaderFiles.push_back(make_pair("deferred/impostorV.glsl", GL_VERTEX_SHADER)); +        gDeferredImpostorProgram.mShaderFiles.push_back(make_pair("deferred/impostorF.glsl", GL_FRAGMENT_SHADER));          gDeferredImpostorProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = gDeferredImpostorProgram.createShader(NULL, NULL);          llassert(success); @@ -1678,8 +1678,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredLightProgram.mFeatures.hasSrgb = true;  		gDeferredLightProgram.mShaderFiles.clear(); -		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredLightProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredLightProgram.clearPermutations(); @@ -1714,8 +1714,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              gDeferredMultiLightProgram[i].clearPermutations();  			gDeferredMultiLightProgram[i].mShaderFiles.clear(); -			gDeferredMultiLightProgram[i].mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB)); -			gDeferredMultiLightProgram[i].mShaderFiles.push_back(make_pair("deferred/multiPointLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +			gDeferredMultiLightProgram[i].mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER)); +			gDeferredMultiLightProgram[i].mShaderFiles.push_back(make_pair("deferred/multiPointLightF.glsl", GL_FRAGMENT_SHADER));  			gDeferredMultiLightProgram[i].mShaderLevel = mShaderLevel[SHADER_DEFERRED];  			gDeferredMultiLightProgram[i].addPermutation("LIGHT_COUNT", llformat("%d", i+1)); @@ -1748,8 +1748,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredSpotLightProgram.mFeatures.hasShadows = true;          gDeferredSpotLightProgram.clearPermutations(); -		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/spotLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/spotLightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredSpotLightProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          if (ambient_kill) @@ -1780,8 +1780,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredMultiSpotLightProgram.clearPermutations();  		gDeferredMultiSpotLightProgram.mShaderFiles.clear(); -		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredMultiSpotLightProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          if (local_light_kill) @@ -1820,8 +1820,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSunProgram.mName = "Deferred Sun Shader";  		gDeferredSunProgram.mShaderFiles.clear(); -		gDeferredSunProgram.mShaderFiles.push_back(make_pair(vertex, GL_VERTEX_SHADER_ARB)); -		gDeferredSunProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); +		gDeferredSunProgram.mShaderFiles.push_back(make_pair(vertex, GL_VERTEX_SHADER)); +		gDeferredSunProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER));  		gDeferredSunProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = gDeferredSunProgram.createShader(NULL, NULL); @@ -1834,8 +1834,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredBlurLightProgram.mFeatures.isDeferred = true;  		gDeferredBlurLightProgram.mShaderFiles.clear(); -		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredBlurLightProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredBlurLightProgram.createShader(NULL, NULL); @@ -1883,8 +1883,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              }              shader->mShaderFiles.clear(); -            shader->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); -            shader->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); +            shader->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER)); +            shader->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER));              shader->clearPermutations();              shader->addPermutation("USE_VERTEX_COLOR", "1"); @@ -1959,8 +1959,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              }              shader->mShaderFiles.clear(); -            shader->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); -            shader->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); +            shader->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER)); +            shader->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER));              shader->clearPermutations();              shader->addPermutation("USE_INDEXED_TEX", "1"); @@ -2030,8 +2030,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              }              shader[i]->mShaderGroup = LLGLSLShader::SG_WATER;              shader[i]->mShaderFiles.clear(); -            shader[i]->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); -            shader[i]->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); +            shader[i]->mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER)); +            shader[i]->mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER));              shader[i]->clearPermutations();              shader[i]->addPermutation("USE_INDEXED_TEX", "1"); @@ -2090,8 +2090,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarEyesProgram.mFeatures.hasShadows = true;  		gDeferredAvatarEyesProgram.mShaderFiles.clear(); -		gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/avatarEyesV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/avatarEyesV.glsl", GL_VERTEX_SHADER)); +		gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAvatarEyesProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAvatarEyesProgram.createShader(NULL, NULL);  		llassert(success); @@ -2106,8 +2106,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightProgram.mFeatures.hasSrgb = true;		  		gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredFullbrightProgram.mShaderFiles.clear(); -		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredFullbrightProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredFullbrightProgram, gDeferredSkinnedFullbrightProgram);  		success = gDeferredFullbrightProgram.createShader(NULL, NULL); @@ -2123,8 +2123,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightAlphaMaskProgram.mFeatures.hasSrgb = true;		  		gDeferredFullbrightAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredFullbrightAlphaMaskProgram.mShaderFiles.clear(); -		gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredFullbrightAlphaMaskProgram.addPermutation("HAS_ALPHA_MASK","1");  		gDeferredFullbrightAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredFullbrightAlphaMaskProgram, gDeferredSkinnedFullbrightAlphaMaskProgram); @@ -2142,8 +2142,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightWaterProgram.mFeatures.hasSrgb = true;  		gDeferredFullbrightWaterProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredFullbrightWaterProgram.mShaderFiles.clear(); -		gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredFullbrightWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		gDeferredFullbrightWaterProgram.addPermutation("WATER_FOG","1"); @@ -2162,8 +2162,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.hasSrgb = true;  		gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.clear(); -		gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredFullbrightAlphaMaskWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredFullbrightAlphaMaskWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		gDeferredFullbrightAlphaMaskWaterProgram.addPermutation("HAS_ALPHA_MASK","1"); @@ -2183,8 +2183,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightShinyProgram.mFeatures.hasSrgb = true;  		gDeferredFullbrightShinyProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels-1;  		gDeferredFullbrightShinyProgram.mShaderFiles.clear(); -		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyV.glsl", GL_VERTEX_SHADER)); +		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER));  		gDeferredFullbrightShinyProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          if (gDeferredFullbrightShinyProgram.mShaderLevel > 2)          { @@ -2204,8 +2204,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredEmissiveProgram.mFeatures.hasTransport = true;  		gDeferredEmissiveProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredEmissiveProgram.mShaderFiles.clear(); -		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveV.glsl", GL_VERTEX_SHADER)); +		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveF.glsl", GL_FRAGMENT_SHADER));  		gDeferredEmissiveProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = make_rigged_variant(gDeferredEmissiveProgram, gDeferredSkinnedEmissiveProgram);  		success = success && gDeferredEmissiveProgram.createShader(NULL, NULL); @@ -2223,8 +2223,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredWaterProgram.mFeatures.hasSrgb = true;  		gDeferredWaterProgram.mShaderFiles.clear(); -		gDeferredWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER)); +		gDeferredWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterF.glsl", GL_FRAGMENT_SHADER));  		gDeferredWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gDeferredWaterProgram.createShader(NULL, NULL); @@ -2244,8 +2244,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		//gDeferredUnderWaterProgram.mFeatures.hasShadows = true;  		gDeferredUnderWaterProgram.mShaderFiles.clear(); -		gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/underWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER)); +		gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/underWaterF.glsl", GL_FRAGMENT_SHADER));  		gDeferredUnderWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredUnderWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gDeferredUnderWaterProgram.createShader(NULL, NULL); @@ -2266,8 +2266,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSoftenProgram.mFeatures.hasReflectionProbes = mShaderLevel[SHADER_DEFERRED] > 2;          gDeferredSoftenProgram.clearPermutations(); -		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER));  		gDeferredSoftenProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; @@ -2305,8 +2305,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gDeferredSoftenWaterProgram.mName = "Deferred Soften Underwater Shader";  		gDeferredSoftenWaterProgram.mShaderFiles.clear(); -		gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER)); +		gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER));          gDeferredSoftenWaterProgram.clearPermutations();  		gDeferredSoftenWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; @@ -2358,8 +2358,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredShadowProgram.mFeatures.isDeferred = true;  		gDeferredShadowProgram.mFeatures.hasShadows = true;  		gDeferredShadowProgram.mShaderFiles.clear(); -		gDeferredShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		if (gGLManager.mHasDepthClamp)  		{ @@ -2377,8 +2377,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSkinnedShadowProgram.mFeatures.hasShadows = true;          gDeferredSkinnedShadowProgram.mFeatures.hasObjectSkinning = true;          gDeferredSkinnedShadowProgram.mShaderFiles.clear(); -        gDeferredSkinnedShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredSkinnedShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredSkinnedShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowSkinnedV.glsl", GL_VERTEX_SHADER)); +        gDeferredSkinnedShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER));          gDeferredSkinnedShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          if (gGLManager.mHasDepthClamp)          { @@ -2394,8 +2394,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredShadowCubeProgram.mFeatures.isDeferred = true;  		gDeferredShadowCubeProgram.mFeatures.hasShadows = true;  		gDeferredShadowCubeProgram.mShaderFiles.clear(); -		gDeferredShadowCubeProgram.mShaderFiles.push_back(make_pair("deferred/shadowCubeV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredShadowCubeProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredShadowCubeProgram.mShaderFiles.push_back(make_pair("deferred/shadowCubeV.glsl", GL_VERTEX_SHADER)); +		gDeferredShadowCubeProgram.mShaderFiles.push_back(make_pair("deferred/shadowF.glsl", GL_FRAGMENT_SHADER));  		if (gGLManager.mHasDepthClamp)  		{  			gDeferredShadowCubeProgram.addPermutation("DEPTH_CLAMP", "1"); @@ -2411,8 +2411,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredShadowFullbrightAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredShadowFullbrightAlphaMaskProgram.mShaderFiles.clear(); -		gDeferredShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER)); +		gDeferredShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER));          gDeferredShadowFullbrightAlphaMaskProgram.clearPermutations();  		if (gGLManager.mHasDepthClamp) @@ -2432,8 +2432,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;          gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mFeatures.hasObjectSkinning = true;          gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mShaderFiles.clear(); -        gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskSkinnedV.glsl", GL_VERTEX_SHADER)); +        gDeferredSkinnedShadowFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER));          gDeferredSkinnedShadowFullbrightAlphaMaskProgram.clearPermutations();          if (gGLManager.mHasDepthClamp) @@ -2452,8 +2452,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredShadowAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;  		gDeferredShadowAlphaMaskProgram.mShaderFiles.clear(); -		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER)); +		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER));  		if (gGLManager.mHasDepthClamp)  		{  			gDeferredShadowAlphaMaskProgram.addPermutation("DEPTH_CLAMP", "1"); @@ -2470,8 +2470,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredSkinnedShadowAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;          gDeferredSkinnedShadowAlphaMaskProgram.mFeatures.hasObjectSkinning = true;          gDeferredSkinnedShadowAlphaMaskProgram.mShaderFiles.clear(); -        gDeferredSkinnedShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredSkinnedShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredSkinnedShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskSkinnedV.glsl", GL_VERTEX_SHADER)); +        gDeferredSkinnedShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER));          if (gGLManager.mHasDepthClamp)          {              gDeferredSkinnedShadowAlphaMaskProgram.addPermutation("DEPTH_CLAMP", "1"); @@ -2487,8 +2487,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarShadowProgram.mFeatures.hasSkinning = true;  		gDeferredAvatarShadowProgram.mShaderFiles.clear(); -		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowF.glsl", GL_FRAGMENT_SHADER));  		if (gGLManager.mHasDepthClamp)  		{  			gDeferredAvatarShadowProgram.addPermutation("DEPTH_CLAMP", "1"); @@ -2503,8 +2503,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarAlphaShadowProgram.mName = "Deferred Avatar Alpha Shadow Shader";  		gDeferredAvatarAlphaShadowProgram.mFeatures.hasSkinning = true;  		gDeferredAvatarAlphaShadowProgram.mShaderFiles.clear(); -		gDeferredAvatarAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAvatarAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAvatarAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAvatarAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAvatarAlphaShadowProgram.addPermutation("DEPTH_CLAMP", gGLManager.mHasDepthClamp ? "1" : "0");  		gDeferredAvatarAlphaShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAvatarAlphaShadowProgram.createShader(NULL, NULL); @@ -2516,8 +2516,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarAlphaMaskShadowProgram.mName = "Deferred Avatar Alpha Mask Shadow Shader";  		gDeferredAvatarAlphaMaskShadowProgram.mFeatures.hasSkinning  = true;  		gDeferredAvatarAlphaMaskShadowProgram.mShaderFiles.clear(); -		gDeferredAvatarAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAvatarAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaMaskShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAvatarAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAvatarAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaMaskShadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAvatarAlphaMaskShadowProgram.addPermutation("DEPTH_CLAMP", gGLManager.mHasDepthClamp ? "1" : "0");  		gDeferredAvatarAlphaMaskShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAvatarAlphaMaskShadowProgram.createShader(NULL, NULL); @@ -2530,8 +2530,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAttachmentShadowProgram.mFeatures.hasObjectSkinning = true;  		gDeferredAttachmentShadowProgram.mShaderFiles.clear(); -		gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowF.glsl", GL_FRAGMENT_SHADER));  		if (gGLManager.mHasDepthClamp)  		{  			gDeferredAttachmentShadowProgram.addPermutation("DEPTH_CLAMP", "1"); @@ -2546,8 +2546,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAttachmentAlphaShadowProgram.mName = "Deferred Attachment Alpha Shadow Shader";  		gDeferredAttachmentAlphaShadowProgram.mFeatures.hasObjectSkinning = true;  		gDeferredAttachmentAlphaShadowProgram.mShaderFiles.clear(); -		gDeferredAttachmentAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAttachmentAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAttachmentAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAttachmentAlphaShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAttachmentAlphaShadowProgram.addPermutation("DEPTH_CLAMP", gGLManager.mHasDepthClamp ? "1" : "0");  		gDeferredAttachmentAlphaShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAttachmentAlphaShadowProgram.createShader(NULL, NULL); @@ -2559,8 +2559,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAttachmentAlphaMaskShadowProgram.mName = "Deferred Attachment Alpha Mask Shadow Shader";  		gDeferredAttachmentAlphaMaskShadowProgram.mFeatures.hasObjectSkinning = true;  		gDeferredAttachmentAlphaMaskShadowProgram.mShaderFiles.clear(); -		gDeferredAttachmentAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAttachmentAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaMaskShadowF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAttachmentAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaShadowV.glsl", GL_VERTEX_SHADER)); +		gDeferredAttachmentAlphaMaskShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentAlphaMaskShadowF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAttachmentAlphaMaskShadowProgram.addPermutation("DEPTH_CLAMP", gGLManager.mHasDepthClamp ? "1" : "0");  		gDeferredAttachmentAlphaMaskShadowProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAttachmentAlphaMaskShadowProgram.createShader(NULL, NULL); @@ -2583,8 +2583,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredTerrainProgram.mFeatures.hasTransport = true;  		gDeferredTerrainProgram.mShaderFiles.clear(); -		gDeferredTerrainProgram.mShaderFiles.push_back(make_pair("deferred/terrainV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredTerrainProgram.mShaderFiles.push_back(make_pair("deferred/terrainF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredTerrainProgram.mShaderFiles.push_back(make_pair("deferred/terrainV.glsl", GL_VERTEX_SHADER)); +		gDeferredTerrainProgram.mShaderFiles.push_back(make_pair("deferred/terrainF.glsl", GL_FRAGMENT_SHADER));  		gDeferredTerrainProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          success = gDeferredTerrainProgram.createShader(NULL, NULL);  		llassert(success); @@ -2606,8 +2606,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredTerrainWaterProgram.mFeatures.hasTransport = true;  		gDeferredTerrainWaterProgram.mShaderFiles.clear(); -		gDeferredTerrainWaterProgram.mShaderFiles.push_back(make_pair("deferred/terrainV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredTerrainWaterProgram.mShaderFiles.push_back(make_pair("deferred/terrainF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredTerrainWaterProgram.mShaderFiles.push_back(make_pair("deferred/terrainV.glsl", GL_VERTEX_SHADER)); +		gDeferredTerrainWaterProgram.mShaderFiles.push_back(make_pair("deferred/terrainF.glsl", GL_FRAGMENT_SHADER));  		gDeferredTerrainWaterProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredTerrainWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		gDeferredTerrainWaterProgram.addPermutation("WATER_FOG", "1"); @@ -2621,8 +2621,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarProgram.mFeatures.hasSkinning = true;  		gDeferredAvatarProgram.mFeatures.encodesNormal = true;  		gDeferredAvatarProgram.mShaderFiles.clear(); -		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarV.glsl", GL_VERTEX_SHADER)); +		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAvatarProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredAvatarProgram.createShader(NULL, NULL);  		llassert(success); @@ -2646,8 +2646,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredAvatarAlphaProgram.mFeatures.hasShadows = true;  		gDeferredAvatarAlphaProgram.mShaderFiles.clear(); -        gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER)); +        gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER));  		gDeferredAvatarAlphaProgram.clearPermutations();  		gDeferredAvatarAlphaProgram.addPermutation("USE_DIFFUSE_TEX", "1"); @@ -2686,8 +2686,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredPostGammaCorrectProgram.mFeatures.hasSrgb = true;  		gDeferredPostGammaCorrectProgram.mFeatures.isDeferred = true;  		gDeferredPostGammaCorrectProgram.mShaderFiles.clear(); -		gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredGammaCorrect.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER)); +		gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredGammaCorrect.glsl", GL_FRAGMENT_SHADER));          gDeferredPostGammaCorrectProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredPostGammaCorrectProgram.createShader(NULL, NULL);  		llassert(success); @@ -2698,8 +2698,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gFXAAProgram.mName = "FXAA Shader";  		gFXAAProgram.mFeatures.isDeferred = true;  		gFXAAProgram.mShaderFiles.clear(); -		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB)); -		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/fxaaF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER)); +		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/fxaaF.glsl", GL_FRAGMENT_SHADER));  		gFXAAProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gFXAAProgram.createShader(NULL, NULL);  		llassert(success); @@ -2710,8 +2710,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredPostProgram.mName = "Deferred Post Shader";  		gFXAAProgram.mFeatures.isDeferred = true;  		gDeferredPostProgram.mShaderFiles.clear(); -		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER)); +		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER));  		gDeferredPostProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredPostProgram.createShader(NULL, NULL);  		llassert(success); @@ -2722,8 +2722,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredCoFProgram.mName = "Deferred CoF Shader";  		gDeferredCoFProgram.mShaderFiles.clear();  		gDeferredCoFProgram.mFeatures.isDeferred = true; -		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/cofF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER)); +		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/cofF.glsl", GL_FRAGMENT_SHADER));  		gDeferredCoFProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredCoFProgram.createShader(NULL, NULL);  		llassert(success); @@ -2734,8 +2734,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredDoFCombineProgram.mName = "Deferred DoFCombine Shader";  		gDeferredDoFCombineProgram.mFeatures.isDeferred = true;  		gDeferredDoFCombineProgram.mShaderFiles.clear(); -		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/dofCombineF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER)); +		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/dofCombineF.glsl", GL_FRAGMENT_SHADER));  		gDeferredDoFCombineProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredDoFCombineProgram.createShader(NULL, NULL);  		llassert(success); @@ -2746,8 +2746,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredPostNoDoFProgram.mName = "Deferred Post Shader";  		gDeferredPostNoDoFProgram.mFeatures.isDeferred = true;  		gDeferredPostNoDoFProgram.mShaderFiles.clear(); -		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER)); +		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER));  		gDeferredPostNoDoFProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		success = gDeferredPostNoDoFProgram.createShader(NULL, NULL);  		llassert(success); @@ -2762,8 +2762,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredWLSkyProgram.mFeatures.hasGamma = true;  		gDeferredWLSkyProgram.mFeatures.hasSrgb = true; -		gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyV.glsl", GL_VERTEX_SHADER)); +		gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyF.glsl", GL_FRAGMENT_SHADER));  		gDeferredWLSkyProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredWLSkyProgram.mShaderGroup = LLGLSLShader::SG_SKY; @@ -2780,8 +2780,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredWLCloudProgram.mFeatures.hasGamma = true;          gDeferredWLCloudProgram.mFeatures.hasSrgb = true; -		gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsV.glsl", GL_VERTEX_SHADER)); +		gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsF.glsl", GL_FRAGMENT_SHADER));  		gDeferredWLCloudProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredWLCloudProgram.mShaderGroup = LLGLSLShader::SG_SKY;  		success = gDeferredWLCloudProgram.createShader(NULL, NULL); @@ -2799,8 +2799,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredWLSunProgram.mFeatures.disableTextureIndex = true;          gDeferredWLSunProgram.mFeatures.hasSrgb = true;          gDeferredWLSunProgram.mShaderFiles.clear(); -        gDeferredWLSunProgram.mShaderFiles.push_back(make_pair("deferred/sunDiscV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredWLSunProgram.mShaderFiles.push_back(make_pair("deferred/sunDiscF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredWLSunProgram.mShaderFiles.push_back(make_pair("deferred/sunDiscV.glsl", GL_VERTEX_SHADER)); +        gDeferredWLSunProgram.mShaderFiles.push_back(make_pair("deferred/sunDiscF.glsl", GL_FRAGMENT_SHADER));          gDeferredWLSunProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredWLSunProgram.mShaderGroup = LLGLSLShader::SG_SKY;          success = gDeferredWLSunProgram.createShader(NULL, NULL); @@ -2819,8 +2819,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()          gDeferredWLMoonProgram.mFeatures.disableTextureIndex = true;          gDeferredWLMoonProgram.mShaderFiles.clear(); -        gDeferredWLMoonProgram.mShaderFiles.push_back(make_pair("deferred/moonV.glsl", GL_VERTEX_SHADER_ARB)); -        gDeferredWLMoonProgram.mShaderFiles.push_back(make_pair("deferred/moonF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gDeferredWLMoonProgram.mShaderFiles.push_back(make_pair("deferred/moonV.glsl", GL_VERTEX_SHADER)); +        gDeferredWLMoonProgram.mShaderFiles.push_back(make_pair("deferred/moonF.glsl", GL_FRAGMENT_SHADER));          gDeferredWLMoonProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];          gDeferredWLMoonProgram.mShaderGroup = LLGLSLShader::SG_SKY;   	 	success = gDeferredWLMoonProgram.createShader(NULL, NULL); @@ -2831,8 +2831,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gDeferredStarProgram.mName = "Deferred Star Program";  		gDeferredStarProgram.mShaderFiles.clear(); -		gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsV.glsl", GL_VERTEX_SHADER_ARB)); -		gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsV.glsl", GL_VERTEX_SHADER)); +		gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsF.glsl", GL_FRAGMENT_SHADER));  		gDeferredStarProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gDeferredStarProgram.mShaderGroup = LLGLSLShader::SG_SKY;  		success = gDeferredStarProgram.createShader(NULL, NULL); @@ -2843,8 +2843,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	{  		gNormalMapGenProgram.mName = "Normal Map Generation Program";  		gNormalMapGenProgram.mShaderFiles.clear(); -		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenV.glsl", GL_VERTEX_SHADER_ARB)); -		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenV.glsl", GL_VERTEX_SHADER)); +		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenF.glsl", GL_FRAGMENT_SHADER));  		gNormalMapGenProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];  		gNormalMapGenProgram.mShaderGroup = LLGLSLShader::SG_SKY;  		success = gNormalMapGenProgram.createShader(NULL, NULL); @@ -2867,8 +2867,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasLighting = true;  		gObjectSimpleNonIndexedTexGenProgram.mFeatures.disableTextureIndex = true;  		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.clear(); -		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleNonIndexedTexGenProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gObjectSimpleNonIndexedTexGenProgram.createShader(NULL, NULL);  	} @@ -2883,8 +2883,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasLighting = true;  		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.disableTextureIndex = true;  		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.clear(); -		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gObjectSimpleNonIndexedTexGenWaterProgram.createShader(NULL, NULL); @@ -2901,8 +2901,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectAlphaMaskNonIndexedProgram.mFeatures.disableTextureIndex = true;  		gObjectAlphaMaskNonIndexedProgram.mFeatures.hasAlphaMask = true;  		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.clear(); -		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER)); +		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectAlphaMaskNonIndexedProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gObjectAlphaMaskNonIndexedProgram.createShader(NULL, NULL);  	} @@ -2918,8 +2918,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.disableTextureIndex = true;  		gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.hasAlphaMask = true;  		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.clear(); -		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER)); +		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectAlphaMaskNonIndexedWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectAlphaMaskNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gObjectAlphaMaskNonIndexedWaterProgram.createShader(NULL, NULL); @@ -2936,8 +2936,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectAlphaMaskNoColorProgram.mFeatures.disableTextureIndex = true;  		gObjectAlphaMaskNoColorProgram.mFeatures.hasAlphaMask = true;  		gObjectAlphaMaskNoColorProgram.mShaderFiles.clear(); -		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER)); +		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectAlphaMaskNoColorProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gObjectAlphaMaskNoColorProgram.createShader(NULL, NULL);  	} @@ -2953,8 +2953,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectAlphaMaskNoColorWaterProgram.mFeatures.disableTextureIndex = true;  		gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasAlphaMask = true;  		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.clear(); -		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER)); +		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectAlphaMaskNoColorWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectAlphaMaskNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gObjectAlphaMaskNoColorWaterProgram.createShader(NULL, NULL); @@ -2971,8 +2971,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gTreeProgram.mFeatures.disableTextureIndex = true;  		gTreeProgram.mFeatures.hasAlphaMask = true;  		gTreeProgram.mShaderFiles.clear(); -		gTreeProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB)); -		gTreeProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gTreeProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER)); +		gTreeProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gTreeProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gTreeProgram.createShader(NULL, NULL);  	} @@ -2988,8 +2988,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gTreeWaterProgram.mFeatures.disableTextureIndex = true;  		gTreeWaterProgram.mFeatures.hasAlphaMask = true;  		gTreeWaterProgram.mShaderFiles.clear(); -		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB)); -		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER)); +		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gTreeWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gTreeWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gTreeWaterProgram.createShader(NULL, NULL); @@ -3005,8 +3005,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightNoColorProgram.mFeatures.hasSrgb = true;  		gObjectFullbrightNoColorProgram.mFeatures.disableTextureIndex = true;  		gObjectFullbrightNoColorProgram.mShaderFiles.clear(); -		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightNoColorProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gObjectFullbrightNoColorProgram.createShader(NULL, NULL);  	} @@ -3020,8 +3020,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightNoColorWaterProgram.mFeatures.hasTransport = true;  		gObjectFullbrightNoColorWaterProgram.mFeatures.disableTextureIndex = true;  		gObjectFullbrightNoColorWaterProgram.mShaderFiles.clear(); -		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightNoColorWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectFullbrightNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		success = gObjectFullbrightNoColorWaterProgram.createShader(NULL, NULL); @@ -3033,8 +3033,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gImpostorProgram.mFeatures.disableTextureIndex = true;  		gImpostorProgram.mFeatures.hasSrgb = true;  		gImpostorProgram.mShaderFiles.clear(); -		gImpostorProgram.mShaderFiles.push_back(make_pair("objects/impostorV.glsl", GL_VERTEX_SHADER_ARB)); -		gImpostorProgram.mShaderFiles.push_back(make_pair("objects/impostorF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gImpostorProgram.mShaderFiles.push_back(make_pair("objects/impostorV.glsl", GL_VERTEX_SHADER)); +		gImpostorProgram.mShaderFiles.push_back(make_pair("objects/impostorF.glsl", GL_FRAGMENT_SHADER));  		gImpostorProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gImpostorProgram.createShader(NULL, NULL);  	} @@ -3050,8 +3050,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectPreviewProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectPreviewProgram.mFeatures.disableTextureIndex = true;  		gObjectPreviewProgram.mShaderFiles.clear(); -		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewV.glsl", GL_VERTEX_SHADER)); +		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewF.glsl", GL_FRAGMENT_SHADER));  		gObjectPreviewProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gObjectPreviewProgram.createShader(NULL, NULL);  		gObjectPreviewProgram.mFeatures.hasLighting = true; @@ -3068,8 +3068,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gPhysicsPreviewProgram.mFeatures.mIndexedTextureChannels = 0;  		gPhysicsPreviewProgram.mFeatures.disableTextureIndex = true;  		gPhysicsPreviewProgram.mShaderFiles.clear(); -		gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsV.glsl", GL_VERTEX_SHADER_ARB)); -		gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsV.glsl", GL_VERTEX_SHADER)); +		gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsF.glsl", GL_FRAGMENT_SHADER));  		gPhysicsPreviewProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		success = gPhysicsPreviewProgram.createShader(NULL, NULL);  		gPhysicsPreviewProgram.mFeatures.hasLighting = false; @@ -3085,8 +3085,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleProgram.mFeatures.hasLighting = true;  		gObjectSimpleProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectSimpleProgram.mShaderFiles.clear(); -		gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectSimpleProgram, gSkinnedObjectSimpleProgram);  		success = success && gObjectSimpleProgram.createShader(NULL, NULL); @@ -3106,8 +3106,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		//  		gObjectSimpleImpostorProgram.mFeatures.hasAlphaMask = true;   		gObjectSimpleImpostorProgram.mShaderFiles.clear(); -		gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleImpostorProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectSimpleImpostorProgram, gSkinnedObjectSimpleImpostorProgram);  		success = success && gObjectSimpleImpostorProgram.createShader(NULL, NULL); @@ -3123,8 +3123,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleWaterProgram.mFeatures.hasLighting = true;  		gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectSimpleWaterProgram.mShaderFiles.clear(); -		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;          make_rigged_variant(gObjectSimpleWaterProgram, gSkinnedObjectSimpleWaterProgram); @@ -3136,8 +3136,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectBumpProgram.mName = "Bump Shader";  		gObjectBumpProgram.mFeatures.encodesNormal = true;  		gObjectBumpProgram.mShaderFiles.clear(); -		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpV.glsl", GL_VERTEX_SHADER)); +		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER));  		gObjectBumpProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectBumpProgram, gSkinnedObjectBumpProgram);  		success = success && gObjectBumpProgram.createShader(NULL, NULL); @@ -3166,8 +3166,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleAlphaMaskProgram.mFeatures.hasAlphaMask = true;  		gObjectSimpleAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectSimpleAlphaMaskProgram.mShaderFiles.clear(); -		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectSimpleAlphaMaskProgram, gSkinnedObjectSimpleAlphaMaskProgram);  		success = success && gObjectSimpleAlphaMaskProgram.createShader(NULL, NULL); @@ -3184,8 +3184,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectSimpleWaterAlphaMaskProgram.mFeatures.hasAlphaMask = true;  		gObjectSimpleWaterAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectSimpleWaterAlphaMaskProgram.mShaderFiles.clear(); -		gObjectSimpleWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectSimpleWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectSimpleWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER)); +		gObjectSimpleWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectSimpleWaterAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectSimpleWaterAlphaMaskProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectSimpleWaterAlphaMaskProgram, gSkinnedObjectSimpleWaterAlphaMaskProgram); @@ -3202,8 +3202,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightProgram.mFeatures.hasSrgb = true;  		gObjectFullbrightProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightProgram.mShaderFiles.clear(); -		gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectFullbrightProgram, gSkinnedObjectFullbrightProgram);          success = success && gObjectFullbrightProgram.createShader(NULL, NULL); @@ -3218,8 +3218,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightWaterProgram.mFeatures.hasTransport = true;  		gObjectFullbrightWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightWaterProgram.mShaderFiles.clear(); -		gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectFullbrightWaterProgram, gSkinnedObjectFullbrightWaterProgram); @@ -3236,8 +3236,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectEmissiveProgram.mFeatures.hasSrgb = true;  		gObjectEmissiveProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectEmissiveProgram.mShaderFiles.clear(); -		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER)); +		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gObjectEmissiveProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectEmissiveProgram, gSkinnedObjectEmissiveProgram);  		success = success && gObjectEmissiveProgram.createShader(NULL, NULL); @@ -3252,8 +3252,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectEmissiveWaterProgram.mFeatures.hasTransport = true;  		gObjectEmissiveWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectEmissiveWaterProgram.mShaderFiles.clear(); -		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER)); +		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectEmissiveWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectEmissiveWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectEmissiveWaterProgram, gSkinnedObjectEmissiveWaterProgram); @@ -3271,8 +3271,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightAlphaMaskProgram.mFeatures.hasSrgb = true;  		gObjectFullbrightAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightAlphaMaskProgram.mShaderFiles.clear(); -		gObjectFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectFullbrightAlphaMaskProgram, gSkinnedObjectFullbrightAlphaMaskProgram);  		success = success && gObjectFullbrightAlphaMaskProgram.createShader(NULL, NULL); @@ -3288,8 +3288,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightWaterAlphaMaskProgram.mFeatures.hasAlphaMask = true;  		gObjectFullbrightWaterAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightWaterAlphaMaskProgram.mShaderFiles.clear(); -		gObjectFullbrightWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightWaterAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightWaterAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectFullbrightWaterAlphaMaskProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectFullbrightWaterAlphaMaskProgram, gSkinnedObjectFullbrightWaterAlphaMaskProgram); @@ -3306,8 +3306,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectShinyProgram.mFeatures.isShiny = true;  		gObjectShinyProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectShinyProgram.mShaderFiles.clear(); -		gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER_ARB));		 +		gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER)); +		gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER));  		gObjectShinyProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectShinyProgram, gSkinnedObjectShinyProgram);  		success = success && gObjectShinyProgram.createShader(NULL, NULL); @@ -3323,8 +3323,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectShinyWaterProgram.mFeatures.hasAtmospherics = true;  		gObjectShinyWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectShinyWaterProgram.mShaderFiles.clear(); -		gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); -		gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); +		gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyWaterF.glsl", GL_FRAGMENT_SHADER)); +		gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER));  		gObjectShinyWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectShinyWaterProgram, gSkinnedObjectShinyWaterProgram); @@ -3341,8 +3341,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightShinyProgram.mFeatures.hasTransport = true;  		gObjectFullbrightShinyProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightShinyProgram.mShaderFiles.clear(); -		gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightShinyProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];          success = make_rigged_variant(gObjectFullbrightShinyProgram, gSkinnedObjectFullbrightShinyProgram);  		success = success && gObjectFullbrightShinyProgram.createShader(NULL, NULL); @@ -3359,8 +3359,8 @@ BOOL LLViewerShaderMgr::loadShadersObject()  		gObjectFullbrightShinyWaterProgram.mFeatures.hasWaterFog = true;  		gObjectFullbrightShinyWaterProgram.mFeatures.mIndexedTextureChannels = 0;  		gObjectFullbrightShinyWaterProgram.mShaderFiles.clear(); -		gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); -		gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER)); +		gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER));  		gObjectFullbrightShinyWaterProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];  		gObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;          success = make_rigged_variant(gObjectFullbrightShinyWaterProgram, gSkinnedObjectFullbrightShinyWaterProgram); @@ -3401,8 +3401,8 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()  		gAvatarProgram.mFeatures.hasAlphaMask = true;  		gAvatarProgram.mFeatures.disableTextureIndex = true;  		gAvatarProgram.mShaderFiles.clear(); -		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB)); -		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER)); +		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarF.glsl", GL_FRAGMENT_SHADER));  		gAvatarProgram.mShaderLevel = mShaderLevel[SHADER_AVATAR];  		success = gAvatarProgram.createShader(NULL, NULL); @@ -3418,8 +3418,8 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()  			gAvatarWaterProgram.mFeatures.hasAlphaMask = true;  			gAvatarWaterProgram.mFeatures.disableTextureIndex = true;  			gAvatarWaterProgram.mShaderFiles.clear(); -			gAvatarWaterProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB)); -			gAvatarWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); +			gAvatarWaterProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER)); +			gAvatarWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER));  			// Note: no cloth under water:  			gAvatarWaterProgram.mShaderLevel = llmin(mShaderLevel[SHADER_AVATAR], 1);	  			gAvatarWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;				 @@ -3439,8 +3439,8 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()  		gAvatarPickProgram.mFeatures.hasSkinning = true;  		gAvatarPickProgram.mFeatures.disableTextureIndex = true;  		gAvatarPickProgram.mShaderFiles.clear(); -		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarV.glsl", GL_VERTEX_SHADER_ARB)); -		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarV.glsl", GL_VERTEX_SHADER)); +		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarF.glsl", GL_FRAGMENT_SHADER));  		gAvatarPickProgram.mShaderLevel = mShaderLevel[SHADER_AVATAR];  		success = gAvatarPickProgram.createShader(NULL, NULL);  	} @@ -3457,8 +3457,8 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()  		gAvatarEyeballProgram.mFeatures.hasAlphaMask = true;  		gAvatarEyeballProgram.mFeatures.disableTextureIndex = true;  		gAvatarEyeballProgram.mShaderFiles.clear(); -		gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballV.glsl", GL_VERTEX_SHADER_ARB)); -		gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballV.glsl", GL_VERTEX_SHADER)); +		gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballF.glsl", GL_FRAGMENT_SHADER));  		gAvatarEyeballProgram.mShaderLevel = mShaderLevel[SHADER_AVATAR];  		success = gAvatarEyeballProgram.createShader(NULL, NULL);  	} @@ -3481,8 +3481,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gHighlightProgram.mName = "Highlight Shader";  		gHighlightProgram.mShaderFiles.clear(); -		gHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightV.glsl", GL_VERTEX_SHADER_ARB)); -		gHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightV.glsl", GL_VERTEX_SHADER)); +		gHighlightProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER));  		gHighlightProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = make_rigged_variant(gHighlightProgram, gSkinnedHighlightProgram);  		success = success && gHighlightProgram.createShader(NULL, NULL); @@ -3492,8 +3492,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gHighlightNormalProgram.mName = "Highlight Normals Shader";  		gHighlightNormalProgram.mShaderFiles.clear(); -		gHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightNormV.glsl", GL_VERTEX_SHADER_ARB)); -		gHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightNormV.glsl", GL_VERTEX_SHADER)); +		gHighlightNormalProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER));  		gHighlightNormalProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gHighlightNormalProgram.createShader(NULL, NULL);  	} @@ -3502,8 +3502,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gHighlightSpecularProgram.mName = "Highlight Spec Shader";  		gHighlightSpecularProgram.mShaderFiles.clear(); -		gHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightSpecV.glsl", GL_VERTEX_SHADER_ARB)); -		gHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightSpecV.glsl", GL_VERTEX_SHADER)); +		gHighlightSpecularProgram.mShaderFiles.push_back(make_pair("interface/highlightF.glsl", GL_FRAGMENT_SHADER));  		gHighlightSpecularProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gHighlightSpecularProgram.createShader(NULL, NULL);  	} @@ -3512,8 +3512,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gUIProgram.mName = "UI Shader";  		gUIProgram.mShaderFiles.clear(); -		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiV.glsl", GL_VERTEX_SHADER_ARB)); -		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiV.glsl", GL_VERTEX_SHADER)); +		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiF.glsl", GL_FRAGMENT_SHADER));  		gUIProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gUIProgram.createShader(NULL, NULL);  	} @@ -3522,8 +3522,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gPathfindingProgram.mName = "Pathfinding Shader";  		gPathfindingProgram.mShaderFiles.clear(); -		gPathfindingProgram.mShaderFiles.push_back(make_pair("interface/pathfindingV.glsl", GL_VERTEX_SHADER_ARB)); -		gPathfindingProgram.mShaderFiles.push_back(make_pair("interface/pathfindingF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gPathfindingProgram.mShaderFiles.push_back(make_pair("interface/pathfindingV.glsl", GL_VERTEX_SHADER)); +		gPathfindingProgram.mShaderFiles.push_back(make_pair("interface/pathfindingF.glsl", GL_FRAGMENT_SHADER));  		gPathfindingProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gPathfindingProgram.createShader(NULL, NULL);  	} @@ -3532,8 +3532,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gPathfindingNoNormalsProgram.mName = "PathfindingNoNormals Shader";  		gPathfindingNoNormalsProgram.mShaderFiles.clear(); -		gPathfindingNoNormalsProgram.mShaderFiles.push_back(make_pair("interface/pathfindingNoNormalV.glsl", GL_VERTEX_SHADER_ARB)); -		gPathfindingNoNormalsProgram.mShaderFiles.push_back(make_pair("interface/pathfindingF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gPathfindingNoNormalsProgram.mShaderFiles.push_back(make_pair("interface/pathfindingNoNormalV.glsl", GL_VERTEX_SHADER)); +		gPathfindingNoNormalsProgram.mShaderFiles.push_back(make_pair("interface/pathfindingF.glsl", GL_FRAGMENT_SHADER));  		gPathfindingNoNormalsProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gPathfindingNoNormalsProgram.createShader(NULL, NULL);  	} @@ -3542,8 +3542,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gCustomAlphaProgram.mName = "Custom Alpha Shader";  		gCustomAlphaProgram.mShaderFiles.clear(); -		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaV.glsl", GL_VERTEX_SHADER_ARB)); -		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaV.glsl", GL_VERTEX_SHADER)); +		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaF.glsl", GL_FRAGMENT_SHADER));  		gCustomAlphaProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gCustomAlphaProgram.createShader(NULL, NULL);  	} @@ -3552,8 +3552,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gSplatTextureRectProgram.mName = "Splat Texture Rect Shader";  		gSplatTextureRectProgram.mShaderFiles.clear(); -		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER_ARB)); -		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER)); +		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectF.glsl", GL_FRAGMENT_SHADER));  		gSplatTextureRectProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gSplatTextureRectProgram.createShader(NULL, NULL);  		if (success) @@ -3568,8 +3568,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gGlowCombineProgram.mName = "Glow Combine Shader";  		gGlowCombineProgram.mShaderFiles.clear(); -		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineV.glsl", GL_VERTEX_SHADER_ARB)); -		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineV.glsl", GL_VERTEX_SHADER)); +		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineF.glsl", GL_FRAGMENT_SHADER));  		gGlowCombineProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gGlowCombineProgram.createShader(NULL, NULL);  		if (success) @@ -3585,8 +3585,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gGlowCombineFXAAProgram.mName = "Glow CombineFXAA Shader";  		gGlowCombineFXAAProgram.mShaderFiles.clear(); -		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAV.glsl", GL_VERTEX_SHADER_ARB)); -		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAV.glsl", GL_VERTEX_SHADER)); +		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAF.glsl", GL_FRAGMENT_SHADER));  		gGlowCombineFXAAProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gGlowCombineFXAAProgram.createShader(NULL, NULL);  		if (success) @@ -3602,8 +3602,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gTwoTextureAddProgram.mName = "Two Texture Add Shader";  		gTwoTextureAddProgram.mShaderFiles.clear(); -		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddV.glsl", GL_VERTEX_SHADER_ARB)); -		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddV.glsl", GL_VERTEX_SHADER)); +		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddF.glsl", GL_FRAGMENT_SHADER));  		gTwoTextureAddProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gTwoTextureAddProgram.createShader(NULL, NULL);  		if (success) @@ -3619,8 +3619,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gTwoTextureCompareProgram.mName = "Two Texture Compare Shader";  		gTwoTextureCompareProgram.mShaderFiles.clear(); -		gTwoTextureCompareProgram.mShaderFiles.push_back(make_pair("interface/twotexturecompareV.glsl", GL_VERTEX_SHADER_ARB)); -		gTwoTextureCompareProgram.mShaderFiles.push_back(make_pair("interface/twotexturecompareF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gTwoTextureCompareProgram.mShaderFiles.push_back(make_pair("interface/twotexturecompareV.glsl", GL_VERTEX_SHADER)); +		gTwoTextureCompareProgram.mShaderFiles.push_back(make_pair("interface/twotexturecompareF.glsl", GL_FRAGMENT_SHADER));  		gTwoTextureCompareProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gTwoTextureCompareProgram.createShader(NULL, NULL);  		if (success) @@ -3636,8 +3636,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gOneTextureFilterProgram.mName = "One Texture Filter Shader";  		gOneTextureFilterProgram.mShaderFiles.clear(); -		gOneTextureFilterProgram.mShaderFiles.push_back(make_pair("interface/onetexturefilterV.glsl", GL_VERTEX_SHADER_ARB)); -		gOneTextureFilterProgram.mShaderFiles.push_back(make_pair("interface/onetexturefilterF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gOneTextureFilterProgram.mShaderFiles.push_back(make_pair("interface/onetexturefilterV.glsl", GL_VERTEX_SHADER)); +		gOneTextureFilterProgram.mShaderFiles.push_back(make_pair("interface/onetexturefilterF.glsl", GL_FRAGMENT_SHADER));  		gOneTextureFilterProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gOneTextureFilterProgram.createShader(NULL, NULL);  		if (success) @@ -3652,8 +3652,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gOneTextureNoColorProgram.mName = "One Texture No Color Shader";  		gOneTextureNoColorProgram.mShaderFiles.clear(); -		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorV.glsl", GL_VERTEX_SHADER_ARB)); -		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorV.glsl", GL_VERTEX_SHADER)); +		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorF.glsl", GL_FRAGMENT_SHADER));  		gOneTextureNoColorProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gOneTextureNoColorProgram.createShader(NULL, NULL);  		if (success) @@ -3667,8 +3667,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gSolidColorProgram.mName = "Solid Color Shader";  		gSolidColorProgram.mShaderFiles.clear(); -		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER_ARB)); -		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER)); +		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER));  		gSolidColorProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gSolidColorProgram.createShader(NULL, NULL);  		if (success) @@ -3683,8 +3683,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gOcclusionProgram.mName = "Occlusion Shader";  		gOcclusionProgram.mShaderFiles.clear(); -		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionV.glsl", GL_VERTEX_SHADER_ARB)); -		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionV.glsl", GL_VERTEX_SHADER)); +		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER));  		gOcclusionProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          gOcclusionProgram.mRiggedVariant = &gSkinnedOcclusionProgram;  		success = gOcclusionProgram.createShader(NULL, NULL); @@ -3695,8 +3695,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()          gSkinnedOcclusionProgram.mName = "Skinned Occlusion Shader";          gSkinnedOcclusionProgram.mFeatures.hasObjectSkinning = true;          gSkinnedOcclusionProgram.mShaderFiles.clear(); -        gSkinnedOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); -        gSkinnedOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gSkinnedOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionSkinnedV.glsl", GL_VERTEX_SHADER)); +        gSkinnedOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER));          gSkinnedOcclusionProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = gSkinnedOcclusionProgram.createShader(NULL, NULL);      } @@ -3705,8 +3705,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gOcclusionCubeProgram.mName = "Occlusion Cube Shader";  		gOcclusionCubeProgram.mShaderFiles.clear(); -		gOcclusionCubeProgram.mShaderFiles.push_back(make_pair("interface/occlusionCubeV.glsl", GL_VERTEX_SHADER_ARB)); -		gOcclusionCubeProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gOcclusionCubeProgram.mShaderFiles.push_back(make_pair("interface/occlusionCubeV.glsl", GL_VERTEX_SHADER)); +		gOcclusionCubeProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER));  		gOcclusionCubeProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gOcclusionCubeProgram.createShader(NULL, NULL);  	} @@ -3715,8 +3715,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gDebugProgram.mName = "Debug Shader";  		gDebugProgram.mShaderFiles.clear(); -		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugV.glsl", GL_VERTEX_SHADER_ARB)); -		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugV.glsl", GL_VERTEX_SHADER)); +		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugF.glsl", GL_FRAGMENT_SHADER));          gDebugProgram.mRiggedVariant = &gSkinnedDebugProgram;  		gDebugProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = make_rigged_variant(gDebugProgram, gSkinnedDebugProgram); @@ -3727,8 +3727,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gClipProgram.mName = "Clip Shader";  		gClipProgram.mShaderFiles.clear(); -		gClipProgram.mShaderFiles.push_back(make_pair("interface/clipV.glsl", GL_VERTEX_SHADER_ARB)); -		gClipProgram.mShaderFiles.push_back(make_pair("interface/clipF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gClipProgram.mShaderFiles.push_back(make_pair("interface/clipV.glsl", GL_VERTEX_SHADER)); +		gClipProgram.mShaderFiles.push_back(make_pair("interface/clipF.glsl", GL_FRAGMENT_SHADER));  		gClipProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gClipProgram.createShader(NULL, NULL);  	} @@ -3737,8 +3737,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gDownsampleDepthProgram.mName = "DownsampleDepth Shader";  		gDownsampleDepthProgram.mShaderFiles.clear(); -		gDownsampleDepthProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthV.glsl", GL_VERTEX_SHADER_ARB)); -		gDownsampleDepthProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDownsampleDepthProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthV.glsl", GL_VERTEX_SHADER)); +		gDownsampleDepthProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthF.glsl", GL_FRAGMENT_SHADER));  		gDownsampleDepthProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gDownsampleDepthProgram.createShader(NULL, NULL);  	} @@ -3747,8 +3747,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gBenchmarkProgram.mName = "Benchmark Shader";  		gBenchmarkProgram.mShaderFiles.clear(); -		gBenchmarkProgram.mShaderFiles.push_back(make_pair("interface/benchmarkV.glsl", GL_VERTEX_SHADER_ARB)); -		gBenchmarkProgram.mShaderFiles.push_back(make_pair("interface/benchmarkF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gBenchmarkProgram.mShaderFiles.push_back(make_pair("interface/benchmarkV.glsl", GL_VERTEX_SHADER)); +		gBenchmarkProgram.mShaderFiles.push_back(make_pair("interface/benchmarkF.glsl", GL_FRAGMENT_SHADER));  		gBenchmarkProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gBenchmarkProgram.createShader(NULL, NULL);  	} @@ -3757,8 +3757,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gDownsampleDepthRectProgram.mName = "DownsampleDepthRect Shader";  		gDownsampleDepthRectProgram.mShaderFiles.clear(); -		gDownsampleDepthRectProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthV.glsl", GL_VERTEX_SHADER_ARB)); -		gDownsampleDepthRectProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthRectF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDownsampleDepthRectProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthV.glsl", GL_VERTEX_SHADER)); +		gDownsampleDepthRectProgram.mShaderFiles.push_back(make_pair("interface/downsampleDepthRectF.glsl", GL_FRAGMENT_SHADER));  		gDownsampleDepthRectProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gDownsampleDepthRectProgram.createShader(NULL, NULL);  	} @@ -3767,8 +3767,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	{  		gAlphaMaskProgram.mName = "Alpha Mask Shader";  		gAlphaMaskProgram.mShaderFiles.clear(); -		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB)); -		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER)); +		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER));  		gAlphaMaskProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];  		success = gAlphaMaskProgram.createShader(NULL, NULL);  	} @@ -3777,8 +3777,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()      {          gReflectionMipProgram.mName = "Reflection Mip Shader";          gReflectionMipProgram.mShaderFiles.clear(); -        gReflectionMipProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER_ARB)); -        gReflectionMipProgram.mShaderFiles.push_back(make_pair("interface/reflectionmipF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gReflectionMipProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER)); +        gReflectionMipProgram.mShaderFiles.push_back(make_pair("interface/reflectionmipF.glsl", GL_FRAGMENT_SHADER));          gReflectionMipProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = gReflectionMipProgram.createShader(NULL, NULL);          if (success) @@ -3793,8 +3793,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()      {          gRadianceGenProgram.mName = "Radiance Gen Shader";          gRadianceGenProgram.mShaderFiles.clear(); -        gRadianceGenProgram.mShaderFiles.push_back(make_pair("interface/radianceGenV.glsl", GL_VERTEX_SHADER_ARB)); -        gRadianceGenProgram.mShaderFiles.push_back(make_pair("interface/radianceGenF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gRadianceGenProgram.mShaderFiles.push_back(make_pair("interface/radianceGenV.glsl", GL_VERTEX_SHADER)); +        gRadianceGenProgram.mShaderFiles.push_back(make_pair("interface/radianceGenF.glsl", GL_FRAGMENT_SHADER));          gRadianceGenProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = gRadianceGenProgram.createShader(NULL, NULL);      } @@ -3803,8 +3803,8 @@ BOOL LLViewerShaderMgr::loadShadersInterface()      {          gIrradianceGenProgram.mName = "Irradiance Gen Shader";          gIrradianceGenProgram.mShaderFiles.clear(); -        gIrradianceGenProgram.mShaderFiles.push_back(make_pair("interface/irradianceGenV.glsl", GL_VERTEX_SHADER_ARB)); -        gIrradianceGenProgram.mShaderFiles.push_back(make_pair("interface/irradianceGenF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gIrradianceGenProgram.mShaderFiles.push_back(make_pair("interface/irradianceGenV.glsl", GL_VERTEX_SHADER)); +        gIrradianceGenProgram.mShaderFiles.push_back(make_pair("interface/irradianceGenF.glsl", GL_FRAGMENT_SHADER));          gIrradianceGenProgram.mShaderLevel = mShaderLevel[SHADER_INTERFACE];          success = gIrradianceGenProgram.createShader(NULL, NULL);      } @@ -3839,8 +3839,8 @@ BOOL LLViewerShaderMgr::loadShadersWindLight()          gWLSkyProgram.mFeatures.hasTransport = true;          gWLSkyProgram.mFeatures.hasGamma = true;          gWLSkyProgram.mFeatures.hasSrgb = true; -        gWLSkyProgram.mShaderFiles.push_back(make_pair("windlight/skyV.glsl", GL_VERTEX_SHADER_ARB)); -        gWLSkyProgram.mShaderFiles.push_back(make_pair("windlight/skyF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gWLSkyProgram.mShaderFiles.push_back(make_pair("windlight/skyV.glsl", GL_VERTEX_SHADER)); +        gWLSkyProgram.mShaderFiles.push_back(make_pair("windlight/skyF.glsl", GL_FRAGMENT_SHADER));          gWLSkyProgram.mShaderLevel = mShaderLevel[SHADER_WINDLIGHT];          gWLSkyProgram.mShaderGroup = LLGLSLShader::SG_SKY;          success = gWLSkyProgram.createShader(NULL, NULL); @@ -3854,8 +3854,8 @@ BOOL LLViewerShaderMgr::loadShadersWindLight()          gWLCloudProgram.mFeatures.hasTransport = true;          gWLCloudProgram.mFeatures.hasGamma = true;          gWLCloudProgram.mFeatures.hasSrgb = true; -        gWLCloudProgram.mShaderFiles.push_back(make_pair("windlight/cloudsV.glsl", GL_VERTEX_SHADER_ARB)); -        gWLCloudProgram.mShaderFiles.push_back(make_pair("windlight/cloudsF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gWLCloudProgram.mShaderFiles.push_back(make_pair("windlight/cloudsV.glsl", GL_VERTEX_SHADER)); +        gWLCloudProgram.mShaderFiles.push_back(make_pair("windlight/cloudsF.glsl", GL_FRAGMENT_SHADER));          gWLCloudProgram.mShaderLevel = mShaderLevel[SHADER_WINDLIGHT];          gWLCloudProgram.mShaderGroup = LLGLSLShader::SG_SKY;          success = gWLCloudProgram.createShader(NULL, NULL); @@ -3872,8 +3872,8 @@ BOOL LLViewerShaderMgr::loadShadersWindLight()          gWLSunProgram.mFeatures.isFullbright = true;          gWLSunProgram.mFeatures.disableTextureIndex = true;          gWLSunProgram.mShaderGroup = LLGLSLShader::SG_SKY; -        gWLSunProgram.mShaderFiles.push_back(make_pair("windlight/sunDiscV.glsl", GL_VERTEX_SHADER_ARB)); -        gWLSunProgram.mShaderFiles.push_back(make_pair("windlight/sunDiscF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gWLSunProgram.mShaderFiles.push_back(make_pair("windlight/sunDiscV.glsl", GL_VERTEX_SHADER)); +        gWLSunProgram.mShaderFiles.push_back(make_pair("windlight/sunDiscF.glsl", GL_FRAGMENT_SHADER));          gWLSunProgram.mShaderLevel = mShaderLevel[SHADER_WINDLIGHT];          gWLSunProgram.mShaderGroup = LLGLSLShader::SG_SKY;          success = gWLSunProgram.createShader(NULL, NULL); @@ -3890,8 +3890,8 @@ BOOL LLViewerShaderMgr::loadShadersWindLight()          gWLMoonProgram.mFeatures.isFullbright = true;          gWLMoonProgram.mFeatures.disableTextureIndex = true;          gWLMoonProgram.mShaderGroup = LLGLSLShader::SG_SKY; -        gWLMoonProgram.mShaderFiles.push_back(make_pair("windlight/moonV.glsl", GL_VERTEX_SHADER_ARB)); -        gWLMoonProgram.mShaderFiles.push_back(make_pair("windlight/moonF.glsl", GL_FRAGMENT_SHADER_ARB)); +        gWLMoonProgram.mShaderFiles.push_back(make_pair("windlight/moonV.glsl", GL_VERTEX_SHADER)); +        gWLMoonProgram.mShaderFiles.push_back(make_pair("windlight/moonF.glsl", GL_FRAGMENT_SHADER));          gWLMoonProgram.mShaderLevel = mShaderLevel[SHADER_WINDLIGHT];          gWLMoonProgram.mShaderGroup = LLGLSLShader::SG_SKY;          success = gWLMoonProgram.createShader(NULL, NULL); @@ -3918,7 +3918,7 @@ BOOL LLViewerShaderMgr::loadTransformShaders()  	{          gTransformPositionProgram.mName = "Position Transform Shader";  		gTransformPositionProgram.mShaderFiles.clear(); -		gTransformPositionProgram.mShaderFiles.push_back(make_pair("transform/positionV.glsl", GL_VERTEX_SHADER_ARB)); +		gTransformPositionProgram.mShaderFiles.push_back(make_pair("transform/positionV.glsl", GL_VERTEX_SHADER));  		gTransformPositionProgram.mShaderLevel = mShaderLevel[SHADER_TRANSFORM];  		const char* varyings[] = { @@ -3933,7 +3933,7 @@ BOOL LLViewerShaderMgr::loadTransformShaders()  	{  		gTransformTexCoordProgram.mName = "TexCoord Transform Shader";  		gTransformTexCoordProgram.mShaderFiles.clear(); -		gTransformTexCoordProgram.mShaderFiles.push_back(make_pair("transform/texcoordV.glsl", GL_VERTEX_SHADER_ARB)); +		gTransformTexCoordProgram.mShaderFiles.push_back(make_pair("transform/texcoordV.glsl", GL_VERTEX_SHADER));  		gTransformTexCoordProgram.mShaderLevel = mShaderLevel[SHADER_TRANSFORM];  		const char* varyings[] = { @@ -3947,7 +3947,7 @@ BOOL LLViewerShaderMgr::loadTransformShaders()  	{  		gTransformNormalProgram.mName = "Normal Transform Shader";  		gTransformNormalProgram.mShaderFiles.clear(); -		gTransformNormalProgram.mShaderFiles.push_back(make_pair("transform/normalV.glsl", GL_VERTEX_SHADER_ARB)); +		gTransformNormalProgram.mShaderFiles.push_back(make_pair("transform/normalV.glsl", GL_VERTEX_SHADER));  		gTransformNormalProgram.mShaderLevel = mShaderLevel[SHADER_TRANSFORM];  		const char* varyings[] = { @@ -3961,7 +3961,7 @@ BOOL LLViewerShaderMgr::loadTransformShaders()  	{  		gTransformColorProgram.mName = "Color Transform Shader";  		gTransformColorProgram.mShaderFiles.clear(); -		gTransformColorProgram.mShaderFiles.push_back(make_pair("transform/colorV.glsl", GL_VERTEX_SHADER_ARB)); +		gTransformColorProgram.mShaderFiles.push_back(make_pair("transform/colorV.glsl", GL_VERTEX_SHADER));  		gTransformColorProgram.mShaderLevel = mShaderLevel[SHADER_TRANSFORM];  		const char* varyings[] = { @@ -3975,7 +3975,7 @@ BOOL LLViewerShaderMgr::loadTransformShaders()  	{  		gTransformTangentProgram.mName = "Binormal Transform Shader";  		gTransformTangentProgram.mShaderFiles.clear(); -		gTransformTangentProgram.mShaderFiles.push_back(make_pair("transform/binormalV.glsl", GL_VERTEX_SHADER_ARB)); +		gTransformTangentProgram.mShaderFiles.push_back(make_pair("transform/binormalV.glsl", GL_VERTEX_SHADER));          gTransformTangentProgram.mShaderLevel = mShaderLevel[SHADER_TRANSFORM];  		const char* varyings[] = { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 91d276c8df..2f6ff19100 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -731,7 +731,7 @@ void LLPipeline::destroyGL()  	if (mMeshDirtyQueryObject)  	{ -		glDeleteQueriesARB(1, &mMeshDirtyQueryObject); +		glDeleteQueries(1, &mMeshDirtyQueryObject);  		mMeshDirtyQueryObject = 0;  	}  } @@ -1293,7 +1293,7 @@ void LLPipeline::createGLBuffers()  			LLImageGL::generateTextures(1, &mNoiseMap);  			gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mNoiseMap); -			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGB16F_ARB, noiseRes, noiseRes, GL_RGB, GL_FLOAT, noise, false); +			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGB16F, noiseRes, noiseRes, GL_RGB, GL_FLOAT, noise, false);  			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);  		} @@ -1308,7 +1308,7 @@ void LLPipeline::createGLBuffers()  			LLImageGL::generateTextures(1, &mTrueNoiseMap);  			gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mTrueNoiseMap); -			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGB16F_ARB, noiseRes, noiseRes, GL_RGB,GL_FLOAT, noise, false); +			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGB16F, noiseRes, noiseRes, GL_RGB,GL_FLOAT, noise, false);  			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);  		} @@ -3918,11 +3918,11 @@ void LLPipeline::postSort(LLCamera& camera)  		if (!mMeshDirtyQueryObject)  		{ -			glGenQueriesARB(1, &mMeshDirtyQueryObject); +			glGenQueries(1, &mMeshDirtyQueryObject);  		} -		glBeginQueryARB(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, mMeshDirtyQueryObject); +		glBeginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, mMeshDirtyQueryObject);  	}*/  	//pack vertex buffers for groups that chose to delay their updates @@ -3933,7 +3933,7 @@ void LLPipeline::postSort(LLCamera& camera)  	/*if (use_transform_feedback)  	{ -		glEndQueryARB(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN); +		glEndQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);  	}*/  	mMeshDirtyGroup.clear(); @@ -11333,7 +11333,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)  		if (LLPipeline::sRenderDeferred)  		{  			GLuint buff = GL_COLOR_ATTACHMENT0; -			glDrawBuffersARB(1, &buff); +			glDrawBuffers(1, &buff);  		}  		LLGLDisable blend(GL_BLEND);  | 
