diff options
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/srgb.glsl | 3 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/waterF.glsl | 9 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 140 | 
4 files changed, 79 insertions, 75 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl b/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl index 00ba0e8fad..bc3324f543 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl @@ -48,7 +48,6 @@ vec3 srgb_to_linear(vec3 cs)  	bvec3 lte = lessThanEqual(cs,vec3(0.04045));  	return mix(high_range, low_range, lte); -  }  vec3 linear_to_srgb(vec3 cl) @@ -59,6 +58,4 @@ vec3 linear_to_srgb(vec3 cl)  	bvec3 lt = lessThan(cl,vec3(0.0031308));  	return mix(high_range, low_range, lt); -  } - diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index 73f6d9fec3..69543b93ea 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -41,15 +41,6 @@ uniform sampler2D bumpMap2;  uniform float blend_factor;  uniform sampler2D screenTex;  uniform sampler2D refTex; -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; -uniform sampler2D noiseMap; - -uniform mat4 shadow_matrix[6]; -uniform vec4 shadow_clip; -  uniform float sunAngle;  uniform float sunAngle2;  uniform vec3 lightDir; diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index a3886b916a..cabfd3d2eb 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -483,6 +483,8 @@ void LLViewerShaderMgr::setShaders()          S32 shadow_detail            = gSavedSettings.getS32("RenderShadowDetail");          bool useRenderDeferred       = canRenderDeferred && gSavedSettings.getBOOL("RenderDeferred") && gSavedSettings.getBOOL("RenderAvatarVP");          bool doingWindLight          = hasWindLightShaders && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); +        bool useAdvancedAtmospherics = doingWindLight && gSavedSettings.getBOOL("RenderUseAdvancedAtmospherics"); +        (void)useAdvancedAtmospherics;  		//using shaders, disable fixed function  		LLGLSLShader::sNoFixedFunction = true; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e605f5b420..b8de59b6b8 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -951,8 +951,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)  		{  			for (U32 i = 0; i < 4; i++)  			{ -				mShadow[i].release(); -				mShadowOcclusion[i].release(); +                releaseShadowTarget(i);  			}  		} @@ -990,8 +989,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)  		{  			for (U32 i = 4; i < 6; i++)  			{ -				mShadow[i].release(); -				mShadowOcclusion[i].release(); +                releaseShadowTarget(i);  			}  		} @@ -1005,11 +1003,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)  	{  		mDeferredLight.release(); -		for (U32 i = 0; i < 6; i++) -		{ -			mShadow[i].release(); -			mShadowOcclusion[i].release(); -		} +		releaseShadowTargets();  		mFXAABuffer.release();  		mScreen.release();  		mDeferredScreen.release(); //make sure to release any render targets that share a depth buffer with mDeferredScreen first @@ -1206,11 +1200,7 @@ void LLPipeline::releaseScreenBuffers()  	mDeferredLight.release();  	mOcclusionDepth.release(); -	for (U32 i = 0; i < 6; i++) -	{ -		mShadow[i].release(); -		mShadowOcclusion[i].release(); -	} +	releaseShadowTargets();  	mInscatter.release();  } @@ -8326,20 +8316,24 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 n  	for (U32 i = 0; i < 4; i++)  	{ -		channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_TEXTURE); -		stop_glerror(); -		if (channel > -1) -		{ -			stop_glerror(); -			gGL.getTexUnit(channel)->bind(&mShadow[i], TRUE); -			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); -			gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); -			stop_glerror(); +        LLRenderTarget* shadow_target = getShadowTarget(i); +        if (shadow_target) +        { +		    channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_TEXTURE); +		    stop_glerror(); +		    if (channel > -1) +		    { +			    stop_glerror(); +			    gGL.getTexUnit(channel)->bind(getShadowTarget(i), TRUE); +			    gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); +			    gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); +			    stop_glerror(); -			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB); -			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL); -			stop_glerror(); -		} +			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB); +			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL); +			    stop_glerror(); +		    } +        }  	}  	for (U32 i = 4; i < 6; i++) @@ -8349,14 +8343,18 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 n  		if (channel > -1)  		{  			stop_glerror(); -			gGL.getTexUnit(channel)->bind(&mShadow[i], TRUE); -			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); -			gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); -			stop_glerror(); +            LLRenderTarget* shadow_target = getShadowTarget(i); +            if (shadow_target) +            { +			    gGL.getTexUnit(channel)->bind(shadow_target, TRUE); +			    gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); +			    gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); +			    stop_glerror(); -			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB); -			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL); -			stop_glerror(); +			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB); +			    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL); +			    stop_glerror(); +            }  		}  	} @@ -10849,9 +10847,13 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  		for (S32 j = 0; j < 4; j++)  		{ -			mShadow[j].bindTarget(); -			mShadow[j].clear(); -			mShadow[j].flush(); +            LLRenderTarget* shadow_target = getShadowTarget(j); +            if (shadow_target) +            { +			    shadow_target->bindTarget(); +			    shadow_target->clear(); +			    shadow_target->flush(); +            }  		}  	}  	else @@ -10917,12 +10919,16 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  					mShadowCamera[j+4] = shadow_cam;  				} -				mShadow[j].bindTarget(); -				{ -					LLGLDepthTest depth(GL_TRUE); -					mShadow[j].clear(); -				} -				mShadow[j].flush(); +                LLRenderTarget* shadow_target = getShadowTarget(j); +                if (shadow_target) +                { +				    shadow_target->bindTarget(); +				    { +					    LLGLDepthTest depth(GL_TRUE); +					    shadow_target->clear(); +				    } +				    shadow_target->flush(); +                }  				mShadowError.mV[j] = 0.f;  				mShadowFOV.mV[j] = 0.f; @@ -11211,20 +11217,24 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  			stop_glerror(); -			mShadow[j].bindTarget(); -			mShadow[j].getViewport(gGLViewport); -			mShadow[j].clear(); -		 -			U32 target_width = mShadow[j].getWidth(); +            LLRenderTarget* shadow_target = getShadowTarget(j); -			{ -				static LLCullResult result[4]; +            if (shadow_target) +            { +			    shadow_target->bindTarget(); +			    shadow_target->getViewport(gGLViewport); +			    shadow_target->clear();			 -				renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE, TRUE, target_width); -			} +			    U32 target_width = shadow_target->getWidth(); + +			    { +				    static LLCullResult result[4]; +				    renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE, TRUE, target_width); +			    } + +			    shadow_target->flush(); +            } -			mShadow[j].flush(); -   			if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))  			{  				LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE); @@ -11357,19 +11367,23 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  			stop_glerror(); -			mShadow[i+4].bindTarget(); -			mShadow[i+4].getViewport(gGLViewport); -			mShadow[i+4].clear(); - -			U32 target_width = mShadow[i+4].getWidth(); +            LLRenderTarget* shadow_target = getShadowTarget(i + 4); -			static LLCullResult result[2]; +            if (shadow_target) +            { +			    shadow_target->bindTarget(); +			    shadow_target->getViewport(gGLViewport); +			    shadow_target->clear(); +             +                U32 target_width = shadow_target->getWidth(); -			LLViewerCamera::sCurCameraID = (LLViewerCamera::eCameraID)(LLViewerCamera::CAMERA_SHADOW0 + i + 4); +			    static LLCullResult result[2]; +			    LLViewerCamera::sCurCameraID = (LLViewerCamera::eCameraID)(LLViewerCamera::CAMERA_SHADOW0 + i + 4); -			renderShadow(view[i+4], proj[i+4], shadow_cam, result[i], FALSE, FALSE, target_width); +			    renderShadow(view[i+4], proj[i+4], shadow_cam, result[i], FALSE, FALSE, target_width); -			mShadow[i+4].flush(); +			    shadow_target->flush(); +            }   		}  	}  	else  | 
