diff options
| -rw-r--r-- | indra/llrender/llshadermgr.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 75 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolalpha.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llface.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 14 | 
6 files changed, 54 insertions, 51 deletions
| diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 0b20ff6230..636e13719a 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -328,7 +328,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)  					return FALSE;  				}  			} -			shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1); +			shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels, 1);  		}  	} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e42906e78b..e1eeefa755 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10712,38 +10712,49 @@      <integer>3</integer>    </map>    <key>RenderReflectionRes</key> -    <map> -      <key>Comment</key> -      <string>Reflection map resolution.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>64</integer> -    </map> -    <key>RenderResolutionDivisor</key> -    <map> -      <key>Comment</key> -      <string>Divisor for rendering 3D scene at reduced resolution.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>U32</string> -      <key>Value</key> -      <integer>1</integer> -    </map> -    <key>RenderShaderLightingMaxLevel</key> -    <map> -      <key>Comment</key> -      <string>Max lighting level to use in the shader (class 3 is default, 2 is less lights, 1 is sun/moon only.  Works around shader compiler bugs on certain platforms.)</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>3</integer> -    </map> +  <map> +    <key>Comment</key> +    <string>Reflection map resolution.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>S32</string> +    <key>Value</key> +    <integer>64</integer> +  </map> +  <key>RenderReservedTextureIndices</key> +  <map> +    <key>Comment</key> +    <string>Count of texture indices to reserve for shadow and reflection maps when using indexed texture rendering.  Probably only want to set from the login screen.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>S32</string> +    <key>Value</key> +    <integer>14</integer> +  </map> +  <key>RenderResolutionDivisor</key> +  <map> +    <key>Comment</key> +    <string>Divisor for rendering 3D scene at reduced resolution.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>U32</string> +    <key>Value</key> +    <integer>1</integer> +  </map> +  <key>RenderShaderLightingMaxLevel</key> +  <map> +    <key>Comment</key> +    <string>Max lighting level to use in the shader (class 3 is default, 2 is less lights, 1 is sun/moon only.  Works around shader compiler bugs on certain platforms.)</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>S32</string> +    <key>Value</key> +    <integer>3</integer> +  </map>    <key>RenderSkyAutoAdjustLegacy</key>    <map>      <key>Comment</key> diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 9418cead76..fd27010877 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -478,7 +478,7 @@ bool LLDrawPoolAlpha::TexSetup(LLDrawInfo* draw, bool use_material)              }          }      } -     +      return tex_setup;  } @@ -668,7 +668,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, bool depth_only, bool rigged)  			LLSpatialGroup::drawmap_elem_t& draw_info = rigged ? group->mDrawMap[LLRenderPass::PASS_ALPHA_RIGGED] : group->mDrawMap[LLRenderPass::PASS_ALPHA]; -            for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k)	 +            for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k)  			{  				LLDrawInfo& params = **k;                  if ((bool)params.mAvatar != rigged) @@ -814,9 +814,10 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, bool depth_only, bool rigged)                          current_shader->setMinimumAlpha(0.f);                          reset_minimum_alpha = true;                      } -                     +                      params.mVertexBuffer->setBuffer();                      params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); +                    stop_glerror();                      if (reset_minimum_alpha)                      { diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 69e43bb458..ccee57cf69 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1855,7 +1855,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  			S32* vp = (S32*) &val;  			*vp = index; -			llassert(index <= LLGLSLShader::sIndexedTextureChannels-1); +			llassert(index < LLGLSLShader::sIndexedTextureChannels);  			LLVector4Logical mask;  			mask.clear(); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 289c0d7567..5144b28ce9 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -423,7 +423,10 @@ void LLViewerShaderMgr::setShaders()      static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16);      // when using indexed texture rendering, leave some texture units available for shadow and reflection maps -    LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits-12, (S32) max_texture_index), 1); +    static LLCachedControl<S32> reserved_texture_units(gSavedSettings, "RenderReservedTextureIndices", 14); + +    LLGLSLShader::sIndexedTextureChannels = +        llclamp<S32>(max_texture_index, 1, gGLManager.mNumTextureImageUnits-reserved_texture_units);      reentrance = true; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index b886b922de..1b816b88fb 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -6248,19 +6248,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace  	LLViewerTexture* last_tex = NULL; -	S32 texture_index_channels = 1; -	 -	if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 30) -	{ -		texture_index_channels = LLGLSLShader::sIndexedTextureChannels-1; //always reserve one for shiny for now just for simplicity; -	} - -	if (distance_sort) -	{ -		texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels; -	} - -	texture_index_channels = LLGLSLShader::sIndexedTextureChannels; +	S32 texture_index_channels = LLGLSLShader::sIndexedTextureChannels;  	bool flexi = false; | 
