Filters apply to the display tree, so can be used to create screen effects.
You can assign a filter to a h2d.Sprite
.
mySprite.filter = new Glow();
Heaps provides several filters like Ambient, Bloom, Blur, ColorMatrix, Displacement, DropShadow, Glob, Mask. They can be found in the h2d.filter package.
To create a shader that works as filter, you need a screen shader.
As you can see in h3d.shader.ScreenShader
, screen shaders only provides you input.position
and input.uv
, and you can alter the output.position
or output.color
.
@input var input : {
position : Vec2,
uv : Vec2,
};
var output : {
position : Vec4,
color : Vec4,
};
Let's create a simple shader that changes the red channel based on a parameter:
class MyFilterShader extends h3d.shader.ScreenShader {
static var SRC = {
@param var texture : Sampler2D;
@param var red : Float;
function fragment() {
pixelColor = texture.get(input.uv);
pixelColor.r = red; // change red channel
}
}
}
Usage:
var myShader = new MyFilterShader();
myShader.red = 1; // use 0-1 range
var customFilter = new h2d.filter.Shader(myShader);
mySprite.filter = customFilter;
To apply multiple filters, use h2d.filter.Group
.
var group = new Group([filter1, filter2]);
mySprite.filter = group;