Merge remote-tracking branch 'upstream/master'
Conflicts: indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl indra/newview/app_settings/shaders/class1/deferred/giF.glsl indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
This commit is contained in:
@@ -534,8 +534,11 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
||||
range = mShaderObjects.equal_range(filename);
|
||||
for (std::multimap<std::string, CachedObjectInfo>::iterator it = range.first; it != range.second;++it)
|
||||
{
|
||||
if((*it).second.mLevel == shader_level && (*it).second.mType == type)
|
||||
if((*it).second.mLevel == shader_level && (*it).second.mType == type && (*it).second.mDefinitions == (defines ? *defines : std::map<std::string, std::string>()))
|
||||
{
|
||||
llinfos << "Loading cached shader for " << filename << llendl;
|
||||
return (*it).second.mHandle;
|
||||
}
|
||||
}
|
||||
|
||||
GLenum error = GL_NO_ERROR;
|
||||
@@ -727,6 +730,8 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
||||
}
|
||||
*/
|
||||
|
||||
text[count++] = strdup("#define HAS_DIFFUSE_LOOKUP 1\n");
|
||||
|
||||
//uniform declartion
|
||||
for (S32 i = 0; i < texture_index_channels; ++i)
|
||||
{
|
||||
@@ -784,6 +789,10 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
||||
llerrs << "Indexed texture rendering requires GLSL 1.30 or later." << llendl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
text[count++] = strdup("#define HAS_DIFFUSE_LOOKUP 0\n");
|
||||
}
|
||||
|
||||
//copy file into memory
|
||||
while( fgets((char *)buff, 1024, file) != NULL && count < LL_ARRAY_SIZE(text) )
|
||||
@@ -932,7 +941,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
||||
if (ret)
|
||||
{
|
||||
// Add shader file to map
|
||||
mShaderObjects.insert(make_pair(filename,CachedObjectInfo(ret,try_gpu_class,type)));
|
||||
mShaderObjects.insert(make_pair(filename,CachedObjectInfo(ret,try_gpu_class,type,defines)));
|
||||
shader_level = try_gpu_class;
|
||||
}
|
||||
else
|
||||
@@ -1143,6 +1152,7 @@ void LLShaderMgr::initAttribsAndUniforms()
|
||||
|
||||
|
||||
mReservedUniforms.push_back("minimum_alpha");
|
||||
mReservedUniforms.push_back("emissive_brightness");
|
||||
|
||||
mReservedUniforms.push_back("shadow_matrix");
|
||||
mReservedUniforms.push_back("env_mat");
|
||||
@@ -1205,6 +1215,12 @@ void LLShaderMgr::initAttribsAndUniforms()
|
||||
mReservedUniforms.push_back("projectionMap");
|
||||
mReservedUniforms.push_back("norm_mat");
|
||||
|
||||
mReservedUniforms.push_back("global_gamma");
|
||||
mReservedUniforms.push_back("texture_gamma");
|
||||
|
||||
mReservedUniforms.push_back("specular_color");
|
||||
mReservedUniforms.push_back("env_intensity");
|
||||
|
||||
mReservedUniforms.push_back("matrixPalette");
|
||||
|
||||
mReservedUniforms.push_back("screenTex");
|
||||
@@ -1244,6 +1260,7 @@ void LLShaderMgr::initAttribsAndUniforms()
|
||||
mReservedUniforms.push_back("alpha_ramp");
|
||||
|
||||
mReservedUniforms.push_back("origin");
|
||||
mReservedUniforms.push_back("display_gamma");
|
||||
llassert(mReservedUniforms.size() == END_RESERVED_UNIFORMS);
|
||||
|
||||
std::set<std::string> dupe_check;
|
||||
|
||||
Reference in New Issue
Block a user