[Cava] music visualizer config

This commit is contained in:
2025-10-11 00:54:02 +02:00
parent 9002b1e720
commit 2d4b03425f
4 changed files with 229 additions and 101 deletions

View File

@@ -1,33 +1,33 @@
## Configuration file for CAVA. ## configuration file for cava.
# Remove the ; to change parameters. # remove the ; to change parameters.
[general] [general]
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 # smoothing mode. can be 'normal', 'scientific' or 'waves'. deprecated as of 0.6.0
mode = scientific mode = scientific
# Accepts only non-negative values. # accepts only non-negative values.
framerate = 60 framerate = 60
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off # 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
# new as of 0.6.0 autosens of low values (dynamic range) # new as of 0.6.0 autosens of low values (dynamic range)
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 # 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. deprecated as of 0.6.0
autosens = 1 autosens = 1
; overshoot = 20 ; overshoot = 20
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value. # manual sensitivity in %. if autosens is enabled, this will only be the initial value.
# 200 means double height. Accepts only non-negative values. # 200 means double height. accepts only non-negative values.
; sensitivity = 100 ; sensitivity = 100
# The number of bars (0-512). 0 sets it to auto (fill up console). # the number of bars (0-512). 0 sets it to auto (fill up console).
# Bars' width and space between bars in number of characters. # bars' width and space between bars in number of characters.
; bars = 0 ; bars = 0
; bar_width = 2 ; bar_width = 2
; bar_spacing = 1 ; bar_spacing = 1
# bar_height is only used for output in "noritake" format # bar_height is only used for output in "noritake" format
; bar_height = 32 ; bar_height = 32
# For SDL width and space between bars is in pixels, defaults are: # for sdl width and space between bars is in pixels, defaults are:
; bar_width = 20 ; bar_width = 20
; bar_spacing = 5 ; bar_spacing = 5
@@ -42,47 +42,47 @@ autosens = 1
; max_height = 100 ; max_height = 100
# Lower and higher cutoff frequencies for lowest and highest bars # lower and higher cutoff frequencies for lowest and highest bars
# the bandwidth of the visualizer. # the bandwidth of the visualizer.
# Note: there is a minimum total bandwidth of 43Mhz x number of bars. # note: there is a minimum total bandwidth of 43mhz x number of bars.
# Cava will automatically increase the higher cutoff if a too low band is specified. # cava will automatically increase the higher cutoff if a too low band is specified.
; lower_cutoff_freq = 50 ; lower_cutoff_freq = 50
; higher_cutoff_freq = 10000 ; higher_cutoff_freq = 10000
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and # seconds with no input before cava goes to sleep mode. cava will not perform fft or drawing and
# only check for input once per second. Cava will wake up once input is detected. 0 = disable. # only check for input once per second. cava will wake up once input is detected. 0 = disable.
; sleep_timer = 0 ; sleep_timer = 0
[input] [input]
# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem' # audio capturing method. possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem'
# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with. # defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with.
# On Mac it defaults to 'portaudio' or 'fifo' # on mac it defaults to 'portaudio' or 'fifo'
# On windows this is automatic and no input settings are needed. # on windows this is automatic and no input settings are needed.
# #
# All input methods uses the same config variable 'source' # all input methods uses the same config variable 'source'
# to define where it should get the audio. # to define where it should get the audio.
# #
# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink # for pulseaudio and pipewire 'source' will be the source. default: 'auto', which uses the monitor source of the default sink
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
# #
# For pipewire 'source' will be the object name or object.serial of the device to capture from. # for pipewire 'source' will be the object name or object.serial of the device to capture from.
# Both input and output devices are supported. To capture the monitor source of a sink node, append '.monitor' to the sink's object name. # both input and output devices are supported. to capture the monitor source of a sink node, append '.monitor' to the sink's object name.
# #
# For alsa 'source' will be the capture device. # for alsa 'source' will be the capture device.
# For fifo 'source' will be the path to fifo-file. # for fifo 'source' will be the path to fifo-file.
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address # for shmem 'source' will be /squeezelite-aa:bb:cc:dd:ee:ff where 'aa:bb:cc:dd:ee:ff' will be squeezelite's mac address
# #
# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'. # for sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. default: 'default'.
# README.md contains further information on how to setup CAVA for sndio. # readme.md contains further information on how to setup cava for sndio.
# #
# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device. # for oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. default: '/dev/dsp', i.e. the default audio device.
# README.md contains further information on how to setup CAVA for OSS on FreeBSD. # readme.md contains further information on how to setup cava for oss on freebsd.
# #
# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'. # for jack 'source' will be the name of the jack server to connect to, e.g. 'foobar'. default: 'default'.
# README.md contains further information on how to setup CAVA for JACK. # readme.md contains further information on how to setup cava for jack.
# #
; method = pulse ; method = pulse
; source = auto ; source = auto
@@ -91,13 +91,13 @@ autosens = 1
; source = auto ; source = auto
; method = alsa ; method = alsa
; source = hw:Loopback,1 ; source = hw:loopback,1
; method = fifo ; method = fifo
; source = /tmp/mpd.fifo ; source = /tmp/mpd.fifo
; method = shmem ; method = shmem
; source = /squeezelite-AA:BB:CC:DD:EE:FF ; source = /squeezelite-aa:bb:cc:dd:ee:ff
; method = portaudio ; method = portaudio
; source = auto ; source = auto
@@ -111,16 +111,16 @@ autosens = 1
; method = jack ; method = jack
; source = default ; source = default
# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods: # the options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods:
# sample_rate: fifo, pipewire, sndio, oss # sample_rate: fifo, pipewire, sndio, oss
# sample_bits: fifo, pipewire, sndio, oss # sample_bits: fifo, pipewire, sndio, oss
# channels: sndio, oss, jack # channels: sndio, oss, jack
# autoconnect: jack # autoconnect: jack
# Other methods ignore these settings. # other methods ignore these settings.
# #
# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported # for 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported
# by the chosen audio device, the device will use other supported values instead. # by the chosen audio device, the device will use other supported values instead.
# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it # example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it
# will use 44100, 16 and 1. # will use 44100, 16 and 1.
# #
; sample_rate = 44100 ; sample_rate = 44100
@@ -131,33 +131,33 @@ autosens = 1
[output] [output]
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl' # output method. can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
# or 'sdl_glsl'. # or 'sdl_glsl'.
# 'noncurses' (default) uses a buffer and cursor movements to only print # 'noncurses' (default) uses a buffer and cursor movements to only print
# changes from frame to frame in the terminal. Uses less resources and is less # changes from frame to frame in the terminal. uses less resources and is less
# prone to tearing (vsync issues) than 'ncurses'. # prone to tearing (vsync issues) than 'ncurses'.
# #
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
# stream of the bar heights that can be used to send to other applications. # stream of the bar heights that can be used to send to other applications.
# 'raw' defaults to 1024 bars stereo (512 bars mono), which can be adjusted in the 'bars' option above. # 'raw' defaults to 1024 bars stereo (512 bars mono), which can be adjusted in the 'bars' option above.
# #
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display # 'noritake' outputs a bitmap in the format expected by a noritake vfd display
# in graphic mode. It only support the 3000 series graphical VFDs for now. # in graphic mode. it only support the 3000 series graphical vfds for now.
# #
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context. # 'sdl' uses the simple directmedia layer to render in a graphical context.
# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or # 'sdl_glsl' uses sdl to create an opengl context. write your own shaders or
# use one of the predefined ones. # use one of the predefined ones.
; method = noncurses ; method = noncurses
# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or # orientation of the visualization. can be 'bottom', 'top', 'left', 'right' or
# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl # 'horizontal'. default is 'bottom'. 'left and 'right' are only supported on sdl
# and ncruses output. 'horizontal' (bars go up and down from center) is only supported # and ncruses output. 'horizontal' (bars go up and down from center) is only supported
# on noncurses output. # on noncurses output.
# Note: many fonts have weird or missing glyphs for characters used in orientations # note: many fonts have weird or missing glyphs for characters used in orientations
# other than 'bottom', which can make output not look right. # other than 'bottom', which can make output not look right.
; orientation = bottom ; orientation = bottom
# Visual channels. Can be 'stereo' or 'mono'. # visual channels. can be 'stereo' or 'mono'.
# 'stereo' mirrors both channels with low frequencies in center. # 'stereo' mirrors both channels with low frequencies in center.
# 'mono' outputs left to right lowest to highest frequencies. # 'mono' outputs left to right lowest to highest frequencies.
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'. # 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
@@ -166,22 +166,22 @@ autosens = 1
; mono_option = average ; mono_option = average
; reverse = 0 ; reverse = 0
# Raw output target. # raw output target.
# On Linux, a fifo will be created if target does not exist. # on linux, a fifo will be created if target does not exist.
# On Windows, a named pipe will be created if target does not exist. # on windows, a named pipe will be created if target does not exist.
; raw_target = /dev/stdout ; raw_target = /dev/stdout
# Raw data format. Can be 'binary' or 'ascii'. # raw data format. can be 'binary' or 'ascii'.
; data_format = binary ; data_format = binary
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). # binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
; bit_format = 16bit ; bit_format = 16bit
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here # ascii max value. in 'ascii' mode range will run from 0 to value specified here
; ascii_max_range = 1000 ; ascii_max_range = 1000
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. # ascii delimiters. in ascii format each bar and frame is separated by a delimiters.
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). # use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
; bar_delimiter = 59 ; bar_delimiter = 59
; frame_delimiter = 10 ; frame_delimiter = 10
@@ -192,9 +192,9 @@ autosens = 1
; sdl_y= -1 ; sdl_y= -1
; sdl_full_screen = 0 ; sdl_full_screen = 0
# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none' # set label on bars on the x-axis. can be 'frequency' or 'none'. default: 'none'
# 'frequency' displays the lower cut off frequency of the bar above. # 'frequency' displays the lower cut off frequency of the bar above.
# Only supported on ncurses and noncurses output. # only supported on ncurses and noncurses output.
; xaxis = none ; xaxis = none
# enable synchronized sync. 1 = on, 0 = off # enable synchronized sync. 1 = on, 0 = off
@@ -202,7 +202,7 @@ autosens = 1
# defaults to off since the behaviour in other terminal emulators is unknown # defaults to off since the behaviour in other terminal emulators is unknown
; synchronized_sync = 0 ; synchronized_sync = 0
# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders # shaders for sdl_glsl, located in $home/.config/cava/shaders
; vertex_shader = pass_through.vert ; vertex_shader = pass_through.vert
; fragment_shader = bar_spectrum.frag ; fragment_shader = bar_spectrum.frag
@@ -210,7 +210,7 @@ autosens = 1
; continuous_rendering = 0 ; continuous_rendering = 0
# disable console blank (screen saver) in tty # disable console blank (screen saver) in tty
# (Not supported on FreeBSD) # (not supported on freebsd)
; disable_blanking = 0 ; disable_blanking = 0
# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off # show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off
@@ -221,21 +221,21 @@ autosens = 1
[color] [color]
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. # colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires # or defined by hex code '#xxxxxx' (hex code must be within ''). user defined colors requires
# a terminal that can change color definitions such as Gnome-terminal or rxvt. # a terminal that can change color definitions such as gnome-terminal or rxvt.
# default is to keep current terminal color # default is to keep current terminal color
; background = default ; background = default
; foreground = default ; foreground = default
# SDL and sdl_glsl only support hex code colors, these are the default: # sdl and sdl_glsl only support hex code colors, these are the default:
; background = '#111111' ; background = '#111111'
; foreground = '#D34b11' ; foreground = '#d34b11'
# ; foreground = '#D34b11' # ; foreground = '#d34b11'
# Gradient mode, only hex defined colors are supported, # gradient mode, only hex defined colors are supported,
# background must also be defined in hex or remain commented out. 1 = on, 0 = off. # background must also be defined in hex or remain commented out. 1 = on, 0 = off.
# You can define as many as 8 different colors. They range from bottom to top of screen # you can define as many as 8 different colors. they range from bottom to top of screen
gradient = 1 gradient = 1
gradient_color_1 = '#d34b11' gradient_color_1 = '#d34b11'
gradient_color_2 = '#cc5933' gradient_color_2 = '#cc5933'
@@ -246,8 +246,8 @@ gradient_color_6 = '#a6cc33'
gradient_color_7 = '#80cc33' gradient_color_7 = '#80cc33'
gradient_color_8 = '#59cc33' gradient_color_8 = '#59cc33'
# Horizontal is only supported on noncurses output. # horizontal is only supported on noncurses output.
# Only one color will be calculated per bar. # only one color will be calculated per bar.
; horizontal_gradient = 1 ; horizontal_gradient = 1
; horizontal_gradient_color_1 = '#c45161' ; horizontal_gradient_color_1 = '#c45161'
; horizontal_gradient_color_2 = '#e094a0' ; horizontal_gradient_color_2 = '#e094a0'
@@ -259,39 +259,39 @@ gradient_color_8 = '#59cc33'
; horizontal_gradient_color_8 = '#434279' ; horizontal_gradient_color_8 = '#434279'
# If both vertical and horizontal gradient is enabled, vertical will be blended in this direction. # if both vertical and horizontal gradient is enabled, vertical will be blended in this direction.
# Can be 'up', 'down', 'left' or 'right'. 'up' means the vertical gradient will be blended in from # can be 'up', 'down', 'left' or 'right'. 'up' means the vertical gradient will be blended in from
# bottom to top. I.e. the bottom will be only the horizontal # bottom to top. i.e. the bottom will be only the horizontal
# and top will be only the color of the vertical gradient. # and top will be only the color of the vertical gradient.
; blend_direction = 'up' ; blend_direction = 'up'
# use theme file instead of defining colors in this file # use theme file instead of defining colors in this file
# themes are located in $HOME/.config/cava/themes # themes are located in $home/.config/cava/themes
; theme = 'none' ; theme = 'none'
[smoothing] [smoothing]
# Percentage value for integral smoothing. Takes values from 0 - 100. # percentage value for integral smoothing. takes values from 0 - 100.
# Higher values means smoother, but less precise. 0 to disable. # higher values means smoother, but less precise. 0 to disable.
# DEPRECATED as of 0.8.0, use noise_reduction instead # deprecated as of 0.8.0, use noise_reduction instead
; integral = 77 ; integral = 77
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. # disables or enables the so-called "monstercat smoothing" with or without "waves". set to 0 to disable.
; monstercat = 0 ; monstercat = 0
; waves = 0 ; waves = 0
# Set gravity percentage for "drop off". Higher values means bars will drop faster. # set gravity percentage for "drop off". higher values means bars will drop faster.
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". # accepts only non-negative values. 50 means half gravity, 200 means double. set to 0 to disable "drop off".
# DEPRECATED as of 0.8.0, use noise_reduction instead # deprecated as of 0.8.0, use noise_reduction instead
; gravity = 100 ; gravity = 100
# In bar height, bars that would have been lower that this will not be drawn. # in bar height, bars that would have been lower that this will not be drawn.
# DEPRECATED as of 0.8.0 # deprecated as of 0.8.0
; ignore = 0 ; ignore = 0
# Noise reduction, int 0 - 100. default 77 # noise reduction, int 0 - 100. default 77
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth # the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
# 100 will be very slow and smooth, 0 will be fast but noisy. # 100 will be very slow and smooth, 0 will be fast but noisy.
; noise_reduction = 77 ; noise_reduction = 77
@@ -299,25 +299,11 @@ gradient_color_8 = '#59cc33'
[eq] [eq]
# This one is tricky. You can have as much keys as you want. # this one is tricky. you can have as much keys as you want.
# Remember to uncomment more than one key! More keys = more precision. # remember to uncomment more than one key! more keys = more precision.
# Look at readme.md on github for further explanations and examples. # look at readme.md on github for further explanations and examples.
; 1 = 1 # bass ; 1 = 1 # bass
; 2 = 1 ; 2 = 1
; 3 = 1 # midtone ; 3 = 1 # midtone
; 4 = 1 ; 4 = 1
; 5 = 1 # treble ; 5 = 1 # treble
### HYPRDOTS CAVA: Autogenerated line below for wallbash###
[color]
gradient = 1
gradient_count = 8
gradient_color_1 = '#332952'
gradient_color_2 = '#463A6B'
gradient_color_3 = '#7D4B5F'
gradient_color_4 = '#8F576D'
gradient_color_5 = '#A36578'
gradient_color_6 = '#C27A90'
gradient_color_7 = '#E69A9D'
gradient_color_8 = '#F0AAAD'

