2022-01-13 05:24:03 +01:00
|
|
|
//
|
|
|
|
// Simple passthrough fragment shader
|
|
|
|
//
|
|
|
|
varying vec2 v_vTexcoord;
|
|
|
|
varying vec4 v_vColour;
|
|
|
|
|
2022-01-17 08:52:51 +01:00
|
|
|
uniform vec2 position;
|
2022-01-13 05:24:03 +01:00
|
|
|
uniform float amount;
|
2022-09-21 06:09:40 +02:00
|
|
|
uniform int blend;
|
|
|
|
|
|
|
|
uniform vec4 col1, col2;
|
2022-01-13 05:24:03 +01:00
|
|
|
|
|
|
|
void main() {
|
2022-01-17 08:52:51 +01:00
|
|
|
vec2 pos = v_vTexcoord - position;
|
2022-01-13 05:24:03 +01:00
|
|
|
float _cell = 1. / (amount * 2.);
|
|
|
|
|
2022-01-17 08:52:51 +01:00
|
|
|
float _xind = floor(pos.x / _cell);
|
|
|
|
float _yind = floor(pos.y / _cell);
|
2022-01-13 05:24:03 +01:00
|
|
|
|
2022-09-21 06:09:40 +02:00
|
|
|
float _xcell = fract(pos.x * amount * 2.);
|
|
|
|
float _ycell = fract(pos.y * amount * 2.);
|
2022-01-13 05:24:03 +01:00
|
|
|
|
|
|
|
float _x = _xcell;
|
|
|
|
float _y = _ycell;
|
|
|
|
|
|
|
|
if(mod(_xind, 2.) == 1.)
|
2022-09-21 06:09:40 +02:00
|
|
|
_x = 1. - _xcell;
|
2022-01-13 05:24:03 +01:00
|
|
|
|
2022-09-21 06:09:40 +02:00
|
|
|
if(blend == 0) {
|
|
|
|
if(mod(_yind, 2.) == 1.) {
|
|
|
|
if(_x > _y) gl_FragColor = vec4(col1.rgb, 1.);
|
|
|
|
else gl_FragColor = vec4(col2.rgb, 1.);
|
|
|
|
} else {
|
|
|
|
if(_x > _y) gl_FragColor = vec4(col2.rgb, 1.);
|
|
|
|
else gl_FragColor = vec4(col1.rgb, 1.);
|
|
|
|
}
|
2022-01-13 05:24:03 +01:00
|
|
|
} else {
|
2022-09-21 06:09:40 +02:00
|
|
|
if(_x > _y) gl_FragColor = vec4(mix(col1.rgb, col2.rgb, _y + (1. - _x)), 1.);
|
|
|
|
else gl_FragColor = vec4(mix(col1.rgb, col2.rgb, _y - _x), 1.);
|
2022-01-13 05:24:03 +01:00
|
|
|
}
|
|
|
|
}
|