diff options
author | davilla <davilla@svn> | 2010-05-18 16:11:14 +0000 |
---|---|---|
committer | davilla <davilla@svn> | 2010-05-18 16:11:14 +0000 |
commit | 615289266611cd07330b141dfffb1881ea2791d3 (patch) | |
tree | 524dc72a15e1162b162a0277efefa0d084e7c4e2 /system | |
parent | a13b67898f84f3bbdb056c6d17407d2cc8d5b282 (diff) |
[arm] 1) improve GUI framerate from 7 to 50+fps @1280x1024 by using multiple shaders, 2) fixes blending issues (colors were not normalized), 3) reduced number of glDrawElement calls to 1 per string instead of 1 per character, This can be improved again by refactoring the GUIFontTTF class to directly generate the VBO necessary for this call. A very big thanks to Phaeodaria (trac #9217) for his work on this
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@30290 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
Diffstat (limited to 'system')
-rw-r--r-- | system/shaders/guishader_frag0.glsl | 12 | ||||
-rw-r--r-- | system/shaders/guishader_frag1.glsl | 12 | ||||
-rw-r--r-- | system/shaders/guishader_frag2.glsl | 12 | ||||
-rw-r--r-- | system/shaders/guishader_frag3.glsl | 12 |
4 files changed, 48 insertions, 0 deletions
diff --git a/system/shaders/guishader_frag0.glsl b/system/shaders/guishader_frag0.glsl new file mode 100644 index 0000000000..478c601616 --- /dev/null +++ b/system/shaders/guishader_frag0.glsl @@ -0,0 +1,12 @@ +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying vec4 m_colour; +uniform int m_method; + +void main () +{ + gl_FragColor = m_colour; +} diff --git a/system/shaders/guishader_frag1.glsl b/system/shaders/guishader_frag1.glsl new file mode 100644 index 0000000000..73c6f3929f --- /dev/null +++ b/system/shaders/guishader_frag1.glsl @@ -0,0 +1,12 @@ +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying vec4 m_colour; +uniform int m_method; + +void main () +{ + gl_FragColor.rgba = texture2D(m_samp0, m_cord0.xy).bgra; +} diff --git a/system/shaders/guishader_frag2.glsl b/system/shaders/guishader_frag2.glsl new file mode 100644 index 0000000000..095eecc11e --- /dev/null +++ b/system/shaders/guishader_frag2.glsl @@ -0,0 +1,12 @@ +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying vec4 m_colour; +uniform int m_method; + +void main () +{ + gl_FragColor.rgba = (texture2D(m_samp0, m_cord0.xy) * texture2D(m_samp1, m_cord1.xy)).bgra; +} diff --git a/system/shaders/guishader_frag3.glsl b/system/shaders/guishader_frag3.glsl new file mode 100644 index 0000000000..cb44cda585 --- /dev/null +++ b/system/shaders/guishader_frag3.glsl @@ -0,0 +1,12 @@ +precision mediump float; +uniform sampler2D m_samp0; +varying vec4 m_cord0; +varying vec4 m_colour; + +void main () +{ + gl_FragColor.r = m_colour.r; + gl_FragColor.g = m_colour.g; + gl_FragColor.b = m_colour.b; + gl_FragColor.a = texture2D(m_samp0, m_cord0.xy).a; +} |