diff options
6 files changed, 41 insertions, 13 deletions
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 8ebaf77eec..46065404e7 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -595,11 +595,13 @@ bool LLGLManager::initGL()  		parse_glsl_version(mGLSLVersionMajor, mGLSLVersionMinor);  #if LL_DARWIN +		// TODO maybe switch to using a core profile for GL 3.2? +		// https://stackoverflow.com/a/19868861  		//never use GLSL greater than 1.20 on OSX -		if (mGLSLVersionMajor > 1 || mGLSLVersionMinor >= 30) +		if (mGLSLVersionMajor > 1 || mGLSLVersionMinor > 30)  		{  			mGLSLVersionMajor = 1; -			mGLSLVersionMinor = 20; +			mGLSLVersionMinor = 30;  		}  #endif  	} @@ -1012,6 +1014,20 @@ void LLGLManager::initExtensions()  	mHasPointParameters = FALSE;  	mHasTextureRectangle = FALSE;  #else // LL_MESA_HEADLESS //important, gGLHExts.mSysExts is uninitialized until after glh_init_extensions is called + +#if 0 && LL_DARWIN +	// populate gGLHExts.mSysExts for core profile +	GLint num_extensions; +	glGetIntegerv(GL_NUM_EXTENSIONS, &num_extensions); +	std::string all_extensions("GL_ARB_multitexture "); +	for(GLint i = 0; i < num_extensions; ++i) { +		char const * extension = (char const *)glGetStringi(GL_EXTENSIONS, i); +		all_extensions += extension; +		all_extensions += ' '; +	} +	gGLHExts.mSysExts = strdup(all_extensions.data()); +#endif +  	mHasMultitexture = glh_init_extensions("GL_ARB_multitexture");  	mHasATIMemInfo = ExtensionExists("GL_ATI_meminfo", gGLHExts.mSysExts); //Basic AMD method, also see mHasAMDAssociations  	mHasNVXMemInfo = ExtensionExists("GL_NVX_gpu_memory_info", gGLHExts.mSysExts); diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index fd20f2ad15..f6d90f3479 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -256,6 +256,7 @@ attributedStringInfo getSegments(NSAttributedString *str)  		NSOpenGLPFADepthSize, 24,  		NSOpenGLPFAAlphaSize, 8,  		NSOpenGLPFAColorSize, 24, +		NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,  		0      }; diff --git a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl index 68a57d12f0..449cbeaa28 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl @@ -161,7 +161,11 @@ float getDepth(vec2 pos_screen)  vec4 getTexture2DLodAmbient(vec2 tc, float lod)  { -    vec4 ret = texture2DLod(projectionMap, tc, lod); +#ifndef FXAA_GLSL_120 +    vec4 ret = textureLod(projectionMap, tc, lod); +#else +    vec4 ret = texture2D(projectionMap, tc); +#endif      ret.rgb = srgb_to_linear(ret.rgb);      vec2 dist = tc-vec2(0.5); @@ -173,7 +177,11 @@ vec4 getTexture2DLodAmbient(vec2 tc, float lod)  vec4 getTexture2DLodDiffuse(vec2 tc, float lod)  { -    vec4 ret = texture2DLod(projectionMap, tc, lod); +#ifndef FXAA_GLSL_120 +    vec4 ret = textureLod(projectionMap, tc, lod); +#else +    vec4 ret = texture2D(projectionMap, tc); +#endif      ret.rgb = srgb_to_linear(ret.rgb);      vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); @@ -216,7 +224,11 @@ vec3 getProjectedLightDiffuseColor(float light_distance, vec2 projected_uv)  vec4 texture2DLodSpecular(vec2 tc, float lod)  { -    vec4 ret = texture2DLod(projectionMap, tc, lod); +#ifndef FXAA_GLSL_120 +    vec4 ret = textureLod(projectionMap, tc, lod); +#else +    vec4 ret = texture2D(projectionMap, tc); +#endif      ret.rgb = srgb_to_linear(ret.rgb);      vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 998ebf8836..8a04a8a6a6 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -28,8 +28,8 @@  #define PBR_USE_SUN                1  #define DEBUG_PBR_LIGHT_TYPE       0 // Output no global light to make it easier to see pointLight and spotLight -#define DEBUG_PBR_PACKORM0         0 // Rough=0, Metal=0 -#define DEBUG_PBR_PACKORM1         0 // Rough=1, Metal=1 +#define DEBUG_PBR_PACK_ORM0        0 // Rough=0, Metal=0 +#define DEBUG_PBR_PACK_ORM1        0 // Rough=1, Metal=1  #define DEBUG_PBR_TANGENT1         1 // Tangent = 1,0,0  #define DEBUG_PBR_VERT2CAM1        0 // vertex2camera = 0,0,1  #define DEBUG_PBR_SPECLIGHT051     0 // Force specLigh to be 0,0.5,1 @@ -72,6 +72,7 @@  #define DEBUG_PBR_IRRADIANCE       0 // Output: Diffuse Irradiance, NOTE: SSAO is factored in  #define DEBUG_PBR_FSS_ESS_LAMBERT  0 // Output: FssEssLambert  #define DEBUG_PBR_EMS              0 // Output: Ems = (1 - BRDF Scale + BRDF Bias) +#define DEBUG_PBR_EMS_AVG          0 // Output: Avg Ems  #define DEBUG_PBR_AVG              0 // Output: Avg  #define DEBUG_PBR_FMS_EMS          0 // Output: FmsEms  #define DEBUG_PBR_DIFFUSE_K        0 // Output: diffuse FssEssLambert + FmsEms @@ -110,6 +111,7 @@  #define DEBUG_PBR_SUN_SPEC_FV      0 // F() * V()  #define DEBUG_PBR_SUN_SPEC_DFV     0 // D() * F() * V()  #define DEBUG_PBR_SUN_SPEC_NL_DFV  0 // nl * D() * F() * V() +#define DEBUG_PBR_SUN_FINAL        0 // LAMBERT_NL + BRDF()  #define DEBUG_PBR_IOR              0 // Output: grayscale IOR  #define DEBUG_PBR_REFLECT0_BASE    0 // Output: black reflect0 default from ior @@ -327,9 +329,6 @@ void main()          specLight        = vec3(0,0.5,1.0);          irradiance       = specLight;  #endif -#if HAS_IBL -        kSpec          = mix( kSpec, iridescenceFresnel, iridescenceFactor); -#endif          vec3 FssEssGGX = kSpec*vScaleBias.x + vScaleBias.y;  #if DEBUG_PBR_SPEC_IBL          vec3 debug_color_spec = specWeight * specLight * FssEssGGX; diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index 41e40a07e7..769589eff1 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -278,7 +278,7 @@ void main()          }      } -#if DEBUG_SPOT_DIFFUSE +#if DEBUG_PBR_SPOT_DIFFUSE      final_color = vec3(nl * dist_atten);  #endif  #if DEBUG_SPOT_NL diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 0d9670d9ca..1c6e659aed 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -3789,7 +3789,7 @@ BOOL LLViewerShaderMgr::loadShadersInterface()          }      } -    if (success) +    if (success && gGLManager.mHasCubeMapArray)      {          gRadianceGenProgram.mName = "Radiance Gen Shader";          gRadianceGenProgram.mShaderFiles.clear(); @@ -3799,7 +3799,7 @@ BOOL LLViewerShaderMgr::loadShadersInterface()          success = gRadianceGenProgram.createShader(NULL, NULL);      } -    if (success) +    if (success && gGLManager.mHasCubeMapArray)      {          gIrradianceGenProgram.mName = "Irradiance Gen Shader";          gIrradianceGenProgram.mShaderFiles.clear();  | 
