diff options
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 292 | 
1 files changed, 146 insertions, 146 deletions
| diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index bdd0330cca..5628f257c5 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -392,84 +392,84 @@ S32 LLViewerShaderMgr::getShaderLevel(S32 type)  void LLViewerShaderMgr::setShaders()  { -	//setShaders might be called redundantly by gSavedSettings, so return on reentrance -	static bool reentrance = false; -	 -	if (!gPipeline.mInitialized || !sInitialized || reentrance || sSkipReload) -	{ -		return; -	} +    //setShaders might be called redundantly by gSavedSettings, so return on reentrance +    static bool reentrance = false; +     +    if (!gPipeline.mInitialized || !sInitialized || reentrance || sSkipReload) +    { +        return; +    } -	static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16); -	LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) max_texture_index), 1); +    static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16); +    LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) max_texture_index), 1); -	//NEVER use more than 16 texture channels (work around for prevalent driver bug) -	LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16); +    //NEVER use more than 16 texture channels (work around for prevalent driver bug) +    LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16); -	if (gGLManager.mGLSLVersionMajor < 1 || -		(gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20)) -	{ //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier -		LLGLSLShader::sIndexedTextureChannels = 1; -	} +    if (gGLManager.mGLSLVersionMajor < 1 || +        (gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20)) +    { //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier +        LLGLSLShader::sIndexedTextureChannels = 1; +    } -	reentrance = true; +    reentrance = true; -	if (LLRender::sGLCoreProfile) -	{   -		if (!gSavedSettings.getBOOL("VertexShaderEnable")) -		{ //vertex shaders MUST be enabled to use core profile -			gSavedSettings.setBOOL("VertexShaderEnable", TRUE); -		} -	} -	 -	//setup preprocessor definitions -	LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits); -	 -	// Make sure the compiled shader map is cleared before we recompile shaders. +    if (LLRender::sGLCoreProfile) +    {   +        if (!gSavedSettings.getBOOL("VertexShaderEnable")) +        { //vertex shaders MUST be enabled to use core profile +            gSavedSettings.setBOOL("VertexShaderEnable", TRUE); +        } +    } +     +    //setup preprocessor definitions +    LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits); +     +    // Make sure the compiled shader map is cleared before we recompile shaders.      mVertexShaderObjects.clear();      mFragmentShaderObjects.clear(); -	 -	initAttribsAndUniforms(); -	gPipeline.releaseGLBuffers(); +     +    initAttribsAndUniforms(); +    gPipeline.releaseGLBuffers(); -	if (gSavedSettings.getBOOL("VertexShaderEnable")) -	{ -		LLPipeline::sWaterReflections = gGLManager.mHasCubeMap; -		LLPipeline::sRenderGlow = gSavedSettings.getBOOL("RenderGlow");  -		LLPipeline::updateRenderDeferred(); -	} -	else -	{ -		LLPipeline::sRenderGlow = FALSE; -		LLPipeline::sWaterReflections = FALSE; -	} -	 -	//hack to reset buffers that change behavior with shaders -	gPipeline.resetVertexBuffers(); +    if (gSavedSettings.getBOOL("VertexShaderEnable")) +    { +        LLPipeline::sWaterReflections = gGLManager.mHasCubeMap; +        LLPipeline::sRenderGlow = gSavedSettings.getBOOL("RenderGlow");  +        LLPipeline::updateRenderDeferred(); +    } +    else +    { +        LLPipeline::sRenderGlow = FALSE; +        LLPipeline::sWaterReflections = FALSE; +    } +     +    //hack to reset buffers that change behavior with shaders +    gPipeline.resetVertexBuffers(); -	if (gViewerWindow) -	{ -		gViewerWindow->setCursor(UI_CURSOR_WAIT); -	} +    if (gViewerWindow) +    { +        gViewerWindow->setCursor(UI_CURSOR_WAIT); +    } -	// Lighting -	gPipeline.setLightingDetail(-1); +    // Lighting +    gPipeline.setLightingDetail(-1); -	// Shaders -	LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL; -	LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << LL_ENDL; +    // Shaders +    LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL; +    LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << LL_ENDL; -	for (S32 i = 0; i < SHADER_COUNT; i++) -	{ -		mShaderLevel[i] = 0; -	} -	mMaxAvatarShaderLevel = 0; +    for (S32 i = 0; i < SHADER_COUNT; i++) +    { +        mShaderLevel[i] = 0; +    } +    mMaxAvatarShaderLevel = 0; -	LLGLSLShader::sNoFixedFunction = false; -	LLVertexBuffer::unbind(); -	if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")  -		&& (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10) -		&& gSavedSettings.getBOOL("VertexShaderEnable")) +    LLGLSLShader::sNoFixedFunction = false; +    LLVertexBuffer::unbind(); +    if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")  +        && (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10) +        && gSavedSettings.getBOOL("VertexShaderEnable"))      {          bool canRenderDeferred       = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");          bool hasWindLightShaders     = LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"); @@ -477,24 +477,24 @@ void LLViewerShaderMgr::setShaders()          bool useRenderDeferred       = canRenderDeferred && gSavedSettings.getBOOL("RenderDeferred") && gSavedSettings.getBOOL("RenderAvatarVP");          bool doingWindLight          = hasWindLightShaders && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); -		//using shaders, disable fixed function -		LLGLSLShader::sNoFixedFunction = true; +        //using shaders, disable fixed function +        LLGLSLShader::sNoFixedFunction = true; -		S32 light_class = 3; +        S32 light_class = 3;          S32 interface_class = 2; -		S32 env_class = 2; -		S32 obj_class = 2; -		S32 effect_class = 2; -		S32 wl_class = 1; -		S32 water_class = 2; -		S32 deferred_class = 0; -		S32 transform_class = gGLManager.mHasTransformFeedback ? 1 : 0; - -		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false); -		if (!use_transform_feedback) -		{ -			transform_class = 0; -		} +        S32 env_class = 2; +        S32 obj_class = 2; +        S32 effect_class = 2; +        S32 wl_class = 1; +        S32 water_class = 2; +        S32 deferred_class = 0; +        S32 transform_class = gGLManager.mHasTransformFeedback ? 1 : 0; + +        static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false); +        if (!use_transform_feedback) +        { +            transform_class = 0; +        }          if (useRenderDeferred)          { @@ -527,55 +527,55 @@ void LLViewerShaderMgr::setShaders()              light_class = 2;          } -		// Trigger a full rebuild of the fallback skybox / cubemap if we've toggled windlight shaders -		if (!wl_class || (mShaderLevel[SHADER_WINDLIGHT] != wl_class && gSky.mVOSkyp.notNull())) -		{ -			gSky.mVOSkyp->forceSkyUpdate(); -		} +        // Trigger a full rebuild of the fallback skybox / cubemap if we've toggled windlight shaders +        if (!wl_class || (mShaderLevel[SHADER_WINDLIGHT] != wl_class && gSky.mVOSkyp.notNull())) +        { +            gSky.mVOSkyp->forceSkyUpdate(); +        } -		// Load lighting shaders -		mShaderLevel[SHADER_LIGHTING] = light_class; -		mShaderLevel[SHADER_INTERFACE] = interface_class; -		mShaderLevel[SHADER_ENVIRONMENT] = env_class; -		mShaderLevel[SHADER_WATER] = water_class; -		mShaderLevel[SHADER_OBJECT] = obj_class; -		mShaderLevel[SHADER_EFFECT] = effect_class; -		mShaderLevel[SHADER_WINDLIGHT] = wl_class; -		mShaderLevel[SHADER_DEFERRED] = deferred_class; -		mShaderLevel[SHADER_TRANSFORM] = transform_class; +        // Load lighting shaders +        mShaderLevel[SHADER_LIGHTING] = light_class; +        mShaderLevel[SHADER_INTERFACE] = interface_class; +        mShaderLevel[SHADER_ENVIRONMENT] = env_class; +        mShaderLevel[SHADER_WATER] = water_class; +        mShaderLevel[SHADER_OBJECT] = obj_class; +        mShaderLevel[SHADER_EFFECT] = effect_class; +        mShaderLevel[SHADER_WINDLIGHT] = wl_class; +        mShaderLevel[SHADER_DEFERRED] = deferred_class; +        mShaderLevel[SHADER_TRANSFORM] = transform_class;          BOOL loaded = loadBasicShaders(); -		if (loaded) -		{ -			LL_INFOS() << "Loaded basic shaders." << LL_ENDL; -		} -		else -		{ -			LL_WARNS() << "Failed to load basic shaders." << LL_ENDL; -			llassert(loaded); -		} +        if (loaded) +        { +            LL_INFOS() << "Loaded basic shaders." << LL_ENDL; +        } +        else +        { +            LL_WARNS() << "Failed to load basic shaders." << LL_ENDL; +            llassert(loaded); +        } -		if (loaded) -		{ -			gPipeline.mVertexShadersEnabled = TRUE; -			gPipeline.mVertexShadersLoaded = 1; +        if (loaded) +        { +            gPipeline.mVertexShadersEnabled = TRUE; +            gPipeline.mVertexShadersLoaded = 1; -			// Load all shaders to set max levels -			loaded = loadShadersEnvironment(); +            // Load all shaders to set max levels +            loaded = loadShadersEnvironment(); -			if (loaded) -			{ -				LL_INFOS() << "Loaded environment shaders." << LL_ENDL; -			} -			else -			{ -				LL_WARNS() << "Failed to load environment shaders." << LL_ENDL; -				llassert(loaded); -			} +            if (loaded) +            { +                LL_INFOS() << "Loaded environment shaders." << LL_ENDL; +            } +            else +            { +                LL_WARNS() << "Failed to load environment shaders." << LL_ENDL; +                llassert(loaded); +            } -			if (loaded) -			{ -				loaded = loadShadersWater(); +            if (loaded) +            { +                loaded = loadShadersWater();                  if (loaded)                  {                      LL_INFOS() << "Loaded water shaders." << LL_ENDL; @@ -585,10 +585,10 @@ void LLViewerShaderMgr::setShaders()                      LL_WARNS() << "Failed to load water shaders." << LL_ENDL;                      llassert(loaded);                  } -			} +            } -			if (loaded) -			{ +            if (loaded) +            {                  loaded = loadShadersWindLight();                  if (loaded)                  { @@ -599,10 +599,10 @@ void LLViewerShaderMgr::setShaders()                      LL_WARNS() << "Failed to load windlight shaders." << LL_ENDL;                      llassert(loaded);                  } -			} +            } -			if (loaded) -			{ +            if (loaded) +            {                  loaded = loadShadersEffects();                  if (loaded)                  { @@ -613,25 +613,25 @@ void LLViewerShaderMgr::setShaders()                      LL_WARNS() << "Failed to load effects shaders." << LL_ENDL;                      llassert(loaded);                  } -			} +            } -			if (loaded) -			{ -				loaded = loadShadersInterface(); -				if (loaded) -				{ -					LL_INFOS() << "Loaded interface shaders." << LL_ENDL; -				} -				else -				{ -					LL_WARNS() << "Failed to load interface shaders." << LL_ENDL; -					llassert(loaded); -				} -			} +            if (loaded) +            { +                loaded = loadShadersInterface(); +                if (loaded) +                { +                    LL_INFOS() << "Loaded interface shaders." << LL_ENDL; +                } +                else +                { +                    LL_WARNS() << "Failed to load interface shaders." << LL_ENDL; +                    llassert(loaded); +                } +            } -			if (loaded) +            if (loaded) -			{ +            {                  loaded = loadTransformShaders();                  if (loaded)                  { @@ -767,7 +767,7 @@ void LLViewerShaderMgr::setShaders()      }      gPipeline.createGLBuffers(); -	reentrance = false; +    reentrance = false;  }  void LLViewerShaderMgr::unloadShaders() | 
