Horri-fi
Introduction¶
6-in-1 effect
- Bloom
- Chromatic Abberation
- Scanlines
- VHS Distortion
- CRT TV Curve
- Noise
- Vignette
Reference : Horri-fi shader effect
- Author: Rex
- A filter shader effect
WebGL only
Only work in WebGL render mode.
Live demos¶
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.plugin('rexhorrififilterlugin', 'https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rexhorrififilterlugin.min.js', true); - Apply effect
- Apply effect to game object
or
gameObject.enableFilters(); var filterList = gameObject.filters.internal; var controller = filterList.addRexHorrifi(config);var controller = scene.plugins.get('rexhorrififilterlugin').add(gameObject, config); - Apply effect to camera
or
var filterList = camera.filters.internal; var controller = filterList.addRexHorrifi(config);var controller = scene.plugins.get('rexhorrififilterlugin').add(camera, config);
- Apply effect to game object
Import plugin¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Install plugin in configuration of game
import HorrifiFilterPlugin from 'phaser3-rex-plugins/plugins/horrifipipeline-plugin.js'; var config = { // ... plugins: { global: [{ key: 'rexHorrifiFilter', plugin: HorrifiFilterPlugin, start: true }, // ... ] } // ... }; var game = new Phaser.Game(config); - Apply effect
- Apply effect to game object
or
gameObject.enableFilters(); var filterList = gameObject.filters.internal; var controller = filterList.addRexHorrifi(config);var controller = scene.plugins.get('rexHorrifiFilter').add(gameObject, config); - Apply effect to camera
or
var filterList = camera.filters.internal; var controller = filterList.addRexHorrifi(config);var controller = scene.plugins.get('rexHorrifiFilter').add(camera, config);
- Apply effect to game object
Import class¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Import filter and controller class
import { HorrifiFilter, HorrifiController } from 'phaser3-rex-plugins/plugins/horrifipipeline.js'; - Register effect
if (!scene.renderer.renderNodes.hasNode(HorrifiFilter.FilterName)) { scene.renderer.renderNodes.addNodeConstructor(HorrifiFilter.FilterName, HorrifiFilter); } - Apply effect
- Apply effect to game object
gameObject.enableFilters(); var filterList = gameObject.filters.internal; var controller = filterList.add( new HorrifiController(filterList.camera, config) ); - Apply effect to camera
var filterList = camera.filters.internal; var controller = filterList.add( new HorrifiController(filterList.camera, config) );
- Apply effect to game object
Apply effect¶
- Apply effect to game object.
gameObject.enableFilters(); var filterList = gameObject.filters.internal; var controller = filterList.addRexHorrifi({ enable: false, // Bloom bloomEnable: false, bloomRadius: 0, bloomIntensity: 0, bloomThreshold: 0, bloomTexelWidth: 0, bloomTexelHeight: 0, // Chromatic abberation chromaticEnable: false, chabIntensity: 0, // Vignette vignetteEnable: false, vignetteStrength: 0, vignetteIntensity: 0, // Noise noiseEnable: false, noiseStrength: 0, noiseSeed: 0, // VHS vhsEnable: false, vhsStrength: 0, // Scanlines scanlinesEnable: false, scanStrength: 0, // CRT crtEnable: false, crtWidth: 0, crtHeight: 0, // name: 'rexHorrifiPostFx' });enable: Defaultenablevalue for all shader effects.- Bloom
bloomEnable: Settrueto enable bloom effect.bloomRadius,bloomIntensity,bloomThresholdbloomTexelWidth,bloomTexelHeight
- Chromatic abberation
chromaticEnable: Settrueto enable chromatic abberation effect.chabIntensity
- Vignette
vignetteEnable: Settrueto enable vignette effect.vignetteStrength,vignetteIntensity
- Noise
noiseEnable: Settrueto enable noise effect.noiseStrengthnoiseSeed
- VHS
vhsEnable: Settrueto enable VHS effect.vhsStrength
- Scanlines
scanlinesEnable: Settrueto enable Scanlines effect.scanStrength
- CRT
crtEnable: Settrueto enable Scanlines effect.crtWidth,crtHeight
- Apply effect to camera. A camera only can add 1 horrifi effect.
var controller = scene.plugins.get('rexHorrifiFilter').add(camera, config);
Disable effect¶
controller.setActive(false);
// controller.active = false;
Remove effect¶
- Remove effect from game object
or
var filterList = gameObject.filters.internal; filterList.remove(controller);scene.plugins.get('rexHorrifiFilter').remove(gameObject); - Remove effect from camera
or
var filterList = camera.filters.internal; filterList.remove(controller);scene.plugins.get('rexHorrifiFilter').remove(camera);
Get effect¶
- Get effect from game object
var controller = scene.plugins.get('rexHorrifiFilter').get(gameObject)[0]; // var controllers = scene.plugins.get('rexHorrifiFilter').get(gameObject); - Get effect from camera
var controller = scene.plugins.get('rexHorrifiFilter').get(camera)[0]; // var controllers = scene.plugins.get('rexHorrifiFilter').get(camera);
Bloom¶
Enable¶
- Enable
or
controller.setBloomEnable(); // controller.setBloomEnable(true);controller.bloomEnable = true; - Disable
or
controller.setBloomEnable(false);controller.bloomEnable = false; - Get
var bloomEnable = controller.bloomEnable;
Parameters¶
- Set
or
controller.setBloomRadius(value); controller.setBloomIntensity(value); controller.setBloomThreshold(value); controller.setBloomTexelSize(width, height);controller.bloomRadius = value; controller.bloomIntensity = value; controller.bloomThreshold = value; controller.bloomTexelWidth = width; controller.bloomTexelHeight = height; - Get
var bloomRadius = controller.bloomRadius; var bloomIntensity = controller.bloomIntensity; var bloomThreshold = controller.bloomThreshold; var bloomTexelWidth = controller.bloomTexelWidth; var bloomTexelHeight = controller.bloomTexelHeight;
Chromatic abberation¶
Enable¶
- Enable
or
controller.setChromaticEnable(); // controller.setChromaticEnable(true);controller.chromaticEnable = true; - Disable
or
controller.setChromaticEnable(false);controller.chromaticEnable = false; - Get
var chromaticEnable = controller.chromaticEnable;
Parameters¶
- Set
or
controller.setChabIntensity(value);controller.chabIntensity = value; - Get
var chabIntensity = controller.chabIntensity;
Vignette¶
Enable¶
- Enable
or
controller.setVignetteEnable(); // controller.setVignetteEnable(true);controller.vignetteEnable = true; - Disable
or
controller.setVignetteEnable(false);controller.vignetteEnable = false; - Get
var vignetteEnable = controller.vignetteEnable;
Parameters¶
- Set
or
controller.setVignetteStrength(value); controller.setVignetteIntensity(value);controller.vignetteStrength = value; controller.vignetteIntensity = value; - Get
var vignetteStrength = controller.vignetteStrength; var vignetteIntensity = controller.vignetteIntensity;
Noise¶
Enable¶
- Enable
or
controller.setNoiseEnable(); // controller.setNoiseEnable(true);controller.noiseEnable = true; - Disable
or
controller.setNoiseEnable(false);controller.noiseEnable = false; - Get
var noiseEnable = controller.noiseEnable;
Parameters¶
- Set
or
controller.setNoiseStrength(value); controller.setNoiseSeed(value);controller.noiseStrength = value; controller.noiseSeed = value; - Get
var noiseStrength = controller.noiseStrength; var noiseSeed = controller.noiseSeed;
VHS¶
Enable¶
- Enable
or
controller.setVHSEnable(); // controller.setVHSEnable(true);controller.vhsEnable = true; - Disable
or
controller.setVHSEnable(false);controller.vhsEnable = false; - Get
var vhsEnable = controller.vhsEnable;
Parameters¶
- Set
or
controller.setVhsStrength(value);controller.vhsStrength = value; - Get
var vhsStrength = controller.vhsStrength;
Scanlines¶
Enable¶
- Enable
or
controller.setScanlinesEnable(); // controller.setScanlinesEnable(true);controller.scanlinesEnable = true; - Disable
or
controller.setScanlinesEnable(false);controller.scanlinesEnable = false; - Get
var scanlinesEnable = controller.scanlinesEnable;
Parameters¶
- Set
or
controller.setScanStrength(value);controller.scanStrength = value; - Get
var scanStrength = controller.scanStrength;
CRT¶
Enable¶
- Enable
or
controller.setCRTEnable(); // controller.setCRTEnable(true);controller.crtEnable = true; - Disable
or
controller.setCRTEnable(false);controller.crtEnable = false; - Get
var crtEnable = controller.crtEnable;
Parameters¶
- Set
or
controller.setCrtSize(width, height);controller.crtWidth = width; controller.crtHeight = height; - Get
var crtWidth = controller.crtWidth; var crtHeight = controller.crtHeight;
Enable all effects¶
- Enable all
controller.setEnable(); // controller.setEnable(true); - Disable all
controller.setEnable(false);