diff options
Diffstat (limited to 'indra/newview/lldrawpoolwater.cpp')
-rw-r--r-- | indra/newview/lldrawpoolwater.cpp | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 6e372b6f76..fd66d58851 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -28,6 +28,7 @@ #include "llworld.h" #include "pipeline.h" #include "viewer.h" // gSunTextureID, gMoonTextureID +#include "llglslshader.h" const LLUUID WATER_TEST("2bfd3884-7e27-69b9-ba3a-3e673f680004"); @@ -71,12 +72,9 @@ LLDrawPool *LLDrawPoolWater::instancePool() void LLDrawPoolWater::prerender() { -#if 1 // 1.9.1 mVertexShaderLevel = gSavedSettings.getBOOL("RenderRippleWater") ? - gPipeline.getVertexShaderLevel(LLPipeline::SHADER_ENVIRONMENT) : 0; -#else - mVertexShaderLevel = gPipeline.getVertexShaderLevel(LLPipeline::SHADER_ENVIRONMENT); -#endif + LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_ENVIRONMENT) : 0; + } extern LLColor4U MAX_WATER_COLOR; @@ -319,7 +317,7 @@ void LLDrawPoolWater::renderShaderSimple() glEnableClientState(GL_NORMAL_ARRAY); // Set up second pass first - S32 bumpTex = gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_BUMP_MAP); + S32 bumpTex = gWaterProgram.enableTexture(LLShaderMgr::BUMP_MAP); mWaterImagep->addTextureStats(1024.f*1024.f); mWaterImagep->bind(bumpTex); @@ -368,7 +366,7 @@ void LLDrawPoolWater::renderShaderSimple() if (gSky.mVOSkyp->getCubeMap()) { - envTex = gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); + envTex = gWaterProgram.enableTexture(LLShaderMgr::ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); gSky.mVOSkyp->getCubeMap()->bind(); glMatrixMode(GL_TEXTURE); @@ -382,9 +380,9 @@ void LLDrawPoolWater::renderShaderSimple() glMatrixMode(GL_MODELVIEW); } - S32 diffTex = gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_DIFFUSE_MAP); + S32 diffTex = gWaterProgram.enableTexture(LLShaderMgr::DIFFUSE_MAP); - gPipeline.mWaterProgram.bind(); + gWaterProgram.bind(); for (std::vector<LLFace*>::iterator iter = mDrawFace.begin(); iter != mDrawFace.end(); iter++) @@ -401,21 +399,21 @@ void LLDrawPoolWater::renderShaderSimple() if (gSky.mVOSkyp->getCubeMap()) { - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); + gWaterProgram.disableTexture(LLShaderMgr::ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); } // Now, disable texture coord generation on texture state 1 - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_BUMP_MAP); + gWaterProgram.disableTexture(LLShaderMgr::BUMP_MAP); LLImageGL::unbindTexture(bumpTex, GL_TEXTURE_2D); glActiveTextureARB(GL_TEXTURE1_ARB); glDisable(GL_TEXTURE_GEN_S); //texture unit 1 glDisable(GL_TEXTURE_GEN_T); //texture unit 1 - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_DIFFUSE_MAP); + gWaterProgram.disableTexture(LLShaderMgr::DIFFUSE_MAP); // Disable texture coordinate and color arrays LLImageGL::unbindTexture(diffTex, GL_TEXTURE_2D); @@ -546,17 +544,17 @@ void LLDrawPoolWater::shade() LLCubeMap* skyMap = gSky.mVOSkyp->getCubeMap(); - gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); + gWaterProgram.enableTexture(LLShaderMgr::ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); skyMap->bind(); //bind normal map - S32 bumpTex = gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_BUMP_MAP); + S32 bumpTex = gWaterProgram.enableTexture(LLShaderMgr::BUMP_MAP); mWaterNormp->addTextureStats(1024.f*1024.f); mWaterNormp->bind(bumpTex); - gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_WATER_SCREENTEX); + gWaterProgram.enableTexture(LLShaderMgr::WATER_SCREENTEX); - gPipeline.mWaterProgram.bind(); + gWaterProgram.bind(); if (!sSkipScreenCopy) { @@ -567,20 +565,20 @@ void LLDrawPoolWater::shade() glBindTexture(GL_TEXTURE_2D, 0); } - glUniform2fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_FBSCALE], 1, + glUniform2fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_FBSCALE], 1, gPipeline.mScreenScale.mV); - S32 diffTex = gPipeline.mWaterProgram.enableTexture(LLPipeline::GLSL_DIFFUSE_MAP); + S32 diffTex = gWaterProgram.enableTexture(LLShaderMgr::DIFFUSE_MAP); LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - glUniform1fARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_TIME], sTime); - glUniform3fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_SPECULAR], 1, light_diffuse.mV); - glUniform1fARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_SPECULAR_EXP], light_exp); - glUniform3fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_EYEVEC], 1, gCamera->getOrigin().mV); - glUniform2fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_WAVE_DIR1], 1, d1.mV); - glUniform2fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_WAVE_DIR2], 1, d2.mV); - glUniform3fvARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_LIGHT_DIR], 1, light_dir.mV); + glUniform1fARB(gWaterProgram.mUniform[LLShaderMgr::WATER_TIME], sTime); + glUniform3fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_SPECULAR], 1, light_diffuse.mV); + glUniform1fARB(gWaterProgram.mUniform[LLShaderMgr::WATER_SPECULAR_EXP], light_exp); + glUniform3fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_EYEVEC], 1, gCamera->getOrigin().mV); + glUniform2fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_WAVE_DIR1], 1, d1.mV); + glUniform2fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_WAVE_DIR2], 1, d2.mV); + glUniform3fvARB(gWaterProgram.mUniform[LLShaderMgr::WATER_LIGHT_DIR], 1, light_dir.mV); LLColor4 water_color; LLVector3 camera_up = gCamera->getUpAxis(); @@ -588,12 +586,12 @@ void LLDrawPoolWater::shade() if (gCamera->cameraUnderWater()) { water_color.setVec(1.f, 1.f, 1.f, 0.4f); - glUniform1fARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_REFSCALE], 0.25f); + glUniform1fARB(gWaterProgram.mUniform[LLShaderMgr::WATER_REFSCALE], 0.25f); } else { water_color.setVec(1.f, 1.f, 1.f, 0.5f*(1.f + up_dot)); - glUniform1fARB(gPipeline.mWaterProgram.mUniform[LLPipeline::GLSL_WATER_REFSCALE], 0.01f); + glUniform1fARB(gWaterProgram.mUniform[LLShaderMgr::WATER_REFSCALE], 0.01f); } if (water_color.mV[3] > 0.9f) { @@ -620,10 +618,10 @@ void LLDrawPoolWater::shade() } } - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_WATER_SCREENTEX); - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_BUMP_MAP); - gPipeline.mWaterProgram.disableTexture(LLPipeline::GLSL_DIFFUSE_MAP); + gWaterProgram.disableTexture(LLShaderMgr::ENVIRONMENT_MAP, GL_TEXTURE_CUBE_MAP_ARB); + gWaterProgram.disableTexture(LLShaderMgr::WATER_SCREENTEX); + gWaterProgram.disableTexture(LLShaderMgr::BUMP_MAP); + gWaterProgram.disableTexture(LLShaderMgr::DIFFUSE_MAP); glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); |