25 lines
627 B
GLSL
25 lines
627 B
GLSL
extern float t;
|
|
extern float blockSize;
|
|
|
|
// hash-функция для шума по целочисленным координатам блока
|
|
float hash(vec2 p) {
|
|
p = vec2(
|
|
dot(p, vec2(127.1, 311.7)),
|
|
dot(p, vec2(269.5, 183.3))
|
|
);
|
|
return fract(sin(p.x + p.y) * 43758.5453123);
|
|
}
|
|
|
|
vec4 effect(vec4 color, Image tex, vec2 texCoord, vec2 screenCoord)
|
|
{
|
|
float blockSize = 4.0;
|
|
|
|
vec2 cell = floor(screenCoord / blockSize);
|
|
float n = hash(cell); // [0..1]
|
|
float mask = 1.0 - step(t, n);
|
|
|
|
vec4 base = Texel(tex, texCoord) * color;
|
|
base.a *= mask;
|
|
return base;
|
|
}
|