View File

@@ -0,0 +1,117 @@
#version 330
// this shader was stolen from shadertoy user ChunderFPV
#define SCALE 8.0
#define PI radians(180.0)
#define TAU (PI * 2.0)
#define CS(a) vec2(cos(a), sin(a))
#define PT(u, r) smoothstep(0.0, r, r - length(u))
in vec2 fragCoord;
out vec4 fragColor;
uniform float bars[512];
uniform int bars_count; // number of bars (left + right) (configurable)
uniform float shader_time; // shader execution time s
uniform int bar_width; // bar width (configurable), not used here
uniform int bar_spacing; // space bewteen bars (configurable)
uniform vec3 u_resolution; // window resolution
// colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
uniform vec3 bg_color; // background color
uniform vec3 fg_color; // foreground color
uniform int gradient_count;
uniform vec3 gradient_colors[8]; // gradient colors
// gradient map ( color, equation, time, width, shadow, reciprocal )
vec3 gm(vec3 c, float n, float t, float w, float d, bool i) {
float g = min(abs(n), 1.0 / abs(n));
float s = abs(sin(n * PI - t));
if (i)
s = min(s, abs(sin(PI / n + t)));
return (1.0 - pow(abs(s), w)) * c * pow(g, d) * 6.0;
}
// denominator spiral, use 1/n for numerator
// ( screen xy, spiral exponent, decimal, line width, hardness, rotation )
float ds(vec2 u, float e, float n, float w, float h, float ro) {
float ur = length(u); // unit radius
float sr = pow(ur, e); // spiral radius
float a = round(sr) * n * TAU; // arc
vec2 xy = CS(a + ro) * ur; // xy coords
float l = PT(u - xy, w); // line
float s = mod(sr + 0.5, 1.0); // gradient smooth
s = min(s, 1.0 - s); // darken filter
return l * s * h;
}
void main() {
float t = shader_time / PI * 2.0;
vec4 m = vec4(0, 0, 0, 0); // iMouse;
m.xy = m.xy * 2.0 / u_resolution.xy - 1.0; // ±1x, ±1y
if (m.z > 0.0)
t += m.y * SCALE; // move time with mouse y
float z = (m.z > 0.0) ? pow(1.0 - abs(m.y), sign(m.y)) : 1.0; // zoom (+)
float e = (m.z > 0.0) ? pow(1.0 - abs(m.x), -sign(m.x))
: 1.0; // screen exponent (+)
float se = (m.z > 0.0) ? e * -sign(m.y) : 1.0; // spiral exponent
vec3 bg = vec3(0); // black background
float aa = 3.0; // anti-aliasing
for (float j = 0.0; j < aa; j++)
for (float k = 0.0; k < aa; k++) {
vec3 c = vec3(0);
vec2 o = vec2(j, k) / aa;
vec2 uv = (fragCoord * u_resolution.xy - 0.5 * u_resolution.xy + o) /
u_resolution.y * SCALE * z; // apply cartesian, scale and zoom
if (m.z > 0.0)
uv =
exp(log(abs(uv)) * e) * sign(uv); // warp screen space with exponent
float px = length(fwidth(uv)); // pixel width
float x = uv.x; // every pixel on x
float y = uv.y; // every pixel on y
float l = length(uv); // hypot of xy: sqrt(x*x+y*y)
float mc = (x * x + y * y - 1.0) / y; // metallic circle at xy
float g = min(abs(mc), 1.0 / abs(mc)); // gradient
vec3 gold = vec3(1.0, 0.6, 0.0) * g * l;
vec3 blue = vec3(0.3, 0.5, 0.9) * (1.0 - g);
vec3 rgb = max(gold, blue);
float w = 0.1; // line width
float d = 0.4; // shadow depth
c = max(c, gm(rgb, mc, -t, w * bars[0], d, false)); // metallic
c = max(c, gm(rgb, abs(y / x) * sign(y), -t, w * bars[1], d,
false)); // tangent
c = max(c, gm(rgb, (x * x) / (y * y) * sign(y), -t, w * bars[2], d,
false)); // sqrt cotangent
c = max(c, gm(rgb, (x * x) + (y * y), t, w * bars[3], d,
true)); // sqrt circles
c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[4], 2.0, 0.0); // spiral 1a
c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[5], 2.0, PI); // spiral 1b
c +=
rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[6], 2.0, 0.0); // spiral 2a
c += rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[7], 2.0, PI); // spiral 2b
c = max(c, 0.0); // clear negative color
c += pow(max(1.0 - l, 0.0), 3.0 / z); // center glow
if (m.z > 0.0) // display grid on click
{
vec2 xyg = abs(fract(uv + 0.5) - 0.5) / px; // xy grid
c.gb += 0.2 * (1.0 - min(min(xyg.x, xyg.y), 1.0));
}
bg += c;
}
bg /= aa * aa;
bg *= sqrt(bg) * 1.5;
fragColor = vec4(bg, 1.0);
}

View File

@@ -0,0 +1,15 @@
[color]
background = '#001e26'
foreground = '#708183'
gradient = 1
gradient_color_1 = '#268bd2'
gradient_color_2 = '#6c71c4'
gradient_color_3 = '#cb4b16'
horizontal_gradient = 1
horizontal_gradient_color_1 = '#586e75'
horizontal_gradient_color_2 = '#b58900'
horizontal_gradient_color_3 = '#839496'
blend_direction = 'up'

View File

@@ -0,0 +1,10 @@
[color]
horizontal_gradient = 1
horizontal_gradient_color_1 = '#c45161'
horizontal_gradient_color_2 = '#e094a0'
horizontal_gradient_color_3 = '#f2b6c0'
horizontal_gradient_color_4 = '#f2dde1'
horizontal_gradient_color_5 = '#cbc7d8'
horizontal_gradient_color_6 = '#8db7d2'
horizontal_gradient_color_7 = '#5e62a9'
horizontal_gradient_color_8 = '#434279'