merge
commit
bd0b3a2dde
|
|
@ -234,7 +234,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
|
|||
else if (features->isFullbright)
|
||||
{
|
||||
|
||||
if (features->hasWaterFog)
|
||||
if (features->isShiny && features->hasWaterFog)
|
||||
{
|
||||
if (!shader->attachObject("lighting/lightFullbrightShinyWaterF.glsl"))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (features->hasWaterFog)
|
||||
{
|
||||
if (!shader->attachObject("lighting/lightFullbrightWaterF.glsl"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ void LLDrawPoolBump::beginFullbrightShiny()
|
|||
|
||||
if (LLPipeline::sUnderWaterRender)
|
||||
{
|
||||
shader = &gObjectShinyWaterProgram;
|
||||
shader = &gObjectFullbrightShinyWaterProgram;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -149,12 +149,6 @@ void LLDrawPoolSimple::render(S32 pass)
|
|||
LLFastTimer t(FTM_RENDER_SIMPLE);
|
||||
gPipeline.enableLightsDynamic();
|
||||
renderTexture(LLRenderPass::PASS_SIMPLE, getVertexDataMask());
|
||||
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{ //if deferred rendering is enabled, bump faces aren't reigstered as simple
|
||||
//render bump faces here as simple so bump faces will appear under water
|
||||
renderTexture(LLRenderPass::PASS_BUMP, getVertexDataMask());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ LLGLSLShader gObjectFullbrightProgram;
|
|||
LLGLSLShader gObjectFullbrightWaterProgram;
|
||||
|
||||
LLGLSLShader gObjectFullbrightShinyProgram;
|
||||
LLGLSLShader gObjectFullbrightShinyWaterProgram;
|
||||
LLGLSLShader gObjectShinyProgram;
|
||||
LLGLSLShader gObjectShinyWaterProgram;
|
||||
|
||||
|
|
@ -163,6 +164,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
|
|||
mShaderList.push_back(&gObjectSimpleProgram);
|
||||
mShaderList.push_back(&gObjectFullbrightProgram);
|
||||
mShaderList.push_back(&gObjectFullbrightShinyProgram);
|
||||
mShaderList.push_back(&gObjectFullbrightShinyWaterProgram);
|
||||
mShaderList.push_back(&gSkinnedObjectSimpleProgram);
|
||||
mShaderList.push_back(&gSkinnedObjectFullbrightProgram);
|
||||
mShaderList.push_back(&gSkinnedObjectFullbrightShinyProgram);
|
||||
|
|
@ -576,6 +578,7 @@ void LLViewerShaderMgr::unloadShaders()
|
|||
|
||||
gObjectShinyProgram.unload();
|
||||
gObjectFullbrightShinyProgram.unload();
|
||||
gObjectFullbrightShinyWaterProgram.unload();
|
||||
gObjectShinyWaterProgram.unload();
|
||||
|
||||
gSkinnedObjectSimpleProgram.unload();
|
||||
|
|
@ -685,7 +688,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
|
|||
// (in order of shader function call depth for reference purposes, deepest level first)
|
||||
|
||||
shaders.clear();
|
||||
shaders.reserve(12);
|
||||
shaders.reserve(13);
|
||||
shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
|
||||
shaders.push_back( make_pair( "windlight/gammaF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT]) );
|
||||
shaders.push_back( make_pair( "windlight/atmosphericsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
|
||||
|
|
@ -698,6 +701,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
|
|||
shaders.push_back( make_pair( "lighting/lightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
|
||||
shaders.push_back( make_pair( "lighting/lightFullbrightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
|
||||
shaders.push_back( make_pair( "lighting/lightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
|
||||
shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
|
||||
|
||||
for (U32 i = 0; i < shaders.size(); i++)
|
||||
{
|
||||
|
|
@ -1307,6 +1311,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
|
|||
{
|
||||
gObjectShinyProgram.unload();
|
||||
gObjectFullbrightShinyProgram.unload();
|
||||
gObjectFullbrightShinyWaterProgram.unload();
|
||||
gObjectShinyWaterProgram.unload();
|
||||
gObjectSimpleProgram.unload();
|
||||
gObjectSimpleWaterProgram.unload();
|
||||
|
|
@ -1430,6 +1435,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
|
|||
success = gObjectFullbrightShinyProgram.createShader(NULL, &mShinyUniforms);
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
gObjectFullbrightShinyWaterProgram.mName = "Fullbright Shiny Water Shader";
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.calculatesAtmospherics = true;
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.isFullbright = true;
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.isShiny = true;
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.hasGamma = true;
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.hasTransport = true;
|
||||
gObjectFullbrightShinyWaterProgram.mFeatures.hasWaterFog = true;
|
||||
gObjectFullbrightShinyWaterProgram.mShaderFiles.clear();
|
||||
gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gObjectFullbrightShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
|
||||
gObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
|
||||
success = gObjectFullbrightShinyWaterProgram.createShader(NULL, &mShinyUniforms);
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
gSkinnedObjectSimpleProgram.mName = "Skinned Simple Shader";
|
||||
|
|
@ -1541,7 +1563,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
|
|||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
|
||||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.clear();
|
||||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinySkinnedV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gSkinnedObjectFullbrightShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
|
||||
success = gSkinnedObjectFullbrightShinyWaterProgram.createShader(NULL, &mShinyUniforms);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,6 +311,7 @@ extern LLGLSLShader gObjectSimpleLODProgram;
|
|||
extern LLGLSLShader gObjectFullbrightLODProgram;
|
||||
|
||||
extern LLGLSLShader gObjectFullbrightShinyProgram;
|
||||
extern LLGLSLShader gObjectFullbrightShinyWaterProgram;
|
||||
extern LLGLSLShader gObjectShinyProgram;
|
||||
extern LLGLSLShader gObjectShinyWaterProgram;
|
||||
|
||||
|
|
|
|||
|
|
@ -3546,7 +3546,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
facep->mLastVertexBuffer = NULL;
|
||||
}
|
||||
|
||||
facep->setState(LLFace::RIGGED);
|
||||
facep->setState(LLFace::RIGGED);
|
||||
|
||||
//get drawpool of avatar with rigged face
|
||||
LLDrawPoolAvatar* pool = get_avatar_drawpool(vobj);
|
||||
|
|
@ -3585,7 +3585,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
}
|
||||
else
|
||||
{
|
||||
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY);
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SIMPLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_SHINY);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue