init
This commit is contained in:
commit
3fa75abfb2
42 changed files with 5634 additions and 0 deletions
52
ghostty-shaders/just-snow.glsl
Normal file
52
ghostty-shaders/just-snow.glsl
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// Copyright (c) 2013 Andrew Baldwin (twitter: baldand, www: http://thndl.com)
|
||||
// License = Attribution-NonCommercial-ShareAlike (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US)
|
||||
|
||||
// "Just snow"
|
||||
// Simple (but not cheap) snow made from multiple parallax layers with randomly positioned
|
||||
// flakes and directions. Also includes a DoF effect. Pan around with mouse.
|
||||
|
||||
#define LIGHT_SNOW // Comment this out for a blizzard
|
||||
|
||||
#ifdef LIGHT_SNOW
|
||||
#define LAYERS 50
|
||||
#define DEPTH .5
|
||||
#define WIDTH .3
|
||||
#define SPEED .6
|
||||
#else // BLIZZARD
|
||||
#define LAYERS 200
|
||||
#define DEPTH .1
|
||||
#define WIDTH .8
|
||||
#define SPEED 1.5
|
||||
#endif
|
||||
|
||||
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||
{
|
||||
const mat3 p = mat3(13.323122,23.5112,21.71123,21.1212,28.7312,11.9312,21.8112,14.7212,61.3934);
|
||||
vec2 uv = fragCoord.xy / iResolution.xy;
|
||||
|
||||
vec3 acc = vec3(0.0);
|
||||
float dof = 5.0 * sin(iTime * 0.1);
|
||||
for (int i = 0; i < LAYERS; i++) {
|
||||
float fi = float(i);
|
||||
vec2 q =-uv*(1.0 + fi * DEPTH);
|
||||
q += vec2(q.y * (WIDTH * mod(fi * 7.238917, 1.0) - WIDTH * 0.5), -SPEED * iTime / (1.0 + fi * DEPTH * 0.03));
|
||||
vec3 n = vec3(floor(q), 31.189 + fi);
|
||||
vec3 m = floor(n) * 0.00001 + fract(n);
|
||||
vec3 mp = (31415.9 + m) / fract(p * m);
|
||||
vec3 r = fract(mp);
|
||||
vec2 s = abs(mod(q, 1.0) - 0.5 + 0.9 * r.xy - 0.45);
|
||||
s += 0.01 * abs(2.0 * fract(10.0 * q.yx) - 1.0);
|
||||
float d = 0.6 * max(s.x - s.y, s.x + s.y) + max(s.x, s.y) - 0.01;
|
||||
float edge = 0.005 + 0.05 * min(0.5 * abs(fi - 5.0 - dof), 1.0);
|
||||
acc += vec3(smoothstep(edge, -edge, d) * (r.x / (1.0 + 0.02 * fi * DEPTH)));
|
||||
}
|
||||
|
||||
// Sample the terminal screen texture including alpha channel
|
||||
vec4 terminalColor = texture(iChannel0, uv);
|
||||
|
||||
// Combine the snow effect with the terminal color
|
||||
vec3 blendedColor = terminalColor.rgb + acc;
|
||||
|
||||
// Use the terminal's original alpha
|
||||
fragColor = vec4(blendedColor, terminalColor.a);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue