Skinned shaders were exceeding maximum amount of vertex uniforms on amd hardware.
-Changed the transform matrix uniform to a 3x4 matrix and packed translation into it to free up uniforms. (3x3 is converted to 3x4 internally, so we were needlessly eating 3*52 extra uniform slots. translationPalette might also have been treated as a vec4 internally too, wasting 52 more slots.) -matrix3x4 requires opengl2.1 and newer, so added a new featuretable mask. -Also added a featuretable mask to disable hardware skinning and deferred shading on hardware with less than 1024 vertex uniforms. NOTE: On old old old amd hardware, evidently a 3x4 matrix might be upgraded to 4x4. I'm unsure, but I doubt such hardware has 1024+ uniform components available to begin with. 4x3 supposedly doesn't do this, but opengl is column-major, so this makes little sense.
This commit is contained in:
@@ -301,6 +301,10 @@ RenderObjectBump 0 0
|
||||
list OpenGLPre15
|
||||
RenderVBOEnable 1 0
|
||||
|
||||
list OpenGLPre21
|
||||
RenderAvatarVP 0 0
|
||||
RenderAvatarCloth 0 0
|
||||
|
||||
list OpenGLPre30
|
||||
RenderDeferred 0 0
|
||||
RenderMaxTextureIndex 1 1
|
||||
@@ -486,6 +490,7 @@ Disregard128DefaultDrawDistance 1 0
|
||||
list ATIOldDriver
|
||||
RenderAvatarVP 0 0
|
||||
RenderAvatarCloth 0 0
|
||||
RenderDeferred 0 0
|
||||
|
||||
// ATI cards generally perform better when not using VBOs for streaming data
|
||||
|
||||
@@ -596,3 +601,7 @@ RenderShaderLightingMaxLevel 1 2
|
||||
list NVIDIA_GeForce_Go_7900
|
||||
RenderShaderLightingMaxLevel 1 2
|
||||
|
||||
list VertexUniformsLT1024
|
||||
RenderAvatarVP 0 0
|
||||
RenderAvatarCloth 0 0
|
||||
RenderDeferred 0 0
|
||||
|
||||
Reference in New Issue
Block a user