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:
parent
a53163660f
commit
3c0a530eba
6 changed files with 58 additions and 1 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue