Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid2.graphics.sprite;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.gebauz.bauzoid2.game.Engine;
import com.gebauz.bauzoid2.graphics.shader.ShaderProgram;
import com.gebauz.bauzoid2.graphics.shader.ShaderUniform;
import com.gebauz.bauzoid2.graphics.shader.ShaderUtil;
import com.gebauz.bauzoid2.math.Vector4;
/** Encapsulates the globally used shader for sprite rendering. */
public class SpriteShader
{
private ShaderProgram mShader = null;
private ShaderUniform mTextureHandle = null;
private ShaderUniform mAlphaHandle = null;
private ShaderUniform mColorHandle = null;
private ShaderUniform mFogColorHandle = null;
/** Constructor. */
public SpriteShader()
{
mShader = ShaderUtil.createShaderFromFile(Gdx.files.internal("bauzoid/shaders/spriteshader.vert"),
Gdx.files.internal("bauzoid/shaders/spriteshader.frag"));
if (mShader != null)
{
mTextureHandle = mShader.getUniform("uDiffuse");
mAlphaHandle = mShader.getUniform("uAlpha");
mColorHandle = mShader.getUniform("uColor");
mFogColorHandle = mShader.getUniform("uFogColor");
}
// TODO: fail condition -> terminate program
}
/** Destroy Sprite Shader. */
public void dispose()
{
if (mShader != null)
{
mShader.dispose();
mShader = null;
}
}
/** Get reference to shader. */
public final ShaderProgram getShader()
{
return mShader;
}
/** Activate shader with specified variables. */
public void activate(Texture texture, float alpha, Vector4 color, Vector4 fogColor)
{
mShader.activate();
mTextureHandle.set(0);
mAlphaHandle.set(alpha);
mColorHandle.set(color);
mFogColorHandle.set(fogColor);
Engine.graphics.renderStates.getTextureStage(0).bindTexture(texture);
//mAlphaHandle.set(alpha);
}
/** Deactivate shader. */
public void deactivate()
{
mShader.deactivate();
}
}