Deferred has sky and water textures now. Underwater is still borked.
Deferred fastalpha behaves a bit better. Pulled over patch for https://jira.secondlife.com/browse/STORM-336 and https://jira.secondlife.com/browse/STORM-1011 from linden repo Sky rendered using new LL method. Assuming this fixes issues on AMD cards(works on cat 11.2) Added a few things missed related to spatial-parition updating. Added 'SkipReflectOcclusionUpdates' setting that prevents occlusion updates for reflection pass. Less taxing on CPU.
This commit is contained in:
@@ -127,7 +127,8 @@ LLGLSLShader gDeferredFullbrightProgram(LLViewerShaderMgr::SHADER_DEFERRED); /
|
||||
GLint gAvatarMatrixParam;
|
||||
|
||||
LLViewerShaderMgr::LLViewerShaderMgr() :
|
||||
mVertexShaderLevel(SHADER_COUNT, 0)
|
||||
mVertexShaderLevel(SHADER_COUNT, 0),
|
||||
mMaxAvatarShaderLevel(0)
|
||||
{}
|
||||
|
||||
LLViewerShaderMgr::~LLViewerShaderMgr()
|
||||
@@ -253,10 +254,15 @@ S32 LLViewerShaderMgr::getVertexShaderLevel(S32 type)
|
||||
|
||||
void LLViewerShaderMgr::setShaders()
|
||||
{
|
||||
if (!gPipeline.mInitialized || !sInitialized)
|
||||
//setShaders might be called redundantly by gSavedSettings, so return on reentrance
|
||||
static bool reentrance = false;
|
||||
|
||||
if (!gPipeline.mInitialized || !sInitialized || reentrance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
reentrance = true;
|
||||
|
||||
initAttribsAndUniforms();
|
||||
gPipeline.releaseGLBuffers();
|
||||
@@ -269,8 +275,8 @@ void LLViewerShaderMgr::setShaders()
|
||||
}
|
||||
else
|
||||
{
|
||||
LLPipeline::sRenderGlow =
|
||||
LLPipeline::sWaterReflections = FALSE;
|
||||
LLPipeline::sRenderGlow = FALSE;
|
||||
LLPipeline::sWaterReflections = FALSE;
|
||||
}
|
||||
|
||||
//hack to reset buffers that change behavior with shaders
|
||||
@@ -302,6 +308,21 @@ void LLViewerShaderMgr::setShaders()
|
||||
S32 wl_class = 2;
|
||||
S32 water_class = 2;
|
||||
S32 deferred_class = 0;
|
||||
|
||||
if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
gSavedSettings.getBOOL("RenderDeferred"))
|
||||
{
|
||||
deferred_class = 1;
|
||||
|
||||
//make sure framebuffer objects are enabled
|
||||
gSavedSettings.setBOOL("RenderUseFBO", TRUE);
|
||||
|
||||
//make sure hardware skinning is enabled
|
||||
gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
|
||||
|
||||
//make sure atmospheric shaders are enabled
|
||||
gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE);
|
||||
}
|
||||
if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
|
||||
&& gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
|
||||
{
|
||||
@@ -310,11 +331,6 @@ void LLViewerShaderMgr::setShaders()
|
||||
wl_class = 1;
|
||||
}
|
||||
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
deferred_class = 1;
|
||||
}
|
||||
|
||||
if(!gSavedSettings.getBOOL("EnableRippleWater"))
|
||||
{
|
||||
water_class = 0;
|
||||
@@ -428,6 +444,7 @@ void LLViewerShaderMgr::setShaders()
|
||||
gViewerWindow->setCursor(UI_CURSOR_ARROW);
|
||||
}
|
||||
gPipeline.createGLBuffers();
|
||||
reentrance = false;
|
||||
}
|
||||
|
||||
void LLViewerShaderMgr::unloadShaders()
|
||||
|
||||
Reference in New Issue
Block a user