Dests
by roomyrooms
HTML
<script src="https://pixijs.download/v6.0.2/pixi.min.js"></script>
<script type="x-data-url" id="light-url">
...
JavaScript
var lightUrl = document.getElementById('light-url').textContent;
var tiledmapUrl = document.getElementById('tiledmap-url').textContent;
var darkmapUrl = document.getElementById('darkmap-url').textContent;
var lightImg = document.getElementById('light-preview');
var tiledmapImg = document.getElementById('tiledmap-preview');
var darkImg = document.getElementById('dark-preview');
lightImg.src = lightUrl;
darkImg.src = darkmapUrl;
tiledmapImg.src = tiledmapUrl;
lightImg.style.display = 'none';
darkImg.style.display = 'none';
tiledmapImg.style.display = 'none';
var vertexShader = `
attribute vec2 aVertexPosition;
attribute vec2 aTextureCoord;
uniform mat3 projectionMatrix;
uniform mat3 filterMatrix;
varying vec2 vTextureCoord;
varying vec2 vFilterCoord;
void main(void){
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
vFilterCoord = (filterMatrix * vec3(aTextureCoord, 1.0)).xy;
vTextureCoord = aTextureCoord;
}`
var fragmentShader = `
precision mediump float;
varying vec2 vTextureCoord;
varying vec2 vFilterCoord;
uniform sampler2D uSampler;
uniform sampler2D uLightmap;
void main() {
vec4 diffuseColor = texture2D(uSampler, vTextureCoord);
vec4 light = texture2D(uLightmap, vFilterCoord);
vec3 finalColor = diffuseColor.rgb * light.rgb;
gl_FragColor = diffuseColor * (1.0 - light.b);
}`
function defaultValue(inputValue, defaultValue) {
inputValue = typeof inputValue !== 'undefined' ? inputValue : defaultValue;
return inputValue;
}
function LightmapFilter(lightSprite) {
PIXI.Filter.call(this, vertexShader, fragmentShader);
this.lightSprite = lightSprite;
this.lightMatrix = new PIXI.Matrix();
this.uniforms.uLightmap = lightSprite.texture;
}
LightmapFilter.prototype = Object.create(PIXI.Filter.prototype);
LightmapFilter.prototype.constructor = LightmapFilter;
LightmapFilter.prototype.apply = function(filterManager, input, output) {
this.uniforms.filterMatrix =...