Sprite: Add special case shader for translucent effect

Translucent sprites (opacity < 255) are very common,
so using a custom shader instead of the full blown effect one
helps a lot, especially on mobile.
This commit is contained in:
Jonas Kulla 2014-12-23 17:52:32 +01:00
parent a53163660f
commit 3c0a530eba
6 changed files with 58 additions and 1 deletions

View file

@ -38,6 +38,7 @@
#include "simple.frag.xxd"
#include "simpleColor.frag.xxd"
#include "simpleAlpha.frag.xxd"
#include "simpleAlphaUni.frag.xxd"
#include "flashMap.frag.xxd"
#include "simple.vert.xxd"
#include "simpleColor.vert.xxd"
@ -314,6 +315,27 @@ void SimpleSpriteShader::setSpriteMat(const float value[16])
}
AlphaSpriteShader::AlphaSpriteShader()
{
INIT_SHADER(sprite, simpleAlphaUni, AlphaSpriteShader);
ShaderBase::init();
GET_U(spriteMat);
GET_U(alpha);
}
void AlphaSpriteShader::setSpriteMat(const float value[16])
{
gl.UniformMatrix4fv(u_spriteMat, 1, GL_FALSE, value);
}
void AlphaSpriteShader::setAlpha(float value)
{
gl.Uniform1f(u_alpha, value);
}
TransShader::TransShader()
{
INIT_SHADER(simple, trans, TransShader);