diff options
| author | Graham Madarasz (Graham) <graham@lindenlab.com> | 2013-07-11 16:21:23 -0700 | 
|---|---|---|
| committer | Graham Madarasz (Graham) <graham@lindenlab.com> | 2013-07-11 16:21:23 -0700 | 
| commit | fbf3d8b78137a5229ccfabd1e42a0712d92b061f (patch) | |
| tree | 54be4abc8d7ca079be78f65d9f9b39a0da54d009 /indra/newview | |
| parent | d7856f09999206be489183f52ae2f33020a68538 (diff) | |
NORSPEC-291 WIP materials underwater with haze, reflection broken, water dist broken
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/materialF.glsl | 37 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/materialV.glsl | 1 | ||||
| -rwxr-xr-x | indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl | 15 | ||||
| -rwxr-xr-x | indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl | 9 | ||||
| -rwxr-xr-x | indra/newview/lldrawpoolalpha.cpp | 6 | ||||
| -rwxr-xr-x | indra/newview/lldrawpoolavatar.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolmaterials.cpp | 9 | ||||
| -rwxr-xr-x | indra/newview/lldrawpoolsky.cpp | 3 | ||||
| -rwxr-xr-x | indra/newview/lldrawpoolwlsky.cpp | 5 | ||||
| -rwxr-xr-x | indra/newview/llviewerdisplay.cpp | 11 | ||||
| -rwxr-xr-x | indra/newview/llviewershadermgr.cpp | 50 | ||||
| -rwxr-xr-x | indra/newview/llviewershadermgr.h | 3 | ||||
| -rwxr-xr-x | indra/newview/pipeline.cpp | 2 | 
13 files changed, 70 insertions, 96 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 393074344b..9ce4d89df7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -136,20 +136,15 @@ uniform vec3 light_attenuation[8];  uniform vec3 light_diffuse[8];  #ifdef WATER_FOG -vec3 getPositionEye() -{ -	return vary_PositionEye; -} -  uniform vec4 waterPlane;  uniform vec4 waterFogColor;  uniform float waterFogDensity;  uniform float waterFogKS; -vec4 applyWaterFogDeferred(vec4 color) +vec4 applyWaterFogDeferred(vec3 pos, vec4 color)  {  	//normalize view vector -	vec3 view = normalize(getPositionEye()); +	vec3 view = normalize(pos);  	float es = -(dot(view, waterPlane.xyz));  	//find intersection point with water plane and eye vector @@ -160,7 +155,7 @@ vec4 applyWaterFogDeferred(vec4 color)  	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);  	//get object depth -	float depth = length(getPositionEye() - int_v); +	float depth = length(pos - int_v);  	//get "thickness" of water  	float l = max(depth, 0.1); @@ -463,21 +458,6 @@ out vec4 frag_data[3];  #else  #define frag_data gl_FragData  #endif - -VARYING vec3 vary_position; - -#ifdef WATER_FOG -vec3 vary_PositionEye; -vec3 getPositionEye() -{ -	return vary_PositionEye; -} -void setPositionEye(vec3 e) -{ -	vary_PositionEye = e; -} -#endif -  #endif  uniform sampler2D diffuseMap; @@ -749,15 +729,18 @@ void main()  	float al = max(diffcol.a,glare)*vertex_color.a;  #ifdef WATER_FOG -	frag_color = applyWaterFogDeferred(vec4(col.rgb, al)); -#else +	vec4 temp = applyWaterFogDeferred(pos, vec4(col.rgb, al)); +	col.rgb = temp.rgb; +	al = temp.a; +#endif +  	frag_color.rgb = col.rgb;  	frag_color.a   = al; -#endif  #else  	frag_data[0] = final_color;  	frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent.  	frag_data[2] = final_normal; // XY = Normal.  Z = Env. intensity. -#endif% +#endif  } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl index 154db09583..e44a6fcec8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl @@ -141,3 +141,4 @@ vary_normal  = n;  #endif  #endif  } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 1706d41da0..953f0189f0 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -133,6 +133,7 @@ vec3 getPositionEye()  {  	return vary_PositionEye;  } +  vec3 getSunlitColor()  {  	return vary_SunlitColor; @@ -182,10 +183,10 @@ uniform vec4 waterFogColor;  uniform float waterFogDensity;  uniform float waterFogKS; -vec4 applyWaterFogDeferred(vec4 color) +vec4 applyWaterFogDeferred(vec3 pos, vec4 color)  {  	//normalize view vector -	vec3 view = normalize(getPositionEye()); +	vec3 view = normalize(pos);  	float es = -(dot(view, waterPlane.xyz));  	//find intersection point with water plane and eye vector @@ -196,7 +197,7 @@ vec4 applyWaterFogDeferred(vec4 color)  	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);  	//get object depth -	float depth = length(getPositionEye() - int_v); +	float depth = length(pos - int_v);  	//get "thickness" of water  	float l = max(depth, 0.1); @@ -435,13 +436,14 @@ void main()  		if (norm.w < 0.5)  		{  			col = mix(atmosLighting(col), fullbrightAtmosTransport(col), diffuse.a); -			col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a);  			#ifdef WATER_FOG -				vec4 fogged = applyWaterFogDeferred(vec4(col, bloom)); +				vec4 fogged = applyWaterFogDeferred(pos,vec4(col, bloom));  				col = fogged.rgb;  				bloom = fogged.a;  			#endif + +			col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a);			  		}  		col = srgb_to_linear(col); @@ -450,6 +452,7 @@ void main()  		//col.g = envIntensity;  	} -	frag_color.rgb = col; +	frag_color.rgb = col.rgb;  	frag_color.a = bloom;  } + diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 06447261b4..4464358b1e 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -133,6 +133,13 @@ vec4 getPosition(vec2 pos_screen)  	return getPosition_d(pos_screen, depth);  } +#ifdef WATER_FOG +vec3 getPositionEye(); +vec3 getSunlitColor(); +vec3 getAmblitColor(); +vec3 getAdditiveColor(); +vec3 getAtmosAttenuation(); +#else  vec3 getPositionEye()  {  	return vary_PositionEye; @@ -153,6 +160,7 @@ vec3 getAtmosAttenuation()  {  	return vary_AtmosAttenuation;  } +#endif  void setPositionEye(vec3 v)  { @@ -421,3 +429,4 @@ void main()  	frag_color.rgb = col;  	frag_color.a = bloom;  } + diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 737da2e209..e53c783161 100755 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -405,6 +405,11 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)  					llassert(mask < LLMaterial::SHADER_COUNT);  					target_shader = &(gDeferredMaterialProgram[mask]); +					if (LLPipeline::sUnderWaterRender) +					{ +						target_shader = &(gDeferredMaterialWaterProgram[mask]); +					} +  					if (current_shader != target_shader)  					{  						gPipeline.bindDeferredShader(*target_shader); @@ -554,3 +559,4 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)  		gPipeline.enableLightsDynamic();  	}  } + diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 45abb87bad..3815548dba 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -297,14 +297,12 @@ void LLDrawPoolAvatar::beginDeferredRiggedMaterialAlpha(S32 pass)  	pass += LLMaterial::SHADER_COUNT; +	sVertexProgram = &gDeferredMaterialProgram[pass]; +  	if (LLPipeline::sUnderWaterRender)  	{  		sVertexProgram = &(gDeferredMaterialWaterProgram[pass]);  	} -	else -	{ -		sVertexProgram = &(gDeferredMaterialProgram[pass]); -	}  	gPipeline.bindDeferredShader(*sVertexProgram);  	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); @@ -1099,14 +1097,13 @@ void LLDrawPoolAvatar::beginDeferredRiggedMaterial(S32 pass)  	{ //skip alpha passes  		return;  	} +	sVertexProgram = &gDeferredMaterialProgram[pass+LLMaterial::SHADER_COUNT]; +  	if (LLPipeline::sUnderWaterRender)  	{ -		sVertexProgram = &gDeferredMaterialWaterProgram[pass+LLMaterial::SHADER_COUNT]; -	} -	else -	{ -		sVertexProgram = &gDeferredMaterialProgram[pass+LLMaterial::SHADER_COUNT]; +		sVertexProgram = &(gDeferredMaterialWaterProgram[pass]);  	} +  	sVertexProgram->bind();  	normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::BUMP_MAP);  	specular_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::SPECULAR_MAP); diff --git a/indra/newview/lldrawpoolmaterials.cpp b/indra/newview/lldrawpoolmaterials.cpp index 49619e6b1d..d1b5080650 100644 --- a/indra/newview/lldrawpoolmaterials.cpp +++ b/indra/newview/lldrawpoolmaterials.cpp @@ -71,15 +71,13 @@ void LLDrawPoolMaterials::beginDeferredPass(S32 pass)  		15, //LLRenderPass::PASS_NORMSPEC_GLOW,  	}; +	mShader = &(gDeferredMaterialProgram[shader_idx[pass]]); +  	if (LLPipeline::sUnderWaterRender)  	{  		mShader = &(gDeferredMaterialWaterProgram[shader_idx[pass]]);  	} -	else -	{ -		mShader = &(gDeferredMaterialProgram[shader_idx[pass]]); -	} -	 +  	mShader->bind();  	diffuse_channel = mShader->enableTexture(LLShaderMgr::DIFFUSE_MAP); @@ -223,3 +221,4 @@ void LLDrawPoolMaterials::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture,  		gGL.matrixMode(LLRender::MM_MODELVIEW);  	}  } + diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index d36b9ace94..ef8bdc3304 100755 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -77,7 +77,7 @@ void LLDrawPoolSky::render(S32 pass)  	}  	// don't render sky under water (background just gets cleared to fog color) -	if(mVertexShaderLevel > 0 /*&& !LLPipeline::sRenderDeferred*/ && LLPipeline::sUnderWaterRender) +	if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender)  	{  		return;  	} @@ -155,3 +155,4 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side)  void LLDrawPoolSky::endRenderPass( S32 pass )  {  } + diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 56b58aaeb4..53339222eb 100755 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -99,12 +99,12 @@ LLViewerTexture *LLDrawPoolWLSky::getDebugTexture()  void LLDrawPoolWLSky::beginRenderPass( S32 pass )  {  	sky_shader = -		(LLPipeline::sUnderWaterRender /*&& !LLPipeline::sRenderDeferred*/) ? +		LLPipeline::sUnderWaterRender ?  			&gObjectFullbrightNoColorWaterProgram :  			&gWLSkyProgram;  	cloud_shader = -			(LLPipeline::sUnderWaterRender /*&& !LLPipeline::sRenderDeferred*/) ? +			LLPipeline::sUnderWaterRender ?  				&gObjectFullbrightNoColorWaterProgram :  				&gWLCloudProgram;  } @@ -420,3 +420,4 @@ void LLDrawPoolWLSky::restoreGL()  		sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE);  	}  } + diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index d9fd171b4e..bbebeea3e0 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -893,15 +893,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  			if (LLPipeline::sRenderDeferred)  			{  				gPipeline.mDeferredScreen.bindTarget(); -				if (LLPipeline::sUnderWaterRender) -				{ -					const LLColor4 &col = LLDrawPoolWater::sWaterFogColor; -					glClearColor(col.mV[0], col.mV[1], col.mV[2], 0.f); -				} -				else -				{ -					glClearColor(1,0,1,1); -				}				 +				glClearColor(1,0,1,1);  				gPipeline.mDeferredScreen.clear();  			}  			else @@ -1631,3 +1623,4 @@ void display_cleanup()  {  	gDisconnectedImagep = NULL;  } + diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 88593346c0..3df8115402 100755 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -168,7 +168,6 @@ LLGLSLShader			gPostNightVisionProgram;  // Deferred rendering shaders  LLGLSLShader			gDeferredImpostorProgram;  LLGLSLShader			gDeferredWaterProgram; -LLGLSLShader			gDeferredUnderWaterProgram;  LLGLSLShader			gDeferredDiffuseProgram;  LLGLSLShader			gDeferredDiffuseAlphaMaskProgram;  LLGLSLShader			gDeferredNonIndexedDiffuseProgram; @@ -285,21 +284,21 @@ LLViewerShaderMgr::LLViewerShaderMgr() :  	mShaderList.push_back(&gDeferredSoftenProgram);  	mShaderList.push_back(&gDeferredSoftenWaterProgram);  	mShaderList.push_back(&gDeferredMaterialProgram[1]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[1]);  	mShaderList.push_back(&gDeferredMaterialProgram[5]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[5]);  	mShaderList.push_back(&gDeferredMaterialProgram[9]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[9]);  	mShaderList.push_back(&gDeferredMaterialProgram[13]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[13]);  	mShaderList.push_back(&gDeferredMaterialProgram[1+LLMaterial::SHADER_COUNT]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[1+LLMaterial::SHADER_COUNT]);  	mShaderList.push_back(&gDeferredMaterialProgram[5+LLMaterial::SHADER_COUNT]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT]);  	mShaderList.push_back(&gDeferredMaterialProgram[9+LLMaterial::SHADER_COUNT]); -	mShaderList.push_back(&gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT]);  	mShaderList.push_back(&gDeferredMaterialProgram[13+LLMaterial::SHADER_COUNT]);	 -	mShaderList.push_back(&gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[1]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[5]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[9]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[13]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[1+LLMaterial::SHADER_COUNT]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT]); +	mShaderList.push_back(&gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT]);	  	mShaderList.push_back(&gDeferredAlphaProgram);  	mShaderList.push_back(&gDeferredSkinnedAlphaProgram);  	mShaderList.push_back(&gDeferredFullbrightProgram); @@ -1154,7 +1153,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredPostGammaCorrectProgram.unload();  		gFXAAProgram.unload();  		gDeferredWaterProgram.unload(); -		gDeferredUnderWaterProgram.unload();  		gDeferredWLSkyProgram.unload();  		gDeferredWLCloudProgram.unload();  		gDeferredStarProgram.unload(); @@ -1332,7 +1330,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		if (success)  		{ -			gDeferredMaterialProgram[i].mName = llformat("Deferred Material Shader %d", i); +			gDeferredMaterialWaterProgram[i].mName = llformat("Deferred Underwater Material Shader %d", i);  			U32 alpha_mode = i & 0x3; @@ -1340,23 +1338,22 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  			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].mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; +			gDeferredMaterialWaterProgram[i].mShaderGroup = LLGLSLShader::SG_WATER; +  			gDeferredMaterialWaterProgram[i].addPermutation("HAS_NORMAL_MAP", i & 0x8? "1" : "0");  			gDeferredMaterialWaterProgram[i].addPermutation("HAS_SPECULAR_MAP", i & 0x4 ? "1" : "0");  			gDeferredMaterialWaterProgram[i].addPermutation("DIFFUSE_ALPHA_MODE", llformat("%d", alpha_mode));  			gDeferredMaterialWaterProgram[i].addPermutation("HAS_SUN_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0");  			bool has_skin = i & 0x10;  			gDeferredMaterialWaterProgram[i].addPermutation("HAS_SKIN",has_skin ? "1" : "0"); -  			gDeferredMaterialWaterProgram[i].addPermutation("WATER_FOG","1"); -			gDeferredMaterialWaterProgram[i].mFeatures.hasWaterFog = true; -			gDeferredMaterialWaterProgram[i].mShaderGroup = SHADER_WATER;  			if (has_skin)  			{  				gDeferredMaterialWaterProgram[i].mFeatures.hasObjectSkinning = true;  			} -			success = gDeferredMaterialWaterProgram[i].createShader(NULL, NULL); +			success = gDeferredMaterialWaterProgram[i].createShader(NULL, NULL);//&mWLUniforms);  		}  	} @@ -1377,6 +1374,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true;  	gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true;  	gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; +  	if (success)  	{ @@ -1644,21 +1642,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	if (success)  	{ -		// load water shader -		/*gDeferredUnderWaterProgram.mName = "Deferred Under Water Shader"; -		gDeferredUnderWaterProgram.mFeatures.calculatesAtmospherics = true; -		gDeferredUnderWaterProgram.mFeatures.hasGamma = 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.mShaderLevel = mVertexShaderLevel[SHADER_WATER]; -		gDeferredUnderWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; - -		success = gDeferredUnderWaterProgram.createShader(NULL, &mWaterUniforms);*/ -	} - -	if (success) -	{  		gDeferredSoftenProgram.mName = "Deferred Soften Shader";  		gDeferredSoftenProgram.mShaderFiles.clear();  		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1677,21 +1660,21 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  	if (success)  	{  		gDeferredSoftenWaterProgram.mName = "Deferred Soften Underwater Shader"; -		gDeferredSoftenWaterProgram.mFeatures.hasWaterFog = true;  		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.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];  		gDeferredSoftenWaterProgram.addPermutation("WATER_FOG", "1"); -		gDeferredSoftenWaterProgram.mShaderGroup = SHADER_WATER; +		gDeferredSoftenWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;  		if (gSavedSettings.getBOOL("RenderDeferredSSAO"))  		{ //if using SSAO, take screen space light map into account as if shadows are enabled  			gDeferredSoftenWaterProgram.mShaderLevel = llmax(gDeferredSoftenWaterProgram.mShaderLevel, 2);  		} -		success = gDeferredSoftenWaterProgram.createShader(NULL, NULL); +		success = gDeferredSoftenWaterProgram.createShader(NULL, &mWLUniforms);  	}  	if (success) @@ -3275,3 +3258,4 @@ LLViewerShaderMgr::shader_iter LLViewerShaderMgr::endShaders() const  {  	return mShaderList.end();  } + diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index 34a0f6b89d..5310076013 100755 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -330,7 +330,6 @@ extern LLGLSLShader			gPostNightVisionProgram;  // Deferred rendering shaders  extern LLGLSLShader			gDeferredImpostorProgram;  extern LLGLSLShader			gDeferredWaterProgram; -extern LLGLSLShader			gDeferredUnderWaterProgram;  extern LLGLSLShader			gDeferredDiffuseProgram;  extern LLGLSLShader			gDeferredDiffuseAlphaMaskProgram;  extern LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskProgram; @@ -380,5 +379,5 @@ extern LLGLSLShader			gNormalMapGenProgram;  // Deferred materials shaders  extern LLGLSLShader			gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2];  extern LLGLSLShader			gDeferredMaterialWaterProgram[LLMaterial::SHADER_COUNT*2]; -  #endif + diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index a44cc73678..c605735170 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8725,8 +8725,6 @@ void LLPipeline::renderDeferredLighting()  						count = 0;   						mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);  						mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); -// seems like this should be done here... -						//unbindDeferredShader(gDeferredMultiLightProgram[idx]);  					}  				} | 
