Pixijs
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
A skill your agent uses when applying visual filters or post-processing effects in Phaser 4.
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install autonomous-ai/openharness filters-and-postfx --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .claude/skills/filters-and-postfx && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .claude/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfxType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install autonomous-ai/openharness filters-and-postfx --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .agents/skills/filters-and-postfx && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .agents/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install autonomous-ai/openharness filters-and-postfx --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .cursor/skills/filters-and-postfx && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .cursor/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/autonomous-ai/openharness.git --path store/agents/phaser/skills/filters-and-postfx--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install autonomous-ai/openharness filters-and-postfx --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .gemini/skills/filters-and-postfx && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .gemini/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install autonomous-ai/openharness filters-and-postfxInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .github/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .github/skills/filters-and-postfx && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .github/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill filters-and-postfx -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install autonomous-ai/openharness filters-and-postfx --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/store/agents/phaser/skills/filters-and-postfx .opencode/skills/filters-and-postfx && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "filters-and-postfx" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/filters-and-postfx into .opencode/skills/filters-and-postfx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "filters-and-postfx", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
filters-and-postfxA skill your agent uses when applying visual filters or post-processing effects in Phaser 4.
Filters And Postfx is an agent skill from autonomous-ai/openharness. Use this skill when applying visual filters or post-processing effects in Phaser 4. Covers bloom, blur, glow, color matrix, barrel distortion, displacement, custom shaders, and the filter pipeline. Triggers on: filter, post-processing, shader, bloom, blur, glow, color effects.
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering Shaders. The repository describes itself as: The ultimate harness for coding agents and beyond. All your agents. All your machines. One command center. Start with code, then follow your curiosity and build across… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit cc4983e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Filters And Postfx loads about 5k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,591 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from autonomous-ai/openharness at commit cc4983e, republished under its MIT licence (© autonomous-ai). 1,591 words, ~5,020 tokens.
.claude/skills/filters-and-postfx/SKILL.md (or your agent's skills folder).Add a glow effect to a sprite:
// In your Scene's create() method:
const sprite = this.add.sprite(400, 300, 'player');
// Step 1: Enable the filter system on the game object (WebGL only)
sprite.enableFilters();
// Step 2: Add filters via .filters.internal or .filters.external
sprite.filters.internal.addGlow(0xff00ff, 4, 0, 1);Add a blur to the camera:
// Cameras have filters enabled by default - no enableFilters() needed
const camera = this.cameras.main;
camera.filters.internal.addBlur(0, 2, 2, 1);Filters are GPU-based post-processing effects applied after an object or camera renders to a texture. Each filter runs a shader pass over that texture, producing the final visual output. Filters are WebGL only.
The rendering pipeline for a camera with filters:
Every FilterList exposes two sub-lists: filters.internal and filters.external. The distinction controls when the filter runs relative to the camera/object transform:
Use internal filters wherever possible for better performance.
FilterList (Phaser.GameObjects.Components.FilterList) is the container that holds filter controllers. It provides:
add(filter, index) -- add a Controller instance at an optional indexremove(filter, forceDestroy) -- remove and destroy a filterclear() -- remove and destroy all filtersgetActive() -- return all filters where active === truelist -- the raw array of Controllers (safe to reorder)addBlur(), addGlow(), addMask(), etc.Every filter is a Phaser.Filters.Controller subclass. Common Controller properties:
| Property | Type | Description |
|---|---|---|
active | boolean | Toggle the filter on/off without removing it |
camera | Camera | The camera that owns this filter |
renderNode | string | The render node ID for the shader |
paddingOverride | Rectangle | Override automatic padding calculation |
ignoreDestroy | boolean | If true, the filter survives when its FilterList is destroyed (for reuse) |
Key methods: setActive(bool), setPaddingOverride(left, top, right, bottom), getPadding(), destroy().
Cameras have filters available by default. Game objects do not -- you must call enableFilters() first:
const sprite = this.add.sprite(400, 300, 'hero');
sprite.enableFilters();
// Now sprite.filters is available
sprite.filters.internal.addGlow();
sprite.filters.external.addVignette();enableFilters() creates an internal filterCamera on the game object that handles rendering the object to a texture for filter processing. It returns this for chaining.
Related properties on game objects after enabling:
| Property | Default | Description |
|---|---|---|
filterCamera | null -> Camera | The internal camera used for filter rendering |
filters | null -> {internal, external} | Access to the FilterList pair |
renderFilters | true | Master toggle for all filter rendering |
filtersAutoFocus | true | Auto-adjust camera to follow the object |
filtersFocusContext | false | Focus on the rendering context instead of the object bounds |
filtersForceComposite | false | Always draw to a framebuffer even with no active filters |
maxFilterSize | null -> Vector2 | Maximum texture size for filter framebuffers |
Use willRenderFilters() to check if any active filters will actually render.
const sprite = this.add.sprite(400, 300, 'enemy');
sprite.enableFilters();
// Add a glow
const glow = sprite.filters.internal.addGlow(0x00ff00, 4);
// Modify at runtime
glow.outerStrength = 8;
glow.color = 0xff0000;
// Temporarily disable
glow.setActive(false);
// Remove and destroy
sprite.filters.internal.remove(glow);const camera = this.cameras.main;
// Internal: effect in camera-local space
const blur = camera.filters.internal.addBlur(0, 2, 2, 1);
// External: effect in screen space
const vignette = camera.filters.external.addVignette(0.5, 0.5, 0.5, 0.5);
// Color grading via ColorMatrix
const cm = camera.filters.internal.addColorMatrix();
cm.colorMatrix.sepia();Filters execute in list order. Each filter receives the output of the previous one:
const cam = this.cameras.main;
// First: apply color grading
const cm = cam.filters.internal.addColorMatrix();
cm.colorMatrix.brightness(0.2);
// Second: apply blur to the color-graded result
cam.filters.internal.addBlur(1, 2, 2, 1);
// Third: add a vignette on top
cam.filters.external.addVignette(0.5, 0.5, 0.5, 0.8);Masks in v4 are implemented as filters. They use the alpha channel of a texture or game object to control visibility:
// Mask with a static texture
sprite.enableFilters();
sprite.filters.internal.addMask('maskTexture');
// Mask with a game object (renders to DynamicTexture automatically)
const maskShape = this.add.circle(0, 0, 100, 0xffffff);
sprite.enableFilters();
const mask = sprite.filters.internal.addMask(maskShape);
// Invert the mask
mask.invert = true;
// Control auto-updating for game object masks
mask.autoUpdate = true; // default: re-renders each frame
mask.needsUpdate = true; // force a one-time update
// Use a specific camera for viewing the mask object
sprite.filters.external.addMask(maskShape, false, this.cameras.main);Internal masks match the object being filtered. External masks match the camera context. Use a viewCamera parameter to control which camera renders the mask game object.
const camera = this.cameras.main;
const wipe = camera.filters.external.addWipe(0.1, 0, 0);
// Animate via tween
this.tweens.add({
targets: wipe,
progress: 1,
duration: 2000,
ease: 'Linear'
});
// Direction helpers
wipe.setLeftToRight();
wipe.setTopToBottom();
wipe.setRevealEffect(); // reveal mode
wipe.setWipeEffect(); // wipe mode
// Wipe to another texture (for scene transitions)
wipe.setTexture('nextSceneCapture');ParallelFilters splits the input into two paths, processes each independently, then blends the results. This replaces the dedicated Bloom filter from v3:
const camera = this.cameras.main;
const pf = camera.filters.internal.addParallelFilters();
// Top path: threshold bright areas, then blur them
pf.top.addThreshold(0.5, 1);
pf.top.addBlur();
// Configure the blend (how top combines onto bottom)
pf.blend.blendMode = Phaser.BlendModes.ADD;
pf.blend.amount = 0.5;
// Bottom path: left empty = uses original inputCaptureFrame captures the current render state at the point it appears in the display list. Objects rendered before it are captured; objects after it are not:
// Requires composite mode on the camera
this.cameras.main.setForceComposite(true);
// Objects rendered before CaptureFrame are captured
const bg = this.add.image(400, 300, 'background');
// Create the capture point
const capture = this.add.captureFrame('myCapture');
// Display the captured texture with filters applied
const display = this.add.image(400, 300, 'myCapture');
display.enableFilters();
display.filters.internal.addBlur(0, 4, 4, 2);| Filter | Add Method | Description |
|---|---|---|
| Barrel | addBarrel(amount) | Pinch/expand distortion. amount=1 is neutral. |
| Blend | addBlend(texture, blendMode, amount, color) | Blend another texture using a blend mode. Supports modes not available in standard WebGL. |
| Blocky | addBlocky(config) | Pixelation that preserves original colors (no blending). Best without anti-aliasing. |
| Blur | addBlur(quality, x, y, strength, color, steps) | Gaussian blur. Quality: 0=low, 1=medium, 2=high. |
| Bokeh | addBokeh(radius, amount, contrast) | Depth-of-field bokeh blur effect. |
| ColorMatrix | addColorMatrix() | Color manipulation via matrix. Access .colorMatrix for sepia, grayscale, brightness, hue, etc. |
| CombineColorMatrix | addCombineColorMatrix(texture) | Combine channels from two textures via color matrices. Useful for alpha transfer. |
| Displacement | addDisplacement(texture, x, y) | Pixel displacement using a displacement map texture. Values are very small floats (e.g. 0.005). |
| Glow | addGlow(color, outerStrength, innerStrength, scale, knockout, quality, distance) | Luminous halo around edges. Supports inner/outer glow and knockout mode. |
| GradientMap | addGradientMap(config) | Recolor image using a ColorRamp based on brightness. |
| ImageLight | addImageLight(config) | Image-based lighting using a panorama environment map and normal map. |
| Key | addKey(config) | Chroma key: remove or isolate a specific color. Config: { color, threshold, feather, isolate }. |
| Mask | addMask(mask, invert, viewCamera, viewTransform, scaleFactor) | Alpha masking via texture or game object. |
| NormalTools | addNormalTools(config) | Manipulate normal maps: rotate, adjust facing power, output grayscale facing data. |
| PanoramaBlur | addPanoramaBlur(config) | Spherically-correct blur for panorama images. For use with ImageLight. Very slow. |
| ParallelFilters | addParallelFilters() | Split input into two filter paths, blend results. Use for custom bloom. |
| Pixelate | addPixelate(amount) | Mosaic/pixelation effect. Pixel size = 2 + amount. Blends colors (unlike Blocky). |
| Quantize | addQuantize(config) | Reduce color palette. Supports RGBA/HSVA modes, gamma, offset, dithering. |
| Sampler | addSampler(callback, region) | Extract pixel data from the render. Does not alter the image. Expensive. |
| Shadow | addShadow(x, y, decay, power, color, samples, intensity) | Drop shadow with offset, decay, and color. |
| Threshold | addThreshold(edge1, edge2, invert) | Binary threshold per channel. Edges can be arrays for per-channel control. |
| TiltShift | addTiltShift(radius, amount, contrast, blurX, blurY, strength) | Miniature/tilt-shift effect (uses Bokeh internally). |
| Vignette | addVignette(x, y, radius, strength, color, blendMode) | Edge darkening/coloring. Supports NORMAL, ADD, MULTIPLY, SCREEN blend modes. |
| Wipe | addWipe(wipeWidth, direction, axis, reveal, wipeTexture) | Wipe/reveal transition. Animate progress via tween. |
// Game objects: must enable first
gameObject.enableFilters();
gameObject.filters.internal.addBlur();
gameObject.filters.external.addGlow();
// Cameras: filters available immediately
camera.filters.internal.addBlur();
camera.filters.external.addGlow();const list = camera.filters.internal;
list.addBlur(); // Factory method (one per filter type)
list.add(controllerInstance); // Add a pre-built controller
list.add(controller, 2); // Insert at index 2
list.remove(controller); // Remove and destroy
list.clear(); // Remove and destroy all
list.getActive(); // Get all active controllers
list.list; // Raw array (reorder safely)controller.active = false; // Disable without removing
controller.setActive(true); // Enable (returns this)
controller.setPaddingOverride(10, 10, 10, 10); // Override padding
controller.setPaddingOverride(null); // Clear override
controller.ignoreDestroy = true; // Survive FilterList.destroy()
controller.destroy(); // Manual cleanupconst mask = list.addMask('texKey'); // From texture key
const mask = list.addMask(gameObject); // From game object
mask.invert = true; // Invert mask
mask.autoUpdate = false; // Stop auto-updating GO masks
mask.needsUpdate = true; // Force one update
mask.setTexture('newKey'); // Change texture source
mask.setGameObject(newGO); // Change GO source
mask.viewCamera = otherCamera; // Camera for GO rendering
mask.viewTransform = 'local'; // 'local' or 'world'
mask.scaleFactor = 0.5; // Scale mask texture sizeconst cm = list.addColorMatrix();
cm.colorMatrix.sepia();
cm.colorMatrix.grayscale(1);
cm.colorMatrix.brightness(0.3);
cm.colorMatrix.hue(90);
cm.colorMatrix.saturate(-0.5);
cm.colorMatrix.contrast(0.3);
cm.colorMatrix.blackWhite();
cm.colorMatrix.negative();
cm.colorMatrix.desaturate();
cm.colorMatrix.night(0.5);
cm.colorMatrix.lsd();
cm.colorMatrix.brown();
cm.colorMatrix.vintagePinhole();
cm.colorMatrix.kodachrome();
cm.colorMatrix.technicolor();
cm.colorMatrix.polaroid();
cm.colorMatrix.shiftToBGR();WebGL only -- Filters do not work in Canvas renderer. enableFilters() returns early if WebGL is not available.
enableFilters() required for game objects -- Cameras have filters by default. Sprites, images, containers, and other game objects require enableFilters() before accessing filters.
Performance cost -- Each object with active filters creates extra draw calls (one for the base render plus one per active filter). Use sparingly and performance test early.
Internal vs external matters -- Internal filters are cheaper (object-region sized). External filters are full-screen. A blur that should rotate with the object must be internal; a blur that should stay screen-aligned must be external.
Filter order matters -- Filters are applied sequentially in list order. The output of one feeds into the next.
Glow quality and distance are immutable -- quality and distance on the Glow filter cannot be changed after creation. Destroy and recreate the filter to change them.
CaptureFrame requires forceComposite -- The camera must have setForceComposite(true) or otherwise render into a framebuffer for CaptureFrame to work.
Padding for expanding effects -- Filters like Blur, Glow, and Shadow can automatically calculate padding to expand the render texture. Override with setPaddingOverride() if needed. Pass null to clear the override. When used on a camera, use camera.getPaddingWrapper(x) to render more world outside the image edge.
Controller reuse -- By default, controllers are destroyed when their FilterList is destroyed. Set ignoreDestroy = true to reuse a controller across multiple objects, but you must manage its lifecycle manually. Works best with external filters.
Mask game object rendering -- When using a game object as a mask source, it is rendered to a DynamicTexture each frame (if autoUpdate is true). Set autoUpdate = false and use needsUpdate = true for one-shot updates to improve performance for static masks.
No Bloom filter -- v4 does not have a dedicated Bloom filter. Use ParallelFilters with Threshold + Blur + ADD blend instead (see Common Patterns), or use Phaser.Actions.AddEffectBloom to automate the process.
| v3 (FX) | v4 (Filters) | Notes |
|---|---|---|
gameObject.preFX / gameObject.postFX | gameObject.filters.internal / gameObject.filters.external | preFX/postFX replaced by internal/external filter lists |
camera.postFX | camera.filters.internal / camera.filters.external | Cameras now have both internal and external lists |
FX.addBloom() | Use ParallelFilters + Threshold + Blur | No dedicated Bloom filter; build it with ParallelFilters or Phaser.Actions.AddEffectBloom |
FX.addCircle() | Use Vignette or Mask | Circle effect removed; use Vignette with radius or a circular Mask, or automate with Phaser.Actions.AddMaskShape |
FX.addGradient() | Use Gradient GameObject + Quantize | New Gradient GameObject renders gradients; Quantize adds steps if wanted |
Glow quality was 0-1 fraction | Glow quality is an integer (default 10) | Stochastic sampling replaces line sampling; higher quality at lower values |
camera.setMask() | camera.filters.internal.addMask() | Masks are now filters, not a separate system |
gameObject.setMask() | gameObject.filters.internal.addMask() | Same unified filter system |
| FX controllers | Phaser.Filters.Controller subclasses | Same pattern: returned controller objects with mutable properties |
| -- | enableFilters() required for game objects | New explicit opt-in step for game objects |
| -- | Blocky, Quantize, Key, Blend, CombineColorMatrix, ImageLight, NormalTools, PanoramaBlur, ParallelFilters, Sampler | New filters added in v4 |
| File | Description |
|---|---|
src/gameobjects/components/Filters.js | Mixin that adds enableFilters(), filterCamera, filters to game objects |
src/gameobjects/components/FilterList.js | FilterList class with all add*() factory methods |
src/filters/Controller.js | Base Controller class for all filters |
src/filters/Barrel.js | Barrel distortion filter |
src/filters/Blend.js | Texture blend filter |
src/filters/Blocky.js | Color-preserving pixelation filter |
src/filters/Blur.js | Gaussian blur filter |
src/filters/Bokeh.js | Bokeh / tilt shift filter |
src/filters/ColorMatrix.js | Color matrix filter (sepia, grayscale, etc.) |
src/filters/CombineColorMatrix.js | Dual-texture channel combining filter |
src/filters/Displacement.js | Displacement map filter |
src/filters/Glow.js | Glow/outline filter |
src/filters/GradientMap.js | Gradient map recoloring filter |
src/filters/ImageLight.js | Image-based lighting filter |
src/filters/Key.js | Chroma key filter |
src/filters/Mask.js | Alpha mask filter (texture or game object) |
src/filters/NormalTools.js | Normal map manipulation filter |
src/filters/PanoramaBlur.js | Spherical panorama blur filter |
src/filters/ParallelFilters.js | Parallel filter paths with blend |
src/filters/Pixelate.js | Pixelation filter |
src/filters/Quantize.js | Color quantization filter |
src/filters/Sampler.js | Pixel sampling/readback filter |
src/filters/Shadow.js | Drop shadow filter |
src/filters/Threshold.js | Threshold filter |
src/filters/Vignette.js | Vignette filter |
src/filters/Wipe.js | Wipe/reveal transition filter |
src/gameobjects/captureframe/CaptureFrame.js | CaptureFrame game object for scene-level capture |
Related: sprites-and-images.md, cameras.md, v4-new-features.md
© autonomous-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in store/agents/phaser/skills/filters-and-postfx of autonomous-ai/openharness.
Open the folder on GitHubat commit cc4983e
Filters And Postfx next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Filters And Postfx this skillautonomous-ai/openharness | 1.2k | — | ~5k | Automated safety check: Pass | MIT | |
| PixijsRSamaium/CanvasEngine | 401 | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Anatomywheresryan22/anatomy | 500 | — | ~7.7k | Automated safety check: Pass | MIT | |
| Assets Shader List AllIvanMurzak/Unity-MCP | 4.4k | — | ~435 | Automated safety check: Pass | Apache-2.0 | |
| Handle Sdr Tonemap Lutclshortfuse/renodx | 4.5k | — | ~7.3k | Automated safety check: Pass | MIT |
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
wheresryan22/anatomy
Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with…
IvanMurzak/Unity-MCP
List all shaders available in the project assets and packages, sorted by name.
clshortfuse/renodx
RenoDX HLSL/Slang shader workflow for proven shader-side SDR tonemap, hard clip, LUT, color grade, and HDR bridge changes.
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
autonomous-ai/openharness
Slices 3D mesh files into printer-profiled plain G-code through real slicer CLIs, with backend discovery, input inspection, dry runs and static validation.
autonomous-ai/openharness
Turns a home-automation request into standard, testable automations.yaml, run against Home Assistant Core's real triggers and verified with its own trace tool.
autonomous-ai/openharness
Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.
autonomous-ai/openharness
Turns an STL and explicit printer and material requirements into compared OrcaSlicer plans, an editable 3MF project, checked G-code and a portable handoff.
autonomous-ai/openharness
Builds an editable DOCX report, a formula-driven XLSX workbook and a fresh LibreOffice PDF preview from one structured source file, then checks them together.
autonomous-ai/openharness
Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.
Categories
A skill your agent uses when applying visual filters or post-processing effects in Phaser 4. Filters And Postfx is an agent skill from autonomous-ai/openharness. Use this skill when applying visual filters or post-processing effects in Phaser 4.
Filters And Postfx fits situations like: applying visual filters; post-processing effects in Phaser 4; post-processing.
Run `npx skills add autonomous-ai/openharness --skill filters-and-postfx -a claude-code`. Or copy the skill folder (store/agents/phaser/skills/filters-and-postfx in autonomous-ai/openharness) into .claude/skills/filters-and-postfx in your project. Claude Code loads it when a task matches its description.
Run `npx skills add autonomous-ai/openharness --skill filters-and-postfx -a codex`. Or copy the skill folder (store/agents/phaser/skills/filters-and-postfx in autonomous-ai/openharness) into .agents/skills/filters-and-postfx in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add autonomous-ai/openharness --skill filters-and-postfx -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/filters-and-postfx, .gemini/skills/filters-and-postfx, .github/skills/filters-and-postfx and .opencode/skills/filters-and-postfx in your project.
SKILL.md names no scripts, command-line tools or credentials: Filters And Postfx is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Filters And Postfx is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Filters And Postfx: Pixijs (RSamaium/CanvasEngine, 401 stars), New Experiment (Tresjs/tres, 3.8k stars), Anatomy (wheresryan22/anatomy, 500 stars) and Assets Shader List All (IvanMurzak/Unity-MCP, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
autonomous-ai (a GitHub organization) maintains it in autonomous-ai/openharness, which has 1,210 GitHub stars. The repository holds 100 skills in this directory. The repository was last updated on October 10, 2026.
Source: autonomous-ai/openharness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.