Skip to content

Instantly share code, notes, and snippets.

@jcfandino
Created December 20, 2023 22:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcfandino/4b62788c0d29d8a8a5b29c558ebe28c1 to your computer and use it in GitHub Desktop.
Save jcfandino/4b62788c0d29d8a8a5b29c558ebe28c1 to your computer and use it in GitHub Desktop.
Chromatic Aberration shader
#import "Common/ShaderLib/GLSLCompat.glsllib"
#import "Common/ShaderLib/MultiSample.glsllib"
uniform COLORTEXTURE m_Texture;
uniform float m_Offset;
varying vec2 texCoord;
void main() {
vec4 color = vec4(0.0);
color.r = texture2D(m_Texture, texCoord + vec2(m_Offset, 0.0)).r;
color.g = texture2D(m_Texture, texCoord + vec2(0.0, 0.0)).g;
color.b = texture2D(m_Texture, texCoord + vec2(-m_Offset, 0.0)).b;
color.a = 1.0;
gl_FragColor = color;
}
public class ChromaticAberrationFilter extends Filter {
private RenderManager renderManager;
private ViewPort viewPort;
public ChromaticAberrationFilter() {
super("ChromaticAberrationFilter");
}
@Override
protected void initFilter(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) {
this.renderManager = renderManager;
this.viewPort = vp;
material = new Material(manager, "Post/ChromaticAberration.j3md");
material.setFloat("Offset", 0.0008f);
}
@Override
protected void postQueue(RenderQueue queue) {
renderManager.getRenderer().setBackgroundColor(ColorRGBA.BlackNoAlpha);
renderManager.getRenderer().clearBuffers(true, true, true);
renderManager.renderViewPortQueues(viewPort, false);
renderManager.setForcedTechnique(null);
renderManager.getRenderer().setFrameBuffer(viewPort.getOutputFrameBuffer());
}
@Override
protected void cleanUpFilter(Renderer r) {
}
@Override
protected Material getMaterial() {
return material;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment