JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/5.3.3/pixi.min.js"></script>
<body>
  <img id="grid_img" style="display: none" 
src="data:image/gif;base64,R0lGODlhCAAIAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///ywAAAAACAAIAAAILADlDBJIcNCgTbJkkUooR46sYrI2QTSYECFDORYfbqIo8RTChglDFjNYkGBAADs=">
</body>

CSS

body {
  background-color: #000;
}

JavaScript

PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;

var app = new PIXI.Application({
  width: window.innerWidth,
  height: window.innerHeight
})
document.body.appendChild(app.view);

// create filter
var fragSrc = `
precision mediump float;

varying vec2 vTextureCoord;
varying vec4 vColor;

uniform sampler2D uSampler;
uniform float colorAmount;

void main(void)
{
   vec2 uvs = vTextureCoord.xy;

   vec4 fg = texture2D(uSampler, vTextureCoord);
   float val = (fg.r+fg.g+fg.b) / 3.;
   float power = colorAmount * 2. + 1.;
vec4 outp;
   outp = vec4(pow(val,1./power),pow(val,power),pow(val,power),1.);

   gl_FragColor = outp;
}
`;

var container = new PIXI.Container();

app.stage.addChild(container);

// load image
var img = document.getElementById( "grid_img" );
var texture = PIXI.Texture.from( img );

for(col=0; col < 10; col++) {
  for(row=0; row < 10; row++) {
  	tile = new PIXI.Sprite(texture);
    tile.x = col * 8;
    tile.y = row * 8;
    filter = new PIXI.Filter(null, fragSrc, {colorAmount: Math.random()});
    //filter.autofit = false;
    //filter.padding = 0;
    tile.filters = [filter];
    container.addChild(tile);
  }
}

var resize = function() {
  // Get the parent
  parent = app.view.parentNode;

  // Resize the renderer
  app.renderer.resize(window.innerWidth, window.innerHeight);

  // Scale the renderer to fit 80x80 plus a 5px margin
  narrowest = Math.min(parent.clientWidth, parent.clientHeight);
  app.stage.scale.set(narrowest / (80 + 5 * 2));
}
// Listen for window resize events
window.addEventListener('resize', resize);

resize();