diff options
Diffstat (limited to 'indra/newview/llviewershadermgr.cpp')
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index eea0b37c43..b537f6eba8 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -128,7 +128,6 @@ LLGLSLShader gPathfindingNoNormalsProgram; //avatar shader handles LLGLSLShader gAvatarProgram; -LLGLSLShader gAvatarEyeballProgram; LLGLSLShader gImpostorProgram; // Effects Shaders @@ -418,7 +417,6 @@ void LLViewerShaderMgr::finalizeShaderList() //ONLY shaders that need WL Param management should be added here mShaderList.push_back(&gAvatarProgram); mShaderList.push_back(&gWaterProgram); - mShaderList.push_back(&gAvatarEyeballProgram); mShaderList.push_back(&gImpostorProgram); mShaderList.push_back(&gObjectBumpProgram); mShaderList.push_back(&gObjectFullbrightAlphaMaskProgram); @@ -588,6 +586,7 @@ void LLViewerShaderMgr::setShaders() LLPipeline::sRenderGlow = gSavedSettings.getBOOL("RenderGlow"); LLPipeline::RenderAvatarCloth = gSavedSettings.getBOOL("RenderAvatarCloth"); + LLPipeline::sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater"); if (gViewerWindow) { @@ -705,7 +704,7 @@ void LLViewerShaderMgr::setShaders() if (loadShadersObject()) { //hardware skinning is enabled and rigged attachment shaders loaded correctly // cloth is a class3 shader - S32 avatar_class = 1; + constexpr S32 avatar_class = 1; // Set the actual level mShaderLevel[SHADER_AVATAR] = avatar_class; @@ -714,8 +713,11 @@ void LLViewerShaderMgr::setShaders() llassert(loaded); } else - { //hardware skinning not possible, neither is deferred rendering - llassert(false); // SHOULD NOT BE POSSIBLE + { + // SHOULD NOT BE POSSIBLE + // Hardware skinning not possible, neither is deferred rendering + // but both are a hard requirement, viewer will crash without them + LL_ERRS() << "Failed to load object shaders, cannot continue." << LL_ENDL; } } @@ -1011,7 +1013,10 @@ bool LLViewerShaderMgr::loadShadersWater() return loadShadersWater(); } - LLWorld::getInstance()->updateWaterObjects(); + if (LLWorld::instanceExists()) + { + LLWorld::getInstance()->updateWaterObjects(); + } return true; } @@ -3176,14 +3181,6 @@ bool LLViewerShaderMgr::loadShadersAvatar() LL_PROFILE_ZONE_SCOPED; #if 1 // DEPRECATED -- forward rendering is deprecated bool success = true; - - if (mShaderLevel[SHADER_AVATAR] == 0) - { - gAvatarProgram.unload(); - gAvatarEyeballProgram.unload(); - return true; - } - if (success) { gAvatarProgram.mName = "Avatar Shader"; @@ -3207,27 +3204,13 @@ bool LLViewerShaderMgr::loadShadersAvatar() } } - if (success) - { - gAvatarEyeballProgram.mName = "Avatar Eyeball Program"; - gAvatarEyeballProgram.mFeatures.calculatesLighting = true; - gAvatarEyeballProgram.mFeatures.isSpecular = true; - gAvatarEyeballProgram.mFeatures.calculatesAtmospherics = true; - gAvatarEyeballProgram.mFeatures.hasGamma = true; - gAvatarEyeballProgram.mFeatures.hasAtmospherics = true; - gAvatarEyeballProgram.mFeatures.hasLighting = true; - gAvatarEyeballProgram.mFeatures.hasAlphaMask = true; - gAvatarEyeballProgram.mShaderFiles.clear(); - gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballV.glsl", GL_VERTEX_SHADER)); - gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballF.glsl", GL_FRAGMENT_SHADER)); - gAvatarEyeballProgram.mShaderLevel = mShaderLevel[SHADER_AVATAR]; - success = gAvatarEyeballProgram.createShader(); - } - if( !success ) { + // This isn't supposed to fail, otherwise defferred shaders would have failed. + // Is only used for avatar previews (like LLVisualParamHint) mShaderLevel[SHADER_AVATAR] = 0; mMaxAvatarShaderLevel = 0; + LL_WARNS() << "Failed to create avatar shader!" << LL_ENDL; return false; } #endif |
