init
This commit is contained in:
commit
3fa75abfb2
42 changed files with 5634 additions and 0 deletions
30
ghostty-shaders/dither.glsl
Normal file
30
ghostty-shaders/dither.glsl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// Simple "dithering" effect
|
||||
// (c) moni-dz (https://github.com/moni-dz)
|
||||
// CC BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/)
|
||||
|
||||
// Packed bayer pattern using bit manipulation
|
||||
const float bayerPattern[4] = float[4](
|
||||
0x0514, // Encoding 0,8,2,10
|
||||
0xC4E6, // Encoding 12,4,14,6
|
||||
0x3B19, // Encoding 3,11,1,9
|
||||
0xF7D5 // Encoding 15,7,13,5
|
||||
);
|
||||
|
||||
float getBayerFromPacked(int x, int y) {
|
||||
int idx = (x & 3) + ((y & 3) << 2);
|
||||
return float((int(bayerPattern[y & 3]) >> ((x & 3) << 2)) & 0xF) * (1.0 / 16.0);
|
||||
}
|
||||
|
||||
#define LEVELS 2.0 // Available color steps per channel
|
||||
#define INV_LEVELS (1.0 / LEVELS)
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord)
|
||||
{
|
||||
vec2 uv = fragCoord * (1.0 / iResolution.xy);
|
||||
vec3 color = texture(iChannel0, uv).rgb;
|
||||
|
||||
float threshold = getBayerFromPacked(int(fragCoord.x), int(fragCoord.y));
|
||||
vec3 dithered = floor(color * LEVELS + threshold) * INV_LEVELS;
|
||||
|
||||
fragColor = vec4(dithered, 1.0);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue