Fixed rigged shaders not loading under certain scenarios.

This commit is contained in:
Shyotl
2011-07-31 19:00:58 -05:00
parent 28568add4c
commit fd50e54a7d

View File

@@ -431,7 +431,6 @@ void LLViewerShaderMgr::setShaders()
// Load all shaders to set max levels
loadShadersEnvironment();
loadShadersWater();
loadShadersObject();
loadShadersWindLight();
loadShadersEffects();
loadShadersInterface();
@@ -440,7 +439,7 @@ void LLViewerShaderMgr::setShaders()
mVertexShaderLevel[SHADER_AVATAR] = 3;
mMaxAvatarShaderLevel = 3;
if (gSavedSettings.getBOOL("RenderAvatarVP"))
if (gSavedSettings.getBOOL("RenderAvatarVP") && loadShadersObject())
{
BOOL avatar_cloth = gSavedSettings.getBOOL("RenderAvatarCloth");
S32 avatar_class = 1;
@@ -474,13 +473,25 @@ void LLViewerShaderMgr::setShaders()
else
{
mVertexShaderLevel[SHADER_AVATAR] = 0;
gSavedSettings.setBOOL("RenderAvatarCloth", FALSE);
mVertexShaderLevel[SHADER_DEFERRED] = 0;
if (gSavedSettings.getBOOL("RenderAvatarVP"))
{
gSavedSettings.setBOOL("RenderDeferred", FALSE);
gSavedSettings.setBOOL("RenderAvatarCloth", FALSE);
gSavedSettings.setBOOL("RenderAvatarVP", FALSE);
}
loadShadersAvatar(); // unloads
loadShadersObject();
}
if (!loadShadersDeferred())
{
gSavedSettings.setBOOL("RenderDeferred", FALSE);
reentrance = false;
setShaders();
return;
}
}
else
@@ -841,7 +852,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (mVertexShaderLevel[SHADER_DEFERRED] == 0)
{
unloadShaderClass(SHADER_DEFERRED);
return FALSE;
return TRUE;
}
mVertexShaderLevel[SHADER_AVATAR] = 1;
@@ -1045,7 +1056,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
std::string fragment;
//Keep this! Fixes shadow softening with ssao off.
if (mVertexShaderLevel[SHADER_DEFERRED] < 2 && !gSavedSettings.getBOOL("RenderDeferredSSAO"))
{
fragment = "deferred/softenLightNoSSAOF.glsl";
@@ -1083,6 +1095,20 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAvatarShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredAvatarShadowProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
}
#if MESH_ENABLED
if (success)
{
gDeferredAttachmentShadowProgram.mName = "Deferred Attachment Shadow Shader";
gDeferredAttachmentShadowProgram.mFeatures.hasObjectSkinning = true;
gDeferredAttachmentShadowProgram.mShaderFiles.clear();
gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredAttachmentShadowProgram.mShaderFiles.push_back(make_pair("deferred/attachmentShadowF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredAttachmentShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredAttachmentShadowProgram.createShader(NULL, NULL);
}
#endif //MESH_ENABLED
if (success)
{
gTerrainProgram.mName = "Deferred Terrain Shader";
@@ -1216,7 +1242,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (mVertexShaderLevel[SHADER_OBJECT] == 0)
{
unloadShaderClass(SHADER_OBJECT);
return FALSE;
return TRUE;
}
if (success)