diff options
| -rw-r--r-- | indra/llrender/llgl.cpp | 1 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llmaniptranslate.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 143 | 
6 files changed, 106 insertions, 58 deletions
| diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 628a8d6131..013b86f32c 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -1964,6 +1964,7 @@ LLGLState::LLGLState(LLGLenum state, S32 enabled) :  			case GL_COLOR_MATERIAL:  			case GL_FOG:  			case GL_LINE_STIPPLE: +			case GL_POLYGON_STIPPLE:  				mState = 0;  				break;  		} diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 879888d185..1b179bdbb1 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -2287,10 +2287,10 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask)  	stop_glerror();  	volatile U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData; -	/*if ((data_mask & mTypeMask) != data_mask) +	if (gDebugGL && ((data_mask & mTypeMask) != data_mask))  	{  		llerrs << "LLVertexBuffer::setupVertexBuffer missing required components for supplied data mask." << llendl; -	}*/ +	}  	if (LLGLSLShader::sNoFixedFunction)  	{ diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index a38d0a0b0b..49666a991d 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -831,7 +831,11 @@ void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LL  	gGL.flush();  	glLineWidth(2.5f); -	glLineStipple(2, 0x3333 << shift); + +	if (!LLGLSLShader::sNoFixedFunction) +	{ +		glLineStipple(2, 0x3333 << shift); +	}  	gGL.begin(LLRender::LINES);  	{ diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 4dd3fa1722..f8088d04b4 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -1581,7 +1581,11 @@ void LLManipTranslate::renderSnapGuides()  					LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GREATER);  					LLGLEnable stipple(GL_LINE_STIPPLE);  					gGL.flush(); -					glLineStipple(1, 0x3333); + +					if (!LLGLSLShader::sNoFixedFunction) +					{ +						glLineStipple(1, 0x3333); +					}  					switch (mManipPart)  					{ diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index eec2c0a521..c69dcfad81 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5583,7 +5583,7 @@ void pushWireframe(LLDrawable* drawable)  			for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)  			{  				const LLVolumeFace& face = volume->getVolumeFace(i); -				LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, face.mTexCoords, face.mNumIndices, face.mIndices); +				LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, NULL, face.mNumIndices, face.mIndices);  			}  		} @@ -5610,7 +5610,7 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)  	if (shader)  	{ -		gHighlightProgram.bind(); +		gDebugProgram.bind();  	}  	gGL.matrixMode(LLRender::MM_MODELVIEW); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index ec3a7f901e..0473e2b7c0 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -494,65 +494,104 @@ void LLViewerShaderMgr::setShaders()  			gPipeline.mVertexShadersLoaded = 1;  			// Load all shaders to set max levels -			loadShadersEnvironment(); -			loadShadersWater(); -			loadShadersWindLight(); -			loadShadersEffects(); -			loadShadersInterface(); +			loaded = loadShadersEnvironment(); + +			if (loaded) +			{ +				loaded = loadShadersWater(); +			} + +			if (loaded) +			{ +				loaded = loadShadersWindLight(); +			} + +			if (loaded) +			{ +				loaded = loadShadersEffects(); +			} + +			if (loaded) +			{ +				loaded = loadShadersInterface(); +			} -			// Load max avatar shaders to set the max level -			mVertexShaderLevel[SHADER_AVATAR] = 3; -			mMaxAvatarShaderLevel = 3; -						 -			if (gSavedSettings.getBOOL("RenderAvatarVP") && loadShadersObject()) -			{ //hardware skinning is enabled and rigged attachment shaders loaded correctly -				BOOL avatar_cloth = gSavedSettings.getBOOL("RenderAvatarCloth"); -				S32 avatar_class = 1; +			if (loaded) +			{ +				// Load max avatar shaders to set the max level +				mVertexShaderLevel[SHADER_AVATAR] = 3; +				mMaxAvatarShaderLevel = 3; -				// cloth is a class3 shader -				if(avatar_cloth) -				{ -					avatar_class = 3; -				} - -				// Set the actual level -				mVertexShaderLevel[SHADER_AVATAR] = avatar_class; -				loadShadersAvatar(); -				if (mVertexShaderLevel[SHADER_AVATAR] != avatar_class) -				{ -					if (mVertexShaderLevel[SHADER_AVATAR] == 0) +				if (gSavedSettings.getBOOL("RenderAvatarVP") && loadShadersObject()) +				{ //hardware skinning is enabled and rigged attachment shaders loaded correctly +					BOOL avatar_cloth = gSavedSettings.getBOOL("RenderAvatarCloth"); +					S32 avatar_class = 1; +				 +					// cloth is a class3 shader +					if(avatar_cloth)  					{ -						gSavedSettings.setBOOL("RenderAvatarVP", FALSE); +						avatar_class = 3;  					} -					if(llmax(mVertexShaderLevel[SHADER_AVATAR]-1,0) >= 3) + +					// Set the actual level +					mVertexShaderLevel[SHADER_AVATAR] = avatar_class; +					loadShadersAvatar(); +					if (mVertexShaderLevel[SHADER_AVATAR] != avatar_class)  					{ -						avatar_cloth = true; +						if (mVertexShaderLevel[SHADER_AVATAR] == 0) +						{ +							gSavedSettings.setBOOL("RenderAvatarVP", FALSE); +						} +						if(llmax(mVertexShaderLevel[SHADER_AVATAR]-1,0) >= 3) +						{ +							avatar_cloth = true; +						} +						else +						{ +							avatar_cloth = false; +						} +						gSavedSettings.setBOOL("RenderAvatarCloth", avatar_cloth);  					} -					else +				} +				else +				{ //hardware skinning not possible, neither is deferred rendering +					mVertexShaderLevel[SHADER_AVATAR] = 0; +					mVertexShaderLevel[SHADER_DEFERRED] = 0; + +					if (gSavedSettings.getBOOL("RenderAvatarVP"))  					{ -						avatar_cloth = false; +						gSavedSettings.setBOOL("RenderDeferred", FALSE); +						gSavedSettings.setBOOL("RenderAvatarCloth", FALSE); +						gSavedSettings.setBOOL("RenderAvatarVP", FALSE);  					} -					gSavedSettings.setBOOL("RenderAvatarCloth", avatar_cloth); + +					loadShadersAvatar(); // unloads + +					loaded = loadShadersObject();  				}  			} -			else -			{ //hardware skinning not possible, neither is deferred rendering -				mVertexShaderLevel[SHADER_AVATAR] = 0; -				mVertexShaderLevel[SHADER_DEFERRED] = 0; - -				if (gSavedSettings.getBOOL("RenderAvatarVP")) -				{ -					gSavedSettings.setBOOL("RenderDeferred", FALSE); -					gSavedSettings.setBOOL("RenderAvatarCloth", FALSE); -					gSavedSettings.setBOOL("RenderAvatarVP", FALSE); + +			if (!loaded) +			{ //some shader absolutely could not load, try to fall back to a simpler setting +				if (gSavedSettings.getBOOL("WindLightUseAtmosShaders")) +				{ //disable windlight and try again +					gSavedSettings.setBOOL("WindLightUseAtmosShaders", FALSE); +					reentrance = false; +					setShaders(); +					return;  				} -				loadShadersAvatar(); // unloads -				loadShadersObject(); -			} +				if (gSavedSettings.getBOOL("VertexShaderEnable")) +				{ //disable shaders outright and try again +					gSavedSettings.setBOOL("VertexShaderEnable", FALSE); +					reentrance = false; +					setShaders(); +					return; +				} +			}		 -			if (!loadShadersDeferred()) -			{ +			if (loaded && !loadShadersDeferred()) +			{ //everything else succeeded but deferred failed, disable deferred and try again  				gSavedSettings.setBOOL("RenderDeferred", FALSE);  				reentrance = false;  				setShaders(); @@ -830,7 +869,7 @@ BOOL LLViewerShaderMgr::loadShadersEnvironment()  	if (mVertexShaderLevel[SHADER_ENVIRONMENT] == 0)  	{  		gTerrainProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) @@ -870,7 +909,7 @@ BOOL LLViewerShaderMgr::loadShadersWater()  		gWaterProgram.unload();  		gUnderWaterProgram.unload();  		gTerrainWaterProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) @@ -955,7 +994,7 @@ BOOL LLViewerShaderMgr::loadShadersEffects()  		gGlowExtractProgram.unload();  		gPostColorFilterProgram.unload();	  		gPostNightVisionProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) @@ -2412,7 +2451,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()  		gAvatarWaterProgram.unload();  		gAvatarEyeballProgram.unload();  		gAvatarPickProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) @@ -2506,7 +2545,7 @@ BOOL LLViewerShaderMgr::loadShadersInterface()  	if (mVertexShaderLevel[SHADER_INTERFACE] == 0)  	{  		gHighlightProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) @@ -2694,7 +2733,7 @@ BOOL LLViewerShaderMgr::loadShadersWindLight()  	{  		gWLSkyProgram.unload();  		gWLCloudProgram.unload(); -		return FALSE; +		return TRUE;  	}  	if (success) | 
