mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-08 04:41:51 +09:00
30 lines
1.5 KiB
GLSL
30 lines
1.5 KiB
GLSL
#version 120
|
|
#ifdef GL_ES
|
|
precision mediump float;
|
|
#endif
|
|
|
|
varying vec4 v_color;
|
|
varying vec2 v_texCoords;
|
|
uniform sampler2D u_texture;
|
|
|
|
//int bayer[14 * 14] = int[](131,187,8,78,50,18,134,89,155,102,29,95,184,73,22,86,113,171,142,105,34,166,9,60,151,128,40,110,168,137,45,28,64,188,82,54,124,189,80,13,156,56,7,61,186,121,154,6,108,177,24,100,38,176,93,123,83,148,96,17,88,133,44,145,69,161,139,72,30,181,115,27,163,47,178,65,164,14,120,48,5,127,153,52,190,58,126,81,116,21,106,77,173,92,191,63,99,12,76,144,4,185,37,149,192,39,135,23,117,31,170,132,35,172,103,66,129,79,3,97,57,159,70,141,53,94,114,20,49,158,19,146,169,122,183,11,104,180,2,165,152,87,182,118,91,42,67,25,84,147,43,85,125,68,16,136,71,10,193,112,160,138,51,111,162,26,194,46,174,107,41,143,33,74,1,101,195,15,75,140,109,90,32,62,157,98,167,119,179,59,36,130,175,55,0,150);
|
|
//float bayerSize = 14.0;
|
|
int bayer[4*4] = int[](0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5);
|
|
float bayerSize = 4.0;
|
|
float bayerDivider = bayerSize * bayerSize;
|
|
|
|
vec2 boolean = vec2(0.0, 1.0);
|
|
|
|
void main() {
|
|
vec4 inColor = v_color * (texture2D(u_texture, v_texCoords));
|
|
vec2 entry = mod(gl_FragCoord.xy, vec2(bayerSize, bayerSize));
|
|
|
|
float bayerThreshold = bayer[int(entry.y) * int(bayerSize) + int(entry.x)] / bayerDivider;
|
|
float alpha = inColor.a;
|
|
|
|
vec4 selvec0 = vec4(0.0, 0.0, 0.0, (alpha > 1.0 / bayerDivider) ? 1.0 : 0.0);
|
|
vec4 selvec = vec4(1.0, 1.0, 1.0, (alpha >= bayerThreshold) ? 1.0 : 0.0);
|
|
|
|
vec4 out0 = inColor * boolean.yyyx + selvec0;
|
|
gl_FragColor = out0 * selvec;
|
|
} |